[Spring Cloud로 개발하는 마이크로서비스 애플리케이션]-Introduction to Micro Service-3

Sungjin·2021년 5월 31일
1
post-thumbnail

SOA VS MSA

  • SOA
    -공통의 서비스를 ESB(Bus)에 모아 사업 측면에서 공통 서비스 형식으로 서비스 제공
    -재사용을 통한 비용 절감
    -서비스 및 데이터 베이스에 직접 접근
    -서비스 공유 최대화
  • MSA
    -서비스 간의 결합도를 낮추어 변화에 능동적으로 대응
    -서비스 및 데이터 베이스 접근 시, API를 통해 접근
    -서비스 공유 최소화

REST API

-기본적으로 HTTP Method를 사용하며 방식에 따라 Level이 나뉨

  • Level 0
    -REST 방식으로 Application이 고려 되기 보다는 기존의 Resource를 단순하게 Web Service 상태로서 제공하기 위해 URL만 매핑
    ex) http://server/getPosts
  • Level 1
    -Web으로 공개하고자 하는 Resource를 위해 적절한 URI로 표현
    -적절한 패턴을 가지고 작성 되었지만 HTTP의 Method별로 서비스를 구분해서 사용하지 않음
    -사용자 요청을 단순히 Get과 Post로 처리하고 모든 반환 값에 대해서 에러코드 및 성공코드(200번)을 반환
    ex) http://server/accounts/10
  • Level 2
    -Level 1 단계에 HTTP Method를 추가
    -제공하려는 Resource를 용도와 상태에 맞게 HTTP Method를 이용할 수 있는 단계
    ex)
    Read : Get Method
    Create : Post Method
    Update : Put Mehod
    Delete : Delete Method
  • Level 3
    -Level2 + HATEOS
    -데이터를 가지고 그 다음 작업에서 어떠한 Action이 가능한지 상태 정보를 같이 넘겨주는 형태 -> 이러한 모든 정보가 같이 알려질 수 있는 기능을 HATEOS!
    -client 측에서는 서버가 제공하는 Service를 일일히 찾지않고 End Point만 가지고 있으면 서버가 제공할 수 있는 그 다음 URI값을 알 수 있음
  • Additional!
    -소비자 입장에서 간단하고 명료하게 설계를 해야함
    -HTTP의 장점을 최대한 살려서 개발하는 것이 필요
    -최소한 Level 2의 특징을 살려야 함
    -각각의 요청에 따른 적절한 상태코드가 전달되어야 함
    -성공 및 실패 이유를 상태에 따라 적절히 Reponse 해야함
    -사용자와 비밀번호 같은 Critical 정보를 담으면 안됨
    -제공하는 데이터에 대해 단수 형태가 아닌 복수 형태의 URI 값을 쓰는 것이 일반적
    -모든 Resource는 가능하면 명사 형태

MSA 동작 방식

독립적으로 CI/CD
Micro Service들은 Container virtualization을 통해 구현 됨
1. Client & Another Micro Service 들은 API Gateway라는 진입점을 통해 진입.
2. Sevice 요청을 위해 Service Router에게 어디로 가야할지 질문
3. Service Discover 를 통해 Micro Service들이 어디 있는지 찾음
4. Service가 어디에 있는지 검색 완료되면 Load Balancing을 통해 어떠한 Service로 갈 것인지 결정
5. Service의 Response를 API Gateway를 통하여 반환
-Service Mesh
-MSA를 적용한 System의 내부 통신
-URI 경로, Sevice Header, etc Application의 규칙 정의
-Proxy를 통해 Router 및 Circuit Breaker의 역할 가능
-Configuration, Routing, Authenication, Resilience, Cryptography 지원

Spring Cloud?!

독립적인 Service, MSA를 제공하기 위한 Cloud
환경 설정 관리, Service 관리, 회복성, Routing, Service Discovery, Proxy를 사용하는데 있어서 필요한 분산 System에 빠르게 Application을 개발하는데 목적을 두고 만들어짐!

공식적으로 지원하는 Service는 다양하며 Spring Boot와 Spring Cloud를 둘 다 사용해야함

이상으로 1,2,3편에 걸쳐 Spring Cloud로 Micro Service Application을 개발하기 위한 간략한 이론 설명이 끝났습니다! 감사합니다 :) :D

이 글은 인프런 이도원님의 'Spring Cloud로 개발하는 마이크로서비스 애플리케이션'을 수강하고 작성합니다.
출처:https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4/dashboard

 
profile
WEB STUDY & etc.. HELLO!

0개의 댓글