계층형 아키텍처
계층형 아키텍처(layered architecture)는 레이어드 아키텍처라고하며 소프트웨어를 몇 개지 계층으로 나누는 방식
- 가장 흔한 아키텍처 형태로 단순하고 이해하기 쉬움
- 각 계층이 논리적으로 분리되어 있어, 소규모 애플리케이션에서 많이 채택
- 각 계층에서는 주어진 역햘을 수행하며, 의존성이 단방향이어야함(예: 프리젠테이션 계층은 비즈니스 계층에만, 비즈니스 계층은 영속성 계층에만 의존성을 가지게됨)
장점:
- 계층이 분리 및 격리되어 있기 때문에 복잡도가 감소하며 계층 내에서는 관련된 코드의 응집도가 높아짐
- 테스트가 쉬움
단점:
- 다른 아키텍쳐에 비해 어플리케이션 규모가 커지게 되면 계층이 거대해지면서 유지보수가 힘들어지고 개발속도가 떨어짐
- 하나의 큰 덩어리를 여러 개 배포해야 하므로 배포도 쉽지 않음
이벤트 기반 아키텍처
이벤트 기반 아키텍처 (event-driven architecture) 는 말그대로 이벤트의 상태 변화에 대응하는 소프트웨어 설계 패턴.
이벤트: 시스템의 외부 또는 외부에서 시스템에 영향을 주는 상황들을 의미
ex) 사용자가 로그인 버튼을 눌렀을 때 로그인 이벤트가 발생합니다.
웹툰 애플리케이션 이라면 웹툰을 열람하는 이벤트가 있을 것이고, 전자상거래 애플리케이션이라면 구매라는 이벤트 가 있을 겁니다.