Dazzling 개발 노트
Software Engineering - 소프트웨어 공학(2) - 아키텍처 패턴 본문
Server/Software Engineering
Software Engineering - 소프트웨어 공학(2) - 아키텍처 패턴
dj._.dazzling 2023. 11. 25. 13:10[Software Architecture Pattern]
- 계층화 패턴 (Layered): DB가 가장 안쪽에 위치해 보안이 중요할 떄 많이 사용하는 방법
- Presentation - UI
- Application - Service
- Business - Domain
- Data Access - Persistence
- 클라이언트 - 서버 패턴 (Client-Server): 하나의 서버, 다수의 클라이언트로 구성: 서버는 클라이언트로부터의 요청을 대기
- 클라이언트가 서버에 서비스를 요청하면 서버가 클라이언트에게 적절한 서비스 제공
- 마스터 - 슬레이브 패턴 (Master-Slave): 마스터 컴포넌트가 슬레이브 컴포넌트로의 작업을 분산, 슬레이브가 반환한 결과로부터 최종 결과 계산
- 파이프 - 필터 패턴 (Pipe-filter): 결과가 다시 인풋으로 들어가는 구조: 자연어 처리 시 많이 사용
- 한단계씩 체크하며 진행되는 구조
- 브로커 패턴 (Broker): 브로커 컴포넌트가 컴포넌트간의 통신을 조정
- 분리된 컴포넌트들로 이루어진 분산 시스템에서 사용
- 피어 투 피어 패턴 (Peer-to-Peer): 컴포넌트를 Peer로 표현
- 피어는 서버의 역할을 할 수도, 클라이언트의 역할을 할 수도, 둘 다의 역할을 할 수도 있음
- 모델-뷰-컨트롤러 패턴 (MVC : Model-View-Controller)
- Models - database, 핵심 기능
- Views - GUI, 사용자에게 정보 표시
- Controllers - 중간에서 요청 관리 (사용자의 입력을 처리)
- 마이크로서비스 패턴 (MSA : Microsesrvice): 기능별로 서비스를 분리하는 구조
- 모놀리식(Monolithic - 하나의 통합된 구조)과 반대되는 개념
- 핵사고날 패턴: 필요한 것들을 포트에 연결하여 사용하는 구조
- 도메인 비지니스 로직이 핵심
- 이벤트 - 버스 패턴 (Event-Bus)
- 리포지토리 패턴 (Repository)
- 이벤트 드레이븐 패턴 (Event driven)
- 블랙보드 패턴 (Blackboard)
- 인터프리터 패턴 (Interpreter)
* 추가적인 아키텍처
- Serverless Architecture
- 클라우드에서 다 해주는 것
- 인프라 구조에 상관 없이 개발에만 집중하도록 기타 환경을 모두 제공