소프트웨어 아키텍처

기술노트
Admin (토론 | 기여)님의 2025년 9월 6일 (토) 05:53 판 (Gemini 벌크 업로더로 자동 업로드)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

🏛️ 소프트웨어 아키텍처

소프트웨어 아키텍처는 소프트웨어 시스템의 전체적인 구조와 구성 요소, 그리고 그들 간의 관계를 정의한 청사진입니다. 시스템의 주요 기능과 비기능적 요구사항(성능, 보안, 확장성 등)을 만족시키기 위해, 어떤 기술을 사용하고 어떻게 시스템을 조직할 것인지를 결정하는 고수준의 설계입니다.

건물을 짓기 전의 설계도와 같다고 볼 수 있습니다. 설계도가 부실하면 건물이 무너지듯이, 아키텍처 설계가 잘못되면 소프트웨어는 유지보수가 어렵고 확장성이 떨어지며, 결국 실패할 수 있습니다.


🧱 소프트웨어 아키텍처의 구성 요소

  • 컴포넌트 (Component) : 시스템을 구성하는 독립적인 기능 단위. (예: 사용자 관리 모듈, 결제 모듈)
  • 커넥터 (Connector) : 컴포넌트 간의 통신 메커니즘. (예: API, 메시지 큐, 데이터베이스 연결)
  • 데이터 (Data) : 시스템이 처리하고 저장하는 정보.
  • 제약 조건 (Constraint) : 아키텍처 설계에 영향을 미치는 기술적, 비즈니스적 제약 사항. (예: 특정 OS 사용, 특정 보안 표준 준수)

🧐 아키텍처 스타일 (Architecture Style)

소프트웨어 아키텍처를 설계할 때 참고할 수 있는 일반적인 패턴이나 원칙입니다.

  • 모놀리식 아키텍처 (Monolithic Architecture) : 모든 기능이 하나의 애플리케이션에 통합된 형태. (단순하지만 확장성/유연성 낮음)
  • 마이크로서비스 아키텍처 (MSA) : 독립적인 작은 서비스들로 구성된 형태. (유연하고 확장성 높지만 복잡함)
  • 클라이언트-서버 아키텍처 : 클라이언트와 서버가 분리되어 통신하는 형태.
  • 계층형 아키텍처 (Layered Architecture) : 시스템을 여러 계층으로 나누어 각 계층이 특정 역할만 수행하도록 하는 형태. (예: 프레젠테이션, 비즈니스 로직, 데이터 접근 계층)
  • 이벤트 기반 아키텍처 (Event-Driven Architecture) : 이벤트의 발생과 처리를 중심으로 시스템을 구성하는 형태.

💡 정보처리기사 핵심 Point

  • 소프트웨어 아키텍처는 시스템의 품질 속성(Quality Attributes)(성능, 보안, 확장성, 유지보수성 등)을 결정하는 데 매우 중요합니다.
  • 정보처리기사 시험에서는 소프트웨어 아키텍처의 개념, 구성 요소, 그리고 다양한 아키텍처 스타일의 특징과 장단점을 묻는 문제가 자주 출제됩니다.
  • 아키텍처 설계는 개발 초기 단계에서 이루어지며, 한 번 결정되면 변경하기가 매우 어렵습니다. 따라서 신중한 분석과 검토가 필요합니다.
  • 4+1 뷰 모델은 소프트웨어 아키텍처를 다양한 이해관계자의 관점에서 체계적으로 표현하는 데 사용되는 표준적인 방법입니다.