SlideShare a Scribd company logo
1 of 105
Download to read offline
© 2016 Pivotal Software, Inc. All rights reserved.
@kennybastani
Building Cloud Native Architectures with
Spring
Kenny Bastani
Spring Developer Advocate


Pivotal Cloud Native Roadshow 2016
1
Kenny Bastani
@kennybastani
Spring Developer Advocate
Agenda
Agenda
1 Microservices & Cloud Native
2 Reference Architecture
3 Spring Boot
4 Spring Cloud
5 Dealing with Legacy
© 2016 Pivotal Software, Inc. All rights reserved.
@kennybastani
Microservices
How did we get there?
4
We started with the monolith…
© 2016 Pivotal Software, Inc. All rights reserved.
@kennybastani
Cultural problems with monoliths
6
Slows our velocity getting into production
It takes too long to ramp up new engineers
The code base is just too large for anyone
one person to fully comprehend
Centralized authority and change
management slows progress (DBA, Ops)
© 2016 Pivotal Software, Inc. All rights reserved.
@kennybastani
Operational problems with monoliths
7
Coordinated releases batch many changes
together from different teams
Operations drives the runtime environment
of applications
Operators take on all operational
responsibility (including VM upgrades)
Deploy everything at once or nothing at all
We then moved towards SOA…
@kennybastani
We have now arrived at microservices…
Each team provisions self-service infrastructure, like a database, and builds a single application

Centralized resources are provided as backing services that are shared for data consistency, caching
© 2016 Pivotal Software, Inc. All rights reserved.
@kennybastani
Online Store Example
Cloud native application as microservices
10
@kennybastani
Open Source Example
http://online-store-web.cfapps.io
https://github.com/kbastani/spring-cloud-event-sourcing-example
Demo Username: user
Password: password
© 2016 Pivotal Software, Inc. All rights reserved.
@kennybastani
Eventual consistency
Handling the guarantees of an eventually
consistent microservices architecture
18
Eventual consistency
Microservice architectures provide no guarantees about the correctness
of your data
So how can we guarantee high availability while also guaranteeing data
consistency?
Transaction logs
Event Sourcing
Aggregates can be used to generate the consistent state of any object
It provides an audit trail that can be replayed to generate the state of an object from
any point in time
It provides the many inputs necessary for analyzing data using event stream
processing
It enables the use of compensating transactions to rollback events leading to an
inconsistent application state
It also avoids complex synchronization between microservices, paving the way for
asynchronous non-blocking operations between microservices
Event Types
Event Log
Event logs are transaction logs
Use event sourcing in your microservices to ensure consistency of your
distributed system
Don’t store state with microservices, store events
Use event stream processing to observe the active usage of your cloud
native application in real-time
© 2016 Pivotal Software, Inc. All rights reserved.
@kennybastani
The Cloud Native Stack
What are the components of a cloud-native
architecture?
25
What is a cloud-native application?
The cloud provides resources
The platform provides services
The application provides value
Platform
Services
What is a cloud service?
The platform provides services
The developer provisions services
The application uses services
Microservices != Cloud Native
Microservices are an architectural practice
Cloud native is a style of application development
Monoliths can equally be cloud native apps
Monolith to Microservice
Splitting the Monolith: User Service Migration
© 2016 Pivotal Software, Inc. All rights reserved.
@kennybastani
Spring Boot
A JVM micro-framework for building microservices
33
What is Spring Boot?
@kennybastani
spring boot
Spring Initializr for boostraping your applications
supports rapid development of
production-ready applications
and services
© 2016 Pivotal Software, Inc. All rights reserved.
@kennybastani
Cloud Native Platforms
Shipping applications in containers instead of
shared application servers
36
@kennybastani
Application Server Deployment: Monolith
Load balancing requires provisioning
of new VMs and app server
installations
Poor resource isolation; memory
leaks can cause other applications to
become unavailable
Runtime environment is driven by the
operator
Virtual Machine

App
Linux Kernel
App App
Hardware Infrastructure
@kennybastani
Linux Container Deployment: Microservices
Development team drives the
application runtime of a container
Containers are resource isolated,
allowing efficient scheduling onto a
grid of VMs
Containers take seconds to start,
VMs take minutesVirtual Machine

Container
Linux Kernel
App App
App App
Container
App App
App App
Container
App App
App App
Hardware Infrastructure
@kennybastani
Microservices: Container Deployment
Each microservice can be containerized with their application dependencies
Containers get scheduled on virtual machines with an allotted resource policy
@kennybastani
Container scheduling and auto-scaling
Minutes to provision and start a VM, but seconds to schedule and start a container
Auto-scaling becomes a feature of the cloud platform by scheduling on pool of VMs
@kennybastani
Distributed Applications
Each microservice will likely need to communicate with other containers
Service discovery automates how distributed apps find service dependencies
© 2016 Pivotal Software, Inc. All rights reserved.
@kennybastani
Spring Cloud
A toolset designed for building distributed
systems
42
@kennybastani
What is Spring Cloud?
Spring Cloud provides a way to turn Spring Boot microservices into distributed applications
@kennybastani
spring cloud
Apache Zookeeper
these logos are all trademark/copyright their respective owners (T-B, L-R): 



