마이크로 서비스

Purple·2022년 4월 7일
0

DevOps

목록 보기
1/5
  • 애플리케이션을 느슨하게 결합된 서비스의 모임으로 구조화하는 서비스 지향 아키텍처 스타일의 일정인 소프트웨어 개발 기법이다.

  • 마이크로 서비스가 갖는 특징은 아래와 같다.

    • 유지보수에 유리하고 테스트 가능해야 함
    • 느슨하게 결합되어야 함
    • 독립적으로 배포 가능함
    • 비지니스 역량을 중심으로 구성해야 함
    • 작은 팀에 의해 소유됨
  • 라이브러리로서의 컴포넌트화하면 메모리상에서 함수 호출을 하여 호출비용이 적게 든다. 하지만 외부 라이브러리를 사용하는 프로그램의 입장에서, 해당 프로그램을 작성할 때에 대부분 라이브러리의 코딩 규칙을 따라가야 하는 경우가 많다. 그러다보면 컴포넌트간의 지나친 결합을 불러온다. 또한 라이브러리로서의 컴포넌트는 전체 응용 프로그램을 재배포해야한다.

  • 이와 다른 방법인, 서비스로서의 컴포넌트화는 개별적인 프로세스로 각 프로세스가 HTTP 또는 RPC로 서로 통신하여 호출 비용이 높다. 원격 호출 매커니즘을 사용하므로 이러한 종속 및 결합이 느슨하다. 그래서 서비스 단위로만 재배포하여 배포 편의성이 좋다.

  • 마이크로 서비스는 소프트웨어 스택, 데이터베이스 스택, 프로젝트 관리 등이 팀 별로 독립적이다. 분산화된 응용 프로그램을 설계 한다고 하여 도메인 주도 설계(DDD, Domain-Driven Design)라 불린다.

  • 위에서 언급한 바와 같이 마이크로 서비스는 변경한 서비스만 재배포 하면 된다. 간단하고 신속한 출시 프로세스를 갖는다. 하지만 이 변경 때문에 다른 서비스에 주는 영향을 없는지 추가적으로 신경을 써야한다는 단점이 있다.

  • 모놀리식은 전통적 방식이라 할 수 있다. 마이크로 서비스는 모놀리식에 비해 더 성숙한 모델이라 불리지만, 그렇다고 해서 모놀리식보다 항상 더 나은 아키텍처도 아니고 항상 마이크로 서비스를 적용해야 하는 것은 아니다.

profile
다시 보면, 더 많은 것들이 보인다.

0개의 댓글