정의 : 주어진 상황의 소프트웨어 구조에서 발생하는 문제점을 해결하기 위한 일반화된 재사용 가능한 솔루션
아키텍처 패턴은 디자인 패턴보다 더 큰 범주에 속해 있으며 소프트웨어의 전체적인 그림을 만드는 솔루션이라 할 수 있습니다.
개념: MVP 패턴은 Model + View + Presenter를 합친 용어입니다. Model과 View는 MVC 패턴과 동일하고, Controller 대신 Presenter가 존재합니다.
- 데이터와 비즈니스 로직을 담당하는 부분입니다.
- 데이터를 가져오고 저장하는 역할을 수행합니다.
- 보통 데이터베이스, 네트워크 요청 또는 파일 시스템과 같은 데이터 소스와 상호 작용합니다.
- 사용자 인터페이스를 담당하는 부분입니다.
- 사용자가 보는 화면을 표시하고, 사용자 입력을 처리하며, Presenter에 의해 보여질 데이터를 표시하는 등의 역할을 수행합니다.
- 사용자의 행동은 Presenter에 의해 처리되도록 설계되어야 합니다.
- view와 Model 사이에서 중재자 역할
- 사용자와 인터페이스의 이벤트를 감지하고, 해당 이벤트를 처리하는 비즈니스 로직을 수행합니다.
- Model과 상호작용하여 데이터를 가져오거나 업데이트하고, View에 데이터를 업데이트하는 역할을 합니다.
- 시스템의 서로 다른 기능을 여러 계층(Layer)으로 분할하는 패턴
- 일반적으로 컨트롤러(Controller), 서비스(Service), 저장소(Repository) 계층으로 분리됨
- 소프트웨어를 내부 도메인으로 향하는 의존성을 가지는 여러 계층으로 분리하는 패턴
- 클라이언트의 요청 처리, 데이터베이스 조작, 외부 시스템과의 통신은 외부 계층에서 처리
- 소프트웨어의 유지보수성과 확장성을 향상시키는 것이 주요 목표
- 시스템을 작고, 독립적으로 배포 가능한 서비스로 분할하는 패턴
- 하나의 시스템에서 다양한 언어와 프레임워크를 도입할 수 있는 패턴
- 서비스 간의 통신은 API 또는 이벤트 기반 아키텍처(EDA, Event Driven Architecture)를 통해 통신합니다.
시스템 아키텍쳐에 대해 잘 정리해주셨습니다. 프로젝트의 상황에 따라 어떤 시스템 아키텍쳐를 구성하느냐가 굉장히 중요합니다. 그리고 이러한 아키텍쳐는 위에서 기술한 여러 가지 패턴들이 동시에 적용될 수 도 있습니다. 또한 무엇보다 어떤 아키텍쳐를 실제 프로젝트에 적용해보는 경험이 중요합니다. 이를 잘 적용하고, 운영해보는 경험을 쌓아보면 좋겠습니다.