122
1
부
기초
많은 사람이 모놀리스와 마이크로서비스가 공존하는 현실을 ‘엉망이라고
messy
’ 생각하지만, 현
실 세계에서 운영 중인 시스템의 아키텍처가 결코 깨끗하거나 깔끔한 것은 아니다. ‘클린
clean
’
아키텍처를 원한다면, 완벽한 선견지명과 무한한 자금만 있으면 가질 수 있는 이상적인 시스템
아키텍처 버전을 하나 출력해서 박제해둬라. 하지만 실제 시스템 아키텍처는 끊임없이 진화하
는 것으로, 요구와 지식의 변화에 따라 적응해야 한다. 기술은 이러한 아이디어에 익숙해지는
것이며, 이는
16
장에서 다시 설명한다.
마이크로서비스로의 마이그레이션을 점진적으로 진행하면 기존의 모놀리식 아키텍처를 조금
씩 분해하고 그 과정에서 개선점을 도출할 수 있으며, 중요한 것은 언제 중지해야 하는지 알 수
있다는 점이다.
놀랄 만큼 드문 상황에서도 모놀리스의 소멸은 어려운 요구 사항이 될 수 있다. 필자의 경험상
이와 같은 상황은 기존의 모놀리스가 죽거나 죽어가는 기술에 기반을 두고 있거나, 폐기해야
하는 인프라스트럭처에 매여 있거나, 내다 버리고 싶은 값비싼 제삼자의 시스템인 상황으로 한
정되는 경우가 많다. 이러한 상황에서도 앞서 설명한 이유로 점진적 분해 접근법이 필요하다.
3.3.13.3.1
조급한 분해의 위험성 조급한 분해의 위험성
도메인에 대한 이해가 명확하지 않을 때는 마이크로서비스를 생성하는 데 위험이 따른다. 이
로 인해 발생하는 한 가지 문제로, 필자의 이전 회사인 소트웍스에서 겪었던 상황을 예로 들
수 있다. 스냅
CI
는 소트웍스의 ...