딥다이브 소개

쿠폰 마이크로서비스 개발 챌린지는 빅테크 기업의 과제 전형의 난도를 상정하며 만들어진 챌린지입니다. 이 챌린지의 핵심은 DB 설계와 예측 가능한 서비스 개발 과정입니다. 이 챌린지를 통해 다음과 같은 개발 사이클을 경험하는 것을 기대합니다.

coupon-challenge.drawio.png

개발 요구 사항은 딥다이브에서 주어져 있습니다. 이 요구 사항은 의도적으로 개발 친화적이지 않으며, 비즈니스에 필요한 요구사항을 문서화한 것입니다.

가장 먼저 이 요구 사항을 만족하도록 Software Design Document를 작성해야 합니다. Design Docs는 간단해도 좋습니다만 DB 설계가 핵심이며 API 서비스이므로 다음과 같은 내용이 포함되어야 합니다.

  1. 전반적인 아키텍처 - 특히 서버와 DB 외 Redis와 같은 다른 시스템을 의존하려는 경우 반드시 간단한 이미지와 함께 어떤 용도로 사용되는지 등 설명이 필요합니다.
  2. DB Table & Relations
  3. gRPC (or HTTP) Interface - 메시지, 필드 등의 이름, 타입, 간단한 설명이 필요합니다.

간단한 Design Document 서식은 제공해드리지만 반드시 이 문서 형식을 사용해야 하는 것은 아닙니다. 마크 다운으로 만들어도 괜찮습니다.

그 다음 개발을 진행해 주세요. 구체적인 기준은 없으나 좋은 코드를 작성하기 위해 다음 기준을 고려해보세요.

개발 이후 요구 사항을 만족했는지 확인하기 위해 E2E 테스트 코드를 작성하고 퍼포먼스 테스트를 수행합니다. 어떠한 도구를 사용해도 상관 없으나 테스트 결과를 캡쳐해 요구 사항이 만족했음을 알려주세요. 개인적으로 State가 있는 서비스의 E2E 테스트는 Docker Compose 혹은 TestContainer를 사용합니다. 퍼포먼스 테스트의 경우 HTTP 서비스는 nGrinder, gRPC는 ghz, k6를 사용합니다. 참조 링크에 관련된 정보가 있습니다.

<aside> 💡 특정 개발 이론에 의해 테스트 코드를 먼저 작성하는 등 순서가 바뀌는 것은 크게 관계 없습니다.

</aside>

만약 스케일 아웃을 해야 한다면 요청을 처리하기 위해 얼마나 많은 서버가 필요한지에 대한 내용도 테스트 결과에 포함되어야 합니다.