Skip to content
This repository was archived by the owner on Aug 13, 2022. It is now read-only.

1. 프로젝트 개요

Min Seong Kim (Castle) edited this page Oct 18, 2021 · 4 revisions

☕ Takeout Coffee Ordering Service

☕ 프로젝트 주제

고도의 집중력을 요구하는 개발자에게 커피는 필수라고할 수 있습니다. 저희도 개발자로서 평소에 커피를 즐겨마시고 있습니다. 당시에는 무심결하게 넘어갔지만 벡엔드 공부를 진행하면서 커피시장 1위 프렌차이즈인 별다방 서버가 다운되었던 사건이 떠올랐습니다.

이에 도대체 어떻게 개발해야 수많은 트래픽을 견디면서 장애없이 서비스를 지속할 수 있을까? 라는 호기심을 갖게 되었고, 본 프로젝트에서는 이러한 호기심을 해소하기 위해 시작하였으며 별다방 테이크 아웃 주문 애플리케이션을 모티브로 프로젝트를 진행하였습니다.

☕ 서버 구조도

☕ 인스턴스 스펙

  • WAS : 2 vCPUs, 4GB Memory, (t2.medium)
  • MySQL Master : 2 vCPUs, 8GB Memory (db.m6g.large)
  • MySQL Slave : 2 vCPUs, 8GB Memory (db.m6g.large)
  • AWS S3 : 2 vCPUs, 8GB Memory (t2.large)
  • Jenkins : 2 vCPUs, 8GB Memory (t2.large)
  • Pinpoint Admin : 2 vCPUs, 8GB Memory (t2.large)
  • nGinder Controller : 2 vCPUs, 8GB Memory (t2.large)

☕ 프로젝트 주요 관심사 (진행중)

1. 단순 기능 구현에만 집중하지 않기

  • 단순히 기능을 빠르게 구현하는것보다 중요한 것은 사용 기술을 정확하게 이해하고 사용하는 것이라고 생각합니다.
  • 새로운 기술을 적용할 때 기술서적과 공식문서를 통해 해당 기술에 대한 깊이 있는 학습을 진행하여 이를 최대한 코드에 녹이기 위해 노력했습니다.

2. 대용량 트래픽 환경에서도 안정적인 서비스 구현하기

  • 프로젝트를 시작하게된 동기와 최종목표는 대용량 트래픽에도 견고하고 안정적인 서비스를 개발하는 것입니다.
  • 틈틈이 부하테스트와 모니터링을 통해 이를 지키기 위해 노력했습니다.

3. 테스트 코드 작성에 충실하기

  • 올바른 기능 구현과 예상한대로 코드가 동작하는지 검증하기 위해 새로운 기능을 구현할 때 마다 통합테스트 및 단위테스트를 구현하도록 하였습니다.
  • 새로운 개발자가 합류했을 경우 기능을 추가하거나 수정할 때 테스트 코드를 통해 문제가 없음을 보장하고 자신감을 줌으로써 빠르게 프로젝트에 적응할 수 있습니다.
  • 또한 테스트 코드는 작성된 코드에 대한 문서 자체의 역할을 하기도 합니다.

4. 문서화

  • 새로운 개발자가 중간에 프로젝트에 참여하더라도 Wiki와 같은 문서를 통해 프로젝트에 대해 쉽게 이해하고 적응할 수 있도록 하였습니다.
  • PR, Issues, Commit Template을 통해 협업하는 개발자간의 커뮤니케이션 미스에 대한 비용을 최소화 하기 위해 노력하였습니다.

5. 사소한 이슈라도 끝까지 파헤쳐서 원인 파악하기

  • 발생한 이슈가 사소한것일지라도 추후에 다시 문제가 생기지 않도록 예방해야 합니다.
  • 문제의 원인을 파악하기 위한 학습을 진행하였고 이를 기술블로그에 정리하였습니다.

☕ 사용기술

  • Java 11
  • Spring Boot
  • JUnit5
  • Mockito
  • MySQL
  • MyBatis
  • Redis
  • Jenkins
  • nGrinder
  • Pinpoint
  • AWS

☕ 주요 기능

  • 회원가입
  • 로그인/로그아웃
  • 회원탈퇴
  • 회원정보 수정
  • 사용자 역할에 따른 권한 제어
  • 카페 등록 및 수정 삭제
  • 카페에 리뷰 및 좋아요 남기기
  • 카페 메뉴 장바구니에 담기
  • 카페에 테이크아웃 주문 넣기

Clone this wiki locally