세션 0 MSA와 Spring Cloud 소개

WooSeong·2023년 9월 23일

MSA와 Spring Cloud 소개

안전한 아키텍처

  • 오토스케일링
  • 카오스 엔지니어링
  • 마이크로 서비스
    • 마이크로 서비스는 클라우드 네이티브하다,
  • CD

클라우드 네이티브 아키텍쳐

  • 특징
    • 시스템의 수평적 확정에 유연
    • 확장된 서버로 시스템의 부하, 분산 가용성 보장
    • 시스템 또는 서비스 애플리케이션 단위의 패키지
    • 모니터링

클라우드 네이티브 어플리케이션

특징

  • 데브옵스
  • CI/CD
  • 가상화

12 Factor

  • 코드베이스(Codebase): 하나의 애플리케이션은 하나의 코드베이스를 가져야 합니다.
  • 종속성 관리(Dependencies): 종속성은 명시적으로 선언되어야 하며, 외부 의존성을 포함하지 않아야 합니다.
  • 설정(Config): 설정 정보는 환경 변수와 같은 외부에서 관리되어야 하며, 코드에 직접 포함되어서는 안 됩니다.
  • 백엔드 서비스(Backing Services): 데이터베이스, 메시지 큐 등과 같은 백엔드 서비스는 외부 리소스로 취급되어야 합니다.
  • 빌드/릴리즈/실행(Build, Release, Run): 빌드와 배포 과정은 분리되어야 하며, 실행 환경에 따라 구분되어야 합니다.
  • 프로세스(Processes): 애플리케이션은 상태를 공유하지 않고 동작 가능한 프로세스로 실행되어야 합니다.
  • 바인딩(Binding): 실행 시에 서비스 또는 리소스와 바인딩될 때 환경 변수를 사용하여 연결합니다.
  • 스케일링(Scaling): 수평적으로 확장 가능하도록 설계하여 추가 인스턴스를 쉽게 생성할 수 있도록 해야 합니다.
  • 일회용 컨테이너(Disposable Containers): 프로세스가 무상태(stateless)여서 언제든지 중단될 수 있으며 복구 가능해야 합니다.
  • 개발/운영 일관성(Dev/Prod Parity): 개발과 운영 환경 사이의 차이점을 최소화하여 일관된 동작을 유지해야 합니다.
  • 로그(Logs): 로그 데이터는 이벤트 스트림으로 처리되어 중앙화된 저장소에 기록돼야 합니다.관리
  • 프로세수(Processes) : 실행 시간 정보와 상태 정보를 확인할 수 있는 명령형 도구(Command Line Interface)를 제공해야 합니다.

모놀리틱 vs msa

SOA와 MSA 차이점

SOA

  • 공통의 서비스를 ESB에 모아 공통 서비스형식으로 서비스제공

Restful API

  • HATEOAS?

스프링 클라우드?

  • 지원하는서비스
    • config
      • spring cloud config server
    • eureka
    • security
    • gateway
    • open feign
    • starters
    • 데이터 통신
      • feignClient
    • 장애극복
      • hystrix
profile
개발자로 성장중입니다

0개의 댓글