이제 API 운영과 보안에 대해 이해했을 테니, 기존 애플리케이션을 API 주도 서비스로 진화시키는 방법을 살펴볼 것.

“진화적 아키텍처”에서 저자는 진화적 아키텍처가 어떻게 여러 관점에서 짐진적인 변화를 가이드하는지 설명하고 있음. 이 책에서 소개한 진화적 아키텍처를 채용하든 않하든 거의 모든 성공적인 시스템은 인간이 지나면서 등장하는 새로운 요구사항이나 환경의 변화에 대응해 진화함. 고객의 피드백이나 시장 상황의 변화에 따라 제품을 변경하지 않는 조직은 거의 없음.

마찬가지로 오래 지속 중인 시스템이 인프라스트럭처의 변화, 기반 애플리케이션 프레임워트 또는 서드파티 서비스에 영향을 받지 않는 경우도 드뭄.

API는 자연스로운 인터페이스이자 추상화이며 시스템으로의 진입점임. 그렇기에 진화적 아키텍처를 지원하는 데 중요한 역할을 할 수 있음. 이번 장에서는 변화가 필요한 이유와 변화를 위한 설계 방법 그리고 유용한 패턴을 구현하는 지점에 대해 알아봄.

시스템의 진화에 API가 필요한 이유


소프트웨어를 안전하게 변경하는 것은 어려운 일임. 게다가 소프트웨어의 사용자 수가 많거나 설계상 내재된 복잡도가 높거나 다른 시스템과 단단히 통합되어 있는 경우라면 그 어려움은 더욱 커짐.

그리고 더 중요한 점이 있음

아키텍트 입장에서 API는 시스템의 진화에 도움이 됨. API는 모듈이나 컴포넌트의 경계가 되므로 응집도가 높고 결합도가 낮은 시스템을 구현하기 위한 자연스러운 활용점이 됨.

유용한 추상화: 응집도의 향상


응집도 cohesion는 시스템 내의 요소들이 서로 함께하는 정도를 의미함.