Spring Cloud Complete Services - vidyasekaran/current_learning GitHub Wiki

https://spring.io/projects/spring-cloud

Some of the Spring Cloud projects are listed for reference:

1. Spring Cloud for Amazon Web Services - Spring Cloud for Amazon Web Services, part of the Spring Cloud umbrella project, eases the integration with hosted Amazon Web Services. It offers a convenient way to interact with AWS provided services using well-known Spring idioms and APIs, such as the messaging or caching API. Developers can build their application around the hosted services without having to care about infrastructure or maintenance.

Features

Spring Messaging API implementation for SQS.- Spring Cache API implementation for ElastiCache. Annotation-based mapping of SNS endpoints (HTTP). Access the resources by their logical name defined in a CloudFormation stack. Automatic JDBC DataSource creation based on the logical name of an RDS instance. Ant-style path matching ResourceLoader for S3 buckets.

2.** Spring Cloud Bus** - Spring Cloud Bus links nodes of a distributed system with a lightweight message broker. This can then be used to broadcast state changes (e.g. configuration changes) or other management instructions. AMQP and Kafka broker implementations are included with the project. Alternatively, any Spring Cloud Stream binder found on the classpath will work out of the box as a transport.

  1. Spring Cloud CLI - Spring Boot CLI provides Spring Boot command line features for Spring Cloud. You can write Groovy scripts to run Spring Cloud component applications (e.g. @EnableEurekaServer). You can also easily do things like encryption and decryption to support Spring Cloud Config clients with secret configuration values. With the Launcher CLI you can launch services like Eureka, Zipkin, Config Server conveniently all at once from the command line (very useful at development time).

  2. Spring Cloud - Cloud Foundry Service Broker - This project provides a framework for building a Spring Boot project to quickly implement a service broker for Cloud Foundry.

  3. Spring Cloud Commons - Spring Cloud Commons delivers features as two libraries: Spring Cloud Context and Spring Cloud Commons. Spring Cloud Context provides utilities and special services for the ApplicationContext of a Spring Cloud application (bootstrap context, encryption, refresh scope and environment endpoints). Spring Cloud Commons is a set of abstractions and common classes used in different Spring Cloud implementations (eg. Spring Cloud Netflix vs. Spring Cloud Consul).

  4. Spring Cloud Config - Spring Cloud Config provides server and client-side support for externalized configuration in a distributed system.

  5. Spring Cloud Connectors - Spring Cloud Connectors simplifies the process of connecting to services and gaining operating environment awareness in cloud platforms such as Cloud Foundry and Heroku, especially for Spring applications. It is designed for extensibility: you can use one of the provided cloud connectors or write one for your cloud platform, and you can use the built-in support for commonly-used services (relational databases, MongoDB, Redis, RabbitMQ) or extend Spring Cloud Connectors to work with your own services.

Spring Cloud Connectors for Amazon S3

8.** Spring Cloud Consul** provides Consul integrations for Spring Boot apps through autoconfiguration and binding to the Spring Environment and other Spring programming model idioms. With a few simple annotations you can quickly enable and configure the common patterns inside your application and build large distributed systems with Hashicorp’s Consul. The patterns provided include Service Discovery, Distributed Configuration and Control Bus

Features

Spring Cloud Consul features: Service Discovery: instances can be registered with the Consul agent and clients can discover the instances using Spring-managed beans Supports Ribbon, the client side load-balancer via Spring Cloud Netflix Supports Spring Cloud LoadBalancer - a client side load-balancer provided by the Spring Cloud project Supports Zuul, a dynamic router and filter via Spring Cloud Netflix Distributed Configuration: using the Consul Key/Value store Control Bus: Distributed control events using Consul Events

9. Spring Cloud Contract - Spring Cloud Contract is an umbrella project holding solutions that help users in successfully implementing the Consumer Driven Contracts approach. Spring Cloud Contract Verifier is a tool that enables Consumer Driven Contract (CDC) development of JVM-based applications.

  1. Spring Cloud Function - Promote the implementation of business logic via functions.

Adapters for AWS Lambda, Microsoft Azure, Apache OpenWhisk and possibly other "serverless" service providers.

  1. Spring Cloud Gateway - This project provides a library for building an API Gateway on top of Spring WebFlux. Spring Cloud Gateway aims to provide a simple, yet effective way to route to APIs and provide cross cutting concerns to them such as: security, monitoring/metrics, and resiliency.

12 . **Spring Cloud GCP **- The Spring Cloud GCP project makes the Spring Framework a first-class citizen of Google Cloud Platform (GCP).

  1. Spring Cloud Netflix - Spring Cloud Netflix provides Netflix OSS integrations for Spring Boot apps through autoconfiguration and binding to the Spring Environment and other Spring programming model idioms. With a few simple annotations you can quickly enable and configure the common patterns inside your application and build large distributed systems with battle-tested Netflix components. The patterns provided include Service Discovery (Eureka), Circuit Breaker (Hystrix), Intelligent Routing (Zuul) and Client Side Load Balancing (Ribbon)..

  2. Spring Cloud Open Service Broker - Spring Cloud Open Service Broker is a framework for building Spring Boot applications that implement the Open Service Broker API.

