[MSA] MSA 알아보기 - 3

hanana·2023년 10월 16일
0

본 포스팅은 인프런 Dowon Lee님의
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) 강의를 토대로 작성되었습니다.

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

SOA vs MSA

ServiceOrientedArchitecture

  • 공통점 : 각 서비스 자체의 기능에 초점을 맞춤

  • OSA (ServiceOrientedArchitecture)
    서비스 재사용 통한 비용 절감(서비스 공유 최대화)
    공통의 서비스를 WSDL,ESB등에 모아 공통 서비스 형식으로 제공

  • MSA (MicroServiceArchitecture)
    서비스간의 결합도를 낮추어 변화에 능동적으로 대응(서비스 공유 최소화)
    각 독립된 서비스가 노출된 REST API를 사용
    - RESTful Service에 대한 이해가 반드시 선행되어야함.

MSA 구성 및 흐름


* 2018년 gartner 제단에서 공개한 사실상의 MSA 구성요소의 표준

  1. Client, 다른 서비스는 API Gateway 라는 진입점을 통해서 필요한 서비스에 요청
  2. 각 요청은 Service Router에게 어디로 가야할지 질문
  3. 필요한 서비스가 어디에 저장되어 있는지 Service Discovery에 질문
  4. 응답을 바탕으로 LoadBalancer가 어디로 보내줄 것인지 결정
    * 2~4 과정을 하나의 시스템으로 묶어서 사용하는 경우도 있음

  5. 각 서비스의 환경정보는 외부 서비스에 저장한다는 의미로 Cofig. store 등이 외부에 존재함이 그림에 표현되어 있음.
  6. 각각의 서비스는 컨테이너기술을 통해서 등록이 구성이 되었음을 표현하기 위해 Container Managerment 위에서 동작이 되며
    AutoScaling을 통해 인스턴스가 늘어날수도, 줄어들 수도 있음.
  7. 완성된 서비스는 CI/CD기술을 통해서 배포한다는 의미의 CI/CD Automation
  8. BackingServices는 MSA에 저장되어 있는 다양한 storage들을 모아서 사용하는 방법, MessageOrientedMiddleWare 등을 이용해서 통신함을 나타내고 있음.
  9. Telemetry 라고 하여 모니터링, 진단에 관련된 요소 역시 포함되어 있음.
  10. 일련의 과정을 수행하기 위해 API가 적절히 열려있어야 함

ServiceMash

그림의 Service Router, LoadBalancer, Service DisCovery과 같은 부분을 의미함
MSA인프라로써 미들웨어로 구분, 서비스간의 통신과 관련된 기능을 자동화 해주는 역할 수행

  • MSA를 적용한 내부통신을 의미함
  • 서비스간의 통신을 추상화, 안전하고, 빠르고, 신뢰성있게 만들어주는 InfraStructure Layer
  • 추상화를 통해서
    내부 네트워크를 제어, 추적을 이용이하게 하고
    내부 네트워크의 안전성, 탄력성, 신뢰성, 표준성 등을 확보할 수 있음
  • URI경로나 헤더등 기타 규칙을 기반으로 하는 NetworkLayer
  • ServiceMash의 경량화 Porxy를 통해서 Routering 및 Circuit Breaker같은 공통 기능 설정 가능
  • 기타 Configuration, Routing, LoadBalacing, 인증 및 인가, 서비스 검색, 암호화등을 통해서 MSA의 운영과 개발을 지원

MSA 표준 구성 요소


*MSA를 구성하는 대표 SW
앞의 구조와 함께 살펴보면 이해가 쉽다.

모든 기술을 알 수는 없으니,
대략 어떤 유명한 기술들이 어떤 영역에서 사용되는지 정도만 repeat 하고 넘어간다.

  • 1. GateWay
    NGINX, KONG, apigee, NETFLIX OSS Zuul, AWS APIGateway 등

  • 2. ServiceMash
    istio, Zookeeper, NEXTFLIX OSS 등

  • 3. Runtime
    운영 환경에 관련된 기술
    클라우스 서비스는 : AWS Lambda, GooleCloudFunctions, Never Colud PLATFORM, heroku 등
    컨테이너 가상화 기술 : k8s, docker 등

  • 4. Framework
    SrpingBoot, SpringCloud, Flask, .NET 등

  • 5. BackingService
    DB 관련된 기술 mysql, oracle 등
    Nosql인 redis, cassandra 등
    Message Serivce기술인 kafka

  • 6. Automation
    CI/CD관련된 기술로
    gradle, maven, Jenkins 등

  • 7. Telemetry
    수많은 서비스를 관리하기 위한 기술
    elesticSearch 등

이것으로 Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) 강의의
Section0. Microservice와 Spring Cloud의 소개 파트를 정리했다.

profile
성숙해지려고 노력하지 않으면 성숙하기까지 매우 많은 시간이 걸린다.

0개의 댓글