Architecture
Architecture(아키텍처)는 소프트웨어 시스템의 전체 구조와 구성 요소, 그들 간의 관계와 상호작용을 정의하는 설계를 의미한다. 시스템이 요구하는 성능, 확장성, 보안, 유지보수성 등의 품질 속성을 달성하기 위한 청사진 역할을 한다.
잘 설계된 아키텍처는 복잡성을 관리하고 변화에 유연하게 대응하며, 장기적인 시스템 진화를 가능하게 한다. 아키텍처는 기술적 의사결정의 기반이자 팀 간 소통의 공통 언어가 된다.
주요 특징
- 구조적 설계: 시스템을 구성 요소와 계층으로 조직화함.
- 품질 속성 중심: 성능·확장성·보안 등 목표를 반영해 설계함.
- 관계 정의: 컴포넌트 간 상호작용과 의존성을 규정함.
- 추상화: 세부 구현을 감추고 핵심 구조를 드러냄.
- 진화 가능성: 변화에 대응해 확장·수정할 수 있게 함.
장점
- 복잡성 관리: 큰 시스템을 이해 가능한 단위로 나눔.
- 유연한 확장: 요구 변화에 맞춰 구조를 확장함.
- 유지보수성: 명확한 구조로 변경과 수정을 쉽게 함.
- 품질 보장: 설계 단계에서 품질 목표를 반영함.
- 소통 기반: 구조를 공유해 팀 간 이해를 높임.
관련 용어
- 마이크로서비스: 작은 서비스로 시스템을 구성하는 아키텍처 스타일.
- 모놀리식: 하나의 단위로 통합된 애플리케이션 구조.
- 디자인 패턴: 반복되는 설계 문제의 검증된 해결책.
- ADR: 아키텍처 의사결정을 기록하는 문서.
- 클라우드 네이티브: 클라우드에 최적화된 아키텍처 접근법.
주요 솔루션 및 사용 사례
- 주요 솔루션
- 레이어드 아키텍처: 기능을 계층으로 분리한 구조.
- 마이크로서비스 아키텍처: 독립 서비스로 구성해 확장하는 구조.
- 이벤트 기반 아키텍처: 이벤트로 컴포넌트를 느슨하게 연결함.
- 헥사고날 아키텍처: 핵심 로직과 외부 연동을 분리하는 구조.
- 서버리스 아키텍처: 함수 단위로 실행하는 인프라 추상화 구조.
- 사용 사례
- 시스템 설계: 신규 서비스의 전체 구조를 정의함.
- 마이크로서비스 전환: 모놀리식을 서비스 단위로 재구성함.
- 확장성 확보: 대규모 트래픽을 견디는 구조를 설계함.
- 레거시 현대화: 기존 시스템을 유연한 구조로 개선함.
- 기술 표준 수립: 조직의 아키텍처 원칙을 정립함.