Netflix, amazon.com, Apache Software Foundation, Cloud Foundry, Hashicorp
they are ALL great organizations and we love their open-source and their APIs!!
*
© 2016 Pivotal Software, Inc. All rights reserved.
@kennybastani
Spring Cloud Demos
Applying the patterns of cloud-native architectures
with Spring Boot and Spring Cloud
45
@kennybastani
Spring Cloud: Cloud Native Patterns
Service Discovery
API Gateway
Config Server
Circuit Breakers
Distributed Tracing
Service Discovery
Allows applications to find each other in an environment
An essential component when using dynamic container scheduling
Each application handles its own routing
Developers only need the name of a dependency, not the URL
A service registry is distributed to all subscriber applications
Discovery Service
Service Registry
@kennybastani
Client-side Load Balancing
• Create discovery service
• Register user service
• Register user client
• Scale user service
• Reverse proxy from user client
to user service
User

Service
User

Service
User

Client
@kennybastani
Client-side Load Balancing
• Create discovery service
• Register user service
• Register user client
• Scale user service
• Reverse proxy from user client
to user service
User

Service
User

Service
User

Client
@kennybastani
Client-side Load Balancing
• Create discovery service
• Register user service
• Register user client
• Scale user service
• Reverse proxy from user client
to user service
User

Service
User

Service
User

Client
@kennybastani
Client-side Load Balancing
• Create discovery service
• Register user service
• Register user client
• Scale user service
• Reverse proxy from user client
to user service
User

Service
User

Service
User

Client
© 2016 Pivotal Software, Inc. All rights reserved.
@kennybastani
Config Server
Centralizing config management for microservices with
Spring Cloud Config Server
56
Config Server
Allows applications to source configuration from central service
Application configuration can be changed without deployment
Cascading configuration files for all apps and individual apps
Uses Git repository as file system, providing audit log of changes
Add Spring Cloud Bus to automate config refresh for many instances
Configuration Server
© 2016 Pivotal Software, Inc. All rights reserved.
@kennybastani
API Gateway
Building edge services that route requests to
backend microservices
60
Edge Service
API gateway pattern using Spring Cloud Netflix Zuul starter project
Embeds relative routes from other services registered with Eureka
Automatic method for reverse proxying to other services
Routes are displayed at /routes of the Spring Boot app
Benefits
Provides a secure gateway to compose together REST APIs
exposed by backend microservices
Front-end developers can integrate with a single API over HTTP to
communicate with potentially many microservices
Front-end applications can further embed an edge service to avoid
the need to manage CORS and authentication concerns
© 2016 Pivotal Software, Inc. All rights reserved.
@kennybastani
Distributed Tracing
Tracing the Online Store
66
Spring Cloud Sleuth
Spring Cloud Sleuth is a project that adds distributed tracing
capabilities to your distributed Spring Boot applications
https://cloud.spring.io/spring-cloud-sleuth/
http://zipkin.io/
Zipkin Dashboard
© 2016 Pivotal Software, Inc. All rights reserved.
@kennybastani
Strangling Legacy with Microservices
How do I build microservices that are cloud-native without
doing a big bang refactor?
70
Going Cloud Native
Legacy migration challenges

“How do I change the engine of the aircraft while it’s still in flight?”
Approaches

Lift-and-shift
Big bang refactor and migration
Iterative legacy modernization
Problems with lift-and-shift
Brings your tech debt into the cloud
Rolling maintenance windows until migration is complete
Strangler Pattern
“Gradually create a new system around the edges
of the old, letting it grow slowly over several years
until the old system is strangled.”
— Martin Fowler
Strangler vines—seed in the upper branches of a fig tree and gradually work their
way down to the soil—strangling and eventually and killing the tree
Strangling legacy using microservices
How can we take advantage of building microservices that also
strangle data from the edge of legacy systems?
The problem with data
The most common pain point that companies experience when
building microservices is handling domain data
Your domain data is likely going to be trapped inside a large
shared database—probably being of the Oracle or IBM variety
Because of this, your new microservices will be dependent on
retrieving data from a large shared database
Fetching data from the legacy system
Microservices can reach into the legacy system and fetch data
in the same way that front-end applications do
While this isn’t a good long-term strategy, it can be an
intermediate step in gaining control over the legacy backend
Extending Domain Data
Agile benefits of extending domain data
We gain the benefit of agility in microservices by extending base
domain objects retrieved from a legacy system
New feature changes are moved out to the new microservice,
using an indirection layer to maintain backward compatibility
with the legacy system
Legacy Indirection Layer
Advantages
The legacy system does not need to be altered to support the
development of new microservices
New features can be deployed independently without being
tightly coupled to the legacy system
It ensures that any existing calls to a legacy web service are
unaltered for other apps
Disadvantages
Scalability may be a concern in the case that the base legacy
service is not cloud-native
Availability will be impacted if the base legacy service’s shared
database suffers an outage
The dependency on the legacy system’s shared database is
increased, making it harder to decompose
Point-to-point Connections
Point-to-point Connections
If your architecture has brittle point-to-point connections, code
changes may be required to create a legacy indirection layer

