
개요
기다림 없는 축제를 위한 축제 부스 전용 스마트 오더 안드로이드 앱
- 축제 부스 및 메뉴 등록 기능
- 주문 결제 및 알림 기능
- 부스 일별, 메뉴별 매출 리포트 기능
기술 스택
- Mobile : Kotlin, Android Studio, Kakao SDK, TossPayments SDK
- Server : Spring boot, Spring Security
- Database: Spring Data JPA, MySQL
- Devops : AWS EC2, Jenkins, Docker, Nginx
기여 사항
- 주문 도메인 설계 및 개발
- FCM(Firebase Cloud Messaging)을 이용해 비동기 이벤트 기반 알림 기능 개발
기술 중점 사항
1. 헥사고날 아키텍처 - 포트 / 어댑터 패턴 적용
SOLID 원칙을 따르고 유지보수와 확장성을 고려한 개발 경험을 위해 포트-어댑터 패턴에 기반한 헥사고날 아키텍처를 적용했습니다. web과 persistence에 해당하는 로직과 비즈니스를 위한 핵심 로직 간 결합을 줄여 외부 변경에 대한 영향을 최소화시키고자 노력했습니다.
2. 비동기 이벤트 기반 알림 기능 개발
주문의 상태 변경에 따라 고객과 점주에게 알림을 전송하기 위해 주문의 상태 변경하는 요청이 들어오면 FCM의 메시지 발행 API로 HTTP 요청을 전송할 필요가 있었습니다. 서비스의 주문 도메인과 FCM과의 강결합을 없애기 위하여 주문 상태 변경 시 도메인 이벤트를 발행하고 해당 이벤트를 비동기로 처리하도록 함으로써 두 시스템 간의 결합을 낮출 수 있었습니다.
프로젝트를 통해 성장한 부분
- 헥사고날 아키텍처를 따르는 설계를 시도해보면서 비즈니스 로직과 외부 로직 간의 결합을 줄이는 것과 시스템의 복잡성에 대한 trade-off 관계를 느낌
- 관심사가 다른 두 도메인 간의 강결합을 줄이기 위해 이벤트 기반의 처리 방식을 경험