1. 소프트웨어 설계의 표준화, 아키텍처 스타일과 디자인 패턴의 개요
아키텍처 스타일: 시스템의 전체적인 구조를 정의하며, 컴포넌트 간의 관계와 제약사항을 설정하는 거시적(Macro) 설계 가이드라인.
디자인 패턴: 특정 상황에서 발생하는 일반적인 설계 문제에 대한 재사용 가능한 미시적(Micro) 해결책.
2. 아키텍처 스타일과 디자인 패턴의 차이점
두 개념은 추상화 수준과 적용 범위에서 명확한 차이가 있습니다.
| 구분 | 아키텍처 스타일 (Architecture Style) | 디자인 패턴 (Design Pattern) |
| 관점 | 시스템 전체의 논리적/물리적 구조 | 특정 모듈/클래스 간의 관계 해결 |
| 추상화 수준 | 최상위 (High-level) | 중간/하위 (Mid/Low-level) |
| 주요 관심사 | 성능, 확장성, 가용성 등 품질 속성 | 재사용성, 유연성, 확장성 등 코드 품질 |
| 결정 시점 | 개발 초기 단계 (전략적 결정) | 구현 및 상세 설계 단계 (전술적 결정) |
| 예시 | Layered, Client-Server, MSA | Singleton, Observer, Strategy |
3. 대표적인 아키텍처 스타일 3가지
가. 계층화 스타일 (Layered Architecture Style)
특징: 시스템을 유사한 관심사별로 계층화(N-Tier)하여 관리. 상위 계층은 하위 계층만 사용.
장점: 계층 간 독립성 보장으로 유지보수 용이. (예: OSI 7 Layer, Web-WAS-DB 3-Tier)
나. 이벤트 기반 스타일 (Event-Driven Architecture Style)
특징: 생산자(Producer)가 이벤트를 발행하면 소비자(Consumer)가 수신하여 비동기적으로 처리.
장점: 컴포넌트 간 결합도(Coupling) 최소화, 실시간 응답성 확보.
다. 마이크로서비스 아키텍처 (Microservices Architecture, MSA)
특징: 거대한 애플리케이션을 작고 독립적인 서비스 단위로 쪼개어 API로 통신.
장점: 서비스별 독립적 배포 및 확장 가능, 기술 스택의 유연성 확보.
4. GoF(Gang of Four) 디자인 패턴의 유형 및 대표 패턴
GoF 디자인 패턴은 목적에 따라 생성, 구조, 행위의 3가지 유형으로 구분됩니다.
| 유형 | 설명 | 대표적인 디자인 패턴 및 특징 |
| 생성 (Creational) | 객체 생성 과정을 추상화하여 시스템과 독립적으로 생성 | Singleton: 클래스의 인스턴스를 단 하나만 생성하도록 보장 Factory Method: 객체 생성 처리를 서브 클래스로 위임 |
| 구조 (Structural) | 클래스나 객체를 조합하여 더 큰 구조를 형성 | Adapter: 호환되지 않는 인터페이스를 연결하여 재사용 Composite: 개별 객체와 복합 객체를 동일하게 다룸 |
| 행위 (Behavioral) | 객체 간의 상호작용과 책임 분담을 정의 | Observer: 객체의 상태 변화를 관찰자들에게 자동 통지 Strategy: 알고리즘을 캡슐화하여 동적으로 교체 가능 |
5. 아키텍처와 패턴의 유기적 연동을 위한 제언
패턴의 오용 방지: 디자인 패턴은 만병통치약이 아니며, 단순한 문제에 복잡한 패턴을 적용하는 **'오버 엔지니어링(Over-engineering)'**을 경계해야 함.
댓글 없음:
댓글 쓰기