Spring & Spring Boot

[ Spring Cloud ] 마이크로서비스 와 클라우드 개념정리 - 2편

사과씨앗 2021. 7. 15. 13:34
728x90
반응형

 이번 글에서 작성된 내용은 모두 아래 링크의 강좌에 대한 수강 내용입니다.
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

 

Spring Cloud로 개발하는 마이크로서비스 애플리케이션 - 인프런 | 강의

Spring framework의 Spring Cloud 제품군을 이용하여 마이크로서비스 애플리케이션을 개발해 보는 과정입니다. Cloud Native Application으로써의 Spring Cloud를 어떻게 사용하는지, 구성을 어떻게 하는지에 대해

www.inflearn.com

 

 [ Factors(https://12factor.net/) ]

Cloud Native Application 개발 하거나 서비스를 운영할  사용되는 항목들

 

  • BASE CODE 
    • 자체 레퍼 지토리에 저장된 각 마이크로 서비스에 대한 단일 코드 베이스, 버전을 관리하기 위한 목적이고 형상관리를 위해 코드를 한 곳에서 배포하기 위한 목적, 코드의 통일적 관리
  • DEPENDENCY ISOLATION(종속성) 
    • 마이크로서비스는 자체 종속성을 가지고 패키지 되어 있다. 전체 시스템에 영향을 주지 않고 변경되 수정 될 있어야 한다.
  • CONFIGRATIONS(구성정보) 
    • 시스템 내부가 아닌 시스템 코드 외부에서 구성관리 도구를 통해서 마이크로서비스에 필요한 작업들을 지원 하는 . 동일한 배포가 올바르게 구성된 환경에 배포 될 있다.
  • LINKABLE BACKING SERVCIE(서비스 지원) 
    • DB 캐시 메시지큐잉 마이크로서비스가 가져야 기능들을 추가로 지원하는 말한다. 프로그램 자체에서 필요한 서비스를 분리 함으로 서로 상호작용하고 코드 디펜던시를 가지지 않은 상태에서 작업을 있다.
  • STAGES OF CREATION (운영환경 분리)운영환경분리 
    • 개발부터 운영까지 엄격하게 분리 되어야 하며 각각은 고유한 태그를 가지고 있어야 하며 롤백기능을 가지고 있어야한다.
  • STATELESS PROCESSES (독립성)
    •  각각의 마이크로서비스는 실행중인 다른 서비스와 분리된 상태로 운영 될 있어야 한다.
  • PORT BINDING
    • 각각의 마이크로서비스는 자체 포트에서 노출되는 인터페이스 기능 과 함께 자체 기능이 있어야 한다. 이런 방법을 사용하면 다른 마이크로서비스와 격리가 가능하다.
  • CONCURRENCY(동시성)
    • 많은 수의 수 많은 서비스를 동일한 프로세스를 복사해 확장해 나간다. 하나의 인스턴스가 동일한 서비스로 복사가 되어 운영 됨으로써 부하분산을 이루어 있다.
  • DISPOSABILITY 
    • 서비스 인스턴스 자체가 삭제가 가능해야 한다.  확장 기회를 높혀야 하고 정상적으로 종료를 있어야 한다.
  • DEVELOPMENT & PRODUCTION PARTY
    •   5번과 비슷한 개념
  • LOGS 
  • ADMIN PROCESSES FOR EVENTUAL PROCESSES
    • 현재 운영되고 있는 마이크로서비스에 대한 리소스 환경을 관리할 있는 관리도구 있어야 한다. 리포팅, 데이터정리 데이터 분석 등이 있어야 한다.
  • API FIRST
  • TELEMENTRY
  • AUTHENTICATUOIN AND AUTHORIZATION

 

 [ Monolithic VS MSA ]

 

 

  • Monolith
    • 모든 업무 로직이 하나의 애플리케이션 형태로 패키지 되어 서비스
    • 애플리케이션에서 사용하는 데이터가 한곳에 모여 참조되어 서비스되는 형태
  • MicroServices
    • 각각의 서비스 구성 요소를 분리하여 생성한 방법
    • 모노리스 방식에 비해 유지보수나 변경사항을 적용하는데 유리하다.
    • 각각의 용도에 맞는 컨테이너를 연결하여 만드는 방식
  • MicroService 특징
    • Challenges - 기존방식에서 상당 많은 부분을 변경 해야 한다.
    • Small Well chosen Deployable Units
    • Bounded Context
    • RESTful
    • Configuration Management - 환경설정 같은 부분은 코드 내부에 두지 않고 외부에 따로 두고 사용한다.
    • Cloud Enabled
    • Dynamic Scale Up And Scale Down
    • CI/CD
    • Visibility - 시각화 해서 관리 있어야 한다.
  • MicroService 적합성
    • Multiple Rated of Change - 기존개발 대비 어느 정도 변화가 생길 인가
    • Independent Life Cycle - 어플리케이션이 동작하는 서비스 들이 독립적으로 운영될 있도록 경계가 구성되어 있는가.
    • Independent Scalability - 독립적인 확장성 가능한가.
    • Isolated Failure - 격리된 오류
    • Simplity Interaction with External Dependencies - 외부 종속성과의 상호작용을 단순화 시켜야 한다.
    • Polyglot Technology - 여러 가지 프로그래밍 언어와 같이 있게 지원

 [ SOA MSA와의 차이점 ]

 

  • 서비스의 공유 지향점
    • SOA(Service Oriented Architecture) - 재사용을  통한 비용절감
    • MSA(Micro Service Architecture) - 서비스 간의 결합도 낮추어 변화에 능동적으로 대응

  • 기술 방식
    • SOA - 공통의 서비스를 ESB 모아 사업 측면에서 공통 서비스 형식으로 서비스제공
    • MSA - 독립된 서비스가 노출된 REST API 사용
728x90
반응형