클라우드 아키텍처란?

이번 프로젝트에서 가장 많이 들었던 단어는 MSA이다. Microservice Application라는 건 알겠지만… 정확하게 어떤것이고 무엇인지 잘 모르겠어서 구글링을 해봤다.

모놀리스 방식

예전 IT 시스템 애플리케이션 설계 패러다임은 통합(Integration)과 재사용(Reuse)이었다.

그래서 각 모듈이 서로 긴밀하게 연결된(Coupling) 하나의 거대 시스템인 모놀리스(Monolith) 서비스 또는 애플리케이션이 대부분이었다.

그러나 모놀리스 방식의 애플리케이션은 성능, 배포, 실패 시의 복구 등 여러 치명적인 문제를 가지고 있다.

운영과 유지보수가 어려운 모노리스 방식의 애플리케이션은 높은 유지보수 비용을 지불하게 된다.

이러한 문제점들로 인해 MSA가 등장한다.

Microservice Architecture란?

기존 하나의 큰 단위로 개발/운영되던 애플리케이션을 수십, 수백, 수천개의 작은 서비스 단위로 쪼개서 애플리케이션을 개발/운영하는 방식

이러한 Microservice를 개발하기 위해서는 각 서비스끼리 독립적으로 개발될 수 있어야 하며,

각 서비스에 최적화된 개발 언어와 데이터베이스를 선택할 수도 있는 Polyglot Programming(폴리글랏 프로그래밍)의 요건을 갖춰야한다.

RESTful 서비스

이렇게 이기종으로 개발된 애플리케이션 간에 데이터 통신을 위해서 표준화된 HTTP 프로토콜을 사용하는 RESTful 서비스를 널리 사용.

Spring Boot

Spring Boot는 독립 운영 가능한 Spring 기반 애플리케이션을 쉽게 개발할 수 있도록 지원해주는 개발 도구이자 Spring Project

클라우드 아키텍처란?

클라우드 네이티브 아키텍처는 다음 네 가지 특성을 갖춰야한다.

  1.CI/CD
  코드의 통합에서부터 빌드,테스트,배포에 이르는 모든 과정
  (자동화 빌드를 위한 CI/CD 파이프라인의 구축)

  2.DevOps
  서비스 기획에서부터 개발, 배포의 과정을 수행하는 단일화된 조직을 구성해야 하며,
  고객과의 협업에서 나온 피드백은 바로 반영되어야 한다.

  3.MSA
  애플리케이션을 구성하는 서비스는 상호 종속성이 적으며,
  독립적으로 개발, 배포, 운영이 가능한 형태로 구성되어야 한다.
  (Spring Boot + Spring Cloud)

  4.Container Virtualization
  애플리케이션을 구성하는 서비스는 컨테이너 기반의 가상화 환경에서 운영되어야 한다.
  (Microservice Architecture를 위한 Container Virtualization의 구성과 운영)

Spring Cloud

분산 시스템 구성과 애플리케이션을 개발하기 위해 필요한 개발 환경과 서비스,

그리고 개발이나 구성에 관련된 패턴을 제공함으로써 Cloud Native Architecture를 위한

Microservice 애플리케이션을 빠르게 개발할 수 있도록 제공하는 개발 도구이자, 개발 플랫폼

Spring Boot → RESTful API → Spring Cloud → Microservice Application

참고자료 : https://www.inflearn.com/roadmaps/409#c325065