Legacy to Microservices6 [Legacy to Microservices] 분산 트랜잭션 설계 최종 분산 트랜잭션을 어떻게 구현할지에 대해서 팀원과 많은 얘기를 했고, 결과적으로 이전 게시글에서 설계를 수정했다. 그래서 이번 게시글에서는 그 설계가 어떻게 이루어졌는지를 알아보고자 한다. 분산 트랜잭션 설계 최종 블로그 목차 1. 책임 분배 2. 경우에 따른 시퀀스 다이어그램 3. 보완 요청추천글 책임 분배 - 실제 구현은 팀원이 하고 있기 때문에 나는 설계 관점에서 어떻게 접근했는지를 공유하려고 한다.- 먼저, 나는 클래스들이 어떤 책임을 가져야 하는지를 명확하게 설정했다.- 아래에서는 분산 트랜잭션으로 인해 영향을 많이 받은 네 가지의 클래스에 대해 책임을 작성해보았다. 1) OrderController- 주문 관련 요청에 대한 응답을 생성한다.- 세션에 접근하는 책임과 적절한 서비스를 호출하.. 2025. 3. 5. [Legacy to Microservices] 설계의 변경 분산 트랜잭션을 구현하는 과정에서 스케줄러 서버를 사용하지 않는 형태로 설계를 변경하기로 결정했다. 또, 팀원과 어떻게 협업하고 있는지를 조금 남겨보려고 한다. [Legacy to Microservices] 설계의 변경 블로그 목차 1. 설계의 변경 2. 협업 과정 설계의 변경 - 아마 저번 게시글까지 읽었다면, 분산 트랜잭션 과정에서 상대 서버가 죽은 경우 재확인 검증을 위해 스케줄링을 하도록 구현했다는 것을 알 수 있을 것이다.- 하지만, 이것이 현재 내가 독립적으로 개발한 프로토 타입이었다. 즉, 실제로 구현해야 하는 것은 팀원이었는데 내 설계가 맞는지 틀린지를 검증하기 위해서 간단하게 개발한 것이었다.- 같이 하는 팀원도 힘들었지만 나도 이 설계를 설명하는 것이 굉장히 어려웠기 때문에 대화.. 2025. 2. 25. [Legacy to Microservices] 분산 트랜잭션에서 상대 서버가 정상 응답을 제공하지 않는 경우, 재요청 지연시키기 이전 글에서 분산 트랜잭션 중 비정상 실패를 겪을 때를 아직 구현하지 않았다고 했었는데, 고민 끝에 구현을 하게 되었다. 내용이 기술적으로 좀 복잡하기 때문에 그림을 그려서 설명을 할 예정이다. 분산 트랜잭션에서 상대 서버가 정상 응답을 제공하지 않는 경우, 재요청 지연시키기 블로그 목차 1. 설계 2. 재고 변경 확인 요청 지연 과정추천글 설계 - 아무래도 내가 생각한 설계부터 설명을 하는 것이 맞을 것 같다.- 주문 처리를 완료하기 위해서는 Order service와 Product service의 소통이 필요하다.- 간략하게 설명을 하자면, 주문한 상품들의 수량만큼 재고를 감소시킨 후, 주문을 처리하는 것이다.- 이렇게 감소를 먼저 하는 이유는 주문을 삽입하고 재고를 감소시키는 경우, 주문을 삽.. 2025. 2. 16. [Legacy to Microservices] JPetStore-6 개선: CSRF 토큰을 JSP에 추가하기 최근에 면접에서 대차게 본 프로젝트에 대해서 설명하고 나서 실제로 꼼질꼼질 프로젝트를 잘 이어나가고 있다. 이전에서는 어려운 분산 트랜잭션에 대해서 개선하는 것을 보여줬었는데 이번 챕터에서는 초보자들도 가능한 CSRF 토큰을 추가하는 개선에 대해서 설명하고자 한다. JPetStore-6 개선: CSRF 토큰을 JSP에 추가하기 블로그 목차 1. CSRF 토큰 추가하기추천글 CSRF 토큰 추가하기 - CSRF가 무엇인지는 취준 카테고리에서 "Web 관련 면접 준비" 라는 게시글에 설명되어 있다.- 현재 작업하고 있는 JPetStore-6가 세션 기반의 웹 앱이기 때문에 사용자에게 세션 ID를 쿠키로 발급하는데 이것때문에 CSRF 공격이 일어날 수 있다.- 따라서 이를 방지하기 위해 CSRF를 추가한.. 2025. 2. 16. [Legacy to Microservices] JPetStore-6에서 주문 처리 분산 트랜잭션 구현 JPetStore-6의 경우 주문 처리를 할 때 다른 서비스의 데이터베이스를 변경해야 하기 때문에 트랜잭션의 원자성을 보장하기 위해서 분산 트랜잭션이 필요하다. 이전 개발 게시글에서 토스의 분산 트랜잭션 영상을 꼼꼼히 보고 해당 내용대로 구현하려고 하고 있다. 해당 게시글에서는 현재 어디까지 개발을 완료했는지를 다루고 있다. JPetStore-6에서 주문 처리 분산 트랜잭션 구현 블로그 목차 1. 주문 처리 흐름 2. HTTP 통신은 한 번만 이루어질 것 3. 수량 변경 시 락을 걸기 4. 실패 처리와 보상 트랜잭션추천글 주문 처리 흐름 - 기본적인 주문 처리 흐름을 그림으로 나타내면 아래와 같다.- 모놀리식일 때의 로직을 그대로 보존하고 있으며, 주문 요청이 들어오면 해당 주문량만큼 재고를 감소.. 2025. 2. 15. [Legacy to Microservices] JPetStore-6 웹 앱의 마이크로서비스 전환기 2025년 1월 1일부터 레거시 모놀리식 웹 앱인 JPetStore-6 웹 앱을 마이크로서비스로 전환하는 프로젝트를 진행하고 있다. 이 웹 앱의 경우 오픈 소스 웹 앱으로 비교적 접근이 쉽고 지금 내가 해왔던 연구들에서도 계속 실험 대상 웹 앱으로 쓰고 있기 때문에 익숙하다. 매번 새로운 것을 만들어내려고 하는 것보다는 이렇게 있는 것을 내가 가진 지식을 접목해 목표를 설정하고 달성해 나가는 것이 더 중요한 프로젝트라는 생각이 든다. JPetStore-6 웹 앱의 마이크로서비스 전환기 블로그 목차 1. 프로젝트 소개 2. 프로젝트 목표 3. 전환 4. 추후 목표추천글 프로젝트 소개 - 먼저, 프로젝트는 두 명이서 시작했다.- 내가 아이디어를 계획했고, 최근에 같이 일을 하고 있는 학부 연구생에게 제.. 2025. 2. 15. 이전 1 다음 반응형