비즈니스 로직은 소프트웨어에서 가장 중요한 요소임. 하지만 소프트웨어 시스템에는 다른 요소도 많음.
코드베이스는 기능 또는 비기능 요구사항을 구현하기 위한 많은 책임을 담당함. 또한 사용자와 상호작용해서 입력을 받고 결과를 제공하며 다양한 저장소에 상태를 저장하고 외부 시스템 및 정보 제공자와 연동도 해야함
코드베이스가 처리해야 할 다양한 관심사로 인해 비즈니스 로직이 다양한 구성요소에 흩어지기 쉬움
ex. 어떤 로직은 사용자 인터페이스 또는 데이터베이스에 구현되거나 다양한 구성요소에 중복될 수 있음
→ 이러한 문제는 코드베이스의 유지보수 비용을 크게 증가 시킴
아키텍처 패턴은 코드베이스의 다양한 측면에 대한 구성 원칙을 도입하고 이들 사이의 명확한 경계를 제시함
→ 단기적으로는 비즈니스 로직 구현을 지원
→ 장기적으로는 유지보수를 돕기 위해 중요
→ 이를 가능하게 해주는 세 가지 주요 아키텍처 패턴인 계층형 아키텍처, 포트와 어댑터, 그리고 CQRS에 대해 보자