반응형
블로그 목적
- 소프트웨어 아키텍처 스타일에 대해서 공부해보고 정리해본다.
소프트웨어 아키텍처 스타일이란?
- 정의
- 소프트웨어 아키텍처 스타일은 체계적인 조직의 관점에서 시스템 군을 정의함.
- 즉, 소프트웨어 아키텍처 스타일은 그 스타일로 만든 인스턴스에서 사용가능한 컴포넌트와 커넥터의 보케블러리, 그리고 이들을 조합할 수 있는 제약조건을 결정함.
- 1994년 1월, "소프트웨어 아키텍처 개론(An Introduction to Software Achitecture" 중에서..
- 데이비드 갈란(David Garlan) / 메리쇼(Mary Shaw)
- 1994년 1월, "소프트웨어 아키텍처 개론(An Introduction to Software Achitecture" 중에서..
- 다시말해서, 어플리케이션은 아키텍처 스타일을 조합해서 사용함.
- 모놀리식 아키텍처
- 구현 뷰를 하나의 실행/배포 가능한 컴포넌트로 구성한 아키텍처 스타일
- 마이크로서비스 아키텍처
- 어플리케이션을 느슨하게 결합된 여러 서비스로 구성하는 아키텍처 스타일
- 모놀리식 아키텍처
그럼, 계층화 아키텍처 스타일에 대해서 알아보자
-
- 정의
- 소프트웨어 엘리먼트를 계층별로 구성하는 것을 말함.
- 특징
- 계층마다 명확히 정의된 역할을 분담함.
- 계층간 의존성은 바로 하위에 있는 계층에 의존하거나, 하위에 위치한 어느 한계층에 의존함.
- 그럼, 계층에 대해서 자세히 알아보자.
- 표현계층(Presentation Layer)
- 사용자 인터페이스 or 외부 API 가 구현된 계층을 말함.
- 비즈니스 계층(Business Logic Layer)
- 실제 요구사항에 대한 비즈니스 로직이 구현된 계층을 말함.
- 영속화 계층(Persistence Layer)
- 데이터베이스와 상호 작용 로직이 구현된 계층을 말함.
- 표현계층(Presentation Layer)
- 계층화 아키텍처 스타일에서 강조하는 것에 대한 생각해봐야할 점.
- 표현계층이 하나뿐이다.
- 호출하는 시스템이 정말로 하나밖에 없을까?
- 애플리케이션 호출하는 시스템 다수 존재 가능함.
- 호출하는 시스템이 정말로 하나밖에 없을까?
- 영속화 계층이 하나뿐이다.
- 상호 작용하는 데이터베이스가 정말로 하나밖에 없을까?
- 상호작용하는 데이터베이스가 다수 존재 가능함.
- 상호 작용하는 데이터베이스가 정말로 하나밖에 없을까?
- 비즈니스 로직 계층을 영속화 계층에 의존하는 형태로 정의한다.
- 해당 의존성으로 인해서 데이터베이스 없이 비즈니스 로직을 테스트하는 것이 불가능해지지는 않을까?
- 아마도.....
- 해당 의존성으로 인해서 데이터베이스 없이 비즈니스 로직을 테스트하는 것이 불가능해지지는 않을까?
- 표현계층이 하나뿐이다.
- 이슈에 대한 대안 제시 -> 육각형 아키텍처 스타일.
- 계층화 아키텍처에서 생각해봐야할점이나 문제점을 해결하고 개선하고자 육각형 아키텍처 스타일이 도출됨.
- 정의
그럼, 육각형 아키텍처 스타일에 대해서 알아보자.
-
- 정의
- 육각형 아키텍처 스타일은 논리 뷰를 비즈니스 로직 중심으로 구성함으로써 계층화 아키텍처 스타일의 대안을 제시함.
- 즉, 계층화 아키텍처 스타일의 문제점을 개선함.
- 육각형 아키텍처 스타일은 논리 뷰를 비즈니스 로직 중심으로 구성함으로써 계층화 아키텍처 스타일의 대안을 제시함.
- 특징
- 어댑터가 비즈니스 로직 주변을 감싸고 있음.
- 애플리케이션에 표현 계층 대신 비즈니스 로직을 호출하여 외부에서 들어온 요청을 처리하는 인바운드 어댑터와 영속화 계층 대신 비즈니스 로직에 의해 호출되고 외부 애플리케이션을 호출하는 아웃바운드 어댑터를 가지고 있음.
- 인바운드 어댑터
- 외부에서 들어온 요청을 인바운드 포트를 호출해서 처리함.
- 아웃바운드 어댑터
- 비즈니스 로직에서 들어온 요청을 외부 어플리케이션를 호출해서 처리함.
- 인바운드 어댑터
- 애플리케이션에 표현 계층 대신 비즈니스 로직을 호출하여 외부에서 들어온 요청을 처리하는 인바운드 어댑터와 영속화 계층 대신 비즈니스 로직에 의해 호출되고 외부 애플리케이션을 호출하는 아웃바운드 어댑터를 가지고 있음.
- 그리고, 비즈니스 로직에는 하나 이상의 포트가 존재함.
- 포트는 비즈니스 로직이 자신의 외부 세계와 상호작용하는 방법을 정의한 작업을 말함.
- 포트의 종류
- 인바운드 포트
- 비즈니스 로직이 표출된 API
- 외부 어플리케이션은 해당 API 를 통해 비즈니스 로직을 호출함.
- 아웃바운드 포트
- 비즈니스 로직이 외부 시스템을 호출하는 방법
- 인바운드 포트
- 어댑터가 비즈니스 로직 주변을 감싸고 있음.
- 장점
- 비즈니스 로직에 있던 표현/데이터 접근 로직이 어댑터와 분리되어 비즈니스 로직이 표현/데이터 로직 어디에도 의존하는 않는다는 것.
- 즉, 쉽게 설명하자면, 비즈니스 로직만 따로 테스트가능하다는 점이 장점이다.
- 비즈니스 로직에 있던 표현/데이터 접근 로직이 어댑터와 분리되어 비즈니스 로직이 표현/데이터 로직 어디에도 의존하는 않는다는 것.
- 정의
결론
- 소프트웨어 아키텍처스타일은 체계적인 조직의 관점에서 시스템 군을 정의함.
- 다시말해서 소프트웨어 아키텍처 스타일은 그 스타일로 만든 인스턴스에서 사용가능한 컴포넌트와 커넥터의 보케블러리, 그리고 이들을 조합할 수 있는 제약조건을 결정함.
- 1994년 1월, "소프트웨어 아키텍처 개론(An Introduction to Software Achitecture" 중에서..
- 데이비드 갈란(David Garlan) / 메리쇼(Mary Shaw)
- 1994년 1월, "소프트웨어 아키텍처 개론(An Introduction to Software Achitecture" 중에서..
- 스타일중에서는 계층화 아키텍처 스타일이 있고, 해당 스타일일 보완하기위해서 육각형 아키텍처 스타일로 개선되어 도출됨.
- 나의 목표 및 다짐을 항상 내곁에 두기.
- 목표
- 나의 강점을 바탕으로 나의 일을 잘해냄으로써 타인과 사회를 아릅답게 만든다.
- 현재 내가 가진 능력으로 누군가에 도움이 될 수 있을까? 에 대해서 항상 생각하기
- 나의 강점을 바탕으로 나의 일을 잘해냄으로써 타인과 사회를 아릅답게 만든다.
- 목표를 이루기 위한 실천방안
- 꾸준한 블로깅/기록법/독서법으로 넘버원이 아닌 온리원이 되보자.
- 천사불여일행(千思不如一行)을 항상생각하며 체화 및 각인시키자.
- "천번 생각하는것보다 한번 행동하는 것이 더 중요하다."
- 기기일약 불능십보(騏驥一躍 不能十步) / 노마십가 공재불사(駑馬十駕 功在不舍)
- 천리마도 한번에 열걸음을 뛸 수 없고, 느리고 둔한말이라도 열흘이면 하룻길을 간다.
- 모든 실수에는 마술이 숨어 있다. 따라서 나는 실수하면 실수할수록, 그런 실수에서 더 많이 배울수록 삶에서 더 많은 마술을 갖는다.
- 목표
728x90
300x250
'좋아하는 것_매직IT > 10.microservice' 카테고리의 다른 글
28.마이크로서비스, 상호작용스타일에 대해서 알아보자. (0) | 2021.01.13 |
---|---|
27.마이크로서비스, 분해에 대해서 알아보자. (0) | 2021.01.13 |
25.마이크로서비스, 소프트웨어 아키텍처의 4+1 뷰 모델에 대해서 알아보자. (0) | 2021.01.13 |
24.마이크로서비스, 클라우드와 마이크로서비스에 대해서 생각해보자 (0) | 2021.01.13 |
23.마이크로서비스, 마이크로서비스를 만들어 갈때, 아키텍처 설계에 대해서 알아보자. (0) | 2021.01.13 |