E-commerce 마무리
이번주는 E-commerce 서버 구축을 마무리하는 한 주로 아직 구현하지 못한 장바구니 관련 기능과 미비된 통합 테스트를 추가 작성하고, 주문 결제 시스템을 이벤트 기반 아키텍처 구조로 변경하는 작업을 했다.
특히 기존 하나의 트랜잭션 단위의 주문 결제 시스템에서 이벤트 기반 아키텍처 구조로 변경하는데 많은 시간을 사용했다.
이벤트 기반 아키텍처 구조로 변경했을 때의 이점과 왜 변경해야 하는지에 대한 고민과 독립적인 트랜잭션 구성 방법에 대한 많은 고민을 하고 관련해서 트러블 슈팅 글을 작성했다.
https://seungjjun.tistory.com/328
지금같이 간단한 애플리케이션에서는 오히려 더 복잡해지는 구조라고 생각은 되었지만 이는 EDA의 아주 기초적인 부분을 학습하는 단계라고 생각하고 이벤트 기반에 대해 공부를 해봤는데, 고민해야 할 부분이 많았던 것 같다.
특히나 이벤트 중심 설계를 통해 각 서비스간 결합도를 낮췄다고 생각했는데, 각 단계가 이전 단계 트랜잭션의 성공적인 커밋에 의존하고 있어 처리 흐름 자체가 연쇄적이라서 이벤트 기반 구조의 장점을 살리지 못하고 있다는 생각이 들었다.
지금 주문 결제 시스템의 흐름이 주문 이벤트 발행 → 재고 차감 후 이벤트 발행 → 결제 후 이벤트 발행 이렇게 순차적으로 흐름이 이어지고 있기 때문에 재고 차감이벤트는 주문 이벤트 성공에 의존적이고, 결제 이벤트는 재고 차감 이벤트에 의존적이라는 점이 뭔가 기분이 나빴다..
그럼 주문 이벤트가 발행되면 재고 차감 시스템과 결제 시스템이 동시에 처리되어야 되는 게 아닌가?라는 생각을 하게 되었는데, 이러면 결제 실패 시에 대한 재고 롤백에 구현의 복잡성이 있을 것 같다...
뭐가 맞는지는 정확히 잘 모르기 때문에 이 부부은 다음 주 멘토링 시간에 질문을 통해 해결해 보자.
DB 공부
추가로 이번 주에는 매번 해야지 해야지 하던 db 공부를 시작했다.
이전 5주 차 전까지 동시성 이슈에 대해 해결해야 하는 과제가 있었지만 차주에 동시성 이슈에 관해 배운다는 이야기를 보고 조금 미루고 있었는데, 미리 조금씩 해두는 게 좋을 것 같아 생각이 들어 db 공부를 시작하게 되었다.
가장 약한 부분이 db에 대한 부분이었기 때문에 하기 싫은 마음도 있었지만 이제는 진짜 해야 할 것 같아 그 유명한 real mysql 8.0을 사서 읽고 있다.
차주에 진행될 동시성 제어를 시작하기 전에 트랜잭션과 잠금에 대한 부분을 읽어보자
'성장이야기 > 주간회고' 카테고리의 다른 글
2024년 5월 2주차 주간회고 (0) | 2024.05.13 |
---|---|
2024년 5월 1주차 주간회고 (0) | 2024.05.04 |
2024년 4월 2주차 주간회고 (0) | 2024.04.13 |
2024년 4월 1주차 주간회고 (0) | 2024.04.09 |
2024년 3월 4주차 주간회고 (4) | 2024.03.30 |