MSA-2.2-소프트웨어 아키텍처

jaegeunsong97·2023년 9월 11일
0

MSA

목록 보기
6/6

MSA와 소프트웨어 아키텍처의 관계

  • MSA환경에서 소프트웨어 아키텍처가 왜 중요?
    • MSA : 모놀리스방식에서 분리/분해 된 Micro Service 들의 모음!
    • 따라서 모놀리스방식이였다면 시간이 지날수록 당연히 비즈니스/도메인이 복잡!
    • 개별적인 Micro Service도 비즈니스적인 목적에 따라 별개의 기능, 효율 중요

  • MSA는 넓은 의미의 소프트웨어 아키텍처
    • MSA 특성인 유연성, 확장성, 낮은 응집도/결합도 -> Micro Service에 필요한 이유
      • 당장 요청에 다한 응답 필요 없지만 높은 성능 요구
        • ASYNC
      • 당장 응답 필요하지만 낮은 성능 요구
      • 호출하던 외부 서비스의 스펙 변화
      • 통신 방식의 변화
        • Sync에서 Async 변화, 비동기 Callback 방식 처리 경우

  • MSA는 느슨한 결합

  • MSA 2가지 소프트웨어 아키텍처
    • Layered
      • 보편적
      • 여러개의 계층 -> 각 계층 책임 한정됨
      • 따라서 계층별로 독립적 -> 개발, 배포, 확장 가능
        • 코드의 유지보수 EZ
        • 계층별 접근 자유로움
      • Presentation / Application / Domain / Infra Later
    • Hexagonal
      • 각 계층의 책임 -> 내부 / 외부 -> 각각에 맞는 별도의 인터페이스 정의
        -접근 방식 : 외부(인터페이스) -> 내부로직
        • 따라서 경계간 이동 제한
        • 모든 비즈니스 로직 : 외부 -> 내부 호출

Layered Architecture

  • Layered Architecture

    • 각 계층 책임을 한정 -> 계층별 독립 -> 개발, 배포, 확장 가능
      • 따라서 계층별 유지보수 EZ
      • 계층별 접근 자유로움
        • 다른 계층 메소드 Call (단점)
        • 하위계층(의존) / 상위하위계층(접근) (단점)
    • Presentation / Application(Biz Logic) / (Domain / Infra Later) Model
    • 각 Layer -> 하위 계층 의존(down)
  • 단점 : 역방향 의존성

    • 1개의 DB로 부터오는 역방향 의존성

  • 결론
    • Layered Architecture : 모놀리스 or 계층별 변화가 적은 아키텍처에 적합
      • 은행, 증권사 등 변화가 매우 적은 경우

Hexagonal Architecture

  • Hexagonal Architecture
    • 내부 / 외부 -> 인터페이스
      • 어댑터 / 포트
    • 내부의 로직 : 외부를 통해서만 접근
      • 어댑터 : 외부시스템과 상호작용
      • 포트 : 각 서비스 비즈니스 로직에 맞게 정의된 인터페이스
      • 어댑터는 포트랑만 통신
    • 모든 비즈니스 로직(호출) : 외부 -> 내부 / 내부 -> 외부
      • 인바운드 어댑터 -> 인바운드 포트 -> 비즈니스 로직
      • 비즈니스 로직 -> 아웃바운드 포트 -> 아웃바운드 어댑터

  • 어댑터와 포트
    • 어댑터 : 서비스 입장, 해당 서비스가 사용하는 외부 시스템과의 직접적인 구현 및 상호작용
    • 포트 : 비즈니스로직 입장, 어댑터와 통신하기 위한 인터페이스(구현체 필요)

  • 목적
    • 어댑터 : 외부 서비스의 의존성을 분리하는 것
    • 포트 : 내부 비즈니스 로직과 인터페이스 분리하는 것

  • 결론

profile
블로그 이전 : https://medium.com/@jaegeunsong97

0개의 댓글

관련 채용 정보