November 2023
Beginner to intermediate
344 pages
3h 47m
Korean

군나르 모링(Gunnar Morling)
기업용 애플리케이션 개발자가 데이터를 애플리케이션 데이터베이스에 넣은 다음, “여기까지 했으면 다 끝났다”라고 여길 수 있는 시대는 지났습니다. 지금은 점점 늘어나는 사용자 요구 사항을 만족시키기 위해 여러 시스템에 데이터를 저장해야 하는 경우가 많습니다. 데이터베이스 자체에서는 제공하지 않는 다양한 기능을 갖춘 전문 검색 경험을 제공하려면 변경된 데이터를 별도의 검색 서비스로 보내야 합니다. 또한, 데이터베이스에 직접 접근하지 않고도 빠르게 데이터를 가져갈 수 있도록 캐시를 업데이트해야 합니다.
그렇지만 애플리케이션 데이터베이스와 검색 인덱스, 캐시까지 이 모든 데이터 저장소를 어떻게 동기화할 수 있을까요? 단순히 모든 시스템에 데이터 업데이트 요청을 보내고 싶을 수도 있지만, 이 방식에는 위험이 도사리고 있습니다.
이를테면 네트워크 문제로 검색 인덱스를 일시적으로 사용할 수 없다면 어떨까요? 재시도 로직 구현을 떠올리겠지만, 상황은 그보다도 빠르게 복잡해집니다. 관련된 모든 리소스를 업데이트하는 데 성공하더라도 데이터 일관성이 깨진 상태일 수 있습니다. 모든 업데이트가 단일 전역 트랜잭션 내부에서 수행(결국 서비스 품질이 리소스 가용성에 의존하게 됨)되지 ...