본문 바로가기

좋아하는 것_매직IT/10.microservice

26.마이크로서비스, 소프트웨어 아키텍처 스타일에 대해서 알아보자.

반응형

블로그 목적

  • 소프트웨어 아키텍처 스타일에 대해서 공부해보고 정리해본다.

소프트웨어 아키텍처 스타일이란?

  • 정의
    • 소프트웨어 아키텍처 스타일은 체계적인 조직의 관점에서 시스템 군을 정의함.
    • 즉, 소프트웨어 아키텍처 스타일은 그 스타일로 만든 인스턴스에서 사용가능한 컴포넌트와 커넥터의 보케블러리, 그리고 이들을 조합할 수 있는 제약조건을 결정함.
      • 1994년 1월, "소프트웨어 아키텍처 개론(An Introduction to Software Achitecture" 중에서..
        • 데이비드 갈란(David Garlan) / 메리쇼(Mary Shaw)
  • 다시말해서, 어플리케이션은 아키텍처 스타일을 조합해서 사용함.
    • 모놀리식 아키텍처
      • 구현 뷰를 하나의 실행/배포 가능한 컴포넌트로 구성한 아키텍처 스타일
    • 마이크로서비스 아키텍처
      • 어플리케이션을 느슨하게 결합된 여러 서비스로 구성하는 아키텍처 스타일

그럼, 계층화 아키텍처 스타일에 대해서 알아보자

    • 정의
      • 소프트웨어 엘리먼트를 계층별로 구성하는 것을 말함.
    • 특징
      • 계층마다 명확히 정의된 역할을 분담함.
      • 계층간 의존성은 바로 하위에 있는 계층에 의존하거나, 하위에 위치한 어느 한계층에 의존함.
    • 그럼, 계층에 대해서 자세히 알아보자.
      • 표현계층(Presentation Layer)
        • 사용자 인터페이스 or 외부 API 가 구현된 계층을 말함.
      • 비즈니스 계층(Business Logic Layer)
        • 실제 요구사항에 대한 비즈니스 로직이 구현된 계층을 말함.
      • 영속화 계층(Persistence Layer)
        • 데이터베이스와 상호 작용 로직이 구현된 계층을 말함.
    • 계층화 아키텍처 스타일에서 강조하는 것에 대한 생각해봐야할 점.
      • 표현계층이 하나뿐이다.
        • 호출하는 시스템이 정말로 하나밖에 없을까?
          • 애플리케이션 호출하는 시스템 다수 존재 가능함.
      • 영속화 계층이 하나뿐이다.
        • 상호 작용하는 데이터베이스가 정말로 하나밖에 없을까?
          • 상호작용하는 데이터베이스가 다수 존재 가능함.
      • 비즈니스 로직 계층을 영속화 계층에 의존하는 형태로 정의한다.
        • 해당 의존성으로 인해서 데이터베이스 없이 비즈니스 로직을 테스트하는 것이 불가능해지지는 않을까?
          • 아마도.....
    • 이슈에 대한 대안 제시 -> 육각형 아키텍처 스타일.
      • 계층화 아키텍처에서 생각해봐야할점이나 문제점을 해결하고 개선하고자 육각형 아키텍처 스타일이 도출됨.

그럼, 육각형 아키텍처 스타일에 대해서 알아보자.

    • 정의
      • 육각형 아키텍처 스타일은 논리 뷰를 비즈니스 로직 중심으로 구성함으로써 계층화 아키텍처 스타일의 대안을 제시함.
        • 즉, 계층화 아키텍처 스타일의 문제점을 개선함.
    • 특징
      • 어댑터가 비즈니스 로직 주변을 감싸고 있음.
        • 애플리케이션에 표현 계층 대신 비즈니스 로직을 호출하여 외부에서 들어온 요청을 처리하는 인바운드 어댑터와 영속화 계층 대신 비즈니스 로직에 의해 호출되고 외부 애플리케이션을 호출하는 아웃바운드 어댑터를 가지고 있음.
          • 인바운드 어댑터
            • 외부에서 들어온 요청을 인바운드 포트를 호출해서 처리함.
          • 아웃바운드 어댑터
            • 비즈니스 로직에서 들어온 요청을 외부 어플리케이션를 호출해서 처리함.
      • 그리고, 비즈니스 로직에는 하나 이상의 포트가 존재함.
        • 포트는 비즈니스 로직이 자신의 외부 세계와 상호작용하는 방법을 정의한 작업을 말함.
        • 포트의 종류
          • 인바운드 포트
            • 비즈니스 로직이 표출된 API
            • 외부 어플리케이션은 해당 API 를 통해 비즈니스 로직을 호출함.
          • 아웃바운드 포트
            • 비즈니스 로직이 외부 시스템을 호출하는 방법
    • 장점
      • 비즈니스 로직에 있던 표현/데이터 접근 로직이 어댑터와 분리되어 비즈니스 로직이 표현/데이터 로직 어디에도 의존하는 않는다는 것.
        • 즉, 쉽게 설명하자면, 비즈니스 로직만 따로 테스트가능하다는 점이 장점이다.

결론

  • 소프트웨어 아키텍처스타일은 체계적인 조직의 관점에서 시스템 군을 정의함.
  • 다시말해서 소프트웨어 아키텍처 스타일은 그 스타일로 만든 인스턴스에서 사용가능한 컴포넌트와 커넥터의 보케블러리, 그리고 이들을 조합할 수 있는 제약조건을 결정함.
    • 1994년 1월, "소프트웨어 아키텍처 개론(An Introduction to Software Achitecture" 중에서..
      • 데이비드 갈란(David Garlan) / 메리쇼(Mary Shaw)
  • 스타일중에서는 계층화 아키텍처 스타일이 있고, 해당 스타일일 보완하기위해서 육각형 아키텍처 스타일로 개선되어 도출됨.

  • 나의 목표 및 다짐을 항상 내곁에 두기.
    • 목표
      • 나의 강점을 바탕으로 나의 일을 잘해냄으로써 타인과 사회를 아릅답게 만든다.
        • 현재 내가 가진 능력으로 누군가에 도움이 될 수 있을까? 에 대해서 항상 생각하기
    • 목표를 이루기 위한 실천방안
      • 꾸준한 블로깅/기록법/독서법으로 넘버원이 아닌 온리원이 되보자.
      • 천사불여일행(千思不如一行)을 항상생각하며 체화 및 각인시키자.
        • "천번 생각하는것보다 한번 행동하는 것이 더 중요하다."
      • 기기일약 불능십보(騏驥一躍 不能十步) / 노마십가 공재불사(駑馬十駕 功在不舍)
        • 천리마도 한번에 열걸음을 뛸 수 없고, 느리고 둔한말이라도 열흘이면 하룻길을 간다.
      • 모든 실수에는 마술이 숨어 있다. 따라서 나는 실수하면 실수할수록, 그런 실수에서 더 많이 배울수록 삶에서 더 많은 마술을 갖는다.
728x90
300x250