본문 바로가기

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

27.마이크로서비스, 분해에 대해서 알아보자.

반응형

블로그 목적

  • 마이크로서비스에서 분해에 대해서 알아본다.

마이크로서비스에서 분해란?

  • 분해는 마이크로서비스 아키텍처를 정의하는 주요 수단임
    • 비즈니스 능력에 따른 분해
    • 하위 도메인에 따른 분해
  • 마이크로서비스에서는 분해에 대해서, 객체지향 설계에 근거한 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)
            • 클래스를 패키지로 구성하는 원칙

그럼, 분해관련 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