
κ³ κ° κ²½νμ μ΅μ°μ κ°μΉλ‘, λ§μ κ³ κ°λ€μκ² κ·Έλ€μ΄ μνλ κ²½νμ μ 곡νμ¬ μ ν(pick) λ°μλ μλ§μ λ΄μμ΅λλ€.
- MSA ꡬ쑰λ₯Ό ν΅ν΄ μλΉμ€μ νμ₯μ±κ³Ό μ μ°μ±μ ν보
- Kafkaμ Redisλ₯Ό νμ©νμ¬ λΉλκΈ° λ©μμ§μΌλ‘ μλΉμ€ κ° ν΅μ λ° μΊμ±μ ν΅ν΄ μμ μ μ΄κ³ λΉ λ₯Έ μλΉμ€ ꡬμΆ
- λμμ± μ²λ¦¬λ₯Ό ν΅ν μμ μ± μλ μλΉμ€ ꡬμΆ
-
μ£Όλ¬Έ
- Kafkaλ₯Ό ν΅ν΄ μ£Όλ¬Έ, μ¬κ³ - κ²°μ - λ°°μ‘ - μλ¦Ό μλΉμ€ κ° λΉλκΈ° ν΅μ ꡬν
- Order μλΉμ€κ° μ£Όλ¬Έμ μ 체 νλ‘μΈμ€λ₯Ό κ΄λ¦¬νκ³ , κ²°μ λ° λ°°μ‘ μλΉμ€μ λν μν λ³κ²½μ νΈλ¦¬κ±°νλ λ°©μμΌλ‘ ꡬν
- TTL μ€μ μ ν΅ν΄ μ£Όλ¬Έ μμ² ν 5λΆ λμ κ²°μ λ―Έμ§ν μ, μ£Όλ¬Έ μλ μ·¨μ
-
μν
- Elasticsearchλ₯Ό μ¬μ©νμ¬ κ²μ μλ μ΅μ ν
- CQRS ν¨ν΄μ μ μ©νμ¬ Command, Query λ°μ΄ν°λ² μ΄μ€ λΆλ¦¬
-
μμ½ κ΅¬λ§€
- λμμ λ§μ μμ² μ, μ¬κ³ κ΄λ¦¬ λ‘μ§μμμ λμμ± μ΄μ λ°©μ§λ₯Ό μν΄ λΆμ°λ½ λμ
- μ£Όλ¬Έ μ (μ£Όλ¬Έ μμ² β μ¬κ³ κ°μ β μ£Όλ¬Έ μμ±) λΆμ°λ½ νκ²½μμμ κ°±μ μ μ€ λ°©μ§λ₯Ό μν΄ λκ΄μ λ½ μΆκ° λμ
-
μλ
- Grafanaμ Slackμ μ°λνμ¬ μλ² λ€μ΄ μ μ¬λ μ±λμ ν΅ν μλ μμ (#server_channel)
- νΈλν½ μκ³μΉμμ 50% μ΄μ μ κ²½κ³ μλ, 80% μ΄μ μ μν μλ (#traffic_channel)
- μ£Όλ¬Έ, λ°°μ‘ μλ£ μ kafkaλ₯Ό ν΅ν μ€μκ° λ©μΌ μλ μ μ‘
-
λͺ¨λν°λ§
- Grafanaμ Provisioning μ¬μ©μΌλ‘ μ΄λ€ νκ²½μμ μ€νλμ΄λ μ€μ ν΄λ μλ, λμ보λ λ±μ΄ μλ provisioned λλλ‘ μ€μ μλν
- Lokiλ₯Ό ν΅ν μ€μκ° λ‘κ·Έ λΆμ λ° μκ°ν
- Zipkin, prometheusλ₯Ό ν΅ν΄ λΆμ°μΆμ λ° λ‘κ·Έ μμ§
-
κ³ κ°μ©μ± ν보
-
Resilience4j Circuit Breakerλ₯Ό ν΅ν΄ μλΉμ€ κ° μ₯μ μ ν λ°©μ§, ν볡νλ ₯μ± ν₯μ
-
Redis Replicationκ³Ό Sentinelμ ν΅ν λΆμ° μ²λ¦¬ λ° κ³ κ°μ©μ± ν보
- Replication: μ½κΈ° μμ²μ λ ν리카 λ Έλλ‘ μ°μ μ μΌλ‘ λΆμ°νκ³ , μ°κΈ° μμ²μ λ§μ€ν° λ Έλλ‘ μ μ‘νμ¬ λΆν λΆμ°
- Sentinel: λ§μ€ν°κ° λ€μ΄λμμ κ²½μ° μ¬λ μ΄λΈ μ€ νλλ₯Ό μλ‘μ΄ λ§μ€ν°λ‘ auto-failover
-
-
μν€ν μ²
-
Domain Driven Design: λλ©μΈ μ€μ¬μ μμ€ν μ€κ³ λ° λλ©μΈ λͺ¨λΈμ μ§μ€ν λΉμ¦λμ€ λ‘μ§
ν¨ν€μ§ ꡬ쑰
```java com.pickple.commerce-service βββ application β βββ dto β β βββ OrderCreateResponseDto.java β β βββ OrderResponseDto.java β βββ service β βββ OrderService.java βββ domain β βββ model β β βββ Order.java β β βββ OrderDetail.java β β βββ OrderStatus.java β βββ repository β βββ OrderRepository.java βββ exception β βββ CommerceErrorCode.java β βββ CommerceExceptionHandler.java β βββ CustomException.java βββ infrastructure β βββ configuration β β βββ AuditAwareImpl.java β β βββ JpaConfig.java β β βββ SecurityConfig.java β βββ feign β β βββ DeliveryClient.java β β βββ PaymentClient.java β β βββ dto β β βββ DeliveryClientDto.java β β βββ PaymentClientDto.java β βββ messaging β β βββ OrderEventService.java β β βββ OrderMessagingProducerService.java β βββ security β βββ CustomPreAuthFilter.java βββ presentation β βββ controller β β βββ OrderController.java β βββ request β βββ OrderCreateRequestDto.java ``` </details>
-
Layered Architecture: μμ€ν μ μ¬λ¬ λ μ΄μ΄λ‘ λλμ΄ μλ‘ λ€λ₯Έ κ΄μ¬μ¬λ₯Ό μ²λ¦¬νλλ‘ μ€κ³
-
Event-Driven Architecture: Kafkaλ₯Ό μ¬μ©νμ¬ μ΄λ²€νΈκ° μ λ¬λλ©°, κ° μλΉμ€κ° μ΄λ²€νΈλ₯Ό μμ±νκ³ , μλΉνλ λ°©μμΌλ‘ ν΅μ
-
-
CI/CD
- CI: μλΉμ€ 컨ν μ΄λλ₯Ό ꡬμ±νμ¬ ν μ€νΈ μ€ν
- CD: λ컀νν imageλ₯Ό AWS ECRμ Push, κ° EC2μ λ°°ν¬
- λ°°ν¬ λ§ν¬ πλ§ν¬
- μλΉμ€ ꡬ쑰
Service | Description | Authorization | Port |
---|---|---|---|
[Eureka ] |
μλΉμ€ λ±λ‘ λ° λ‘λλ°Έλ°μ± | 19090 |
|
[API Gateway ] |
μμ² μΈμ¦ λ° λΌμ°ν | jwt ν ν° μΈμ¦ | 19091 |
[Auth ] |
jwt ν ν° λ°κΈ λ° κ΄λ¦¬ | jwt ν ν° λ°κΈ | 19092 |
[User ] |
μ¬μ©μ κ΄λ ¨ μμ κ΄λ¦¬ | jwt ν ν° μΈκ° | 19093 |
[Commerce ] |
μ»€λ¨Έμ€ κ΄λ ¨ λλ©μΈ μμ κ΄λ¦¬ | 19094 |
|
[Payment ] |
κ²°μ λλ©μΈ μμ κ΄λ¦¬ | 19095 |
|
[Delivery ] |
λ°°μ‘ λλ©μΈ μμ κ΄λ¦¬ | 19096 |
|
[Notification ] |
μλ λλ©μΈ μμ κ΄λ¦¬ | 19097 |
git clone https://github.com/pickple-ecommerce/backend.git
docker-compose -f docker-compose.dev.yml --env-file dev.env
docker-compose -f docker-compose.service.yml --env-file dev.env
νμ | ν¬μ§μ | λ΄λΉ | GitHub λ§ν¬ |
---|---|---|---|
![]() μ΄κ²½μ§ |
π Leader |
- Eureka, gateway νκ²½ κ΅¬μΆ - User, Auth λλ©μΈ λ°±μλ κ°λ° (μΈμ¦/μΈκ° λ° λ°±μ€νΌμ€) - μν λ° μ¬κ³ λλ©μΈ λ°±μλ κ°λ° - μμ½κ΅¬λ§€ κΈ°λ₯ κ°λ° - Redis master-slave ꡬ쑰 λ° sentinel κ΅¬μΆ |
GitHub |
![]() μ΄μ§μ |
π Sub-Leader |
- μ
체 λλ©μΈ λ°±μλ κ°λ° - μ£Όλ¬Έ λλ©μΈ λ°±μλ κ°λ° - Resilience4j μν· λΈλ μ΄μ»€ ꡬν |
GitHub |
![]() λ°μ§λ―Ό |
π« π» Member |
- κ²°μ λλ©μΈ λ°±μλ κ°λ° - μλ¦Ό λλ©μΈ λ°±μλ κ°λ° - Prometheusμ Grafana μ°λμΌλ‘ μλ² λͺ¨λν°λ§ λ° SlackμΌλ‘ μλ¦Ό λ°μ‘ κΈ°λ₯ ꡬν - Loki νμ©νμ¬ λ‘κ·Έ κ΄λ¦¬ λ° μκ°ν |
GitHub |
![]() κΉμ§λͺ |
π« π» Member |
- λ°°μ‘ λλ©μΈ λ°±μλ κ°λ° - νλ‘μ νΈ Gradle λ©ν° λͺ¨λ κ΅¬μ± - Github Actionsλ₯Ό νμ©νμ¬ CI/CD κ΅¬μ± - AWS Infra κ΅¬μ± λ° λ°°ν¬ |
GitHub |