SpringBoot 구조 - Monolith / Micro

2021. 1. 4. 17:26OpenSource/Spring Boot

반응형

k8s 도입 전 클라우드 네이티브 개발에 대해서 알게 되었다.
cloud native development?

왜 클라우드 네이티브 개발인가?
클라우드의 이점을 완전하게 활용하려면 애플리케이션에 대한 새로운 접근 방식이 필요하며,
컨테이너를 사용한 패키징, 현대화된 아키텍처 수용, 애자일 기술 활용이 이에 해당 합니다.
클라우드 네이티브 방식은 개발 가속화, 제공 가속화, 변화하는 요구에 대한 적응을 가속화할 수 있는
최적의 방법입니다.
클라우드 네이티브 개발은 바로 DevOps입니다.
이는 컨테이너, 마이크로서비스, 그리고 하이브리드 클라우드입니다.
애플리케이션 서비스를 더욱 신속하게 구축하기 위해 중요한 사항을 수용하도록 관점을 바꾸는 것이
매우 중요합니다.

 

우선적으로 마이크로서비스에 대해서 알아보도록 합니다.


monolith와 micro에 대해 알아보자.

1. 모노리스(Monolith)
아래의 사전적 의미처럼 단일로 만들어진 프로젝트를 모노리스라고 한다.

영어사전 의미

반면에 2. 마이크로(Micro)는 각자의 역할과 책임이 있는 컴포넌트 별로 구성된 소프트웨어
모노리스의 구조의 경우 새로운 추가나 변경이 용이하지 않고 수정으로 인한 오류 발생 시 전체 시스템에 영향을 준다.
반대로 마이크로의 구조는 추가/변경이 용이하고 오류 발생 시 전체 시스템이 아닌 제한적인 영향을 준다.

 

어떻게 마이크로서비스를 적용해야 할까?

스프링부트의 경우
  마이크로서비스를 개발할 때 필요한 관련 라이브러리, 프레임워크, 설정 등을 조합해서 프로젝트가
  의존하는 여러 모듈을 연결해주는 다양한 스타터(starter)를 제공한다.

ex) spring-boot-starter-data-jpa 의존관계는 스프링과 JPA를 사용해 데이터베이스에 접근할 때 필요한 모든것을
      불러온다.

마이크로서비스로의 전환은 신규 또는 마이그레이션 등이 있을 것이다.

반응형