스
스포카
July 8, 20221회
우당탕탕 주문서 개발기

간단 소개
키친보드 팀의 주문서 도메인 개발 과정과 주요 고민, 해결 방안, 그리고 발생했던 이슈와 해결 과정을 공유합니다.
AI Summary
- 주문서 도메인 개발 배경 및 목표
- 키친보드 팀은 비용 관리를 넘어 매장의 식자재 주문 편의성을 높이는 새로운 기능 개발 프로젝트를 진행했습니다.
- 주문서 도메인은 매장이 앱을 통해 거래처에 식자재 주문서를 전달하고, 거래처는 이를 확인하여 납품하는 과정을 지원합니다.
- 주요 고민 사항 및 해결 방안
- 동시성 이슈: 여러 사용자가 동시에 주문서를 수정하는 경우 데이터 정합성 문제를 해결하기 위해 애플리케이션 레벨에서 낙관적 잠금 방식을 구현했습니다. 주문서 수정 시 revision 정보를 함께 전송하여 데이터 변경을 감지하고, 충돌 시 사용자에게 알리도록 했습니다.
- 품목 정보 관리: 거래처가 품목 정보를 수정하더라도 기존 주문서의 품목 정보는 유지되도록 주문서 생성 시점에 품목 정보를 복사하여 저장했습니다. 주문서 수정 시에는 거래처의 최신 품목 정보를 반영하되, 기존 주문 품목과 비교하여 변경 사항을 명확히 표시했습니다.
- 주문서 이력 관리 및 이벤트 처리
- 주문서의 모든 변경 사항을 기록하기 위해 JSONB 형태로 주문서 스냅샷을 저장하는 이력 엔티티를 추가했습니다.
- 주문서 생성 및 상태 변경 시 도메인 이벤트를 발행하여 보조 논리를 분리하고, 각 이벤트 처리기에서 관련 작업을 수행하도록 했습니다.
- 주요 이슈 및 해결 과정
- JPA 1차 캐싱: OSIV 환경에서 JPA 1차 캐싱으로 인해 동시성 문제가 발생하여, 주문서 조회 시 1차 캐시를 사용하지 않도록 설정했습니다.
- hashCode 문제: 서버 환경에 따라 hashCode 값이 달라져 revision 생성에 문제가 발생, 주문서 이력 개수를 revision으로 사용하도록 변경했습니다.
Next Feeds
Webpack 빌드에 날개를 달아줄 Esbuild-Loader
Esbuild-Loader를 사용하여 Webpack 빌드 속도를 향상시키는 방법과 성능 비교 결과를 제시합니다.
WebpackEsbuild-LoaderBabel-Loader빌드 속도Transpilation
2022. 7. 7.
카카오엔터테인먼트FE
Webpack 빌드에 날개를 달아줄 Esbuild-Loader
Esbuild-Loader를 사용하여 Webpack 빌드 속도를 향상시키는 방법과 성능 비교 결과를 제시합니다.
WebpackEsbuild-LoaderBabel-Loader빌드 속도Transpilation
2022. 7. 7.
카카오엔터테인먼트FE

배포를 빠르게 - DIY(Deploy It Yourself)
버즈빌은 단일 헬름 차트, 스피네이커 템플릿, 슬랙 워크플로우를 통해 배포 속도를 높이고 팀 간 의존성을 줄였습니다.
배포DIY헬름스피네이커슬랙 워크플로우
2022. 7. 5.
버즈빌

테스트 케이스 관리를 JIRA로 하자! : 웹서비스셀의 테스트 관리 툴 도입기
웹서비스셀의 JIRA 기반 테스트 관리 툴 도입기: 엑셀의 한계를 극복하고 Zephyr Scale을 통해 효율적인 QA 환경을 구축한 과정.
JIRAZephyr Scale테스트 케이스 관리QA웹서비스셀
2022. 7. 5.
데브시스터즈

ECS Task Rebalancing을 이용한 EC2 비용 최적화
ECS Task Rebalancing을 통해 EC2 비용을 최적화하고, Managed Cluster Auto Scaling의 한계를 극복하는 방법을 제시합니다.
ECSAuto ScalingEC2비용 최적화Task Rebalancing
2022. 7. 4.
AB180

올리브영 테크블로그 Gatsby 전환&개발기
올리브영 테크 블로그를 Jekyll에서 Gatsby로 전환하며 얻은 경험, 이유, 개발 과정, 그리고 결과에 대한 분석.
GatsbyJekyll블로그 마이그레이션SEONetlify
2022. 7. 4.
올리브영