27 November 2015

Building a Distributed Data Processing Pipeline Using Spring Cloud Data Flow

by Kenny Bastani
Presentation was based on this article

Cloud native

Basically, when you take away all the unnecessary, complicated terms, cloud native means that an applications is build using the microservices architecture and is deployed in a cloud environment. Typically the code of the application is put in a vessel such as a container, so that new instances of the application could easily be deployed (heard of "pets vs cattle" servers?)

Spring Boot

What Spring Boot is is effectively a microframework for microservices. It packs all the necessary harnessing for a microservice, including the actual runtime, and allows the developer to focus on the business logic. Here is a quick introduction to Spring Boot.

spring_framework
spring_boot2

Spring Cloud

Spring Cloud, on the other hand, is yet another degree of abstraction away from the core Spring functionality. It could provide the services you've created with utilities such as :
  • centralized configuration
  • service registration and discovery
  • routing
  • service-to-service calls
  • load balancing
  • circuit breakers, global locks, leadership election and cluster state
  • distributed messaging

Lattice

Spring plays nice with Lattice, an open source project that runs containers on a cluster. Since Spring "wraps" the functionality that Lattice provides (such as load-balancing, health management, etc.) all these come at no expense to us.

No comments: