Dazzling 개발 노트

Software Engineering - 소프트웨어 공학(2) - 아키텍처 패턴 본문

Server/Software Engineering

Software Engineering - 소프트웨어 공학(2) - 아키텍처 패턴

dj._.dazzling 2023. 11. 25. 13:10

[Software Architecture Pattern]

  • 계층화 패턴 (Layered): DB가 가장 안쪽에 위치해 보안이 중요할 떄 많이 사용하는 방법
    • Presentation - UI
    • Application - Service
    • Business - Domain
    • Data Access - Persistence
  • 클라이언트 - 서버 패턴 (Client-Server): 하나의 서버, 다수의 클라이언트로 구성: 서버는 클라이언트로부터의 요청을 대기
    • 클라이언트가 서버에 서비스를 요청하면 서버가 클라이언트에게 적절한 서비스 제공
  • 마스터 - 슬레이브 패턴 (Master-Slave): 마스터 컴포넌트가 슬레이브 컴포넌트로의 작업을 분산, 슬레이브가 반환한 결과로부터 최종 결과 계산
  • 파이프 - 필터 패턴 (Pipe-filter): 결과가 다시 인풋으로 들어가는 구조: 자연어 처리 시 많이 사용
    • 한단계씩 체크하며 진행되는 구조
  • 브로커 패턴 (Broker): 브로커 컴포넌트가 컴포넌트간의 통신을 조정
    • 분리된 컴포넌트들로 이루어진 분산 시스템에서 사용
  • 피어 투 피어 패턴 (Peer-to-Peer): 컴포넌트를 Peer로 표현
    • 피어는 서버의 역할을 할 수도, 클라이언트의 역할을 할 수도, 둘 다의 역할을 할 수도 있음
  • 모델-뷰-컨트롤러 패턴 (MVC : Model-View-Controller)
    • Models - database, 핵심 기능
    • Views - GUI, 사용자에게 정보 표시
    • Controllers - 중간에서 요청 관리 (사용자의 입력을 처리)
  • 마이크로서비스 패턴 (MSA : Microsesrvice): 기능별로 서비스를 분리하는 구조
    • 모놀리식(Monolithic - 하나의 통합된 구조)과 반대되는 개념
  • 핵사고날 패턴: 필요한 것들을 포트에 연결하여 사용하는 구조
    • 도메인 비지니스 로직이 핵심
  • 이벤트 - 버스 패턴 (Event-Bus)
  • 리포지토리 패턴 (Repository)
  • 이벤트 드레이븐 패턴 (Event driven)
  • 블랙보드 패턴 (Blackboard)
  • 인터프리터 패턴 (Interpreter)

* 추가적인 아키텍처

  • Serverless Architecture
    • 클라우드에서 다 해주는 것
    • 인프라 구조에 상관 없이 개발에만 집중하도록 기타 환경을 모두 제공

 

 

 

      •