마켓컬리 물류 서비스
주요 기술 스택
- Java(Spring Boot)
- JPA
- GraphQL
- Oracle
- Aurora(MySQL)
- AWS MQ
서비스 구조
이커머스 서비스
- 이커머스 백엔드 시스템은 Legacy PHP와 PHP/Laravel과 Java/Spring Boot가 하이브리드 형태로 구성
- Legacy PHP는 회원, 상품, 주문, 결제등을 관리하고, 검색 및 데이터 기반 서비스는 Java/Spring Boot로 개발
- 전체 이커머스 시스템은 Spring Cloud Netflix를 기반
물류 서비스
- 물류 서비스는 크게 SCM, WMS, TMS으로 구성
- Warehouse Management System은 서비스 형태 구조 고도화를 통하여 다양한 형태의 물류 창고 관련 운영 효율화를 수용가능하도록 개발하고 AWS MQ, JPA, GraphQL 등을 통해서 기술 고도화 추진
데이터 서비스
- 이커머스와 물류서비스에서 발생하는 다양한 형태의 정형/비정형 데이터를 적재하고 분석하는 플랫폼을 AWS 및 오픈소스를 통해서 구축
- ELK 기반의 로그수집 및 검색 시스템을 운영
- 데이터의 분석은 AWS Glue와 Athena를 통해서 제공
- 이커머스에서는 Keras기반 딥러닝 기술을 도입하여 사용자 후기 사진을 자동으로 분류하는 시스템을 개발하여 기존 수기 운영을 파격적으로 개선
- 물류 시스템에서는 신선 식품의 특성상 유통기간을 고려하여 최적의 데이터 예측 기반 발주 관리시스템을 제공하여 상품 폐기율 1% 미만으로 유지하는 것이 가능
DevOps/SRE
- 마켓컬리의 모든 서비스는 Cloud Native향으로 개발
- 운영은 DevOps, NoOps를 지향
- CI/CD 파이프 라인 구축은 배포를 위한 Jenkins, 코드 품질 관리를 위한 sonarqube, dependency-tracker, Docker Container의 보안성 체크를 위한 Clair 등 개발 편의성을 위한 검증된 Opensource 들을 도입하여 활용
- ngrinder를 활용하여 stage 환경에서 최소한의 성능 체크를 진행
- 인프라 운영은 기존 Legecy 서비스의 Docker 기반 운영 최적화를 진행 중에 있으며, 컨테이너 Orchestration 기술의 도입을 검토
아키텍처
- 1. MSA 기반의 유연한 구조
- 2. Docker와 Kubernetes를 활용하여 컨테이너화된 환경에서 서비스를 운영
- 3. CI/CD(Continuous Integration/Continuous Deployment)로 빠른 배포를 지원
- 4. 레거시 PHP 코드를 개선하며 Laravel 프레임워크를 도입해 클린 코드와 유지보수를 강화
- 5. Spring Cloud Netflix를 활용해 MSA 환경에서 PHP와 Java 기반 서비스를 통합적으로 운영
- 6. Kafka를 이용한 데이터 스트리밍과 Zipkin을 활용한 트랜잭션 데이터 모니터링으로 실시간 데이터 처리와 분석
물류센터 주문처리 과정
1. 접수된 주문을 특정 규모의 그룹으로 묶음
2. 주문 그룹에 대한 작업 지시가 만들어짐
3. 작업 지시를 확인한 작업자는 창고형 대형마트와 유사한 적재공간을 돌아다니며 바구니에 상품 담기(피킹)
4. 꽉 찬 바구니들은 차례로 컨베이어에 오른 뒤 QPS라는 장비로 이동하여 다시 원래의 주문 단위로 분배되고, 포장 후 고객에게 배송
물류 최적화를 위한 접근 방식
유전 알고리즘
1. 같은 batch 안에 서로 유사한 주문들이 담기도록 최대한 신경 쓰면서 첫 세대를 생성
2. 각 유전자 내 고유한 상품 수를 계산하고, 이 값이 작은 순으로 상위 50%만 생존
3. 이 과정을 특정 횟수만큼 반복하면서 최적의 주문 조합을 탐색
마켓컬리 물류 서비스 분석 후 느낀점
사용자 편의성을 최우선으로 두고 개발하며, 백엔드 시스템이 사용자 경험에 미치는 영향을 다시 한번 느낄 수 있었습니다.. 특히, MSA(마이크로서비스 아키텍처) 시스템을 활용하여 대량의 주문을 빠르게 처리하고, 백엔드 데이터 관리의 중요성을 강조하는 시스템 설계를 구현하고 있다는 점에서 큰 인사이트를 얻었습니다.
또한, 기술 스택을 도입할 때 비즈니스에 필요한 부분을 우선적으로 고려하여 적용하고, 비즈니스에 맞춘 최적화된 기술을 고민하는 과정이 얼마나 중요한지를 깨닫게 되었습니다. 마켓컬리는 최신 기술을 비즈니스의 실제 요구사항에 맞춰 적절히 적용하여, 효율적인 시스템 운영과 지속 가능한 성장을 이루는 방법을 보여주며 프로젝트에서 기술을 도입할 때 이러한 점을 배워 적용해 보는 게 좋겠다고 생각했습니다.
참고
https://helloworld.kurly.com/blog/market-kurly-service-architecture/
https://helloworld.kurly.com/blog/logistics-optimization-1/