Spring.io

Srping.io -> Cloud

wowyongs 2020. 7. 27. 20:02

Spring Cloud architecture highlights

Service discovery

클라우드에서 호출 대상 서비스의 정확한 위치를 항상 알 수 있는 것은 아닙니다. Netflix Eureka와 같은 서비스 레지스트리 또는 HashiCorp Consul과 같은 사이드카 솔루션이 도움이 될 수 있습니다. Spring Cloud는 Eureka, Consul, Zookeeper 및 Kubernetes의 내장 시스템과 같은 널리 사용되는 레지스트리에 DiscoveryClient 구현을 제공합니다. 서비스 인스턴스간에 로드를 신중하게 분배하는데 도움이 되는 Spring Cloud Load Balancer도 있습니다.

API gateway

클라이언트와 서버가 너무 많아서 클라우드 아키텍처에 API Gateway를 포함시키는 것이 종종 도움이 됩니다. Gateway는 메시지 보안 및 라우팅, 서비스 숨기기, 로드 제어 및 기타 여러 유용한 사항을 처리 할 수 있습니다. Spring Cloud Gateway는 API 계층을 정밀하게 제어하여 Spring Cloud 서비스 발견 및 클라이언트 측 로드 밸런싱 솔루션을 통합하여 구성 및 유지 보수를 단순화합니다.

Cloud configuration

클라우드에서 configuration을 단순히 애플리케이션에 포함시킬 수는 없습니다. configuration은 여러 응용 프로그램, 환경 및 서비스 인스턴스에 대처할 수 있을 뿐만 아니라 다운 타임없이 동적 변경을 처리 할 수 있을 정도로 유연해야 합니다. Spring Cloud Config는 이러한 부담을 덜어주고 Git과 같은 버전 제어 시스템과의 통합을 제공하여 구성을 안전하게 유지하도록 도와줍니다.

Circuit breakers

분산 시스템은 기본적으로 Transaction을 보장할 수 없습니다. 서비스 간 요청 시간이 초과되거나 완전히 실패 할 수 있습니다. 회로 차단기는 이러한 문제를 완화하는 데 도움이 되며, Spring Cloud Circuit Breaker는 Resilience4J, Sentinel 또는 Hystrix의 세 가지 옵션 중에서 선택할 수 있습니다.

Tracing

분산 응용 프로그램 디버깅은 복잡하고 시간이 오래 걸릴 수 있습니다. 특정 장애가 발생하면 여러 독립 서비스의 정보를 함께 수집해야 할 수도 있습니다. Spring Cloud Sleuth는 애플리케이션을 예측 가능하고 반복 가능한 방식으로 계측 할 수 있습니다. Zipkin과 함께 사용하면 대기 시간 문제가 발생할 수 있습니다.

Testing

Spring Cloud Contract는 Groovy, Java 또는 Kotlin으로 작성된 계약으로 REST 및 메시징 기반 API에 대한 계약 기반 테스트 지원을 제공합니다.