시스템 구조를 정의하자.
아키텍처 계층
Controler Layer
프레젠테이션 계층
클라이언트의 요청을 받아 Service로 전달 및 응답 처리!
- AuthController, OrderController, MenuController
Service Layer
비즈니스 로직 계층
비즈니스 로직을 처리하는 계층으로, DB와 상호작용하며 트랜잭션을 처리.
- AuthService, OrderService, MenuService
Repository Layer
데이터 접근 계층
데이터베이스와의 직접적인 통신을 담당하며, JPA 같은 ORM을 사용해 데이터를 저장, 수정, 조회.
- UserRepository, OrderRepository, MenuRepository
Security Layer
인증 및 인가
JWT를 이용해 사용자의 인증을 처리하며, 권한 부여 및 검증을 담당.
- JwtTokenProvider, SecurityConfig
Messaging Layer
실시간 처리
Redis Pub/Sub을 통해 실시간 주문 상태 업데이트를 처리.
기술 스택
- 언어 및 프레임워크: Kotlin + Spring Boot
- 데이터베이스: PostgreSQL
- 안정적인 관계형 데이터베이스로, JPA/Hibernate를 사용해 ORM 매핑을 처리.
- 인증: JWT (JSON Web Token)
- 클라이언트와 서버 간에 인증을 위해 사용.
- JWT는 보안성이 높고 stateless 환경에서 적합.
- 실시간 처리: Redis Pub/Sub
- 주문 상태의 실시간 업데이트를 위해 Redis Pub/Sub을 사용.
- 테스트: Kotest
- Kotlin 친화적인 테스트 프레임워크.
- 직관적인 DSL(Domain-Specific Language)을 제공해 깔끔하고 간결한 테스트 코드 작성 가능.
- CI/CD: AWS CodePipeline
- AWS CodePipeline을 사용해 빌드, 테스트, 배포 과정을 자동화할 계획.