[백엔드 테크] 코딩 테스트(과제형)
디파이너리 개발팀 소개
https://iga-dev.atlassian.net/wiki/spaces/IG/pages/475070493?moved=true
백엔드 테크의 업무와 목표
- 시스템 설계
- 백엔드에서 가장 중요한 것은 설계 능력입니다.
- 도메인을 명확히 이해하고 요구사항의 동기 및 비동기적인 특성을 파악하여 설계하는 것이 핵심입니다.
- API 설계
- 효율적인 API설계는 커뮤니케이션 오류를 줄이고, 불필요한 단계를 제거합니다.
- 데브옵스
- AWS, Github, Jenkins를 이용하여 개발자가 직접 자동화된 배포 / 테스트 / 운영을 합니다.
- 도커 기반 마이크로 서비스
- API 서버와, Queue Message를 처리하는 각종 Worker들이 나누어져 있습니다.
- 이를 도커로 관리하여 운영 및 관리 복잡도를 해결합니다.
- 위 업무를 통해서 아래 목표를 달성합니다.
- 일 10억건 이상의 이벤트를 평균 10ms 내 처리
- SLA 99.9% 이상
- One Click 배포를 통해 실수를 없앰
개발 환경
- 언어 : OOP Language ( Python, .Net Core C# )
- 개발툴 : Visual Studio MSDN Enterprise
- 소스코드 형상관리: Github
- 서버 형상관리: Docker
- 클라우드 환경 : AWS
- 문서, 이슈트래킹: Confluence + Jira
- 업무 메신저: Slack
백엔드 테크 코딩 테스트(과제형) 안내
- 가벼운 버전의 Mini adbrix 버전을 직접 만들어 봅니다. 모든 개발 과정은 AWS 내에서 구현합니다.
- 과제 제출 후 발생한 비용에 대해서는 비용 지원드립니다..
과제 개요
아래는 Mini adbrix 시스템의 구조 입니다.
- Event Collect API
- 클라이언트로부터 event를 수신합니다.
- SQS로 event 내용을 전송합니다.
- Event Collect Worker
- SQS로 전달받은 event를 RDS DB에 입력합니다.
- Event Search API
- RDS DB에 조회하여 결과를 반환합니다.
API 스펙
Event Collect API
POST /api/collect HTTP/1.1 Content-Type: application/json { "event_id" : "RANDOM_EVENT_GUID", "user_id" : "RANDOM_USER_GUID", "event" : "purchase", "parameters" : { "order_id" : "ORDER_ID_GUID", "currency" : "krw", "price" : 3000 } } => { "is_success" : "true" }
- parameters는 임의의 json 형식입니다.
Event Search API
POST /api/search HTTP/1.1 Content-Type: application/json { "user_id" : "RANDOM_USER_GUID" } => { "is_success" : "true", "results" : [ { "event_id" : "RANDOM_EVENT_GUID", "event" : "purchase", "parameters" : { "order_id" : "ORDER_ID_GUID", "currency" : "krw", "price" : 3000 }, "event_datetime" : "2018-07-02T18:25:43.511Z" } ] }
- user guid를 기반으로 수집된 이벤트 목록을 시간순으로 내림 차순정렬(최근것 위주) 하여 반환합니다.
- event_datetime은 event collect 시점의 서버시간을 입력합니다.
과제 결과물 제출
- 소스 코드 (Github 주소로 제출 )
- Client Bot
- 이벤트 생성 하는 Bot 입니다. 자유롭게 상상해서 Bot을 만들어 제출해 주세요.
- ex) 게임.
- 로그인
- 스테이지 진입
- 랜덤확률로 클리어 / 실패
- 실패시 랜덤확률로 구매
- 랜덤확률로 다시 스테이지 진입
- Event Collect API
- Event Search API
- Event Collect Worker
- RDS Database Create SQL
- Client Bot
- Event Collect API , Event Search API 엔드포인트
- AWS 접속 계정 (루트 권한이 없는 접속계정 )
제출 기한
- 과제 전달 시점으로부터 최대 7일 이내 제출
- 과제 결과물 제출이 빠를수록 추가 점수 부여
과제 문의
- 서류 합격 연락을 받은 이메일 혹은 abx_dev@igaworks.com 으로 문의주시면 최대한 빠르게 답변드리겠습니다