Spring Cloud는 개발자들에게 분산 시스템에서 일부 공통 패턴들을 제공합니다(예: 구성 관리, 서비스 검색, 회로 차단기, 지능형 라우팅, 마이크로 프록시, 제어 버스, 일회성 토큰, 글로벌 잠금, 리더십 선출, 분산 세션, 클러스터 상태). 분산 시스템의 조정은 보일러 플레이트 패턴으로 이어지며 Spring Cloud 개발자는 이러한 패턴을 구현하는 서비스와 애플리케이션을 신속하게 구축할 수 있습니다. 개발자 자신의 랩톱, 베어메탈 데이터 센터 및 Cloud Foundry와 같은 관리 플랫폼을 포함한 모든 분산 환경에서 잘 작동합니다.
특징
Spring Cloud는 일반적인 사용 사례에 대한 우수한 즉시 사용 가능한 경험과 다른 사례를 포괄하는 확장성 메커니즘을 제공하는 데 중점을 둡니다.
- 분산/버전 구성
- 서비스 등록 및 검색
- 라우팅
- 서비스 간 호출
- 부하 분산
- 회로 차단기
- 전역 잠금
- 리더십 선거 및 클러스터 상태
- 분산 메시징
Spring Cloud Bus
Spring Cloud Bus는 분산 시스템의 노드를 경량 메시지 브로커와 연결합니다. 그런 다음 상태 변경(예: 구성 변경) 또는 기타 관리 지침을 브로드캐스트하는 데 사용할 수 있습니다. AMQP 및 Kafka 브로커 구현이 프로젝트에 포함되어 있습니다. 또는 클래스 경로에 있는 모든 Spring Cloud Stream 바인더는 즉시 전송으로 작동합니다.
Spring Cloud Circuit Breaker
소개
Spring Cloud Circuit breaker는 다양한 회로 차단기 구현에서 추상화를 제공합니다. 개발자가 앱에 가장 적합한 회로 차단기 구현을 선택할 수 있도록 애플리케이션에서 사용할 일관된 API를 제공합니다.
지원되는 구현
Spring Cloud Commons
Spring Cloud Commons는 Spring Cloud Context와 Spring Cloud Commons의 두 가지 라이브러리로 기능을 제공합니다. Spring Cloud Context는 Spring Cloud 애플리케이션의 ApplicationContext(부트스트랩 컨텍스트, 암호화, 새로 고침 범위 및 환경 끝점)에 대한 유틸리티 및 특수 서비스를 제공합니다. Spring Cloud Commons는 다양한 Spring Cloud 구현(예: Spring Cloud Netflix 대 Spring Cloud Consul)에서 사용되는 추상화 및 공통 클래스 세트입니다.
특징
Spring Cloud Context 기능:
- 부트스트랩 컨텍스트
- TextEncryptor beans
- 범위 새로 고침
- 조작을 위한 Spring Boot Actuator 끝점Environment
Spring Cloud Commons 기능:
- DiscoveryClient interface
- ServiceRegistry interface
- DiscoveryClient를 사용하여 호스트 이름을 확인하기 위한 RestTemplate 도구
Spring Cloud Config
Spring Cloud Config는 분산 시스템에서 외부화된 구성을 위한 서버 및 클라이언트 측 지원을 제공합니다. Config Server를 사용하면 모든 환경에서 애플리케이션의 외부 속성을 관리할 수 있는 중앙 위치가 있습니다. 클라이언트와 서버의 개념은 Spring Environment과 동일하게 매핑됩니다.PropertySource추상화이므로 Spring 애플리케이션에 매우 적합하지만 모든 언어로 실행되는 모든 애플리케이션과 함께 사용할 수 있습니다. 애플리케이션이 개발에서 테스트 및 프로덕션으로 배포 파이프라인을 통해 이동함에 따라 이러한 환경 간의 구성을 관리할 수 있으며 애플리케이션이 마이그레이션할 때 실행하는 데 필요한 모든 것이 있는지 확인할 수 있습니다. 서버 스토리지 백엔드의 기본 구현은 git을 사용하므로 레이블이 지정된 버전의 구성 환경을 쉽게 지원하고 콘텐츠 관리를 위한 광범위한 도구에 액세스할 수 있습니다. 대체 구현을 추가하고 Spring 구성으로 연결하는 것은 쉽습니다.
특징
스프링 클라우드 구성 서버 기능:
- HTTP, 외부 구성을 위한 리소스 기반 API(이름-값 쌍 또는 이에 상응하는 YAML 콘텐츠)
- 속성 값 암호화 및 암호 해독(대칭 또는 비대칭)
- 다음을 사용하여 Spring Boot 애플리케이션에 쉽게 포함 가능@EnableConfigServer
Config 클라이언트 기능(Spring 애플리케이션용):
- EnvironmentConfig 서버에 바인딩 하고 원격 속성 소스로 Spring 초기화
- 속성 값 암호화 및 암호 해독(대칭 또는 비대칭)
Spring Cloud Connectors
Spring Cloud Connectors는 특히 Spring 애플리케이션을 위해 Cloud Foundry 및 Heroku와 같은 클라우드 플랫폼에서 서비스에 연결하고 운영 환경 인식을 얻는 프로세스를 단순화합니다. 확장성을 위해 설계되었습니다. 제공된 클라우드 커넥터 중 하나를 사용하거나 클라우드 플랫폼용으로 작성할 수 있으며 일반적으로 사용되는 서비스(관계형 데이터베이스, MongoDB, Redis, RabbitMQ)에 대한 기본 제공 지원을 사용하거나 Spring을 확장할 수 있습니다. 자체 서비스와 함께 작동하는 클라우드 커넥터.
이 프로젝트는 최신 Java CFEnv 프로젝트 를 위해 유지 관리 모드 에 있습니다. 우리는 보안 관련 업데이트를 계속 발표할 것이지만 개선 요청은 다루지 않을 것입니다. |
Community Extensions
- Spring Cloud Connectors for SAP HANA Cloud Platform (HCP)
- Spring Cloud Connectors for IBM Bluemix
- Spring Cloud Connectors for Pivotal Spring Cloud Services
- Spring Cloud Connectors for Pivotal Gemfire
- Spring Cloud Connectors for Pivotal Single Sign-On Service
- Spring Cloud Connectors for Amazon S3
- Spring Cloud Connectors for Hashicorp Vault
Spring Cloud Contract
Spring Cloud Contract는 사용자가 소비자 주도 계약 접근 방식을 성공적으로 구현하는 데 도움이 되는 솔루션을 보유한 포괄적인 프로젝트입니다. 현재 Spring Cloud Contract는 Spring Cloud Contract Verifier 프로젝트로 구성되어 있습니다.
Spring Cloud Contract Verifier는 JVM 기반 애플리케이션의 CDC(Consumer Driven Contract) 개발을 가능하게 하는 도구입니다. Groovy 또는 YAML로 작성된 DSL(Contract Definition Language)과 함께 제공됩니다. 계약 정의는 다음 리소스를 생성하는 데 사용됩니다.
- 기본적으로 클라이언트 코드에서 통합 테스트(클라이언트 테스트)를 수행할 때 WireMock(HTTP 서버 스텁)에서 사용할 JSON 스텁 정의. 테스트 코드는 여전히 손으로 작성해야 하며 테스트 데이터는 Spring Cloud Contract Verifier에 의해 생성됩니다.
- 사용하는 경우 메시징 경로. Spring Integration, Spring Cloud Stream 및 Apache Camel과 통합하고 있습니다. 그러나 원하는 경우 자체 통합을 설정할 수 있습니다.
- API의 서버 측 구현이 계약(서버 테스트)을 준수하는지 확인하는 데 사용되는 수락 테스트(기본적으로 JUnit 또는 Spock에서). 전체 테스트는 Spring Cloud Contract Verifier에 의해 생성됩니다.
Spring Cloud Contract Verifier는 TDD를 소프트웨어 아키텍처 수준으로 이동시킵니다.
Spring Cloud Contract가 다른 언어를 지원하는 방법을 보려면 이 블로그 게시물 을 확인하십시오 .
특징
다른 서비스와 통신하는 애플리케이션을 테스트하려고 할 때 다음 두 가지 중 하나를 수행할 수 있습니다.
- 모든 마이크로 서비스를 배포하고 종단 간 테스트 수행
- 단위/통합 테스트에서 다른 마이크로 서비스를 조롱합니다.
둘 다 장점도 있지만 단점도 많습니다. 후자에 초점을 맞추자. 모든 마이크로서비스 배포 및 종단 간 테스트 수행
장점:
- 생산 시뮬레이션
- 서비스 간의 실제 통신 테스트
단점:
- 하나의 마이크로 서비스를 테스트하려면 6개의 마이크로 서비스, 몇 개의 데이터베이스 등을 배포해야 합니다.
- 테스트가 수행될 환경은 단일 테스트 제품군에 대해 잠겨 있습니다(즉, 그 동안 다른 누구도 테스트를 실행할 수 없음).
- 오래 달리다
- 매우 늦은 피드백
- 디버그하기가 매우 어렵습니다.
단위 / 통합 테스트에서 다른 마이크로 서비스를 모의하십시오.
장점:
- 매우 빠른 피드백
- 인프라 요구 사항 없음
단점:
- 서비스 구현자는 스텁을 생성하므로 현실과 아무 관련이 없을 수 있습니다.
- 테스트를 통과하고 프로덕션에 실패한 상태에서 프로덕션으로 이동할 수 있습니다.
앞서 언급한 문제를 해결하기 위해 Stub Runner가 있는 Spring Cloud Contract Verifier가 생성되었습니다. 그들의 주요 아이디어는 마이크로 서비스의 전체 세계를 설정할 필요 없이 매우 빠른 피드백을 제공하는 것입니다.
Spring Cloud Contract Verifier 기능:
- HTTP / 메시징 스텁(클라이언트 개발 시 사용)이 실제 서버 측 구현이 수행하는 작업을 정확히 수행하는지 확인합니다.
- 승인 테스트 주도 개발 방법 및 마이크로 서비스 아키텍처 스타일 촉진
- 커뮤니케이션의 양쪽에서 즉시 볼 수 있는 계약 변경 사항을 게시하는 방법을 제공합니다.
- 서버 측에서 사용되는 상용구 테스트 코드 생성
Spring Cloud Function
Spring Cloud Function은 다음과 같은 상위 수준 목표를 가진 프로젝트입니다.
- 기능을 통해 비즈니스 로직의 구현을 촉진합니다.
- 특정 런타임 대상에서 비즈니스 로직의 개발 수명 주기를 분리하여 동일한 코드가 웹 엔드포인트, 스트림 프로세서 또는 작업으로 실행될 수 있도록 합니다.
- 독립 실행형(로컬 또는 PaaS에서) 실행 기능뿐만 아니라 서버리스 공급자 전반에 걸쳐 균일한 프로그래밍 모델을 지원합니다.
- 서버리스 공급자에서 Spring Boot 기능(자동 구성, 종속성 주입, 메트릭)을 활성화합니다.
모든 전송 세부 정보와 인프라를 추상화하여 개발자가 모든 친숙한 도구와 프로세스를 유지하고 비즈니스 논리에 확고하게 집중할 수 있도록 합니다.
특징
스프링 클라우드 기능:
- 프로그래밍 스타일 선택 - 반응형, 명령형 또는 하이브리드.
- POJO 함수(즉, @FunctionalInterface 의미 체계에 맞는 것이 있으면 함수로 취급함)
- 입력 및 출력의 투명 유형 변환.
- 리액티브로 명령형 함수를 구성하는 것을 포함하는 함수 구성.
- HTTP 끝점 등으로 기능을 노출하는 REST 지원
- Spring Cloud Stream 프레임워크 를 통해 함수에서 데이터 스트리밍( Apache Kafka , Solace , RabbitMQ 등을 통해) .
- 단일 JVM에서 다중 버전 배포를 지원하기 위해 격리된 클래스로더를 사용하여 JAR 파일로 패키지된 기능 배포.
- 대상 플랫폼에 특정한 배포를 위한 패키징 기능(예: Project Riff, AWS Lambda 등)
- AWS Lambda , Microsoft Azure , Apache OpenWhisk 및 기타 "서버리스" 서비스 공급자 용 어댑터 .
- 병합, 결합 및 기타 복잡한 스트리밍 작업을 함수로 처리할 수 있도록 하는 다중 입력 및 출력이 있는 반응 기능을 지원합니다.
다음은 완전하고 실행 가능하며 테스트 가능한 Spring Boot 애플리케이션입니다(간단한 문자열 조작 구현).
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public Function<String, String> uppercase() {
return value -> value.toUpperCase();
}
}
Spring Cloud Gateway
이 프로젝트는 Spring WebFlux 위에 API 게이트웨이를 구축하기 위한 라이브러리를 제공합니다. Spring Cloud Gateway는 API로 라우팅하는 간단하면서도 효과적인 방법을 제공하고 보안, 모니터링/메트릭 및 탄력성과 같은 교차 문제를 API에 제공하는 것을 목표로 합니다.
특징
스프링 클라우드 게이트웨이 기능:
- Spring Framework 5, Project Reactor 및 Spring Boot 2.0을 기반으로 구축
- 모든 요청 속성에서 경로를 일치시킬 수 있습니다.
- 조건자와 필터는 경로에 따라 다릅니다.
- 회로 차단기 통합.
- Spring Cloud DiscoveryClient 통합
- 쓰기 쉬운 술어 및 필터
- 요청 속도 제한
- 경로 재작성
Spring Cloud Kubernetes
Spring Cloud Kubernetes는 개발자가 Kubernetes에서 Spring Cloud 애플리케이션을 빌드하고 실행할 수 있도록 하는 잘 알려진 Spring Cloud 인터페이스의 구현을 제공합니다. 이 프로젝트는 클라우드 네이티브 애플리케이션을 구축할 때 유용할 수 있지만 Kubernetes에 Spring Boot 앱을 배포하기 위한 요구 사항도 아닙니다. Kubernetes에서 Spring Boot 앱을 실행하는 여정을 막 시작했다면 기본 Spring Boot 앱과 Kubernetes 자체만으로 많은 것을 성취할 수 있습니다. 자세히 알아보려면 Kubernetes에 배포하기 위한 Spring Boot 참조 문서를 읽고 워크샵 자료 Spring 및 Kubernetes 를 통해 작업을 시작하면 됩니다.
특징
- Kubernetes 인식
- DiscoveryClient 구현
- PropertySourceConfigMaps를 통해 구성된 개체
- Netflix Ribbon 을 통한 클라이언트 측 로드 밸런싱
시작하기
시작하는 가장 쉬운 방법은 Spring Cloud BOM을 포함하고 spring-cloud-starter-kubernetes-all애플리케이션의 클래스 경로에 추가하는 것입니다. 모든 Spring Cloud Kubernetes 기능을 포함하지 않으려면 원하는 기능에 대해 개별 스타터를 추가할 수 있습니다. 기본적으로 Spring Cloud Kubernetes는 kubernetes프로필이 Kubernetes 클러스터 내에서 실행 중임을 감지하면 프로필을 활성화합니다. kubernetes-application구성하려는 Kubernetes와 관련된 모든 항목에 대한 구성 속성을 만들어 이를 활용할 수 있습니다 . 스타터가 클래스 경로에 있으면 애플리케이션은 다른 Spring Cloud 애플리케이션처럼 작동해야 합니다.
Spring Cloud Open Service Broker
Spring Cloud Open Service Broker는 Open Service Broker API를 구현하는 Spring Boot 애플리케이션을 구축하기 위한 프레임워크입니다.
Open Service Broker API 프로젝트를 통해 개발자 는 Cloud Foundry, Kubernetes 및 OpenShift와 같은 클라우드 네이티브 플랫폼 내에서 실행되는 애플리케이션에 서비스를 제공할 수 있습니다. Spring Cloud Open Service Broker는 Open Service Broker API를 지원하는 플랫폼에서 자체 관리 서비스를 위한 서비스 브로커를 빠르게 생성할 수 있는 Spring Boot 기반 프레임워크를 제공합니다.
스프링 부트 구성
프로젝트에서 Spring Cloud Open Service Broker를 사용하기 시작하는 권장 방법은 종속성 관리 시스템을 사용하는 것입니다. 아래 스니펫 중 하나를 복사하여 빌드에 붙여넣을 수 있습니다.
Spring Cloud Pipelines
Spring, Spring Boot 및 Spring Cloud는 개발자가 새로운 비즈니스 기능을 생성하는 시간을 단축할 수 있는 도구입니다. 그러나 이 기능은 프로덕션 단계에 있는 경우에만 가치가 있다는 것은 일반적인 지식입니다. 이것이 기업이 자체 배포 파이프라인을 구축하는 데 많은 시간과 리소스를 소비하는 이유입니다.
이 프로젝트는 다음과 같은 문제를 해결하려고 합니다.
- 공통 배포 파이프라인 생성
- 우수한 테스트 및 배포 사례의 전파
- 기능을 프로덕션에 배포하는 데 필요한 시간 단축
응용 프로그램을 실행, 구성 및 배포하는 일반적인 방법은 새로운 개발자가 프로젝트를 변경할 때 통합하는 데 필요한 지원 비용과 시간을 줄여줍니다.
현재 다음 CI/CD 시스템을 즉시 지원합니다.
- 집합
- 젠킨스
특징
Spring Cloud Pipelines에는 다음과 같은 기능이 있습니다.
- Concourse를 위한 독창적인 마이크로서비스 파이프라인
- Job DSL 플러그인을 사용하는 Jenkins용 마이크로서비스 파이프라인
- 선언적 파이프라인(Jenkinsfile)을 사용하는 Jenkins용 마이크로서비스 파이프라인
- Cloud Foundry PaaS 지원
- Kubernetes PaaS 지원
Spring Cloud Security
Spring Cloud Security는 최소한의 불편함으로 안전한 애플리케이션과 서비스를 구축하기 위한 기본 세트를 제공합니다. 외부에서(또는 중앙에서) 많이 구성할 수 있는 선언적 모델은 일반적으로 중앙 통합 관리 서비스를 사용하여 협력하는 원격 구성 요소의 대규모 시스템 구현에 적합합니다. 또한 Cloud Foundry와 같은 서비스 플랫폼에서 사용하기가 매우 쉽습니다. Spring Boot 및 Spring Security OAuth2를 기반으로 single sign on, 토큰 릴레이 및 토큰 교환과 같은 일반적인 패턴을 구현하는 시스템을 빠르게 만들 수 있습니다.
특징
스프링 클라우드 보안 기능:
- Zuul 프록시의 프런트 엔드에서 백 엔드 서비스로 SSO 토큰 릴레이
- 리소스 서버 간 릴레이 토큰
- Feign 클라이언트가 OAuth2RestTemplate(토큰 가져오기 등)
- Zuul 프록시에서 다운스트림 인증 구성
Spring Cloud Skipper
Skipper는 Spring Boot 애플리케이션을 검색하고 여러 Cloud Platform에서 수명 주기를 관리할 수 있는 도구입니다. Skipper를 독립 실행형으로 사용하거나 지속적 통합 파이프라인과 통합하여 애플리케이션의 지속적인 배포를 달성할 수 있습니다.
시스템 디자인은 리소스 템플릿 및/또는 오케스트레이션을 수행하는 Kubernetes 에코시스템의 많은 프로젝트의 영향을 받으므로 항해에서 영감을 받은 프로젝트 이름 Skipper입니다.
Skipper의 응용 프로그램은 템플릿 구성 파일과 템플릿을 채우는 데 사용되는 기본 값 집합이 포함된 패키지로 번들됩니다. 패키지를 설치하거나 업그레이드할 때 이러한 기본값을 무시할 수 있습니다. Skipper는 시스템을 원하는 상태로 만들기 위해 최소한의 조치를 취하여 서로 다른 버전 간에 응용 프로그램의 업그레이드/롤백 절차를 조정하는 수단을 제공합니다.
특징
- Spring Boot 애플리케이션을 배포할 수 있는 여러 플랫폼 계정을 정의합니다. 지원되는 플랫폼은 Local, Cloud Foundry 및 Kubernetes입니다. 플랫폼에 애플리케이션을 배포하는 방법을 설명하는 Mustache 템플릿 파일의 변수를 대체하십시오.
- 기존 애플리케이션에 대한 패키지 저장소를 검색합니다.
- 간단한 워크플로를 기반으로 패키지를 설치/업그레이드/롤백합니다.
- 특정 릴리스에 대해 플랫폼에 배포된 항목에 대한 최종 설명을 나타내는 확인된 템플릿 파일(일명 '애플리케이션 매니페스트')의 기록을 저장합니다.
- 독립 실행형 대화형 셸 또는 웹 API를 통해 사용하여 CI 워크플로를 보완합니다.
Spring Boot 애플리케이션을 여러 플랫폼에 배포하는 수단은 [Spring Cloud Deployer implementations. 지원되는 템플릿 파일 형식은 YAML 기반이며 Spring Cloud Deployer AppDeploymentRequest 를 생성하는 데 필요한 변수 집합을 설명합니다 .
역사
Skipper는 Spring Cloud Data Flow에서 "스트림 편집"을 수행할 필요성에서 발전했습니다. 나중에 그 기능을 제공하기 위해 보다 범용적인 프로젝트인 Skipper를 생성하여 Spring Cloud Data Flow의 컨텍스트 외부에서 유용한 툴킷이 될 수도 있다는 것을 알게 되었습니다.
Spring Cloud Sleuth
Spring Cloud Sleuth는 분산 추적을 위한 Spring Boot 자동 구성을 제공합니다.
특징
Sleuth는 시작하는 데 필요한 모든 것을 구성합니다. 여기에는 추적 데이터(스팬)가 보고되는 위치, 유지할 추적 수(샘플링), 원격 필드(수하물)가 전송되는지, 추적되는 라이브러리가 포함됩니다.
특히, Spring Cloud Sleuth…
- Slf4J MDC에 추적 및 범위 ID를 추가하므로 로그 수집기의 지정된 추적 또는 범위에서 모든 로그를 추출할 수 있습니다.
- Spring 애플리케이션(서블릿 필터, 나머지 템플릿, 예약된 작업, 메시지 채널, 가상 클라이언트)의 일반적인 수신 및 송신 지점을 계측합니다.
- 사용 가능한 경우 spring-cloud-sleuth-zipkin앱은 HTTP를 통해 Zipkin 호환 추적을 생성하고 보고합니다. 기본적으로 localhost(포트 9411)의 Zipkin 수집기 서비스로 보냅니다. 를 사용하여 서비스의 위치를 구성합니다 spring.zipkin.baseUrl.
Spring Cloud Stream
Spring Cloud Stream은 공유 메시징 시스템과 연결된 확장성이 뛰어난 이벤트 기반 마이크로서비스를 구축하기 위한 프레임워크입니다.
프레임워크는 영구 pub/sub 의미 체계, 소비자 그룹 및 상태 저장 파티션에 대한 지원을 포함하여 이미 확립되고 친숙한 Spring 관용구 및 모범 사례를 기반으로 구축된 유연한 프로그래밍 모델을 제공합니다.
바인더 구현
Spring Cloud Stream은 다양한 바인더 구현을 지원하며 다음 표에는 GitHub 프로젝트에 대한 링크가 포함되어 있습니다.
Spring Cloud Stream의 핵심 빌딩 블록은 다음과 같습니다.
- 대상 바인더 : 외부 메시징 시스템과의 통합을 제공하는 구성 요소입니다.
- 대상 바인딩 : 외부 메시징 시스템과 최종 사용자가 제공한 응용 프로그램 코드(생산자/소비자) 간의 브리지입니다.
- 메시지 : 생산자와 소비자가 대상 바인더(및 외부 메시징 시스템을 통한 다른 응용 프로그램)와 통신하는 데 사용하는 표준 데이터 구조입니다.
Spring Cloud Task
Spring Cloud Task를 통해 사용자는 Spring Cloud를 사용하여 수명이 짧은 마이크로 서비스를 개발 및 실행할 수 있으며 Spring Cloud Data Flow에서도 로컬, 클라우드에서 실행할 수 있습니다. @EnableTask앱을 Spring Boot 앱(단일 애플리케이션 컨텍스트)으로 추가하고 실행하기만 하면 됩니다. Spring Cloud Task를 처음 사용하는 경우 시작하기 문서를 살펴보십시오.
Spring Cloud Zookeeper
Spring Cloud Zookeeper는 Spring 환경 및 기타 Spring 프로그래밍 모델 관용구에 대한 자동 구성 및 바인딩을 통해 Spring Boot 앱에 Apache Zookeeper 통합을 제공합니다. 몇 가지 간단한 주석으로 애플리케이션 내부의 공통 패턴을 빠르게 활성화 및 구성하고 Zookeeper로 대규모 분산 시스템을 구축할 수 있습니다. 제공된 패턴에는 서비스 검색 및 분산 구성이 포함됩니다.
특징
- 서비스 검색: 인스턴스는 Zookeeper에 등록할 수 있고 클라이언트는 Spring 관리 Bean을 사용하여 인스턴스를 검색할 수 있습니다.
- Spring Cloud LoadBalancer 지원 - 클라이언트 측 부하 분산 솔루션
- Spring Cloud OpenFeign 지원
- 분산 구성: Zookeeper를 데이터 저장소로 사용
Spring Data REST
Spring Data REST는 포괄적인 Spring Data 프로젝트의 일부이며 Spring Data 저장소 위에 하이퍼미디어 기반 REST 웹 서비스를 쉽게 구축할 수 있도록 합니다.
Spring Data REST는 Spring Data 리포지토리를 기반으로 구축되어 애플리케이션의 도메인 모델을 분석하고 모델에 포함된 집계에 대한 하이퍼미디어 기반 HTTP 리소스를 노출합니다.
특징
- HAL을 미디어 유형으로 사용하여 도메인 모델에 대해 검색 가능한 REST API를 노출합니다.
- 모델을 나타내는 컬렉션, 항목 및 연관 리소스 를 노출 합니다.
- 탐색 링크 를 통해 페이지 매김을 지원합니다 .
- 컬렉션 리소스를 동적으로 필터링할 수 있습니다.
- 리포지토리에 정의된 쿼리 방법에 대한 전용 검색 리소스를 노출합니다.
- Spring을 처리하여 REST 요청 처리에 연결할 수 있습니다 ApplicationEvents.
- ALPS 및 JSON 스키마로 검색된 모델에 대한 메타데이터 를 노출합니다.
- 프로젝션 을 통해 클라이언트 특정 표현을 정의할 수 있습니다.
- 노출된 메타데이터를 활용하기 위해 HAL Explorer 의 맞춤형 변형 을 제공합니다.
- 현재 JPA, MongoDB, Neo4j, Solr, Cassandra, Gemfire를 지원합니다.
- 노출된 기본 리소스의 고급 사용자 지정 을 허용합니다 .
Spring Cloud Data Flow
Cloud Foundry 및 Kubernetes를 위한 마이크로서비스 기반 스트리밍 및 일괄 데이터 처리.
Spring Cloud Data Flow는 스트리밍 및 배치 데이터 파이프라인을 위한 복잡한 토폴로지를 생성하는 도구를 제공합니다. 데이터 파이프라인은 Spring Cloud Stream 또는 Spring Cloud Task 마이크로서비스 프레임워크 를 사용하여 빌드된 Spring Boot 앱 으로 구성됩니다.
Spring Cloud Data Flow는 ETL에서 가져오기/내보내기, 이벤트 스트리밍, 예측 분석에 이르기까지 다양한 데이터 처리 사용 사례를 지원합니다.
특징
Spring Cloud Data Flow 서버는 Spring Cloud Deployer 를 사용하여 Spring Cloud Stream 또는 Spring Cloud Task 애플리케이션으로 구성된 데이터 파이프라인을 Cloud Foundry 및 Kubernetes와 같은 최신 플랫폼에 배포합니다.
다양한 데이터 통합 및 처리 시나리오를 위해 사전 구축된 스트림 및 작업/배치 스타터 앱을 선택하여 학습과 실험을 용이하게 합니다.
다양한 미들웨어 또는 데이터 서비스를 대상으로 하는 맞춤형 스트림 및 작업 애플리케이션은 친숙한 Spring Boot 스타일 프로그래밍 모델을 사용하여 구축할 수 있습니다.
간단한 스트림 파이프라인 DSL 을 사용하면 배포할 앱과 출력과 입력을 연결하는 방법을 쉽게 지정할 수 있습니다. 구성된 작업 DSL 은 일련의 작업 앱을 방향 그래프로 실행해야 하는 경우에 유용합니다.
대시보드 는 데이터 파이프라인을 대화식으로 구축하기 위한 그래픽 편집기는 물론 배포 가능한 앱의 보기와 Wavefront , Prometheus , Influx DB 또는 기타 모니터링 시스템을 사용하여 메트릭으로 모니터링할 수 있는 그래픽 편집기를 제공합니다.
Spring Cloud Data Flow 서버는 데이터 파이프라인을 구성하고 배포하기 위한 REST API 를 노출합니다. 별도의 셸 을 사용하면 명령줄에서 API로 쉽게 작업할 수 있습니다.
Spring Integration
잘 알려진 엔터프라이즈 통합 패턴 을 지원하도록 Spring 프로그래밍 모델을 확장합니다 . Spring Integration은 Spring 기반 애플리케이션 내에서 가벼운 메시징을 가능하게 하고 선언적 어댑터를 통해 외부 시스템과의 통합을 지원합니다. 이러한 어댑터는 원격, 메시징 및 스케줄링에 대한 Spring의 지원보다 높은 수준의 추상화를 제공합니다. Spring Integration의 주요 목표는 유지 가능하고 테스트 가능한 코드를 생성하는 데 필수적인 관심사의 분리를 유지하면서 엔터프라이즈 통합 솔루션을 구축하기 위한 간단한 모델을 제공하는 것입니다.
소개
Spring Framework를 사용하면 개발자가 인터페이스를 사용하여 코딩하고 종속성 주입(DI)을 사용하여 작업을 수행하는 데 필요한 종속성을 POJO(Plain Old Java Object)에 제공할 수 있습니다. Spring Integration은 이 개념을 한 단계 더 발전시켜 POJO가 메시징 패러다임을 사용하여 함께 연결되고 개별 구성 요소가 애플리케이션의 다른 구성 요소를 인식하지 못할 수 있습니다. 이러한 응용 프로그램은 더 높은 수준의 기능을 형성하기 위해 세분화된 재사용 가능한 구성 요소를 조합하여 구축됩니다. 신중하게 설계하면 이러한 흐름을 모듈화할 수 있으며 더 높은 수준에서 재사용할 수도 있습니다.
세분화된 구성 요소를 함께 연결하는 것 외에도 Spring Integration은 외부 시스템과 통신하기 위한 다양한 채널 어댑터 및 게이트웨이를 제공합니다. 채널 어댑터는 단방향 통합(보내기 또는 받기)에 사용됩니다. 게이트웨이는 요청/회신 시나리오(인바운드 또는 아웃바운드)에 사용됩니다. 어댑터 및 게이트웨이의 전체 목록은 참조 문서를 참조하십시오.
Spring Cloud Stream 프로젝트는 Spring Integration이 메시지 기반 마이크로서비스의 엔진으로 사용되는 Spring Integration을 기반으로 합니다.
Features
- Implementation of most of the Enterprise Integration Patterns
- Endpoint
- Channel (Point-to-point and Publish/Subscribe)
- Aggregator
- Filter
- Transformer
- Control Bus
- …
- Integration with External Systems
- ReST/HTTP
- FTP/SFTP
- STOMP
- WebServices (SOAP and ReST)
- TCP/UDP
- JMS
- RabbitMQ
- …
- 프레임워크에는 광범위한 JMX 지원이 있습니다.
- 프레임워크 구성 요소를 MBean으로 노출
- MBean에서 속성을 가져오고, 작업을 호출하고, 알림을 보내고 받기 위한 어댑터
Spring Flo
Spring Flo는 파이프라인 및 간단한 그래프를 위한 기본 내장형 HTML5 비주얼 빌더를 제공하는 JavaScript 라이브러리입니다. 이 라이브러리는 Spring Cloud Data Flow 에서 스트림 빌더의 기초로 사용됩니다 .
Flo에는 커넥터, 제어 노드, 팔레트, 상태 전환 및 그래프 토폴로지와 같은 통합 흐름 디자이너의 모든 기본 요소가 포함되어 있습니다. .
특징
- DSL, 그래픽 캔버스 또는 둘 다를 사용하여 스트림 파이프라인 생성, 관리 및 모니터링
- 콘텐츠 지원 및 자동 완성 기능이 있는 DSL을 통해 파이프라인 작성
- 분산 배포에서 모듈의 시각적 표현 보기
- 보다 쉽고 효율적인 파이프라인 구성을 위해 GUI에서 자동 조정 및 그리드 레이아웃 기능을 사용합니다.
Spring Web Flow
Spring Web Flow는 Spring MVC를 기반으로 하며 웹 애플리케이션의 "흐름" 구현을 허용합니다. 흐름은 일부 비즈니스 작업의 실행을 통해 사용자를 안내하는 일련의 단계를 캡슐화합니다. 여러 HTTP 요청에 걸쳐 있고, 상태가 있고, 트랜잭션 데이터를 처리하고, 재사용 가능하며, 본질적으로 동적이며 장기 실행될 수 있습니다.
Spring Web Flow의 스위트 스폿은 항공편 체크인, 대출 신청, 장바구니 체크아웃 또는 양식에 확인 단계 추가와 같은 제어된 탐색 기능이 있는 상태 저장 웹 애플리케이션입니다. 이러한 시나리오의 공통점은 다음 특성 중 하나 이상입니다.
- 시작과 끝이 분명합니다.
- 사용자는 특정 순서로 일련의 화면을 통과해야 합니다.
- 변경 사항은 마지막 단계까지 완료되지 않습니다.
- 완료되면 실수로 거래를 반복할 수 없어야 합니다.
Spring Web Flow는 더 높은 수준의 추상화에서 흐름을 작성하기 위한 선언적 흐름 정의 언어를 제공합니다. 이를 통해 Spring MVC, JSF 및 심지어 포틀릿 웹 애플리케이션을 포함하여 (흐름 프로그래밍 모델에 대한) 변경 없이 광범위한 애플리케이션에 통합할 수 있습니다. 다음은 탐색 요구 사항이 있는 상태 저장 웹 애플리케이션에서 관찰되는 일반적인 문제입니다.
- 흐름을 시각화하는 것은 매우 어렵습니다.
- 애플리케이션에는 HTTP 세션에 액세스하는 많은 코드가 있습니다.
- 통제된 탐색을 시행하는 것은 중요하지만 불가능합니다.
- 적절한 브라우저 뒤로 버튼 지원을 달성할 수 없는 것 같습니다.
- 브라우저와 서버가 "뒤로" 버튼 사용과 동기화되지 않습니다.
- 여러 브라우저 탭으로 인해 HTTP 세션 데이터에 동시성 문제가 발생합니다.
- Spring Web Flow는 위의 문제에 대한 솔루션을 제공합니다.
Spring Web Services
Spring Web Services(Spring-WS)는 문서 기반 웹 서비스 생성에 중점을 둔 Spring 커뮤니티의 제품입니다. Spring Web Services는 XML 페이로드를 조작하는 여러 방법 중 하나를 사용하여 유연한 웹 서비스를 생성할 수 있도록 하는 계약 우선 SOAP 서비스 개발을 용이하게 하는 것을 목표로 합니다. 이 제품은 Spring 자체를 기반으로 하므로 종속성 주입과 같은 Spring 개념을 웹 서비스의 필수 부분으로 사용할 수 있습니다.
사람들은 여러 가지 이유로 Spring-WS를 사용하지만 대부분은 웹 서비스 모범 사례를 따를 때 부족한 대안 SOAP 스택을 찾은 후 Spring-WS에 끌립니다. Spring-WS는 베스트 프랙티스를 쉬운 프랙티스로 만듭니다. 여기에는 WS-I 기본 프로필, 계약 우선 개발 및 계약과 구현 간의 느슨한 결합과 같은 관행이 포함됩니다. Spring 웹 서비스의 다른 주요 기능은 다음과 같습니다.
특징
- 모범 사례를 쉽게 실천: Spring 웹 서비스는 모범 사례를 더 쉽게 시행하도록 합니다. 여기에는 WS-I 기본 프로필, 계약 우선 개발 및 계약과 구현 간의 느슨한 결합과 같은 관행이 포함됩니다.
- 강력한 매핑: 메시지 페이로드, SOAP 작업 헤더 또는 XPath 표현식에 따라 들어오는 XML 요청을 모든 개체에 배포할 수 있습니다.
- XML API 지원: 들어오는 XML 메시지는 DOM, SAX, StAX와 같은 표준 JAXP API뿐 아니라 JDOM, dom4j, XOM 또는 마샬링 기술에서도 처리할 수 있습니다.
- 유연한 XML 마샬링: Spring 웹 서비스 배포의 개체/XML 매핑 모듈은 JAXB 1 및 2, Castor, XMLBeans, JiBX 및 XStream을 지원합니다. 그리고 별도의 모듈이기 때문에 웹 서비스가 아닌 코드에서도 사용할 수 있습니다.
- Spring 전문 지식 재사용: Spring-WS는 모든 구성에 Spring 애플리케이션 컨텍스트를 사용하므로 Spring 개발자가 빠르고 훌륭하게 최신 정보를 얻을 수 있습니다. 또한 Spring-WS의 아키텍처는 Spring-MVC의 아키텍처와 유사합니다.
- WS-Security 지원: WS-Security를 사용하면 SOAP 메시지에 서명, 암호화 및 암호 해독 또는 인증할 수 있습니다.
- Acegi Security와 통합: Spring Web Services의 WS-Security 구현은 Spring Security와의 통합을 제공합니다. 이는 SOAP 서비스에 대한 기존 구성도 사용할 수 있음을 의미합니다.
- Maven에 의해 구축: 이것은 당신의 Maven 기반 프로젝트에서 Spring Web Services 아티팩트를 효과적으로 재사용하는 데 도움이 됩니다.
- 아파치 라이선스. 프로젝트에서 자신 있게 Spring-WS를 사용할 수 있습니다.
'Dev > backend' 카테고리의 다른 글
spring mvc 에서 get parameter 를 object 로 사용 시 불변객체 주의 (0) | 2018.03.07 |
---|---|
yum 으로 openjdk 설치 (0) | 2017.11.30 |
자카르타 DBCP - JNDI 를 사용한 connection pool (0) | 2017.11.01 |