Section 0: Microservice와 Spring Cloud 소개 - KwangtaekJung/MSA-SpringCloud-user-service GitHub Wiki

Software Architecture

  • Antifragile
    • Auto scaling
    • Microservices
    • Chaos engineering
    • Continuous deployments

Cloud Native Architecture

  • 확장 가능한 아키텍처
  • 탄력적 아키텍처
  • 장애 격리 (Fault isolation)
    • 특정 서비스에 오류가 발생해도 다른 서비스에 영향을 주지 않음.

Cloud Native Application

  • Microservices
  • CI/CD
    • 지속적인 통합, CI(Continuous Integration)
      • 통합 서버, 소스관리(SCM), 빌드 도구, 테스트 도고
      • ex) Jenkins, Team CI, Travis CI
    • 지속적 배포
      • Continuous Delivery
      • Continuous Deployment
      • Pipe line
    • 카나리 배포와 블루 그린 배포
  • DevOps
    • Development + Operations + QA(Quality Assurance)
  • Containers
    • Container 가상화

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

  • 12 Factors + 3 (피보탈에서 3가지를 더해 15가지를 제시함.)
      1. API first
      1. Telemetry
      1. Authentication and authorization

Monolithic vs MSA

  • Monolith vs Front & Back vs Microservice Architecture

Microservice

SOA와 MSA 와의 차이점

  • 서비스의 공유 지향점
    • SOA - 재사용을 통한 비용 절감
    • MSA -

Microservice Architecture Structures

Spring Cloud

Main Projects

  • Spring Cloud Config
  • Spring Cloud Netflix
  • Spring Cloud Security
  • Spring Cloud Sleuth
  • Spring Cloud Starters
  • Spring Cloud Gateway
  • Spring Cloud OpenFeign

Spring Cloud를 이용하여 Application 구축 시 설정해야 하는 것들

  • Centralized configuration management => 환경 설정 관리
    • Spring Cloud Config Server
    • image
  • Location transparency => 서비스의 등록과 위치 정보 확인 및 검색
    • Naming Server(넷플리스의 Eureka 서버를 이용)
  • Load Distribution (Load Balancing)
    • Ribbon(Client Side)
    • Spring Cloud Gateway =>여기에서는 Ribbon 보다는 Spring Cloud Gateway를 사용한다.
    • image
  • Easier REST Clients =>Microservices 간 통신
    • Feign Client
  • Visibility and monitoring
    • Zipkin Distributed Tracing (혹은 ELK 등등)
    • Netflix API gateway
  • Fault Tolerance
    • Hystrix