ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SW 아키텍처 스타일 - Top Architectural Styles
    Review/ByteByteGo - System Design 2024. 8. 2. 16:35
    반응형

    소프트웨어 아키텍처는 시스템의 구조와 동작을 형성하며, 각 아키텍처 스타일은 특정 요구사항과 환경에 따라 장단점을 가지고 있습니다. 올바른 아키텍처를 선택하면 더 견고하고 유지보수 가능한 시스템을 설계할 수 있습니다. 각 아키텍처 스타일과 패턴을 참고하여 프로젝트에 가장 적합한 접근 방식을 선택해야 합니다.

    계층형 아키텍처 (Layered Architecture, n-tier)

    • 설명: 소프트웨어 시스템을 여러 계층으로 분리하여 각 계층이 특정 기능을 담당하도록 하는 구조입니다. 일반적으로 프레젠테이션 계층, 비즈니스 계층, 데이터 접근 계층 등으로 나뉩니다.
    • 장점: 유지보수성과 확장성이 높으며, 각 계층이 독립적으로 개발되고 테스트될 수 있습니다.
    • 단점: 계층 간의 의존성이 복잡해질 수 있으며, 성능이 저하될 수 있습니다.

    CQRS (Command Query Responsibility Segregation)

    • 설명: 읽기 작업과 쓰기 작업을 분리하여 독립적으로 확장할 수 있도록 하는 아키텍처 패턴입니다.
    • 장점: 성능 및 확장성이 높아지며, 데이터 일관성 유지가 용이합니다.
    • 단점: 복잡성이 증가할 수 있으며, 구현이 어렵습니다.

    오케스트레이션 아키텍처 (Orchestration Architecture)

    • 설명: 중앙 관리자가 여러 서비스를 조율하여 작업을 수행하도록 하는 구조입니다.
    • 장점: 중앙 집중식 관리가 가능하며, 복잡한 워크플로우를 효율적으로 처리할 수 있습니다.
    • 단점: 중앙 관리자에 대한 의존성이 높아지며, 단일 실패 지점이 될 수 있습니다.

    MVP (Model-View-Presenter)

    • 설명: 모델, 뷰, 프리젠터로 구분하여 사용자 인터페이스를 관리하는 패턴입니다.
    • 장점: 뷰와 모델 간의 강한 결합을 피할 수 있으며, 테스트가 용이합니다.
    • 단점: 코드베이스가 복잡해질 수 있습니다.

    이벤트 주도 아키텍처 (Event-Driven Architecture)

    • 설명: 이벤트의 발생과 처리를 중심으로 시스템이 동작하는 구조입니다.
    • 장점: 비동기 처리가 가능하며, 확장성이 높습니다.
    • 단점: 시스템 상태를 추적하는 것이 어려울 수 있으며, 디버깅이 복잡할 수 있습니다.

    도메인 주도 설계 (Domain-Driven Design, DDD)

    • 설명: 소프트웨어 시스템을 도메인 모델을 중심으로 설계하는 접근 방식입니다.
    • 장점: 비즈니스 요구사항에 맞춘 설계가 가능하며, 유지보수성이 높습니다.
    • 단점: 초기 학습 곡선이 높고, 복잡성이 증가할 수 있습니다.

    스페이스 기반 아키텍처 (Space-Based Architecture)

    • 설명: 애플리케이션의 상태와 데이터를 여러 메모리 공간에 분산하여 처리하는 아키텍처입니다.
    • 장점: 확장성이 높고, 높은 가용성을 보장합니다.
    • 단점: 데이터 일관성 유지가 어려울 수 있으며, 복잡성이 증가할 수 있습니다.

    마이크로서비스 아키텍처 (Microservices Architecture, MSA)

    • 설명: 애플리케이션을 작은 독립적인 서비스로 분할하여 각각의 서비스가 독립적으로 배포되고 확장될 수 있도록 하는 구조입니다.
    • 장점: 확장성과 유연성이 높으며, 서비스 간의 독립성을 보장합니다.
    • 단점: 서비스 간의 통신이 복잡해질 수 있으며, 운영 관리가 어려울 수 있습니다.

    마이크로커널 아키텍처 (Microkernel Architecture)

    • 설명: 시스템의 핵심 기능은 기본 시스템(커널)에 포함하고, 추가 기능은 독립적인 플러그인으로 구현하는 구조입니다.
    • 장점: 확장성과 유연성이 높으며, 핵심 시스템의 안정성을 유지하면서도 새로운 기능을 쉽게 추가할 수 있습니다.
    • 단점: 플러그인 간의 의존성 관리가 복잡할 수 있습니다.

    https://www.youtube.com/watch?v=f6zXyq4VPP8

     

    반응형

    댓글

Designed by Tistory.