Spring Framework, released almost two decades ago, has progressively established itself as a de facto standard for building Enterprise Java applications. With emerging trends of building applications by applying Microservices Architecture, Serverless with Cloud computing model, non-blocking architecture with Reactive architecture, Spring framework has been evolutionary in providing the support for modern architecture practices.

With Spring Framework as a foundational capability, the below visualization represents the ecosystem of Spring community-provided projects supporting diverse modern engineering architecture/design patterns with the following guidelines:

  • Spring projects have been highlighted in the white boxes
  • While projects have been aligned to diverse buckets, there are overlapping usage across different purposes (e.g. Spring Config can be used across different paradigms — Microservices, Reactive, Event-driven)
Spring Framework Ecosystem for Serverless, Microservices, Event-driven, Reactive Systems
Spring Framework Ecosystem for Serverless, Microservices, Event-driven, Reactive Systems

Microservices

Reactive Systems

Event-driven

  • Spring Cloud Stream: a framework for building highly scalable event-driven microservices connected with shared messaging systems such as RabbitMQ, Apache Kafka, Amazon Kinesis, Google PubSub, Solace PubSub+, and more.
  • Spring Cloud Function: to develop lightweight FaaS-based services as a subscriber of the events.
  • Spring Cloud Data Flow: to develop, deploy, manage, and scale high-throughput streaming data pipelines across multiple cloud-native platforms.

Serverless

Cloud Integration

  • Spring Cloud AWS/Azure/GCP/Alibaba: eases the integration with hosted cloud-managed services with the respective providers.
  • Spring Cloud for Cloud Foundry: easy to run Spring Cloud apps in Cloud Foundry (the Platform as a Service).
  • Spring Cloud Connectors: designed for environmental awareness in cloud platforms such as Cloud Foundry and Heroku but not in maintenance mode in favor of the Java CFEnv project.
  • Spring Cloud Kubernetes: build and run Spring Cloud applications on Kubernetes (not necessarily to run in K8S but provides abstractions such as load application properties from Kubernetes ConfigMaps and Secrets, Discovery Client implementation that resolves service names to Kubernetes Services).
  • Spring Cloud Consul: provides Consul integrations for Spring Boot apps through autoconfiguration.
  • Spring Cloud Skipper: a tool that allows you to discover Spring Boot applications and manage their lifecycle on multiple Cloud Platforms.
  • Spring Cloud Cluster: offers a set of primitives for building “cluster” features into a distributed system. Examples are leadership election, consistent storage of cluster state, global locks, and one-time tokens.

Messaging

To conclude, the ecosystem with the Spring framework has been evolving rapidly and the maturity in the industry has enabled it to be accepted as a production-ready and proven solution. Leveraging libraries, frameworks, tools, and technologies available within the Spring framework helps build consistency in an enterprise application while there are alternative choices available.

Feel free to share your feedback/perspective as comments.

Related Articles

Leave a Comment