If you’re building microservices on top of an SOA and are using an
ESB, an indirection layer already exists
Centralized ESB
ESB Indirection Layer
Data Acquisition
We can use the Legacy Edge service to adapt responses from
microservices into the native formats expected by legacy
applications
We can also acquire data from the legacy system and migrate
the system of record to a microservice, without refactoring the
current database
© 2016 Pivotal Software, Inc. All rights reserved.
@kennybastani
Reference application
Open source example of strangling legacy
88
Let’s talk about theory and practice
The first law of microservices.
It depends.
In the end..
Do what makes sense for your architecture
Worry deeply about who cleans up after you
Building software is more about people than it is tools
Full open source examples on my blog
http://www.kennybastani.com
Wrapping up…
Cloud native applications
“If you have to implement the same functionality in each
application, it should instead be provided as a service using the
platform” – Matt Curry @ Allstate
Do this well, and the only thing you’ll be left with is the valuable
business logic in your applications
The two road blocks of cloud native
Legacy culture
Legacy culture
Before you can even begin to address the handling of legacy in a
new microservice architecture, you’ll need to address a legacy
culture
Some developers may believe a piece of legacy code is beautiful,
and has done its job without change for many years
Handling the culture shift is a delicate matter. Get people on
board before imposing changes
Legacy applications
This is what dropping a legacy application in a Docker
container and calling it a microservice looks like..
Legacy applications
Not all legacy needs to be destroyed right away
Make sure to take an iterative approach to go cloud-native that
promises backwards compatibility with legacy applications
The goal is to lessen the impact to users over time before making
a decision to phase out legacy applications and infrastructure
Developers dream of strangling legacy, but it likely still generates
revenue for the business
© 2016 Pivotal Software, Inc. All rights reserved.
@kennybastani
Thank you.
Reach out if you have any questions!
105

More Related Content

What's hot

Microservices architecture
Microservices architectureMicroservices architecture
Microservices architectureAbdelghani Azri
 
Azure Application Modernization
Azure Application ModernizationAzure Application Modernization
Azure Application ModernizationKarina Matos
 
Microservice vs. Monolithic Architecture
Microservice vs. Monolithic ArchitectureMicroservice vs. Monolithic Architecture
Microservice vs. Monolithic ArchitecturePaul Mooney
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to MicroservicesMahmoudZidan41
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecturetyrantbrian
 
What Is Kubernetes | Kubernetes Introduction | Kubernetes Tutorial For Beginn...
What Is Kubernetes | Kubernetes Introduction | Kubernetes Tutorial For Beginn...What Is Kubernetes | Kubernetes Introduction | Kubernetes Tutorial For Beginn...
What Is Kubernetes | Kubernetes Introduction | Kubernetes Tutorial For Beginn...Edureka!
 
[AWS Dev Day] 앱 현대화 | DevOps 개발자가 되기 위한 쿠버네티스 핵심 활용 예제 알아보기 - 정영준 AWS 솔루션즈 아키...
[AWS Dev Day] 앱 현대화 | DevOps 개발자가 되기 위한 쿠버네티스 핵심 활용 예제 알아보기 - 정영준 AWS 솔루션즈 아키...[AWS Dev Day] 앱 현대화 | DevOps 개발자가 되기 위한 쿠버네티스 핵심 활용 예제 알아보기 - 정영준 AWS 솔루션즈 아키...
[AWS Dev Day] 앱 현대화 | DevOps 개발자가 되기 위한 쿠버네티스 핵심 활용 예제 알아보기 - 정영준 AWS 솔루션즈 아키...Amazon Web Services Korea
 
The Cloud Native Journey
The Cloud Native JourneyThe Cloud Native Journey
The Cloud Native JourneyVMware Tanzu
 
The Need of Cloud-Native Application
The Need of Cloud-Native ApplicationThe Need of Cloud-Native Application
The Need of Cloud-Native ApplicationEmiliano Pecis
 
Introduction to microservices
Introduction to microservicesIntroduction to microservices
Introduction to microservicesAnil Allewar
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice ArchitectureNguyen Tung
 
Introduction of Kubernetes - Trang Nguyen
Introduction of Kubernetes - Trang NguyenIntroduction of Kubernetes - Trang Nguyen
Introduction of Kubernetes - Trang NguyenTrang Nguyen
 
An Introduction to the AWS Well Architected Framework - Webinar
An Introduction to the AWS Well Architected Framework - WebinarAn Introduction to the AWS Well Architected Framework - Webinar
An Introduction to the AWS Well Architected Framework - WebinarAmazon Web Services
 
Microservices, Kubernetes and Istio - A Great Fit!
Microservices, Kubernetes and Istio - A Great Fit!Microservices, Kubernetes and Istio - A Great Fit!
Microservices, Kubernetes and Istio - A Great Fit!Animesh Singh
 

What's hot (20)

Microservices architecture
Microservices architectureMicroservices architecture
Microservices architecture
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Azure Application Modernization
Azure Application ModernizationAzure Application Modernization
Azure Application Modernization
 
Microservice vs. Monolithic Architecture
Microservice vs. Monolithic ArchitectureMicroservice vs. Monolithic Architecture
Microservice vs. Monolithic Architecture
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Architecture: Microservices
Architecture: MicroservicesArchitecture: Microservices
Architecture: Microservices
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
 
What Is Kubernetes | Kubernetes Introduction | Kubernetes Tutorial For Beginn...
What Is Kubernetes | Kubernetes Introduction | Kubernetes Tutorial For Beginn...What Is Kubernetes | Kubernetes Introduction | Kubernetes Tutorial For Beginn...
What Is Kubernetes | Kubernetes Introduction | Kubernetes Tutorial For Beginn...
 
Introduction to microservices
Introduction to microservicesIntroduction to microservices
Introduction to microservices
 
Why Microservice
Why Microservice Why Microservice
Why Microservice
 
Why to Cloud Native
Why to Cloud NativeWhy to Cloud Native
Why to Cloud Native
 
[AWS Dev Day] 앱 현대화 | DevOps 개발자가 되기 위한 쿠버네티스 핵심 활용 예제 알아보기 - 정영준 AWS 솔루션즈 아키...
[AWS Dev Day] 앱 현대화 | DevOps 개발자가 되기 위한 쿠버네티스 핵심 활용 예제 알아보기 - 정영준 AWS 솔루션즈 아키...[AWS Dev Day] 앱 현대화 | DevOps 개발자가 되기 위한 쿠버네티스 핵심 활용 예제 알아보기 - 정영준 AWS 솔루션즈 아키...
[AWS Dev Day] 앱 현대화 | DevOps 개발자가 되기 위한 쿠버네티스 핵심 활용 예제 알아보기 - 정영준 AWS 솔루션즈 아키...
 
Springboot Microservices
Springboot MicroservicesSpringboot Microservices
Springboot Microservices
 
The Cloud Native Journey
The Cloud Native JourneyThe Cloud Native Journey
The Cloud Native Journey
 
The Need of Cloud-Native Application
The Need of Cloud-Native ApplicationThe Need of Cloud-Native Application
The Need of Cloud-Native Application
 
Introduction to microservices
Introduction to microservicesIntroduction to microservices
Introduction to microservices
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
 
Introduction of Kubernetes - Trang Nguyen
Introduction of Kubernetes - Trang NguyenIntroduction of Kubernetes - Trang Nguyen
Introduction of Kubernetes - Trang Nguyen
 
An Introduction to the AWS Well Architected Framework - Webinar
An Introduction to the AWS Well Architected Framework - WebinarAn Introduction to the AWS Well Architected Framework - Webinar
An Introduction to the AWS Well Architected Framework - Webinar
 
Microservices, Kubernetes and Istio - A Great Fit!
Microservices, Kubernetes and Istio - A Great Fit!Microservices, Kubernetes and Istio - A Great Fit!
Microservices, Kubernetes and Istio - A Great Fit!
 

Similar to Building Cloud Native Architectures with Spring

Cloud Native Java Microservices
Cloud Native Java MicroservicesCloud Native Java Microservices
Cloud Native Java MicroservicesKenny Bastani
 
Building REST APIs with Spring Boot and Spring Cloud
Building REST APIs with Spring Boot and Spring CloudBuilding REST APIs with Spring Boot and Spring Cloud
Building REST APIs with Spring Boot and Spring CloudKenny Bastani
 
Cloud-Native Workshop New York- Pivotal
Cloud-Native Workshop New York- PivotalCloud-Native Workshop New York- Pivotal
Cloud-Native Workshop New York- PivotalVMware Tanzu
 
PCF: Platform for a New Era - Kubernetes for the Enterprise - London
PCF: Platform for a New Era - Kubernetes for the Enterprise - LondonPCF: Platform for a New Era - Kubernetes for the Enterprise - London
PCF: Platform for a New Era - Kubernetes for the Enterprise - LondonVMware Tanzu
 
What's new in Pivotal Cloud Foundry 1.6
What's new in Pivotal Cloud Foundry 1.6What's new in Pivotal Cloud Foundry 1.6
What's new in Pivotal Cloud Foundry 1.6dektlong
 
Eseguire Applicazioni Cloud-Native con Pivotal Cloud Foundry su Google Cloud ...
Eseguire Applicazioni Cloud-Native con Pivotal Cloud Foundry su Google Cloud ...Eseguire Applicazioni Cloud-Native con Pivotal Cloud Foundry su Google Cloud ...
Eseguire Applicazioni Cloud-Native con Pivotal Cloud Foundry su Google Cloud ...VMware Tanzu
 
Cloudify your applications: microservices and beyond
Cloudify your applications: microservices and beyondCloudify your applications: microservices and beyond
Cloudify your applications: microservices and beyondUgo Landini
 
Journey to Cloud-Native: Making Sense of Your Service Interactions
Journey to Cloud-Native: Making Sense of Your Service InteractionsJourney to Cloud-Native: Making Sense of Your Service Interactions
Journey to Cloud-Native: Making Sense of Your Service InteractionsVMware Tanzu
 
Disruptive Trends in Application Development
Disruptive Trends in Application DevelopmentDisruptive Trends in Application Development
Disruptive Trends in Application DevelopmentWaveMaker, Inc.
 
Exploring Cloud Native Architecture: Its Benefits And Key Components
Exploring Cloud Native Architecture: Its Benefits And Key ComponentsExploring Cloud Native Architecture: Its Benefits And Key Components
Exploring Cloud Native Architecture: Its Benefits And Key ComponentsLucy Zeniffer
 
Pivotal CloudFoundry on Google cloud platform
Pivotal CloudFoundry on Google cloud platformPivotal CloudFoundry on Google cloud platform
Pivotal CloudFoundry on Google cloud platformRonak Banka
 
Cloud Native Architecture: Its Benefits and Key Components
Cloud Native Architecture: Its Benefits and Key ComponentsCloud Native Architecture: Its Benefits and Key Components
Cloud Native Architecture: Its Benefits and Key ComponentsAndrewHolland58
 
The Reality of Managing Microservices in Your CD Pipeline
The Reality of Managing Microservices in Your CD PipelineThe Reality of Managing Microservices in Your CD Pipeline
The Reality of Managing Microservices in Your CD PipelineDevOps.com
 
Build intelligent solutions using Azure
Build intelligent solutions using AzureBuild intelligent solutions using Azure
Build intelligent solutions using AzureMostafa
 
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with K...
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with K...Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with K...
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with K...confluent
 
