자바/MSA

Microservice 유래와 개념

UroJem 2023. 12. 3. 15:08

 

아키텍처란?

데브옵스, 클라이언트 등에 서비스를 제공하기위해 프로그램 개발 목적을 어떻게 설계할 것인지 표현한 기술

 

 

소프트웨어 아키텍처

  • N-계층 아키텍처
    • 애플리케이션에 고유의 기능들을 여러 계층으로 나눈 아키텍처(ex. MVC 패턴)
  • 모놀리스 아키텍처
    • 모든 UI, 비지니스 로직을 하나의 어플리케이션으로 패키징한 아키텍처
  • 마이크로서비스 아키텍처
    • 규모 작은 분산된 서비스로, 대규모 애플리케이션을 분리함으로써 비지니스 로직의 복잡성 문제를 해결하고 각 서비스마다 책임이 명확해지도록 진행된 아키텍처

 

 

4계층은 Spring 웹개발시 사용했던 MVC 패턴과 동일하다.

계층별로 나뉘는 장점은 각 계층별 기능범위가 확실하다는 것이다.

Controller는 데이터를 받아오는 것과 응답을 주는 것 Service는 비지니스 로직과 트랜잭션 처리 Dao는 데이터 처리로 담당하는 레이어가 나누어져 있어 개발이 단순해지고 가독성이 좋아져 수정해야 하는 범위도 확실해진다.

 

 

 

모놀리스 아키텍쳐는 한 프로그램에 대한 기능들을 하나의 프로젝트로 개발한 것을 의미한다.

개발계나 운영계 서버에 배포할 때 프로그램이 1개면 1개의 배포자료만 올려서 업데이트를 진행하면 된다.

만약 Apache가 클라이언트 측 앞단에서 먼저 요청을 받아서 이중화 처리로 2개의 프로그램을 처리하고 있고 이중화 방식 중 라운드 로빈이란 방식을 사용하면 동일한 1번 프로그램과 2번 프로그램을 번갈아가며 통신하게 된다.

프로그램 1개가 down되도, 2번째 프로그램으로 통신하면서 프로그램 업데이트나 장애발생시에도 무중단 현상을 만들 수 있는데 이렇게 이중화를 진행하려면 이미 설치되어 있는 프로그램을 다른 서버에 또 설치해야 한다.

문제점은 Service #1에 간단한 수정처리가 필요 할 시 2개의 프로그램을 전체 패치를 진행해야 하고 Service #2번에 Service#1과 연관된 로직이 있었다면 Service #1을 패치하면서 Service #2에 장애가 발생할 수 있다.

 

 

 

마이크로서비스 아키텍처는 Service들이 각각 서버별로 분리가 되어있어 Service #2의 패치가 필요하면 Service #2만 별도로 패치해도 Service #1, Service #3 이 Service #2번을 이용하지 않는 이상 전혀 영향이 가지 않는다.

Spring Cloud Gateway 라는 프로그램이 URL 패턴에 따라 어떤 서비스를 이용할지 결정 해주고 모놀리스의 Apache 역할과 같이 이중화 같은 작업도 지원한다.

UI는 이중화가 필요없어서 클라이언트측 앞단에 1식만 구성했고 그 뒤에 처리하는 부분만 운영을 위해 마이크로서비스화 한 것이다. 마이크로 서비스는 무중단 운영도 지원하지만 업데이트 작업이 모놀리스 아키텍처에 비해 좀 더 불안감 없이 수행할 수 있다. 마이크로서비스 아키텍처가 장점만 있는것은 아니고 설계를 어떻게 했냐에 따라 단점도 많다.

 

 

 

 

https://www.inflearn.com/course/java-msa-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%8B%A4%EC%8A%B5/dashboard

 

Java 마이크로서비스(MSA) 프로젝트 실습 - 인프런 | 강의

Java SpringCloud와 여러 오픈소스를 연동하여 마이크로서비스를 구축하는 세미 프로젝트를 경험해보실 수 있습니다. 마이크로서비스 구축 경험을 해보고 싶으시다면 이 강의를 추천할게요!, 마이

www.inflearn.com