본 포스팅은 인프런 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
ServiceOrientedArchitecture
- 공통점 : 각 서비스 자체의 기능에 초점을 맞춤
- OSA (ServiceOrientedArchitecture)
서비스 재사용 통한 비용 절감(서비스 공유 최대화)
공통의 서비스를 WSDL,ESB등에 모아 공통 서비스 형식으로 제공
- MSA (MicroServiceArchitecture)
서비스간의 결합도를 낮추어 변화에 능동적으로 대응(서비스 공유 최소화)
각 독립된 서비스가 노출된 REST API를 사용
- RESTful Service에 대한 이해가 반드시 선행되어야함.
* 2018년 gartner 제단에서 공개한 사실상의 MSA 구성요소의 표준
- Client, 다른 서비스는 API Gateway 라는 진입점을 통해서 필요한 서비스에 요청
- 각 요청은 Service Router에게 어디로 가야할지 질문
- 필요한 서비스가 어디에 저장되어 있는지 Service Discovery에 질문
- 응답을 바탕으로 LoadBalancer가 어디로 보내줄 것인지 결정
* 2~4 과정을 하나의 시스템으로 묶어서 사용하는 경우도 있음
- 각 서비스의 환경정보는 외부 서비스에 저장한다는 의미로 Cofig. store 등이 외부에 존재함이 그림에 표현되어 있음.
- 각각의 서비스는 컨테이너기술을 통해서 등록이 구성이 되었음을 표현하기 위해 Container Managerment 위에서 동작이 되며
AutoScaling을 통해 인스턴스가 늘어날수도, 줄어들 수도 있음.- 완성된 서비스는 CI/CD기술을 통해서 배포한다는 의미의 CI/CD Automation
- BackingServices는 MSA에 저장되어 있는 다양한 storage들을 모아서 사용하는 방법, MessageOrientedMiddleWare 등을 이용해서 통신함을 나타내고 있음.
- Telemetry 라고 하여 모니터링, 진단에 관련된 요소 역시 포함되어 있음.
- 일련의 과정을 수행하기 위해 API가 적절히 열려있어야 함
그림의 Service Router, LoadBalancer, Service DisCovery과 같은 부분을 의미함
MSA인프라로써 미들웨어로 구분, 서비스간의 통신과 관련된 기능을 자동화 해주는 역할 수행
- MSA를 적용한 내부통신을 의미함
- 서비스간의 통신을 추상화, 안전하고, 빠르고, 신뢰성있게 만들어주는 InfraStructure Layer
- 추상화를 통해서
내부 네트워크를 제어, 추적을 이용이하게 하고
내부 네트워크의 안전성, 탄력성, 신뢰성, 표준성 등을 확보할 수 있음- URI경로나 헤더등 기타 규칙을 기반으로 하는 NetworkLayer
- ServiceMash의 경량화 Porxy를 통해서 Routering 및 Circuit Breaker같은 공통 기능 설정 가능
- 기타 Configuration, Routing, LoadBalacing, 인증 및 인가, 서비스 검색, 암호화등을 통해서 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의 소개 파트를 정리했다.