반응형
블로그 목적
- 마이크로서비스에서 분해에 대해서 알아본다.
마이크로서비스에서 분해란?
- 분해는 마이크로서비스 아키텍처를 정의하는 주요 수단임
- 비즈니스 능력에 따른 분해
- 하위 도메인에 따른 분해
- 마이크로서비스에서는 분해에 대해서, 객체지향 설계에 근거한 2가지 법칙을 적용할 수 있음.
- 로버트 C.마틴(Robert C. Martin)
- 부치 메소드를 응용한 객체 지향 C++ 어플리케이션 설계(Designing Object Oriented C++ Applications Using The Booch Method) / Prentice Hall, 1995
-
- 해당 내용에서는 2가지원칙을 말하고 있음.
- 하나, 단일 책임 원칙(SRP, Single Responsibility Principle)
- 클래스의 책임을 정의하는 원칙
- 둘, 공동 폐쇄 원칙(CCP, Common Closure Principle)
- 클래스를 패키지로 구성하는 원칙
- 하나, 단일 책임 원칙(SRP, Single Responsibility Principle)
- 해당 내용에서는 2가지원칙을 말하고 있음.
- 로버트 C.마틴(Robert C. Martin)
그럼, 분해관련 2가지 원칙에 대해서 자세하게 알아보자.
- 하나, 단일 책임 원칙(SRP)
- "클래스는 오직 하나의 변경 사유를 가져야 한다."
- 로버트 C. 마틴
- 즉, 클래스가 맡은 책임은 각각의 그 클래스가 변경될 잠재적 이유.
- 다시말하면, 만약 클래스가 독립적으로 변경 가능한 책임을 많이 가지고 있으면, 안정적이 될 수 없음.
- 단일 책임 원칙에서 강하는 것은, 변경 사유가 오직 하나인 클래스를 정의하라는 것.
- 그럼, 마이크로서비스에서는 어떻게 적용 할까?
- 하나의 책임만 가진 작고 응집된 서비스를 정의하면 됨.
- "클래스는 오직 하나의 변경 사유를 가져야 한다."
- 둘, 공동 폐쇄 원칙(CCP)
- "패키지의 클래스들은 동일한 유형의 변경에 대해 닫혀 있어야 한다. 패키지에 영향을 주는 변경은 그패캐지에 속한 모든 클래스에 영향을 끼친다."
- 로버트 C. 마틴
- 다시말하면, 어떤 여러가지 클래스가 동일한 사유로 맞물려 변경되면, 동일한 패캐지에 있어야 한다는 것.
- 비즈니스 규칙이 추후에 변경된다고 하더라도, 가급적 소수의 패키지에 있는 코드만 수정하면 될 수 있게 만들자는 것.
- 해당, 공동 폐쇄 원칙을 철저히 지키면, 내가 만들고 있는 어플리케이션의 유지보수성이 향상됨.
- 그럼, 마이크로서비스에서는 어떻게 적용 할까?
- 동일한 사유로 변경되는 컴포넌트들 모두 같은 서비스로 묶을 수 있음.
- 즉, 비즈니스 로직에 대한 요건이 변경되어도, 수정/배포할 서비스 개수가 줄어들게됨.
- 보통은, 변경 영향도를 한팀 한 서비스에 국한 시키는 것이 좋음.
- 동일한 사유로 변경되는 컴포넌트들 모두 같은 서비스로 묶을 수 있음.
- "패키지의 클래스들은 동일한 유형의 변경에 대해 닫혀 있어야 한다. 패키지에 영향을 주는 변경은 그패캐지에 속한 모든 클래스에 영향을 끼친다."
그외, 객체 지향 설계 원칙(The Principles of Object Oriented Design)을 읽어보셔도 좋을 것 같음.
- 마틴씨는 SRP / CCP 를 포함한, 클래스, 패캐지 설계 시 적용 가능한 11개의 객체 지향 설계 원칙을 개발함.
- 참고로, 개발 및 설계 시 반드시 해당 11개 원칙에 대해서 꼭 기억하고, 사골을 우려먹듯(?) 뇌 속에 저장하고 각인하면 좋을것 같음.
- 개인적으로 정말 훌륭한 길잡이인것 같음.
- http://www.butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod
결론
- 마이크로서비스에서 분해는 마이크로서비스 아키텍처를 정의하는 주요 수단임
- 비즈니스 능력에 따른 분해
- 하위 도메인에 따른 분해
- 분해할 때 아래 2가지 원칙을 알고 있으면 좋음.
- 단일 책임 원칙(SRP)
- 공동 폐쇄 원칙(CCP)
- 오늘도 마이크로서비스관련 분해에 대한 공부 및 정리 완료! 감사합니다.
- 오늘의 명언 한마디
- 필수적인 지식을익히고, 다양한 간접경험과 새로운 세계와의 조우를 통해 지혜를 쌓으며, 문화예술에 대한 이해력을 높여야 한다.
- 그것이 바로 나의 가능성을 극대화하는 최적화된 준비인 셈이다.
- 박경철지음, "시골의사 박경철의 자기 혁명" 중에서...
- 필수적인 지식을익히고, 다양한 간접경험과 새로운 세계와의 조우를 통해 지혜를 쌓으며, 문화예술에 대한 이해력을 높여야 한다.
- 나의 목표 및 다짐을 항상 내곁에 두기.
- 목표
- 나의 강점을 바탕으로 나의 일을 잘해냄으로써 타인과 사회를 아릅답게 만든다.
- 현재 내가 가진 능력으로 누군가에 도움이 될 수 있을까? 에 대해서 항상 생각하기
- 나의 강점을 바탕으로 나의 일을 잘해냄으로써 타인과 사회를 아릅답게 만든다.
- 목표를 이루기 위한 실천방안
- 꾸준한 블로깅/기록법/독서법으로 넘버원이 아닌 온리원이 되보자.
- 천사불여일행(千思不如一行)을 항상생각하며 체화 및 각인시키자.
- "천번 생각하는것보다 한번 행동하는 것이 더 중요하다."
- 기기일약 불능십보(騏驥一躍 不能十步) / 노마십가 공재불사(駑馬十駕 功在不舍)
- 천리마도 한번에 열걸음을 뛸 수 없고, 느리고 둔한말이라도 열흘이면 하룻길을 간다.
- 모든 실수에는 마술이 숨어 있다. 따라서 나는 실수하면 실수할수록, 그런 실수에서 더 많이 배울수록 삶에서 더 많은 마술을 갖는다.
- 목표
728x90
300x250
'좋아하는 것_매직IT > 10.microservice' 카테고리의 다른 글
docker 로 Grafana 설치 및 기동하는방법 (ft.prometheus 컨테이너 연동) (0) | 2023.05.03 |
---|---|
28.마이크로서비스, 상호작용스타일에 대해서 알아보자. (0) | 2021.01.13 |
26.마이크로서비스, 소프트웨어 아키텍처 스타일에 대해서 알아보자. (0) | 2021.01.13 |
25.마이크로서비스, 소프트웨어 아키텍처의 4+1 뷰 모델에 대해서 알아보자. (0) | 2021.01.13 |
24.마이크로서비스, 클라우드와 마이크로서비스에 대해서 생각해보자 (0) | 2021.01.13 |