Agile integration architecture in relation to APIs and messaging
Agile integration architecture in relation to APIs and messagingAgile integration architecture in relation to APIs and messaging
Agile integration architecture in relation to APIs and messagingKim Clark
 
Automating Applications with Habitat - Sydney Cloud Native Meetup
Automating Applications with Habitat - Sydney Cloud Native MeetupAutomating Applications with Habitat - Sydney Cloud Native Meetup
Automating Applications with Habitat - Sydney Cloud Native MeetupMatt Ray
 
Pivotal Cloud Foundry: A Technical Overview
Pivotal Cloud Foundry: A Technical OverviewPivotal Cloud Foundry: A Technical Overview
Pivotal Cloud Foundry: A Technical OverviewVMware Tanzu
 

Similar to Building Cloud Native Architectures with Spring (20)

Cloud Native Java Microservices
Cloud Native Java MicroservicesCloud Native Java Microservices
Cloud Native Java Microservices
 
Building REST APIs with Spring Boot and Spring Cloud
Building REST APIs with Spring Boot and Spring CloudBuilding REST APIs with Spring Boot and Spring Cloud
Building REST APIs with Spring Boot and Spring Cloud
 
Cloud-Native Workshop New York- Pivotal
Cloud-Native Workshop New York- PivotalCloud-Native Workshop New York- Pivotal
Cloud-Native Workshop New York- Pivotal
 
PCF: Platform for a New Era - Kubernetes for the Enterprise - London
PCF: Platform for a New Era - Kubernetes for the Enterprise - LondonPCF: Platform for a New Era - Kubernetes for the Enterprise - London
PCF: Platform for a New Era - Kubernetes for the Enterprise - London
 
What's new in Pivotal Cloud Foundry 1.6
What's new in Pivotal Cloud Foundry 1.6What's new in Pivotal Cloud Foundry 1.6
What's new in Pivotal Cloud Foundry 1.6
 
Eseguire Applicazioni Cloud-Native con Pivotal Cloud Foundry su Google Cloud ...
Eseguire Applicazioni Cloud-Native con Pivotal Cloud Foundry su Google Cloud ...Eseguire Applicazioni Cloud-Native con Pivotal Cloud Foundry su Google Cloud ...
Eseguire Applicazioni Cloud-Native con Pivotal Cloud Foundry su Google Cloud ...
 
Cloudify your applications: microservices and beyond
Cloudify your applications: microservices and beyondCloudify your applications: microservices and beyond
Cloudify your applications: microservices and beyond
 
Journey to Cloud-Native: Making Sense of Your Service Interactions
Journey to Cloud-Native: Making Sense of Your Service InteractionsJourney to Cloud-Native: Making Sense of Your Service Interactions
Journey to Cloud-Native: Making Sense of Your Service Interactions
 
Microservices
MicroservicesMicroservices
Microservices
 
Intro - Cloud Native
Intro - Cloud NativeIntro - Cloud Native
Intro - Cloud Native
 
Disruptive Trends in Application Development
Disruptive Trends in Application DevelopmentDisruptive Trends in Application Development
Disruptive Trends in Application Development
 
Exploring Cloud Native Architecture: Its Benefits And Key Components
Exploring Cloud Native Architecture: Its Benefits And Key ComponentsExploring Cloud Native Architecture: Its Benefits And Key Components
Exploring Cloud Native Architecture: Its Benefits And Key Components
 
Pivotal CloudFoundry on Google cloud platform
Pivotal CloudFoundry on Google cloud platformPivotal CloudFoundry on Google cloud platform
Pivotal CloudFoundry on Google cloud platform
 
Cloud Native Architecture: Its Benefits and Key Components
Cloud Native Architecture: Its Benefits and Key ComponentsCloud Native Architecture: Its Benefits and Key Components
Cloud Native Architecture: Its Benefits and Key Components
 
The Reality of Managing Microservices in Your CD Pipeline
The Reality of Managing Microservices in Your CD PipelineThe Reality of Managing Microservices in Your CD Pipeline
The Reality of Managing Microservices in Your CD Pipeline
 
Build intelligent solutions using Azure
Build intelligent solutions using AzureBuild intelligent solutions using Azure
Build intelligent solutions using Azure
 
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with K...
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with K...Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with K...
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with K...
 
Agile integration architecture in relation to APIs and messaging
Agile integration architecture in relation to APIs and messagingAgile integration architecture in relation to APIs and messaging
Agile integration architecture in relation to APIs and messaging
 
Automating Applications with Habitat - Sydney Cloud Native Meetup
Automating Applications with Habitat - Sydney Cloud Native MeetupAutomating Applications with Habitat - Sydney Cloud Native Meetup
Automating Applications with Habitat - Sydney Cloud Native Meetup
 
Pivotal Cloud Foundry: A Technical Overview
Pivotal Cloud Foundry: A Technical OverviewPivotal Cloud Foundry: A Technical Overview
Pivotal Cloud Foundry: A Technical Overview
 

More from Kenny Bastani

In the Eventual Consistency of Succeeding at Microservices
In the Eventual Consistency of Succeeding at MicroservicesIn the Eventual Consistency of Succeeding at Microservices
In the Eventual Consistency of Succeeding at MicroservicesKenny Bastani
 
Extending the Platform with Spring Boot and Cloud Foundry
Extending the Platform with Spring Boot and Cloud FoundryExtending the Platform with Spring Boot and Cloud Foundry
Extending the Platform with Spring Boot and Cloud FoundryKenny Bastani
 
