대학교 수강신청, 공연 티켓 예매 등 순간적으로 다수의 요청이 몰릴 수 있는 상황을 견딜 수 있는 서버를 구축해 보려고 한다. 다음과 같은 요구사항을 만족하는 서버를 개발하는 것을 프로젝트의 목표로 설정했다.
서버의 효율성 및 안정성을 위해 멀티 스레딩 기법을 이용하기로 결정했다. 본 프로젝트에서 사용하게 될 언어인 코틀린에서는 경량화된 스레드라고 할 수 있는 coroutine을 제공하기 때문에, 이것을 사용하기로 했다.
서버의 효율성을 위해 세부 기능을 WAS와 Background Worker로 분리해 구현하기로 했다.
MSA 구조에서 마이크로 서비스 간 데이터 통신을 안전하고 원활하게 하기 위한 수단으로 AWS에서 제공하고 있는 SQS를 사용하기로 했다. SQS는 리드라이브 정책을 활용하여 data queue와 dead letter queue를 하나씩 두었다.
Serverless, Fully managed 환경의 DB를 학습해보기 위해 AWS에서 제공하는 dynamodb를 활용하였다.