애플리케이션 아키텍처의 중요성

로버트 마틴은 소프트웨어의 가치는 행위 가치와 구조 가치로 나뉘고, 소프트웨어를 정말로 부드럽게 만드는 것은 구조 가치라고 언급했다. 특히 개발과 운영을 모두 책임지고 있는 마이크로서비스팀 입장에서는 소프트웨어의 초기 개발뿐만 아니라 지속적인 비즈니스의 변화에 빠르게 대응할 수 있는 구조가 필요한데, 소프트웨어가 부드럽지 않다면 기민하게 대응하기가 어려울 것이다.

클라우드 플랫폼이나 쿠버네티스 같은 외부 아키텍처를 적용하는 것만으로도 처음에는 꽤 유연하고 기민해질 수 있다.

시스템의 핵심은 소프트웨어이고, 실제로 비즈니스를 제공하는 것은 마이크로서비스다. 핵심이 유연하지 않다면 오래가지 못할 것이다. 기민한 비즈니스를 제공하기 위해서는 당연히 마이크로서비스 내부 또한 유연해야 한다.

마이크로서비스 내부가 유연해야 마이크로서비스 간의 관계도 이벤트를 기반으로 느슨하게 구현할 수 있고, 이러한 구조여야 비로소 서비스를 독립적으로 확장, 변경, 배포할 수 있다.

이러한 구조의 핵심은 어떻게 애플리케이션의 관심사를 철저하게 분리할 수 있느냐다. 그리고 가장 중요한 것은 비즈니스 표현과 변화가 잦은 기술 표현을 나누는 것이다.

초반에 언급한 것처럼 가장 빨리 가는 방법은 제대로 가는 것이다. 처음에는 오래 걸리고 힘들고 불편하겠지만 꼼수를 쓰지 않고 원칙을 준수하는 것이 길게 보면 가장 빠른 법이다.