[백엔드 테크] 코딩 테스트(과제형)

디파이너리 개발팀 소개

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

  • Event Collect API , Event Search API 엔드포인트
  • AWS 접속 계정 (루트 권한이 없는 접속계정 )

제출 기한

  • 과제 전달 시점으로부터 최대 7일 이내 제출
  • 과제 결과물 제출이 빠를수록 추가 점수 부여

과제 문의

  • 서류 합격 연락을 받은 이메일 혹은 abx_dev@igaworks.com 으로 문의주시면 최대한 빠르게 답변드리겠습니다 (smile)