Back your app with MySQL and Redis on Cloud Foundry
Back your app with MySQL and Redis on Cloud FoundryBack your app with MySQL and Redis on Cloud Foundry
Back your app with MySQL and Redis on Cloud FoundryKenny Bastani
 
Using Docker, Neo4j, and Spring Cloud for Developing Microservices
Using Docker, Neo4j, and Spring Cloud for Developing MicroservicesUsing Docker, Neo4j, and Spring Cloud for Developing Microservices
Using Docker, Neo4j, and Spring Cloud for Developing MicroservicesKenny Bastani
 
Open Source Big Graph Analytics on Neo4j with Apache Spark
Open Source Big Graph Analytics on Neo4j with Apache SparkOpen Source Big Graph Analytics on Neo4j with Apache Spark
Open Source Big Graph Analytics on Neo4j with Apache SparkKenny Bastani
 
Big Graph Analytics on Neo4j with Apache Spark
Big Graph Analytics on Neo4j with Apache SparkBig Graph Analytics on Neo4j with Apache Spark
Big Graph Analytics on Neo4j with Apache SparkKenny Bastani
 
Document Classification with Neo4j
Document Classification with Neo4jDocument Classification with Neo4j
Document Classification with Neo4jKenny Bastani
 
Neo4j Graph Data Modeling
Neo4j Graph Data ModelingNeo4j Graph Data Modeling
Neo4j Graph Data ModelingKenny Bastani
 
Building a Graph-based Analytics Platform
Building a Graph-based Analytics PlatformBuilding a Graph-based Analytics Platform
Building a Graph-based Analytics PlatformKenny Bastani
 
Building Killer Apps with Neo4j 2.0
Building Killer Apps with Neo4j 2.0Building Killer Apps with Neo4j 2.0
Building Killer Apps with Neo4j 2.0Kenny Bastani
 
Natural Language Processing with Neo4j
Natural Language Processing with Neo4jNatural Language Processing with Neo4j
Natural Language Processing with Neo4jKenny Bastani
 
Natural language search using Neo4j
Natural language search using Neo4jNatural language search using Neo4j
Natural language search using Neo4jKenny Bastani
 

More from Kenny Bastani (12)

In the Eventual Consistency of Succeeding at Microservices
In the Eventual Consistency of Succeeding at MicroservicesIn the Eventual Consistency of Succeeding at Microservices
In the Eventual Consistency of Succeeding at Microservices
 
Extending the Platform with Spring Boot and Cloud Foundry
Extending the Platform with Spring Boot and Cloud FoundryExtending the Platform with Spring Boot and Cloud Foundry
Extending the Platform with Spring Boot and Cloud Foundry
 
Back your app with MySQL and Redis on Cloud Foundry
Back your app with MySQL and Redis on Cloud FoundryBack your app with MySQL and Redis on Cloud Foundry
Back your app with MySQL and Redis on Cloud Foundry
 
Using Docker, Neo4j, and Spring Cloud for Developing Microservices
Using Docker, Neo4j, and Spring Cloud for Developing MicroservicesUsing Docker, Neo4j, and Spring Cloud for Developing Microservices
Using Docker, Neo4j, and Spring Cloud for Developing Microservices
 
Open Source Big Graph Analytics on Neo4j with Apache Spark
Open Source Big Graph Analytics on Neo4j with Apache SparkOpen Source Big Graph Analytics on Neo4j with Apache Spark
Open Source Big Graph Analytics on Neo4j with Apache Spark
 
Big Graph Analytics on Neo4j with Apache Spark
Big Graph Analytics on Neo4j with Apache SparkBig Graph Analytics on Neo4j with Apache Spark
Big Graph Analytics on Neo4j with Apache Spark
 
Document Classification with Neo4j
Document Classification with Neo4jDocument Classification with Neo4j
Document Classification with Neo4j
 
Neo4j Graph Data Modeling
Neo4j Graph Data ModelingNeo4j Graph Data Modeling
Neo4j Graph Data Modeling
 
Building a Graph-based Analytics Platform
Building a Graph-based Analytics PlatformBuilding a Graph-based Analytics Platform
Building a Graph-based Analytics Platform
 
Building Killer Apps with Neo4j 2.0
Building Killer Apps with Neo4j 2.0Building Killer Apps with Neo4j 2.0
Building Killer Apps with Neo4j 2.0
 
Natural Language Processing with Neo4j
Natural Language Processing with Neo4jNatural Language Processing with Neo4j
Natural Language Processing with Neo4j
 
Natural language search using Neo4j
Natural language search using Neo4jNatural language search using Neo4j
Natural language search using Neo4j
 

Recently uploaded

Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Rob Geurden
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 

Recently uploaded (20)

Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 