The Open Service Broker API project allows developers to deliver services to applications running within cloud native platforms such as Cloud Foundry, Kubernetes, and OpenShift. Spring Cloud Open Service Broker provides a framework based on Spring Boot that enables you to quickly create a service broker for your own managed service on platform that support the Open Service Broker API.

  1. Spring Cloud Pipelines - This project is deprecated. It was migrated to: Cloud Pipelines. - Umbrella project for deployment pipelines https://github.com/CloudPipelines/ https://github.com/CloudPipelines/scripts

Cloud Pipelines Scripts

This project tries to solve the following problems:

Creation of a common deployment pipeline Propagation of good testing & deployment practices Speed up the time required to deploy a feature to production A common way of running, configuring and deploying applications lowers support costs and time needed by new developers to blend in when they change projects.

  1. Spring Cloud Schema Registry -

  2. Spring Cloud Security - Spring Cloud Security offers a set of primitives for building secure applications and services with minimum fuss. A declarative model which can be heavily configured externally (or centrally) lends itself to the implementation of large systems of co-operating, remote components, usually with a central indentity management service. It is also extremely easy to use in a service platform like Cloud Foundry. Building on Spring Boot and Spring Security OAuth2 we can quickly create systems that implement common patterns like single sign on, token relay and token exchange.

Features Spring Cloud Security features:

Relay SSO tokens from a front end to a back end service in a Zuul proxy

Relay tokens between resource servers

An interceptor to make a Feign client behave like OAuth2RestTemplate (fetching tokens etc.)

Configure downstream authentication in a Zuul proxy

  1. Spring Cloud Skipper - Skipper is a tool that allows you to discover Spring Boot applications and manage their lifecycle on multiple Cloud Platforms. You can use Skipper standalone or integrate it with Continuous Integration pipelines to help achieve Continuous Deployment of applications.

The system design is influenced by a large number of projects in the Kubernetes ecosystem that perform resource templating and/or orchestration, hence the nautically inspired project name Skipper.

  1. Spring Cloud Sleuth - - Spring Cloud Sleuth provides Spring Boot auto-configuration for distributed tracing.

Features

Sleuth configures everything you need to get started. This includes where trace data (spans) are reported to, how many traces to keep (sampling), if remote fields (baggage) are sent, and which libraries are traced.

Specifically, Spring Cloud Sleuth…​

Adds trace and span ids to the Slf4J MDC, so you can extract all the logs from a given trace or span in a log aggregator.

Instruments common ingress and egress points from Spring applications (servlet filter, rest template, scheduled actions, message channels, feign client).

If spring-cloud-sleuth-zipkin is available then the app will generate and report Zipkin-compatible traces via HTTP. By default it sends them to a Zipkin collector service on localhost (port 9411). Configure the location of the service using spring.zipkin.baseUrl.

  1. Spring Cloud Stream - Spring Cloud Stream is a framework for building highly scalable event-driven microservices connected with shared messaging systems.

The framework provides a flexible programming model built on already established and familiar Spring idioms and best practices, including support for persistent pub/sub semantics, consumer groups, and stateful partitions.

Binder Implementations Spring Cloud Stream supports a variety of binder implementations and the following table includes the link to the GitHub projects.

RabbitMQ Apache Kafka Kafka Streams Amazon Kinesis Google PubSub (partner maintained) Solace PubSub+ (partner maintained) Azure Event Hubs (partner maintained) Apache RocketMQ (partner maintained)

The core building blocks of Spring Cloud Stream are:

Destination Binders: Components responsible to provide integration with the external messaging systems. Destination Bindings: Bridge between the external messaging systems and application provided Producers and Consumers of messages (created by the Destination Binders). Message: The canonical data structure used by producers and consumers to communicate with Destination Binders (and thus other applications via external messaging systems).

21 . Spring Cloud Stream Applications - - Spring Cloud Stream Applications are standalone executable applications that communicate over messaging middleware such as Apache Kafka and RabbitMQ.

These applications can run independently on a variety of runtime platforms, including Kubernetes, Docker, Cloud Foundry, or even on your laptop.

Features

Out-of-the-box applications ready to run as standalone Spring Boot applications. Assemble a set of applications into a coherent streaming data pipeline in Spring Cloud Data Flow. Override configuration parameters via application properties, environment variables, or in the YAML file.

  1. Spring Cloud Stream Applications - Spring Cloud Stream Applications are standalone executable applications that communicate over messaging middleware such as Apache Kafka and RabbitMQ.

These applications can run independently on a variety of runtime platforms, including Kubernetes, Docker, Cloud Foundry, or even on your laptop.

Features

Out-of-the-box applications ready to run as standalone Spring Boot applications. Assemble a set of applications into a coherent streaming data pipeline in Spring Cloud Data Flow. Override configuration parameters via application properties, environment variables, or in the YAML file.

