Spring Boot를 이용한 RESTful Web Services 개발 #1 MSA와 RESTful Web Services

Jake Seo·2021년 9월 9일
1

Spring-boot-restful

목록 보기
1/17

개요

MicroService Architecture(MSA) 라는 개념이 등장하며 기존의 Monolithic Architecture의 문제점이 부각되며 많은 기업들이 MSA로의 전환을 시도함.

이 과정에서 표준화된 HTTP 프로토콜을 이용하는 RESTful Web Service를 많이 이용하게 됐는데 이 RESTful Web Service를 구성하는 데에 자바 언어와 스프링 부트를 이용할 것이다.

MSA의 장점

  • 각 서비스를 독립적으로 만들어 한 시스템에서 장애가 발생해도 모든 시스템에 영향을 미치지 않게 만들 수 있다.
  • 서비스의 부하에 따라 스케일 업, 다운을 하기 쉽다.
    • 부하가 많은 서비스가 존재하는 서버만 사양을 높이면 된다.
  • 개별적으로 개발 내용 적용이 가능하다.
    • 한번에 전체 시스템을 내렸다 올리거나 할 필요 없기 때문에, 개발 내용을 적용할 필요 없는 서비스는 그대로 정상적으로 운영될 수 있다.
  • 팀별 코드 이해도 증가 및 유지보수 난이도 저하
    • MSA는 보통 API로 통신하는데 API가 스펙에 맞게 정상적으로 동작하고 있다면, API 문제가 아닌 해당 클라이언트나 다른 문제임을 캐치할 수 있다.
  • 각 서비스에 맞는 인프라(개발 언어, DB 등)를 선택할 수 있다.

MSA의 단점

  • 유지보수 난이도 증가
    • 이건 특정 상황에서 이러한 현상이 일어나는데, 만일 한 회사에서 굉장히 다양한 언어로 MSA를 구축했다면, 각 언어를 할줄 아는 개발자가 1명씩 있어야 한다.
  • API 관리의 중요성이 증가
    • 모든 서비스가 여기저기 흩어져있는 API를 사용하기 때문에, 한 서비스만 생각해서 API의 스펙을 바꿀 수 없다. API 스펙을 바꾸기 전에 해당 API를 의존하는 모든 서비스가 문제 없을지 잘 고려해야 한다.
  • 일반적으로 더 비싼 비용이 들음
    • 모든 서비스를 다 별개로 감싸야 하는데, 그에 따른 오버헤드도 발생하고 서버비용도 더 많이 발생할 확률이 크다.

그렇다면 MSA를 써야하는 곳은?

  • 다양한 서비스를 운영하고 있는 포털과 같은 사이트 혹은 쇼핑몰 등 대형사이트에서 사용하는 것이 적합하다.

작은 사이트의 경우 모놀리식으로 시작하여 이용자 수가 많아지면 천천히 MSA로 분리하는 것도 나쁘지 않은 전략인 것 같다.

profile
풀스택 웹개발자로 일하고 있는 Jake Seo입니다. 주로 Jake Seo라는 닉네임을 많이 씁니다. 프론트엔드: Javascript, React 백엔드: Spring Framework에 관심이 있습니다.

0개의 댓글