아키텍쳐 2

[아키텍쳐] SAGA 패턴

SAGA 패턴 이전에 MSA 관련 포스트를 업로드하면서 MSA를 구축할 때에는 서비스 별로 DB를 구축하는 경우가 많기 때문에 트랜잭션을 어떻게 처리할 것인지에 대한 문제가 존재한다고 언급했었다. 그에 따라 각각의 서비스는 로컬 트랜잭션만을 처리하고 그 결과에 따라 트랜잭션 완료 이벤트 혹은 실패 이벤트를 전달함으로써 데이터의 일관성을 유지하는 SAGA 패턴이 등장하게 되었다. 로컬 트랜잭션이 발생하면 현재 DB를 업데이트한다. 만약 그것이 성공하는 경우 다음 로컬 트랜잭션을 트리거하고 실패하는 경우 보상 이벤트를 통해 이전 로컬 트랜잭션을 롤백한다. 완료 이벤트와 실패 이벤트는 동시 다발적으로 일어나는 것이 아니라 순차적으로 이루어진다. 여기서 트랜잭션의 관리 주체는 DBMS가 아니라 각각의 서비스이다..

아키텍쳐 2022.04.11

[아키텍쳐] BFF 패턴 (Backend for Frontend)

BFF (Backend for Frontend) BFF 패턴은 이름 그대로 특정 프론트엔드를 위한 백엔드를 구축하는 패턴을 의미한다. 옛날에는 프론트엔드를 개발할 때 데스크탑 UI 하나만을 개발하면 됐다. 그러나 모바일 시장이 활성화되면서 모바일 전용 UI를 개발하는 것 역시 필요해졌다. 초기에는 하나의 범용 백엔드를 통해서 여러 형태의 인터페이스를 한번에 처리했다. 그러나 모바일 UI와 데스크탑 UI는 성격이 많이 다르기 때문에 각각이 백엔드와 주고받는 request에서 불일치가 종종 발생하게 되었다. 그로 인해 하나의 백엔드가 여러 가지 UI 요구를 처리할 수 있도록 구현하는 과정에서 개발 프로세스의 병목 지점으로 자리잡게 되었다. 만약 하나의 UI에 대해서 백엔드 수정 사항이 필요해도 그것이 전체 ..

아키텍쳐 2022.04.11