마이크로서비스(MSA)

배우다·2021년 4월 12일
0

마이크로서비스

목록 보기
1/2

최근 회사에서 서비스 로직만 개발하다 보니 아키텍쳐쪽에는 소홀해져 있는 생각이 들었다. 그리고 지금 현재 회사에 구축된 개발환경에서 여러 이슈가 생기기 시작해 MSA에 궁금증이 생기게 되었다.(현재 회사는 MAS 아키택쳐로 개발 되어 있으나 해당 부분에 개발을 참여하진 않았다.) MSA에 대한 정보를 찾는 중 '스프링 마이크로서비스 코딩 공작소' 라는 책을 찾게 되었다. 2019년도에 출판된 책이라 최신 책은 아니긴하지만 MSA 아키텍쳐가 어떤 식으로 구축되어서 사용 되고 있는지 좀 더 자세히 알아볼 수 있을 것 같아 이 책을 구매해 스터디 하기로 하였다.

스터디 목표

이 책을 스터디하는 목표는 MSA에 대한 이해와 책에 나오는 예제들을 실습하면서 최종적으로는 현재 회사의 아키텍쳐 구조를 개선 할 수 있는 방법을 찾아보는 것이다. (당장 현재는 아니더라도 추후에 필요시 유용하게 작용할 거 같다.)

마이크로 서비스란?

오늘은 마이크로서비스에 대한 개념을 공부하고 이해 할 수 있도록 블로그에 정리할 생각이다. 우선 마이트로 서비스에 대해 설명하기 앞서 모놀리식 아키텍쳐에 대해 이야기 해보자. 모놀리식 아키텍쳐는 마이크로서비스의 개념이 발전하기 전에 대부분의 웹 애플리케이션에서 사용하던 형태의 아키텍쳐이다. 모놀리식 아키텍쳐는 UI 및 비즈니스 로직, 데이터베이스 액세스 로직 모두 하나의 애플리케이션 산출물로 패키징되고 애플리케이션 서버에 배포 되는 것이다.

여기서 문제는 모놀리식 애플리케이션이 크고 복잡해지면 애플리케이션을 담당하는 각 팀의 의사 소통과 조정 비용이 증가하게 되며 애플리케이션이 각 팀마다 변경이 있을 때마다 애플리케이션 전체를 다시 빌드하고 테스트해서 배포해야 한다.

마이크로서비스 개념은 2014년경 소프트웨어 개발 커뮤니티에서 인식 되기 시작되었고 이러한 문제를 해결하기 위한 대안이 되었다. 마이크로서비스는 느슨히 결합된 작은 분산서비스로서 대형 애플리케이션을 관리하기 쉽고, 제한된 책임을 담당하는 컴포넌트로 분해 할 수 있다. 마이크로서비스를 고려할 때 수용해야할 핵심개념은 애플리케이션 기능을 분해하고 분리해서 완전 상호 독립적이어야 한다는 것이다.

이로서 나는 책의 첫 장 1.1 마이크로서비스란?을 보고 마이크로서비스의 기본 개념과 핵심개념에 대해 책을 통해 알아보았다. 좀 더 이해해야 할 부분이 있지만 어느정도의 개념은 잡히게 되었고 과거 모놀로식 아키텍쳐로 개발을 한적이 있었지만 그때 당시는 팀원이 적었고 불편함을 찾기는 힘들었다 그러나 이 책을 통해 MSA의 필요성을 좀 더 알게 되었다. 다음은 책에서 말해주는 마이크로 서비스의 특징들에 대해 정리해 보았다.

마이크로 서비스의 특징들

  • 애플리케이션 로직을 각자 책임이 명확한 작은 컴포넌트들로 분해하고 이들을 조합해서 솔루션을 제공한다.
  • 각 컴포넌트는 작은 책임 영역을 담당하고 완전히 상호 독립적으로 배포 된다. 마이크로서비스는 비즈니스 영역의 한 부분에서만 책임을 담당한다. 그리고 여러 애플리케이션에서 재사용할 수 있어야 한다.
  • 마이크로서비스는 몇 가지 기본 원칙에 기반을 두며, 서비스 소비자와 서비스 제공자 사이의 데이터 교환을 위해 HTTP와 JSON 같은 경량 통신 프로토콜을 사용한다.
  • 작고 독립적이며 분산된 마이크로서비스를 사용해 조직은 명확히 정의된 책임 영역을 담당하는 소규모 팀을 보유하 수 있다. 이 팀들은 자기가 개발하는 서비스만 책임진다.

다음과 같은 특징을 마이크로서비스 아키텍쳐를 알게 되었고 어떤 점을 유의하여 MSA 아키텍쳐를 구성하고 구축해야 하는지 배울 수 있었다. 정리하자면 마이크로서비스는 작은 영역의 컴포넌트로 분해하여 각 컴포넌트에 해당하는 서비스는 상호 독립적인 환경을 구축 해야 한다. 다음은 스프링 부트로 마이크로서비스를 구축해보는 예제를 진행해 볼 것이다.


참조 도서

스프링 마이크로 서비스 공작소 저자 [존 카넬] - 길벗 출판사

profile
안녕하세요. JAVA, SPRING, VUEJS, NUXT 사용하는 백엔드 개발자입니다.

0개의 댓글