Building Cloud Native Architectures with Spring

  • 1. © 2016 Pivotal Software, Inc. All rights reserved. @kennybastani Building Cloud Native Architectures with Spring Kenny Bastani Spring Developer Advocate 
 Pivotal Cloud Native Roadshow 2016 1
  • 3. Agenda Agenda 1 Microservices & Cloud Native 2 Reference Architecture 3 Spring Boot 4 Spring Cloud 5 Dealing with Legacy
  • 4. © 2016 Pivotal Software, Inc. All rights reserved. @kennybastani Microservices How did we get there? 4
  • 5. We started with the monolith…
  • 6. © 2016 Pivotal Software, Inc. All rights reserved. @kennybastani Cultural problems with monoliths 6 Slows our velocity getting into production It takes too long to ramp up new engineers The code base is just too large for anyone one person to fully comprehend Centralized authority and change management slows progress (DBA, Ops)
  • 7. © 2016 Pivotal Software, Inc. All rights reserved. @kennybastani Operational problems with monoliths 7 Coordinated releases batch many changes together from different teams Operations drives the runtime environment of applications Operators take on all operational responsibility (including VM upgrades) Deploy everything at once or nothing at all
  • 8. We then moved towards SOA…
  • 9. @kennybastani We have now arrived at microservices… Each team provisions self-service infrastructure, like a database, and builds a single application Centralized resources are provided as backing services that are shared for data consistency, caching
  • 10. © 2016 Pivotal Software, Inc. All rights reserved. @kennybastani Online Store Example Cloud native application as microservices 10
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 18. © 2016 Pivotal Software, Inc. All rights reserved. @kennybastani Eventual consistency Handling the guarantees of an eventually consistent microservices architecture 18
  • 19. Eventual consistency Microservice architectures provide no guarantees about the correctness of your data So how can we guarantee high availability while also guaranteeing data consistency?
  • 21. Event Sourcing Aggregates can be used to generate the consistent state of any object It provides an audit trail that can be replayed to generate the state of an object from any point in time It provides the many inputs necessary for analyzing data using event stream processing It enables the use of compensating transactions to rollback events leading to an inconsistent application state It also avoids complex synchronization between microservices, paving the way for asynchronous non-blocking operations between microservices
  • 24. Event logs are transaction logs Use event sourcing in your microservices to ensure consistency of your distributed system Don’t store state with microservices, store events Use event stream processing to observe the active usage of your cloud native application in real-time
  • 25. © 2016 Pivotal Software, Inc. All rights reserved. @kennybastani The Cloud Native Stack What are the components of a cloud-native architecture? 25
  • 26. What is a cloud-native application? The cloud provides resources The platform provides services The application provides value
  • 27.
  • 29. What is a cloud service? The platform provides services The developer provisions services The application uses services
  • 30. Microservices != Cloud Native Microservices are an architectural practice Cloud native is a style of application development Monoliths can equally be cloud native apps
  • 32. Splitting the Monolith: User Service Migration
  • 33. © 2016 Pivotal Software, Inc. All rights reserved. @kennybastani Spring Boot A JVM micro-framework for building microservices 33
  • 34. What is Spring Boot?
  • 35. @kennybastani spring boot Spring Initializr for boostraping your applications supports rapid development of production-ready applications and services
  • 36. © 2016 Pivotal Software, Inc. All rights reserved. @kennybastani Cloud Native Platforms Shipping applications in containers instead of shared application servers 36
  • 37. @kennybastani Application Server Deployment: Monolith Load balancing requires provisioning of new VMs and app server installations Poor resource isolation; memory leaks can cause other applications to become unavailable Runtime environment is driven by the operator Virtual Machine
 App Linux Kernel App App Hardware Infrastructure
  • 38. @kennybastani Linux Container Deployment: Microservices Development team drives the application runtime of a container Containers are resource isolated, allowing efficient scheduling onto a grid of VMs Containers take seconds to start, VMs take minutesVirtual Machine
 Container Linux Kernel App App App App Container App App App App Container App App App App Hardware Infrastructure
  • 39. @kennybastani Microservices: Container Deployment Each microservice can be containerized with their application dependencies Containers get scheduled on virtual machines with an allotted resource policy
  • 40. @kennybastani Container scheduling and auto-scaling Minutes to provision and start a VM, but seconds to schedule and start a container Auto-scaling becomes a feature of the cloud platform by scheduling on pool of VMs
  • 41. @kennybastani Distributed Applications Each microservice will likely need to communicate with other containers Service discovery automates how distributed apps find service dependencies
  • 42. © 2016 Pivotal Software, Inc. All rights reserved. @kennybastani Spring Cloud A toolset designed for building distributed systems 42
  • 43. @kennybastani What is Spring Cloud? Spring Cloud provides a way to turn Spring Boot microservices into distributed applications
  • 44. @kennybastani spring cloud Apache Zookeeper these logos are all trademark/copyright their respective owners (T-B, L-R): 
 
 Netflix, amazon.com, Apache Software Foundation, Cloud Foundry, Hashicorp they are ALL great organizations and we love their open-source and their APIs!! *
  • 45. © 2016 Pivotal Software, Inc. All rights reserved. @kennybastani Spring Cloud Demos Applying the patterns of cloud-native architectures with Spring Boot and Spring Cloud 45
  • 46. @kennybastani Spring Cloud: Cloud Native Patterns Service Discovery API Gateway Config Server Circuit Breakers Distributed Tracing
  • 47. Service Discovery Allows applications to find each other in an environment An essential component when using dynamic container scheduling Each application handles its own routing Developers only need the name of a dependency, not the URL A service registry is distributed to all subscriber applications
  • 50. @kennybastani Client-side Load Balancing • Create discovery service • Register user service • Register user client • Scale user service • Reverse proxy from user client to user service User
 Service User
 Service User
 Client
  • 51. @kennybastani Client-side Load Balancing • Create discovery service • Register user service • Register user client • Scale user service • Reverse proxy from user client to user service User
 Service User
 Service User
 Client
  • 52. @kennybastani Client-side Load Balancing • Create discovery service • Register user service • Register user client • Scale user service • Reverse proxy from user client to user service User
 Service User
 Service User
 Client
  • 53. @kennybastani Client-side Load Balancing • Create discovery service • Register user service • Register user client • Scale user service • Reverse proxy from user client to user service User
 Service User
 Service User
 Client
  • 54.
  • 55.
  • 56. © 2016 Pivotal Software, Inc. All rights reserved. @kennybastani Config Server Centralizing config management for microservices with Spring Cloud Config Server 56
  • 57. Config Server Allows applications to source configuration from central service Application configuration can be changed without deployment Cascading configuration files for all apps and individual apps Uses Git repository as file system, providing audit log of changes Add Spring Cloud Bus to automate config refresh for many instances
  • 59.
  • 60. © 2016 Pivotal Software, Inc. All rights reserved. @kennybastani API Gateway Building edge services that route requests to backend microservices 60
  • 61.
  • 62.
  • 63. Edge Service API gateway pattern using Spring Cloud Netflix Zuul starter project Embeds relative routes from other services registered with Eureka Automatic method for reverse proxying to other services Routes are displayed at /routes of the Spring Boot app
  • 64. Benefits Provides a secure gateway to compose together REST APIs exposed by backend microservices Front-end developers can integrate with a single API over HTTP to communicate with potentially many microservices Front-end applications can further embed an edge service to avoid the need to manage CORS and authentication concerns
  • 65.
  • 66. © 2016 Pivotal Software, Inc. All rights reserved. @kennybastani Distributed Tracing Tracing the Online Store 66
  • 67. Spring Cloud Sleuth Spring Cloud Sleuth is a project that adds distributed tracing capabilities to your distributed Spring Boot applications https://cloud.spring.io/spring-cloud-sleuth/ http://zipkin.io/
  • 69.
  • 70. © 2016 Pivotal Software, Inc. All rights reserved. @kennybastani Strangling Legacy with Microservices How do I build microservices that are cloud-native without doing a big bang refactor? 70
  • 71. Going Cloud Native Legacy migration challenges “How do I change the engine of the aircraft while it’s still in flight?” Approaches Lift-and-shift Big bang refactor and migration Iterative legacy modernization
  • 72. Problems with lift-and-shift Brings your tech debt into the cloud Rolling maintenance windows until migration is complete
  • 73. Strangler Pattern “Gradually create a new system around the edges of the old, letting it grow slowly over several years until the old system is strangled.” — Martin Fowler
  • 74. Strangler vines—seed in the upper branches of a fig tree and gradually work their way down to the soil—strangling and eventually and killing the tree
  • 75. Strangling legacy using microservices How can we take advantage of building microservices that also strangle data from the edge of legacy systems?
  • 76. The problem with data The most common pain point that companies experience when building microservices is handling domain data Your domain data is likely going to be trapped inside a large shared database—probably being of the Oracle or IBM variety Because of this, your new microservices will be dependent on retrieving data from a large shared database
  • 77. Fetching data from the legacy system Microservices can reach into the legacy system and fetch data in the same way that front-end applications do While this isn’t a good long-term strategy, it can be an intermediate step in gaining control over the legacy backend
  • 79. Agile benefits of extending domain data We gain the benefit of agility in microservices by extending base domain objects retrieved from a legacy system New feature changes are moved out to the new microservice, using an indirection layer to maintain backward compatibility with the legacy system
  • 81. Advantages The legacy system does not need to be altered to support the development of new microservices New features can be deployed independently without being tightly coupled to the legacy system It ensures that any existing calls to a legacy web service are unaltered for other apps
  • 82. Disadvantages Scalability may be a concern in the case that the base legacy service is not cloud-native Availability will be impacted if the base legacy service’s shared database suffers an outage The dependency on the legacy system’s shared database is increased, making it harder to decompose
  • 84. Point-to-point Connections If your architecture has brittle point-to-point connections, code changes may be required to create a legacy indirection layer If you’re building microservices on top of an SOA and are using an ESB, an indirection layer already exists
  • 87. Data Acquisition We can use the Legacy Edge service to adapt responses from microservices into the native formats expected by legacy applications We can also acquire data from the legacy system and migrate the system of record to a microservice, without refactoring the current database
  • 88. © 2016 Pivotal Software, Inc. All rights reserved. @kennybastani Reference application Open source example of strangling legacy 88
  • 89.
  • 90.
  • 91.
  • 92.
  • 93. Let’s talk about theory and practice
  • 94. The first law of microservices. It depends.
  • 95. In the end.. Do what makes sense for your architecture Worry deeply about who cleans up after you Building software is more about people than it is tools
  • 96. Full open source examples on my blog http://www.kennybastani.com
  • 98. Cloud native applications “If you have to implement the same functionality in each application, it should instead be provided as a service using the platform” – Matt Curry @ Allstate Do this well, and the only thing you’ll be left with is the valuable business logic in your applications
  • 99. The two road blocks of cloud native
  • 101. Legacy culture Before you can even begin to address the handling of legacy in a new microservice architecture, you’ll need to address a legacy culture Some developers may believe a piece of legacy code is beautiful, and has done its job without change for many years Handling the culture shift is a delicate matter. Get people on board before imposing changes
  • 103. This is what dropping a legacy application in a Docker container and calling it a microservice looks like..
  • 104. Legacy applications Not all legacy needs to be destroyed right away Make sure to take an iterative approach to go cloud-native that promises backwards compatibility with legacy applications The goal is to lessen the impact to users over time before making a decision to phase out legacy applications and infrastructure Developers dream of strangling legacy, but it likely still generates revenue for the business
  • 105. © 2016 Pivotal Software, Inc. All rights reserved. @kennybastani Thank you. Reach out if you have any questions! 105