source - file, ftp,jdbc,jms,mongo,rabbit,s3,sftp,tcp,twitter

sink - cassandra,web socket, redis, etc..

  1. **Spring Cloud Stream App Starters **- Spring Cloud Stream Application Starters are standalone executable applications that communicate over messaging middleware such as Apache Kafka and RabbitMQ. These applications can run independently on variety of runtime platforms including: Cloud Foundry, Apache Yarn, Apache Mesos, Kubernetes, Docker, or even on your laptop.

Features Run standalone as Spring Boot applications

Compose microservice as streaming pipelines in Spring Cloud Data Flow

Consume microservice applications as maven or docker artifacts

Override configuration parameters via command-line, environment variables, or YAML file

Provide infrastructure to test the applications in isolation

Download as starters from this version of Spring Initializr

24.** Spring Cloud Task** allows a user to develop and run short lived microservices using Spring Cloud and run them locally, in the cloud, even on Spring Cloud Data Flow. Just add @EnableTask and run your app as a Spring Boot app (single application context). If you are new to Spring Cloud Task, take a look at our Getting Started docs.

  1. Spring Cloud Task Application Starters are Spring Boot applications that may be any process including https://projects.spring.io/spring-batch[Spring Batch] jobs that do not run forever, and they end/stop at some point. Spring Cloud Task Applications can be used with Spring Cloud Data Flow to create, deploy, and orchestrate short-lived data microservices.

Spring Cloud Task Application Starters are standalone executable applications that can be used for on-demand use-cases such as database migration, machine learning, and scheduled operations. These applications can run independently on variety of runtime platforms including: Cloud Foundry, Kubernetes, Docker, or even on your laptop. If you are new to task app starters

  1. Spring Cloud Vault -

Features

Retrieve secrets from Vault and initialize Spring Environment with remote property sources. Obtain secrets secured with SSL. Generate credentials for MySQL, PostgreSQL, Apache Cassandra, MongoDB, Consul, AWS, and RabbitMQ. Token, AppId, AppRole, Client Certificate, Cubbyhole, and AWS EC2 and IAM, Kubernetes authentication. Bootstrap application context: a parent context for the main application that can be trained to do anything. Cloud Foundry integration using HashiCorp’s Vault service broker through Spring Cloud Vault Connector.

27 . Spring Cloud Zookeeper provides Apache Zookeeper integrations for Spring Boot apps through autoconfiguration and binding to the Spring Environment and other Spring programming model idioms. With a few simple annotations you can quickly enable and configure the common patterns inside your application and build large distributed systems with Zookeeper. The patterns provided include Service Discovery and Distributed Configuration.

  1. Spring Cloud App Broker is a framework for building Spring Boot applications that implement the Open Service Broker API to deploy applications to a platform.

The Open Service Broker API project allows developers to deliver services to applications running within cloud native platforms such as Cloud Foundry, Kubernetes, and OpenShift. Spring Cloud App Broker provides a framework based on Spring Boot that enables you to quickly create a service broker that deploys applications and services to the platform when managed services are provisioned.

Currently Cloud Foundry is supported as a target platform for service instance backing applications and services. https://www.infoq.com/news/2019/09/spring-cloud-app-broker-released/

The Open Service Broker API enables developers to provide "backing services" (12factor - at will you attach/detach service - traditional we maintian Database, smtpserver, now consume any service DB - AWS RDS if our local mysql encounter problem) to applications running on cloud native platforms like Kubernetes and Cloud Foundry. The key component of this API is the Service Broker. A Service Broker manages the lifecycle of services, and the broker provides commands to fetch the catalog of services that it offers, provision and de-provision instances of the services, and bind and unbind applications to the service instances. Cloud native platforms can interact with the Service Broker to provision and gain access to the managed services offered by a Service Broker. For those familiar with OSGI, the Open Service Broker API is similar in spirit to the OSGI services, service references and service registry.

  1. Spring Cloud Circuit breaker provides an abstraction across different circuit breaker implementations. It provides a consistent API to use in your applications allowing you the developer to choose the circuit breaker implementation that best fits your needs for your app.

Supported Implementations

Netfix Hystrix Resilience4J Sentinel Spring Retry

  1. This project provides OpenFeign integrations for Spring Boot apps through autoconfiguration and binding to the Spring Environment and other Spring programming model idioms.

  2. Spring Cloud Kubernetes provides implementations of well known Spring Cloud interfaces allowing developers to build and run Spring Cloud applications on Kubernetes. While this project may be useful to you when building a cloud native application, it is also not a requirement in order to deploy a Spring Boot app on Kubernetes. If you are just getting started in your journey to running your Spring Boot app on Kubernetes you can accomplish a lot with nothing more than a basic Spring Boot app and Kubernetes itself. To learn more, you can get started by reading the Spring Boot reference documentation for deploying to Kubernetes and also working through the workshop material Spring and Kubernetes.

Features

Kubernetes awareness DiscoveryClient implementation PropertySource objects configured via ConfigMaps Client side loadbalancing via Netflix Ribbon