이 책은 소프트웨어 엔지니어와 아키텍트의 수년간 실무 경험의 산물이 분명하다. 저자는 분산 시스템 아키텍처 영역에서 복잡한 개념적 결정을 위해 소프트웨어 엔지니어와 소프트웨어 아키텍트를 안내하는 포괄적인 책을 썼다. 각 장은 논리적 방식으로 구성돼 있어 독자는 모든 대규모 분산 시스템 프로젝트에서 제기돼야 하는 중요한 질문들을 통해 안내받을 수 있다. 특히 저자가 마이크로서비스 활용을 고려한 프로젝트에 착수하기 전에 소프트웨어 아키텍트와 소프트웨어 엔지니어가 질문해야 하는 모든 질문을 상세히 설명하며, 모놀리스 아키텍처에서 마이크로서비스 기반 아키텍처로의 전환을 설계하는 데 상당 부분을 사용한다는 점을 강조할 필요가 있다. 또한 이 책에서는 클라우드 배포와 관련된 문제도 다루며, 이는 이러한 시스템의 중요한 측면을 구성한다. 이 책에서 설명하는 흥미로우며 수준 높은 문제는 마이크로서비스의 기초부터 트랜잭션, 결과적 일관성, 클라우드 배포, CAP 정리 관련 문제에 이르는 광범위한 주제를 다룬다. 마이크로서비스와 관련된 모든 문제에 대한 지침서 역할을 할 수 있는 책으로, 마이크로서비스 기반 분산 시스템을 구현하려면 어떤 질문을 해야 할지, 이후에 취해야 할 단계는 무엇인지에 대한 단계별 매뉴얼이다.
- 챠람 더스트다르(Schahram Dustdar) (IEEE 연구원, 책임자, 분산 시스템 그룹, WEIN(비엔나 기술 대학교) 기술 대학)
소프트웨어 엔지니어링의 영역은 빠르게 진화한다. 기업은 시장의 신규 이민자와 법률 및 고객 기대치의 변화로 인해 지속적인 도전을 받고 있다. 스타트업은 빠르게 진화하고 성공할수록 증가하는 서비스 수요를 처리해야 한다. 이러한 과제를 해결하려면 소프트웨어를 설계하고 구축하는 방법을 철저히 검토해야 한다. 마이크로서비스 아키텍처는 이러한 요구에 직면한 시스템을 위한 좋은 기반을 제공한다. 그러나 마이크로서비스에는 고유한 과제가 있다. 비닐다스는 소프트웨어 개발 영역에서 쌓은 광범위한 실무 경험과 새로운 기술 및 아키텍처 방식에 대한 열린 마음을 결합해 훌륭한 성과를 냈다. 이 책 전반에 걸쳐 마이크로서비스 시스템과 관련된 다양한 아키텍처 패턴을 도입하는 실용적인 접근법을 취하며, 기존부터 확립되어 있던 공통 패턴과 CQRS 같은 일부 새로운 패턴을 설명한다. 마이크로서비스 여정을 시작하기를 원한다면 이 책이 당신의 여행 가이드가 되어줄 것이다.
- 알라드 뷔제(Allard Buijze) (AxonIQ의 CTO겸 설립자, Axon 프레임워크 제작자)
몇 년 전의 SOA가 그랬듯이, 오늘날 새로운 소식의 중심에는 마이크로서비스가 있다. 어떤 사람들은 마이크로서비스가 바로 제대로 구현된 SOA라고 말한다. 이제 무거운 WS-* 표준 대신 REST가 제공되며, ESB 대신 ActiveMQ와 같은 경량 브로커가 있다. 트랜잭션은 어떨까? 아마존과 같은 업계 거대 기업에서는 모든 마이크로서비스를 아우르는 글로벌 ACID 트랜잭션을 필수적으로 사용하지 않는다(권장하지도 않는다). 대신 요즘은 BASE와 사가에 대한 이야기뿐이다.
BASE는 모든 마이크로서비스에 걸친 거대한 ACID 트랜잭션(하나의 거대한 커밋 포함)이 아니라 시스템으로 파급되는 여러 개의 작은 ACID 트랜잭션을 의미하므로 결론적 일관성이 생긴다. 이를 위해 메시징이 중요하다. 이러한 각각의 작은 ACID 트랜잭션은 XA와 같은 입증된 기술로 제어할 수 있으므로 문제가 발생하더라도 실제로는 ACID다. 안타깝게도 BASE는 XA 지원이 부족한 최신 프레임워크나 기술/플랫폼에서 사용하는 잘못된 변명일 뿐이다. BASE 구현 방식이 핵심이며, XA가 없으면 메시지 중복 처리나 손실에 신경 쓰지 않는 한 올바르게 수행하기가 매우 어렵다.
중복은 종종 문제가 발생할 수 있으며 임시 수정으로 해결될 수 있다. 손실된 메시지는 장기적인 데이터 불일치를 제외하면 전혀 감지되지 않을 수 있기 때문에 근본 원인을 찾기가 매우 어렵다. 소비자 측뿐만 아니라 생산자 측에서도 문제가 발생할 수 있는 것이다. BASE를 수행하는 간단하고 안전한 방법은 13장에 나와 있다. 모험심이 강하지 않다면 이러한 방식을 고수하는 것이 좋다. 금융 서비스에 종사하면 XA에서 제공하는 강력한 보증과 더불어 코드 단순성을 무료로 제공하는 혜택을 받을 수 있다.
14장에서 알 수 있듯이 XA 트랜잭션에서 기본적으로 제공되는 보증을 모방하려면 많은 추가 코딩과 테스트가 필요하다. 14장의 조정은 대부분 내가 주로 다루는 수준을 훨씬 뛰어넘는 내용이지만, 비닐다스는 얼마나 많은 것을 고려해야 하는지를 훌륭하게 지적해주었다. 그것은 공원에서 산책하는 것처럼 쉬운 것이 아니었으며, 그와 거리가 멀었다. 사가와 같은 고급 코딩(15장)은 격리를 포기하고 스스로 보상을 감당해야 하는 다른 수준의 트랜잭션을 도입할 수 있다. 아토미코스(Atomikos)에는 Try-Confirm/Cancel(줄여서 TCC이라는 다소 유사한 모델이 있다. 롤백을 해야 하는(보상을 프로그래밍하는) 부담이 있기 때문에 우리가 만나 본 많은 사람이 별로 좋아하지는 않지만 개념은 훌륭하다.
- 가이 파르돈 박사(Guy Pardon, PhD) (atomikos.com 설립자)