멋쟁이 사자처럼 The Origin

10주차 - Spring Cloud, Micro Service Architecture

Wonuk 2022. 4. 30. 17:53
반응형

Spring Cloud Project란?

 

24시간 가동할 수 있는 컴퓨터를 넉넉히 구비하는건 높은 비용을 요구합니다.

 

클라우드 서비스의 목적

서비스 제공을 위해 필요로 하는 자원을

1. 사용자가 원할 때

2. 즉시 제공할 수 있도록

 

Spring Cloud 프로젝트는

1차적인 목표로 분산 시스템 개발을 지원합니다. 

 

일상적인 개발에서는 명확한 주소를 제공합니다.(url)

datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/demo
    username: user
    password: password

 

클라우드 컴퓨팅으로 넘어오게 된다면

정확히 어디에 어떤 어플리케이션이 실행되는지 알 수 없습니다.

 

Service Discovery

어떤 서버에 어떤 어플리케이션이 있으며

그 서버의 상태가 사용자의 요청을 받을 수 있는 상태인지 아닌지를

알 수 있게 만들어주는 기술이 바로 Service Discovery입니다.

 

Service Discovery는 두가지가 있습니다

1. Client side Service Discovery

2. Server side Service Discovery

API Gateway

API Gateway 패턴 

REST에서의 계층 구조라는 제약이 있는데 이러한 구조에도

많은 도움을 줍니다.

정확한 서비스의 위치를 알 필요없이 요청한 응답을 받을 수 있습니다.

 

Spring Cloud에서도 같은 API Gateway를 지원하고 있습니다.

yaml이나 설정파일을 잘 설정하는것 만으로 쉽게 설정할 수 있습니다.

 

Cloud Config

클라우드 환경에서는 설정파일을 설정함에 있어서 문제가 있습니다.

그래서 설정 관리자가 따로 있습니다.

설정 파일을 외부, 중앙에서 관리합니다.


Micro Service Architecture(MSA)

SpringBoot Application

새로운 기능

- 로그인 기능 추가

- 위치 기반 조회

- 리뷰 게시글 작성

추가한다면 기존의 Application에

추가하는 형태로 개발을 했습니다.

 

전통적인 개발은 하나의 큰 서비스를 만드는 방향으로 진행됩니다.

1. 오롯이 개발에 집중 - 난이도 하락

2. 하나만 개발(하나의 어플리케이션) - 테스트 편리

3. 산출물이 한가지 - 배포 편리 

 

모놀리스(Monolithic) 아키텍처

단점

- 어플리케이션의 구성요소가 서로에게 영향을 미치기 쉽습니다.

- 한 기능의 문제가 전체 어플리케이션을 위태롭게 만듦

- 작은 기능 갱신을 위해 전체를 배포

- 서로 다른 기술 스택을 활용하기 힘듭니다.

 

빠른 요구사항 대응과 신기술 적용에 불리합니다.

 

 

Micro Service Architecture

서로 다른 기능들이 상호작용을 합니다.

 

 

MSA를 처음부터 하지 말아야 할 이유

1. 여러개의 컴퓨터들이 네트워크를 통해서 상호작용을 하게됩니다.

통신 단계에서 발생하는 딜레이, 데이터 허용량, 데이터 손실, 비정상 요청

서로 분리된 서비스이기 때문에 네트워크의 영향을 받음

2. 길 찾기 서비스를 만들고자 한다

서로 다른 서비스의 기능을 요구할 때, 기능 구현 및 테스트가 어려움

개발 난이도가 상승하게 됩니다.

 

3. 자신이 필요로 하는 서비스의 상태를 확인하기 어려움

 

4. 배포 과정이 어려워진다.

 

장점

기술의 혼재성

 

1.상황에 맞는 기술 스택을 선택할 수 있음

 

2. 기능이 개별적으로 발전, 개별 배포가 용이합니다.

처음부터 MSA를 하기 보다는 모놀리스로 시작하는것이 유리할 수 있습니다.

 

반응형