소프트웨어 아키텍처란?
소프트웨어 아키텍처는 시스템의 구성 요소, 컴포넌트 간 관계, 설계 원칙을 정의한 구조적 청사진입니다. 정보처리기사에서는 주요 아키텍처 패턴의 특징과 장단점이 자주 출제됩니다.
레이어드 아키텍처 (Layered Architecture)
기능을 계층으로 분리하여 위에서 아래 방향으로만 의존합니다.
- 표현 계층(Presentation): UI, 사용자 입출력
- 비즈니스 로직 계층(Business): 핵심 업무 규칙
- 데이터 접근 계층(Data Access): DB 연동
- 데이터 계층(Database): 실제 데이터 저장
장점: 유지보수 용이, 단위 테스트 쉬움. 단점: 불필요한 계층 통과 오버헤드
MVC 패턴 (Model-View-Controller)
- Model: 데이터와 비즈니스 로직
- View: UI 표현
- Controller: 사용자 요청을 받아 Model을 호출하고 View를 선택
파생 패턴: MVP(Model-View-Presenter), MVVM(Model-View-ViewModel)
SOA (Service-Oriented Architecture)
비즈니스 기능을 독립적인 서비스 단위로 분리하고, 표준 인터페이스로 연동합니다.
- ESB(Enterprise Service Bus): 서비스 간 메시지 라우팅·변환 미들웨어
- 웹 서비스: SOAP/WSDL 기반 서비스 연동
- MSA의 전신이지만 중앙화된 ESB 때문에 단일 실패점 발생 가능
마이크로서비스 아키텍처 (MSA)
애플리케이션을 작고 독립적으로 배포 가능한 서비스로 분해합니다.
특징
- 서비스별 독립 배포, 독립 확장 가능
- 서비스별 다른 기술 스택 사용 가능 (폴리글랏)
- API Gateway로 클라이언트 단일 진입점 제공
- 서비스 간 통신: REST API 또는 메시지 큐(Kafka, RabbitMQ)
MSA 설계 패턴
- Circuit Breaker: 장애 서비스 차단으로 연쇄 장애 방지
- Saga: 분산 트랜잭션 처리 패턴
- CQRS: 읽기/쓰기 모델 분리
- Event Sourcing: 상태 변경을 이벤트로 저장
기타 아키텍처 패턴
- 파이프 필터(Pipe and Filter): 데이터 스트림을 필터 체인으로 처리 (Unix 파이프)
- 이벤트 드리븐(Event-Driven): 이벤트 발행-구독 모델, 느슨한 결합
- 헥사고날(Hexagonal/Ports and Adapters): 핵심 도메인 로직을 외부 의존성으로부터 격리
- 클린 아키텍처(Clean Architecture): 의존성 방향을 안쪽으로만 허용
시험 핵심 포인트
- MVC Controller: 사용자 요청 처음 수신
- SOA vs MSA: SOA는 ESB 중심, MSA는 분산 서비스 자율
- 레이어드: 상위 계층이 하위 계층에만 의존
- MSA 장점: 독립 배포, 기술 다양성 / 단점: 네트워크 복잡성, 분산 트랜잭션 어려움
마무리
아키텍처 패턴은 각 패턴의 핵심 특징과 대표 사례를 한 줄로 정리해두면 시험장에서 빠르게 답을 고를 수 있습니다. MSA와 SOA의 차이는 특히 자주 출제되므로 비교 정리를 꼭 해두세요.