1. 아키텍처 설계
1.1. 아키텍처 구축 절차
- 요구 사항 분석
- → 아키텍처 분석
- → 아키텍처 설계
- → 검증 및 승인
1.2. 아키텍처 드라이버
-
설계 목적
- 달성하려는 비즈니스 목표를 먼저 명확히 설정해야 한다.
-
품질속성
- 이해당사자의 필요를 얼마나 잘 만족시키는지를 나타내는 측정/테스트 가능한 시스템 속성이다.
- 품질속성 시나리오는 6가지 요소(자극, 자극원, 반응, 반응측정, 환경, 대상)로 구성되며,
- 우선순위는 유틸리티 트리(Utility Tree)로 표현한다.
-
최우선 기능
- 비즈니스 목적 달성에 중요하거나 기술 난이도가 높은 기능으로,
- 일반적으로 전체 유스케이스의 약 10%이다.
-
아키텍처 관심사
- 전통적으로 요구사항으로 표현되지 않는 추가적인 설계 고려 사항으로,
- 일반 관심사(구조 수립, 배포 등)와 특별 관심사(인증, 캐싱, 로깅 등)로 나뉜다.
-
제약사항
- 아키텍트가 통제할 수 없는 결정사항
- (필수 기술, 법규, 마감 시간 등)
1.3. 아키텍처 4+1 관점 (Philippe Kruchten)
| 관점 | 대상자 | 내용 |
|---|---|---|
| Usecase View | 사용자 | 시스템이 제공하는 기능, 다른 관점의 근간 |
| Logical View | 설계자 | 클래스 종류와 관계 (Module View) |
| Implementation View | 개발자 | 모듈 구성과 배포 단위 구조 (Module View) |
| Process View | 시스템 통합자 | 실행 시점의 동적 행위 (C&C View) |
| Deployment View | 시스템 엔지니어 | 컴포넌트의 물리적 배치 (Allocation View) |
2. 아키텍처 스타일
2.1. 클라우드 아키텍처
클라우드는 고가용성·탄력적 확장성·비용 효율을 위해 컨테이너, MSA 등 클라우드 네이티브 기술을 활용한다.
- 핵심 요소
- 마이크로서비스(MSA): 독립 배포 가능한 작은 서비스 단위로 분해
- 서버리스(Serverless): 서버 관리 없이 클라우드가 자동 처리 (FaaS / BaaS)
- 컨테이너: Docker를 이용해 어디서나 동일하게 실행되는 가상화 기술
- 오케스트레이션: Kubernetes로 컨테이너 배포·스케일링·관리 자동화
- API Gateway: 단일 진입점 제공, 보안·인증·트래픽 제어
- 서비스 메시: 내부 서비스 간 통신 관리 (Istio 기반)
- DevOps / CI/CD: 코드 관리부터 배포까지 파이프라인 자동화
2.2. 3가지 아키텍처 비교
| 구분 | 모놀리식 | 마이크로서비스 | 서버리스 |
|---|---|---|---|
| 구조 | 단일 코드베이스 | 서비스별 분산 구조 | 이벤트 기반 Function 단위 |
| 확장성 | 전체 확장 (비효율) | 필요한 서비스만 확장 | 자동 확장 |
| 배포 | 전체 재배포 | 서비스별 독립 배포 | Function 단위 즉시 배포 |
| 비용 | 고정 비용 | 인프라 관리 비용 높음 | 사용한 만큼 지불 |
| 적합 프로젝트 | 빠른 출시, 소규모 | 독립 기능, 높은 확장성 | 이벤트 기반, 트래픽 변동 많음 |
하이브리드 모델: 서버리스 + 컨테이너 기반 MSA를 결합해 효율성을 극대화하는 현실적인 선택
2.3. 아키텍처 스타일 선택 기준
- 확장성(Scalability)
- 유지보수성(Maintainability)
- 성능(Performance)
- 보안(Security)
- 비용(Cost)