SlideShare a Scribd company logo
1 of 37
Download to read offline
Spring Cloud Microservices
A journey inside a financial entity
Jordi Gil @jordigilnieto
Toni Jara @tonijar
Preface
Team
Spring I/O
2016
Toni Jara
Software engineer with more than 10 years of experience
involved in complex architecture projects as Technical Team
Lead and Senior Architect.
With more than 8 years of experience working with Spring
(mainly Core Framework, MVC and Webflow), lately he’s
been working on microservices architectures with Spring
Cloud.
Jordi Gil
Jordi is a Software Architect with over 18 years of experience
in application development, mainly in information systems for
banking and insurance industries. He focuses on the definition
of architectures for heterogeneous environments and with high
performance, interoperability and availability requirements.
In everis he is leading the innovation group where new
technologies, patterns and architecture models are assessed
for applicability in final customers.
Currently his main areas of interest are MicroServices
Architectures and Cloud PaaS platforms.
Index
1. Introduction
2. Development
3. Deployment
4. Operations
5. Demo
6. Conclusions
7. Questions
Spring I/O
2016
Spring I/O
2016
INTRODUCTION
Introduction
Objectives
Spring I/O
2016
Microservices
Introduction
Monolithic applications
Spring I/O
2016
• Easy to Develop & Deploy & Scale
• Can Be Intimidating to New
Developers
• Modularity Dependent Upon
Language / Frameworks
• Change Cycles Tightly Coupled /
Obstacle to Frequent Deploys
• Inefficient Scaling
• Obstacle to Scaling Development
• Requires Long-Term Commitment to
Technical Stack
HTML JavaScript MVC
Service Service
Data Access
Browser
Relational
Database
Monolithic Application
Introduction
Monolithic applications 2.0
Spring I/O
2016
• SOA approach
• ESBs used to integrate monolithic
applications
• ESB Tightly Couples Services
• Centralized governance models that
actively inhibit change
• ESB becomes the biggest monolith
Service Service
SOA - ESB
Service Service Service
Service Service
Introduction
Microservices architecture
Spring I/O
2016
• Modularity Based on Component
Services
• Change Cycles Decoupled / Enable
Frequent Deploys
• Efficient Scaling
• Individual Components Less
Intimidating to New Developers
• Enables Scaling of Development
• Eliminates Long-Term Commitment
to Technical Stack
• Complexity associated to distributed
systems
• Operational burden
API
Service
Storage
Microservice 1
API
Service
Storage
Microservice 2
API
Service
Storage
Microservice 3
API
Service
Storage
Microservice 4
Introduction
Microservices in a bank
Spring I/O
2016
• API Gateway as the single entry
point for all clients
• Critical core business services
managed through SOA model
• Backends accessed exclusively
through Business Services
API Gateway
Front App Front App
Mainframe
Business Service Business Service
Backends
Business Services - SOA
Microservices
Introduction
Challenges
Spring I/O
2016
Discovery /
Reuse
Scope definition
Productivity
Homogenization
Versioning
Integration
Messaging
formats
Error
management
Testing
Distributed
tracing
Service
Discovery
Load Balancing
Fault Tolerance
Centralized
Configuration
Dynamic
Routing
API Gateway
Technical
challenges
derived from
implementing
distributed
systems
Challenges
derived from
enterprise
environment
Spring Cloud
Procedures &
custom
components
Enterprise-ready
framework
Introduction
Technical model
Spring I/O
2016
Operation
SpringCloud
Infrastructure services
SpringCloud
Service Registry
Eureka
Server
Configuration
Config
Server
Git
Service execution framework
SpringCloud
SpringBoot
Service
Discovery
Eureka
Client
Fault Tolerance /
Resilience
Hyxtrix
Load Balancer
Feign
Security
Spring Cloud
Security
Embedded
servlet container
Tomcat, Jetty,
Undertow
Monitoring &
Management
Actuator
Endpoints
IPC – Inter Process Communication
Runtime
Gateway
Zuul
Monitoring
Dashboard
Hystrix +
Turbine
Log
Management
Central logging
Microservices SOA
Integration
Database
Core
Messages Error mgmt Config
Audit &
Log
HTTP
cache
Introduction
Lifecycle
Spring I/O
2016
Discovery
• Repositories
Design
• Scope definition
Build
• Tools
• Scaffolding
• Patterns
• Naming
conventions
• Core frameworks
• Integrations
QA
• Testing
frameworks
• Mocking
• Code quality
Deployment
• Environment
topology
• Procedures
Operations
• Central Audit &
Logging
• Monitoring
• Administration
Spring I/O
2016
DEVELOPMENT
Development
Discovery
Spring I/O
2016
API
Service
Storage
Microservice
API Documentation
in Swagger format
Model
metadata
Operation
metadata
Configuration
Springfox
library
Managed by application
Managed by
framework
API Repository
Discovery
Subscription
Impact analysis
Audit
Discovery Design Build QA Deployment Operations
Development
Design
Spring I/O
2016
• Key aspect for building a successful microservices architecture.
• No Silver Bullet, but some techniques may help…
Business
Area
Business
Domain
Service
Domain
 Existing reference architectures in some industries
– Banking – BIAN (Banking Industry Architecture
Network)
– Insurance - Acord
 Functional decomposition based on Verbs (e.g. Checkout) or Nouns (e.g. Product) of
your application  RESTful APIs
 Domain Driven Design divides a complex domain up
into multiple bounded contexts and maps out the
relationships between them.
Discovery Design Build QA Deployment Operations
Development
Build tools
Spring I/O
2016
IDE
Source code
management
GIT / SVN
Lifecycle
automations
Apache
Maven
Testing
Unit testing
Code
Coverage
Code quality
Findbugs PMD Checkstyle SonarQube
To increase productivity, it’s very important to define a standard tool set.
 Find the essential tools and plugins hierarchy below:
Discovery Design Build QA Deployment Operations
Development
Source code management tools
Spring I/O
2016
Discovery Design Build QA Deployment Operations
Source code management with Atlassian Bitbucket
(GIT):
• One project for each team
• One repository for each Microservice
• Collaborative development and revisions with pull
requests & merges (Gitflow)
Master
Official version
Hotfix
Official fixings
Develop
Integration
Feature
Functionality
Release
Candidate version
Gitflow documentation: https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
Development
Maven archetype
Spring I/O
2016
Maven
archetype
Java sources
& tests
Maven
Dependencies
Config files
Basic project
structure
Naming
conventions
• Internal and
external core
dependencies
Starter
parent
(POM)
• Spring Data
support
• JAX-WS
access to SOA
Business layer
Integrations
(JAR)
Discovery Design Build QA Deployment Operations
Development
Versioning
Spring I/O
2016
Modification type
New
Major
New
Minor
New
Fix
New
Qualifier
No interface modification NO NO YES YES
Interface modification and backwards compatible NO YES YES YES
Interface modification not backwards compatible YES YES YES YES
Pain point: synchronize Maven (pom.xml) and Spring Cloud version (FeignClient)
Manual Automatic
MAJOR.MINOR.FIX-QUALIFIER
Discovery Design Build QA Deployment Operations
Development
Messaging
Spring I/O
2016
HTTP / JSON
Automatic actions in microservices execution:
Pre-
execution
Execution
Post-
execution
Headers
Body
Messages
HTTP headers
or payload
Functional
message
Header name Message
HEADER.TRACKING_ID Request /
Response
HEADER.* Request
HEADER.STATUS Response
EXCEPTION Response (error)
+ Code
+ Type
+ Severity
+ Description
+ Cause
Discovery Design Build QA Deployment Operations
Development
Integrations
Spring I/O
2016
Discovery Design Build QA Deployment Operations
Development:
1. [MS/SOA] Client JAR (Feign/JAX-WS)
uploaded to Artifactory
2. Consumer adds Maven
dependencies:
• [MS/SOA] Client JAR
• [DB] JDBC driver
3. [DB] Implement Spring Data domain
and repository classes
4. Implement integration logic
• [MS/SOA] @Autowire client
class
• [DB] @Autowire Spring Data
repository
[MS/SOA] Execution:
1. On-the-fly configurations
2. Propagate architecture headers
Client JAR
upload
Add Maven
dependencies
Data model
Integration
logic
Development
Performance enhancements
Spring I/O
2016
Discovery Design Build QA Deployment Operations
HTTP 1.1 caching RFC: https://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html
Spring MVC Cache Control: https://github.com/foo4u/spring-mvc-cache-control
• HTTP 1.1 Caching RFC 2616 compatible with
all web browsers
• Cache Control and ETag HTTP header support
HTTP cache
• Partial requests: optional input parameters
• Partial responses: query params “fields” and
“fieldsExcluded” to filter output messages
Partial resources
• GZip compression in Spring Boot and Feign
GZip
compression
Development
Unit & integrated testing
Spring I/O
2016
Discovery Design Build QA Deployment Operations
Continuous Integration
Integrated
testing
Unit testing
Testing
frameworks
Granularity: for each class
Naming convention: *Test.java
Approach: TDD
Mock: external class
dependencies
Granularity: for each Microservice
Naming convention: *IT.java
Approach: BDD
Mock: Microservice external
systems
Development
Source code quality
Spring I/O
2016
Discovery Design Build QA Deployment Operations
• IDE plugins:
Findbugs,
Checkstyle, PMD,
Code Coverage
and SonarQube
plugins
Development
• Maven plugins:
SonarQube (quality
reports), Surefire
(unit testing) and
Jacoco (Code
Coverage)
Build
Spring I/O
2016
DEPLOYMENT
Deployment
Continuous Integration
Spring I/O
2016
Discovery Design Build QA Deployment Operations
Compile Test
QA Sonar
Analysis
Package
Deploy to
Artifactory
Deploy to
Infrastructure
Deployment
Infrastructure (I)
Spring I/O
2016
Discovery Design Build QA Deployment Operations
• PaaS is the perfect fit for Microservices, providing features that simplify
microservices development and deployment.
Polyglot languages and frameworks
Consistent testing environments
Scaling
Instant Rollback and Versioning
Self Service
Deployment
Infrastructure (and II)
Spring I/O
2016
Discovery Design Build QA Deployment Operations
API Gateway
Routing
Services Runtime
Persistent Volumes
Platform Runtime Administration
Console
CLI/API
PaaS basic model
Continuous
integration
Build
Test
Deploy
Zuul Gateway
Eureka
Registry
Configuration
Monitoring
MicroServices
Configuration
Logs
Spring I/O
2016
OPERATION
Operation
Spring Cloud Dashboard
Spring I/O
2016
Discovery Design Build QA Deployment Operations
• Simple GUI to administrate Spring Cloud applications infrastructure
• Fork of Spring Boot Admin to manage applications registered in service
registry (like Eureka).
Features for every register service
• Show name/id and version number
• Show health status
• Show details, like
• Java System / Environment / Spring
properties
• JVM & memory metrics
• Counter & gauge Metrics
• Datasource Metrics
• Easy logger level management
• Interact with JMX-Beans
• View Threaddump
• Application registry history ( from
Eureka Server )
• Circuit Breaker dashboard ( from
Hystrix or Turbine )
Operation
Logging
Discovery Design Build QA Deployment Operations
• Centralized Logging with ELK Stack
Front App
Front App
API Gateway
Business Services - SOAMicroservices
Central
Logging
Server
ETL Store Dashboards
Logging
MicroService
Async call
e2e trackingId
Spring I/O
2016
Operation
Audit
Discovery Design Build QA Deployment Operations
Spring I/O
2016
• Audit events integrated in centralized logging system
• Extended to Front and SOA Layer to provide e2e traceability
Start
Request Sent
Response received
End
Error
Functional
Automatically
generated
Generated
from
application
Event types
Event info
Timestamp
Event Type
Hostname
TrackingId
Source Application
Arch version
Error info
App Version
Message
JVMName
MicroServiceType
MicroServiceID
MIcroServiceName
OperationName RequestMapping
Automatically
generated
Generated
from
application/
architecture
Microservice layer specific
Spring I/O
2016
DEMO
Spring I/O
2016
CONCLUSIONS
Conclusions
Final thoughts
Spring I/O
2016
• Microservices architectures have a lot of positive aspects but also challenges
to be solved, technical and related to the enterprise.
• Design is a key concept, there’s no silver bullet but some techniques can help.
• Standardised tools and procedures aids productivity and scalability in big
projects...
• …but extensible and open for future incremental enhancements.
• PaaS environments are best suited for microservices deployment.
Lessons learned
• Brixton upgrade, Docker, HATEOAS, Event management, Asynchronous
messaging, …
Backlog
Spring I/O
2016
QUESTIONS
Spring I/O
2016
everis.com
Consulting, IT & Outsourcing Professional Services

More Related Content

What's hot

Resilient and Adaptable Systems with Cloud Native APIs
Resilient and Adaptable Systems with Cloud Native APIsResilient and Adaptable Systems with Cloud Native APIs
Resilient and Adaptable Systems with Cloud Native APIsVMware Tanzu
 
SpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSASpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSAOracle Korea
 
Full-Stack Development with Spring Boot and VueJS
Full-Stack Development with Spring Boot and VueJSFull-Stack Development with Spring Boot and VueJS
Full-Stack Development with Spring Boot and VueJSVMware Tanzu
 
Java springboot microservice - Accenture Technology Meetup
Java springboot microservice - Accenture Technology MeetupJava springboot microservice - Accenture Technology Meetup
Java springboot microservice - Accenture Technology MeetupAccenture Hungary
 
Microservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring CloudMicroservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring CloudEberhard Wolff
 
Microservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring CloudMicroservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring CloudEberhard Wolff
 
Simplify Cloud Applications using Spring Cloud
Simplify Cloud Applications using Spring CloudSimplify Cloud Applications using Spring Cloud
Simplify Cloud Applications using Spring CloudRamnivas Laddad
 
Building .NET Microservices
Building .NET MicroservicesBuilding .NET Microservices
Building .NET MicroservicesVMware Tanzu
 
Cloud Native Microservices with Spring Cloud
Cloud Native Microservices with Spring CloudCloud Native Microservices with Spring Cloud
Cloud Native Microservices with Spring CloudConor Svensson
 
Microservices with Spring Cloud and Netflix OSS
Microservices with Spring Cloud and Netflix OSSMicroservices with Spring Cloud and Netflix OSS
Microservices with Spring Cloud and Netflix OSSDenis Danov
 
Spring Boot Observability
Spring Boot ObservabilitySpring Boot Observability
Spring Boot ObservabilityVMware Tanzu
 
Building microservices sample application
Building microservices sample applicationBuilding microservices sample application
Building microservices sample applicationAnil Allewar
 
Cloud Foundry for Spring Developers
Cloud Foundry for Spring DevelopersCloud Foundry for Spring Developers
Cloud Foundry for Spring DevelopersGunnar Hillert
 
What’s New in Spring Data MongoDB
What’s New in Spring Data MongoDBWhat’s New in Spring Data MongoDB
What’s New in Spring Data MongoDBVMware Tanzu
 
The Beginner’s Guide To Spring Cloud
The Beginner’s Guide To Spring CloudThe Beginner’s Guide To Spring Cloud
The Beginner’s Guide To Spring CloudVMware Tanzu
 
Building Cloud Native Applications Using Spring Boot and Spring Cloud
Building Cloud Native Applications Using Spring Boot and Spring CloudBuilding Cloud Native Applications Using Spring Boot and Spring Cloud
Building Cloud Native Applications Using Spring Boot and Spring CloudGeekNightHyderabad
 
12 Ways to Supercharge Your Connect Add-on
12 Ways to Supercharge Your Connect Add-on12 Ways to Supercharge Your Connect Add-on
12 Ways to Supercharge Your Connect Add-onAtlassian
 
J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"
J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"
J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"Daniel Bryant
 
Introduction to Spring Cloud
Introduction to Spring Cloud           Introduction to Spring Cloud
Introduction to Spring Cloud VMware Tanzu
 

What's hot (20)

Resilient and Adaptable Systems with Cloud Native APIs
Resilient and Adaptable Systems with Cloud Native APIsResilient and Adaptable Systems with Cloud Native APIs
Resilient and Adaptable Systems with Cloud Native APIs
 
SpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSASpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSA
 
Full-Stack Development with Spring Boot and VueJS
Full-Stack Development with Spring Boot and VueJSFull-Stack Development with Spring Boot and VueJS
Full-Stack Development with Spring Boot and VueJS
 
Java springboot microservice - Accenture Technology Meetup
Java springboot microservice - Accenture Technology MeetupJava springboot microservice - Accenture Technology Meetup
Java springboot microservice - Accenture Technology Meetup
 
Microservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring CloudMicroservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring Cloud
 
Springboot Microservices
Springboot MicroservicesSpringboot Microservices
Springboot Microservices
 
Microservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring CloudMicroservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring Cloud
 
Simplify Cloud Applications using Spring Cloud
Simplify Cloud Applications using Spring CloudSimplify Cloud Applications using Spring Cloud
Simplify Cloud Applications using Spring Cloud
 
Building .NET Microservices
Building .NET MicroservicesBuilding .NET Microservices
Building .NET Microservices
 
Cloud Native Microservices with Spring Cloud
Cloud Native Microservices with Spring CloudCloud Native Microservices with Spring Cloud
Cloud Native Microservices with Spring Cloud
 
Microservices with Spring Cloud and Netflix OSS
Microservices with Spring Cloud and Netflix OSSMicroservices with Spring Cloud and Netflix OSS
Microservices with Spring Cloud and Netflix OSS
 
Spring Boot Observability
Spring Boot ObservabilitySpring Boot Observability
Spring Boot Observability
 
Building microservices sample application
Building microservices sample applicationBuilding microservices sample application
Building microservices sample application
 
Cloud Foundry for Spring Developers
Cloud Foundry for Spring DevelopersCloud Foundry for Spring Developers
Cloud Foundry for Spring Developers
 
What’s New in Spring Data MongoDB
What’s New in Spring Data MongoDBWhat’s New in Spring Data MongoDB
What’s New in Spring Data MongoDB
 
The Beginner’s Guide To Spring Cloud
The Beginner’s Guide To Spring CloudThe Beginner’s Guide To Spring Cloud
The Beginner’s Guide To Spring Cloud
 
Building Cloud Native Applications Using Spring Boot and Spring Cloud
Building Cloud Native Applications Using Spring Boot and Spring CloudBuilding Cloud Native Applications Using Spring Boot and Spring Cloud
Building Cloud Native Applications Using Spring Boot and Spring Cloud
 
12 Ways to Supercharge Your Connect Add-on
12 Ways to Supercharge Your Connect Add-on12 Ways to Supercharge Your Connect Add-on
12 Ways to Supercharge Your Connect Add-on
 
J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"
J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"
J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"
 
Introduction to Spring Cloud
Introduction to Spring Cloud           Introduction to Spring Cloud
Introduction to Spring Cloud
 

Viewers also liked

Building Cloud Native Architectures with Spring
Building Cloud Native Architectures with SpringBuilding Cloud Native Architectures with Spring
Building Cloud Native Architectures with SpringKenny Bastani
 
Cloud Foundry vs Docker vs Kubernetes - http://bit.ly/2rzUM2U
Cloud Foundry vs Docker vs Kubernetes - http://bit.ly/2rzUM2UCloud Foundry vs Docker vs Kubernetes - http://bit.ly/2rzUM2U
Cloud Foundry vs Docker vs Kubernetes - http://bit.ly/2rzUM2USufyaan Kazi
 
AppSensor - Near Real Time Event Detection and Response
AppSensor - Near Real Time Event Detection and ResponseAppSensor - Near Real Time Event Detection and Response
AppSensor - Near Real Time Event Detection and Responsejtmelton
 
Big Data Europe: Simplifying Development and Deployment of Big Data Applications
Big Data Europe: Simplifying Development and Deployment of Big Data ApplicationsBig Data Europe: Simplifying Development and Deployment of Big Data Applications
Big Data Europe: Simplifying Development and Deployment of Big Data ApplicationsBigData_Europe
 
From 10 Users to 10 Milion in 10 Days - Adam Lev, Tamar Labs - DevOpsDays Tel...
From 10 Users to 10 Milion in 10 Days - Adam Lev, Tamar Labs - DevOpsDays Tel...From 10 Users to 10 Milion in 10 Days - Adam Lev, Tamar Labs - DevOpsDays Tel...
From 10 Users to 10 Milion in 10 Days - Adam Lev, Tamar Labs - DevOpsDays Tel...DevOpsDays Tel Aviv
 
Cloud Expo New York: OpenFlow Is SDN Yet SDN Is Not Only OpenFlow
Cloud Expo New York: OpenFlow Is SDN Yet SDN Is Not Only OpenFlowCloud Expo New York: OpenFlow Is SDN Yet SDN Is Not Only OpenFlow
Cloud Expo New York: OpenFlow Is SDN Yet SDN Is Not Only OpenFlowCohesive Networks
 
A BRIEF OVERVIEW ON WILDLIFE MANAGEMENT
A BRIEF OVERVIEW ON WILDLIFE MANAGEMENTA BRIEF OVERVIEW ON WILDLIFE MANAGEMENT
A BRIEF OVERVIEW ON WILDLIFE MANAGEMENTPintu Kabiraj
 
All you need to know about Orient Me
All you need to know about Orient MeAll you need to know about Orient Me
All you need to know about Orient MeLetsConnect
 
Interesting Places in Poland
Interesting Places in PolandInteresting Places in Poland
Interesting Places in Polandwojcik_agnieszka
 
Cisco Network Functions Virtualization Infrastructure (NFVI)
Cisco Network Functions Virtualization Infrastructure (NFVI)Cisco Network Functions Virtualization Infrastructure (NFVI)
Cisco Network Functions Virtualization Infrastructure (NFVI)Cisco Russia
 
VoxxedDays Bucharest 2017 - Powering interactive data analysis with Google Bi...
VoxxedDays Bucharest 2017 - Powering interactive data analysis with Google Bi...VoxxedDays Bucharest 2017 - Powering interactive data analysis with Google Bi...
VoxxedDays Bucharest 2017 - Powering interactive data analysis with Google Bi...Márton Kodok
 
What's new in oracle ORAchk & EXAchk 12.2.0.1.2
What's new in oracle ORAchk & EXAchk 12.2.0.1.2What's new in oracle ORAchk & EXAchk 12.2.0.1.2
What's new in oracle ORAchk & EXAchk 12.2.0.1.2Gareth Chapman
 
IoT and Big Data
IoT and Big DataIoT and Big Data
IoT and Big Datasabnees
 
Microsoft Microservices
Microsoft MicroservicesMicrosoft Microservices
Microsoft MicroservicesChase Aucoin
 
6 Million Ways To Log In Docker - NYC Docker Meetup 12/17/2014
6 Million Ways To Log In Docker - NYC Docker Meetup 12/17/20146 Million Ways To Log In Docker - NYC Docker Meetup 12/17/2014
6 Million Ways To Log In Docker - NYC Docker Meetup 12/17/2014Christian Beedgen
 
Fluentd v1.0 in a nutshell
Fluentd v1.0 in a nutshellFluentd v1.0 in a nutshell
Fluentd v1.0 in a nutshellN Masahiro
 
Cloud adoption patterns April 11 2016
Cloud adoption patterns April 11 2016Cloud adoption patterns April 11 2016
Cloud adoption patterns April 11 2016Kyle Brown
 
Microservices mit Java EE - am Beispiel von IBM Liberty
Microservices mit Java EE - am Beispiel von IBM LibertyMicroservices mit Java EE - am Beispiel von IBM Liberty
Microservices mit Java EE - am Beispiel von IBM LibertyMichael Hofmann
 

Viewers also liked (20)

Building Cloud Native Architectures with Spring
Building Cloud Native Architectures with SpringBuilding Cloud Native Architectures with Spring
Building Cloud Native Architectures with Spring
 
Cloud Foundry vs Docker vs Kubernetes - http://bit.ly/2rzUM2U
Cloud Foundry vs Docker vs Kubernetes - http://bit.ly/2rzUM2UCloud Foundry vs Docker vs Kubernetes - http://bit.ly/2rzUM2U
Cloud Foundry vs Docker vs Kubernetes - http://bit.ly/2rzUM2U
 
AppSensor - Near Real Time Event Detection and Response
AppSensor - Near Real Time Event Detection and ResponseAppSensor - Near Real Time Event Detection and Response
AppSensor - Near Real Time Event Detection and Response
 
Big Data Europe: Simplifying Development and Deployment of Big Data Applications
Big Data Europe: Simplifying Development and Deployment of Big Data ApplicationsBig Data Europe: Simplifying Development and Deployment of Big Data Applications
Big Data Europe: Simplifying Development and Deployment of Big Data Applications
 
From 10 Users to 10 Milion in 10 Days - Adam Lev, Tamar Labs - DevOpsDays Tel...
From 10 Users to 10 Milion in 10 Days - Adam Lev, Tamar Labs - DevOpsDays Tel...From 10 Users to 10 Milion in 10 Days - Adam Lev, Tamar Labs - DevOpsDays Tel...
From 10 Users to 10 Milion in 10 Days - Adam Lev, Tamar Labs - DevOpsDays Tel...
 
Cloud Expo New York: OpenFlow Is SDN Yet SDN Is Not Only OpenFlow
Cloud Expo New York: OpenFlow Is SDN Yet SDN Is Not Only OpenFlowCloud Expo New York: OpenFlow Is SDN Yet SDN Is Not Only OpenFlow
Cloud Expo New York: OpenFlow Is SDN Yet SDN Is Not Only OpenFlow
 
A BRIEF OVERVIEW ON WILDLIFE MANAGEMENT
A BRIEF OVERVIEW ON WILDLIFE MANAGEMENTA BRIEF OVERVIEW ON WILDLIFE MANAGEMENT
A BRIEF OVERVIEW ON WILDLIFE MANAGEMENT
 
All you need to know about Orient Me
All you need to know about Orient MeAll you need to know about Orient Me
All you need to know about Orient Me
 
Interesting Places in Poland
Interesting Places in PolandInteresting Places in Poland
Interesting Places in Poland
 
Cisco Network Functions Virtualization Infrastructure (NFVI)
Cisco Network Functions Virtualization Infrastructure (NFVI)Cisco Network Functions Virtualization Infrastructure (NFVI)
Cisco Network Functions Virtualization Infrastructure (NFVI)
 
Spring Batch
Spring BatchSpring Batch
Spring Batch
 
VoxxedDays Bucharest 2017 - Powering interactive data analysis with Google Bi...
VoxxedDays Bucharest 2017 - Powering interactive data analysis with Google Bi...VoxxedDays Bucharest 2017 - Powering interactive data analysis with Google Bi...
VoxxedDays Bucharest 2017 - Powering interactive data analysis with Google Bi...
 
What's new in oracle ORAchk & EXAchk 12.2.0.1.2
What's new in oracle ORAchk & EXAchk 12.2.0.1.2What's new in oracle ORAchk & EXAchk 12.2.0.1.2
What's new in oracle ORAchk & EXAchk 12.2.0.1.2
 
IoT and Big Data
IoT and Big DataIoT and Big Data
IoT and Big Data
 
Microsoft Microservices
Microsoft MicroservicesMicrosoft Microservices
Microsoft Microservices
 
6 Million Ways To Log In Docker - NYC Docker Meetup 12/17/2014
6 Million Ways To Log In Docker - NYC Docker Meetup 12/17/20146 Million Ways To Log In Docker - NYC Docker Meetup 12/17/2014
6 Million Ways To Log In Docker - NYC Docker Meetup 12/17/2014
 
Fluentd v1.0 in a nutshell
Fluentd v1.0 in a nutshellFluentd v1.0 in a nutshell
Fluentd v1.0 in a nutshell
 
Question 7
Question 7Question 7
Question 7
 
Cloud adoption patterns April 11 2016
Cloud adoption patterns April 11 2016Cloud adoption patterns April 11 2016
Cloud adoption patterns April 11 2016
 
Microservices mit Java EE - am Beispiel von IBM Liberty
Microservices mit Java EE - am Beispiel von IBM LibertyMicroservices mit Java EE - am Beispiel von IBM Liberty
Microservices mit Java EE - am Beispiel von IBM Liberty
 

Similar to Spring IO 2016 - Spring Cloud Microservices, a journey inside a financial entity

Application Centric Microservices from Redhat Summit 2015
Application Centric Microservices from Redhat Summit 2015Application Centric Microservices from Redhat Summit 2015
Application Centric Microservices from Redhat Summit 2015Ken Owens
 
2014 q3-platform-update-v1.06.johnmathon
2014 q3-platform-update-v1.06.johnmathon2014 q3-platform-update-v1.06.johnmathon
2014 q3-platform-update-v1.06.johnmathonaaronwso2
 
A Connector, A Container and an API Walk into a Bar… Microservices Edition
A Connector, A Container and an API Walk into a Bar… Microservices EditionA Connector, A Container and an API Walk into a Bar… Microservices Edition
A Connector, A Container and an API Walk into a Bar… Microservices Edition3scale
 
A Connector, A Container and an API Walk into a Bar… Microservices Edition
A Connector, A Container and an API Walk into a Bar… Microservices EditionA Connector, A Container and an API Walk into a Bar… Microservices Edition
A Connector, A Container and an API Walk into a Bar… Microservices EditionSteven Willmott
 
What's new in Portal and WCM 8.5
What's new in Portal and WCM 8.5What's new in Portal and WCM 8.5
What's new in Portal and WCM 8.5Vinayak Tavargeri
 
Prominent Back-end frameworks to consider in 2022!
Prominent Back-end frameworks to consider in 2022!Prominent Back-end frameworks to consider in 2022!
Prominent Back-end frameworks to consider in 2022!Shelly Megan
 
Simplify DevOps with Microservices and Mobile Backends.pptx
Simplify DevOps with Microservices and Mobile Backends.pptxSimplify DevOps with Microservices and Mobile Backends.pptx
Simplify DevOps with Microservices and Mobile Backends.pptxssuser5faa791
 
DevOps on Oracle Cloud
DevOps on Oracle CloudDevOps on Oracle Cloud
DevOps on Oracle CloudMee Nam Lee
 
Oracle OpenWorld 2009 AIA Best Practices
Oracle OpenWorld 2009 AIA Best PracticesOracle OpenWorld 2009 AIA Best Practices
Oracle OpenWorld 2009 AIA Best PracticesRajesh Raheja
 
Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)
Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)
Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)Nedelcho Delchev
 
Framework adoption for java enterprise application development
Framework adoption for java enterprise application developmentFramework adoption for java enterprise application development
Framework adoption for java enterprise application developmentClarence Ho
 
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)Brian Culver
 
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud EnvironmentsTools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud EnvironmentsVMware Tanzu
 
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
 
Software Factories in the Real World: How an IBM WebSphere Integration Factor...
Software Factories in the Real World: How an IBM WebSphere Integration Factor...Software Factories in the Real World: How an IBM WebSphere Integration Factor...
Software Factories in the Real World: How an IBM WebSphere Integration Factor...ghodgkinson
 

Similar to Spring IO 2016 - Spring Cloud Microservices, a journey inside a financial entity (20)

Application Centric Microservices from Redhat Summit 2015
Application Centric Microservices from Redhat Summit 2015Application Centric Microservices from Redhat Summit 2015
Application Centric Microservices from Redhat Summit 2015
 
2014 q3-platform-update-v1.06.johnmathon
2014 q3-platform-update-v1.06.johnmathon2014 q3-platform-update-v1.06.johnmathon
2014 q3-platform-update-v1.06.johnmathon
 
Arun Kumar(7.8Yrs).DOC
Arun Kumar(7.8Yrs).DOCArun Kumar(7.8Yrs).DOC
Arun Kumar(7.8Yrs).DOC
 
A Connector, A Container and an API Walk into a Bar… Microservices Edition
A Connector, A Container and an API Walk into a Bar… Microservices EditionA Connector, A Container and an API Walk into a Bar… Microservices Edition
A Connector, A Container and an API Walk into a Bar… Microservices Edition
 
A Connector, A Container and an API Walk into a Bar… Microservices Edition
A Connector, A Container and an API Walk into a Bar… Microservices EditionA Connector, A Container and an API Walk into a Bar… Microservices Edition
A Connector, A Container and an API Walk into a Bar… Microservices Edition
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
What's new in Portal and WCM 8.5
What's new in Portal and WCM 8.5What's new in Portal and WCM 8.5
What's new in Portal and WCM 8.5
 
Prominent Back-end frameworks to consider in 2022!
Prominent Back-end frameworks to consider in 2022!Prominent Back-end frameworks to consider in 2022!
Prominent Back-end frameworks to consider in 2022!
 
Simplify DevOps with Microservices and Mobile Backends.pptx
Simplify DevOps with Microservices and Mobile Backends.pptxSimplify DevOps with Microservices and Mobile Backends.pptx
Simplify DevOps with Microservices and Mobile Backends.pptx
 
ABC’s Proposal
ABC’s ProposalABC’s Proposal
ABC’s Proposal
 
BadesahebKBichu
BadesahebKBichuBadesahebKBichu
BadesahebKBichu
 
DevOps on Oracle Cloud
DevOps on Oracle CloudDevOps on Oracle Cloud
DevOps on Oracle Cloud
 
Oracle OpenWorld 2009 AIA Best Practices
Oracle OpenWorld 2009 AIA Best PracticesOracle OpenWorld 2009 AIA Best Practices
Oracle OpenWorld 2009 AIA Best Practices
 
Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)
Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)
Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)
 
Framework adoption for java enterprise application development
Framework adoption for java enterprise application developmentFramework adoption for java enterprise application development
Framework adoption for java enterprise application development
 
SandeepVanama_Resume
SandeepVanama_ResumeSandeepVanama_Resume
SandeepVanama_Resume
 
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
 
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud EnvironmentsTools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
 
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 ...
 
Software Factories in the Real World: How an IBM WebSphere Integration Factor...
Software Factories in the Real World: How an IBM WebSphere Integration Factor...Software Factories in the Real World: How an IBM WebSphere Integration Factor...
Software Factories in the Real World: How an IBM WebSphere Integration Factor...
 

Recently uploaded

"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 

Recently uploaded (20)

"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 

Spring IO 2016 - Spring Cloud Microservices, a journey inside a financial entity

  • 1. Spring Cloud Microservices A journey inside a financial entity Jordi Gil @jordigilnieto Toni Jara @tonijar
  • 2. Preface Team Spring I/O 2016 Toni Jara Software engineer with more than 10 years of experience involved in complex architecture projects as Technical Team Lead and Senior Architect. With more than 8 years of experience working with Spring (mainly Core Framework, MVC and Webflow), lately he’s been working on microservices architectures with Spring Cloud. Jordi Gil Jordi is a Software Architect with over 18 years of experience in application development, mainly in information systems for banking and insurance industries. He focuses on the definition of architectures for heterogeneous environments and with high performance, interoperability and availability requirements. In everis he is leading the innovation group where new technologies, patterns and architecture models are assessed for applicability in final customers. Currently his main areas of interest are MicroServices Architectures and Cloud PaaS platforms.
  • 3. Index 1. Introduction 2. Development 3. Deployment 4. Operations 5. Demo 6. Conclusions 7. Questions Spring I/O 2016
  • 6. Introduction Monolithic applications Spring I/O 2016 • Easy to Develop & Deploy & Scale • Can Be Intimidating to New Developers • Modularity Dependent Upon Language / Frameworks • Change Cycles Tightly Coupled / Obstacle to Frequent Deploys • Inefficient Scaling • Obstacle to Scaling Development • Requires Long-Term Commitment to Technical Stack HTML JavaScript MVC Service Service Data Access Browser Relational Database Monolithic Application
  • 7. Introduction Monolithic applications 2.0 Spring I/O 2016 • SOA approach • ESBs used to integrate monolithic applications • ESB Tightly Couples Services • Centralized governance models that actively inhibit change • ESB becomes the biggest monolith Service Service SOA - ESB Service Service Service Service Service
  • 8. Introduction Microservices architecture Spring I/O 2016 • Modularity Based on Component Services • Change Cycles Decoupled / Enable Frequent Deploys • Efficient Scaling • Individual Components Less Intimidating to New Developers • Enables Scaling of Development • Eliminates Long-Term Commitment to Technical Stack • Complexity associated to distributed systems • Operational burden API Service Storage Microservice 1 API Service Storage Microservice 2 API Service Storage Microservice 3 API Service Storage Microservice 4
  • 9. Introduction Microservices in a bank Spring I/O 2016 • API Gateway as the single entry point for all clients • Critical core business services managed through SOA model • Backends accessed exclusively through Business Services API Gateway Front App Front App Mainframe Business Service Business Service Backends Business Services - SOA Microservices
  • 10. Introduction Challenges Spring I/O 2016 Discovery / Reuse Scope definition Productivity Homogenization Versioning Integration Messaging formats Error management Testing Distributed tracing Service Discovery Load Balancing Fault Tolerance Centralized Configuration Dynamic Routing API Gateway Technical challenges derived from implementing distributed systems Challenges derived from enterprise environment Spring Cloud Procedures & custom components Enterprise-ready framework
  • 11. Introduction Technical model Spring I/O 2016 Operation SpringCloud Infrastructure services SpringCloud Service Registry Eureka Server Configuration Config Server Git Service execution framework SpringCloud SpringBoot Service Discovery Eureka Client Fault Tolerance / Resilience Hyxtrix Load Balancer Feign Security Spring Cloud Security Embedded servlet container Tomcat, Jetty, Undertow Monitoring & Management Actuator Endpoints IPC – Inter Process Communication Runtime Gateway Zuul Monitoring Dashboard Hystrix + Turbine Log Management Central logging Microservices SOA Integration Database Core Messages Error mgmt Config Audit & Log HTTP cache
  • 12. Introduction Lifecycle Spring I/O 2016 Discovery • Repositories Design • Scope definition Build • Tools • Scaffolding • Patterns • Naming conventions • Core frameworks • Integrations QA • Testing frameworks • Mocking • Code quality Deployment • Environment topology • Procedures Operations • Central Audit & Logging • Monitoring • Administration
  • 14. Development Discovery Spring I/O 2016 API Service Storage Microservice API Documentation in Swagger format Model metadata Operation metadata Configuration Springfox library Managed by application Managed by framework API Repository Discovery Subscription Impact analysis Audit Discovery Design Build QA Deployment Operations
  • 15. Development Design Spring I/O 2016 • Key aspect for building a successful microservices architecture. • No Silver Bullet, but some techniques may help… Business Area Business Domain Service Domain  Existing reference architectures in some industries – Banking – BIAN (Banking Industry Architecture Network) – Insurance - Acord  Functional decomposition based on Verbs (e.g. Checkout) or Nouns (e.g. Product) of your application  RESTful APIs  Domain Driven Design divides a complex domain up into multiple bounded contexts and maps out the relationships between them. Discovery Design Build QA Deployment Operations
  • 16. Development Build tools Spring I/O 2016 IDE Source code management GIT / SVN Lifecycle automations Apache Maven Testing Unit testing Code Coverage Code quality Findbugs PMD Checkstyle SonarQube To increase productivity, it’s very important to define a standard tool set.  Find the essential tools and plugins hierarchy below: Discovery Design Build QA Deployment Operations
  • 17. Development Source code management tools Spring I/O 2016 Discovery Design Build QA Deployment Operations Source code management with Atlassian Bitbucket (GIT): • One project for each team • One repository for each Microservice • Collaborative development and revisions with pull requests & merges (Gitflow) Master Official version Hotfix Official fixings Develop Integration Feature Functionality Release Candidate version Gitflow documentation: https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
  • 18. Development Maven archetype Spring I/O 2016 Maven archetype Java sources & tests Maven Dependencies Config files Basic project structure Naming conventions • Internal and external core dependencies Starter parent (POM) • Spring Data support • JAX-WS access to SOA Business layer Integrations (JAR) Discovery Design Build QA Deployment Operations
  • 19. Development Versioning Spring I/O 2016 Modification type New Major New Minor New Fix New Qualifier No interface modification NO NO YES YES Interface modification and backwards compatible NO YES YES YES Interface modification not backwards compatible YES YES YES YES Pain point: synchronize Maven (pom.xml) and Spring Cloud version (FeignClient) Manual Automatic MAJOR.MINOR.FIX-QUALIFIER Discovery Design Build QA Deployment Operations
  • 20. Development Messaging Spring I/O 2016 HTTP / JSON Automatic actions in microservices execution: Pre- execution Execution Post- execution Headers Body Messages HTTP headers or payload Functional message Header name Message HEADER.TRACKING_ID Request / Response HEADER.* Request HEADER.STATUS Response EXCEPTION Response (error) + Code + Type + Severity + Description + Cause Discovery Design Build QA Deployment Operations
  • 21. Development Integrations Spring I/O 2016 Discovery Design Build QA Deployment Operations Development: 1. [MS/SOA] Client JAR (Feign/JAX-WS) uploaded to Artifactory 2. Consumer adds Maven dependencies: • [MS/SOA] Client JAR • [DB] JDBC driver 3. [DB] Implement Spring Data domain and repository classes 4. Implement integration logic • [MS/SOA] @Autowire client class • [DB] @Autowire Spring Data repository [MS/SOA] Execution: 1. On-the-fly configurations 2. Propagate architecture headers Client JAR upload Add Maven dependencies Data model Integration logic
  • 22. Development Performance enhancements Spring I/O 2016 Discovery Design Build QA Deployment Operations HTTP 1.1 caching RFC: https://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html Spring MVC Cache Control: https://github.com/foo4u/spring-mvc-cache-control • HTTP 1.1 Caching RFC 2616 compatible with all web browsers • Cache Control and ETag HTTP header support HTTP cache • Partial requests: optional input parameters • Partial responses: query params “fields” and “fieldsExcluded” to filter output messages Partial resources • GZip compression in Spring Boot and Feign GZip compression
  • 23. Development Unit & integrated testing Spring I/O 2016 Discovery Design Build QA Deployment Operations Continuous Integration Integrated testing Unit testing Testing frameworks Granularity: for each class Naming convention: *Test.java Approach: TDD Mock: external class dependencies Granularity: for each Microservice Naming convention: *IT.java Approach: BDD Mock: Microservice external systems
  • 24. Development Source code quality Spring I/O 2016 Discovery Design Build QA Deployment Operations • IDE plugins: Findbugs, Checkstyle, PMD, Code Coverage and SonarQube plugins Development • Maven plugins: SonarQube (quality reports), Surefire (unit testing) and Jacoco (Code Coverage) Build
  • 26. Deployment Continuous Integration Spring I/O 2016 Discovery Design Build QA Deployment Operations Compile Test QA Sonar Analysis Package Deploy to Artifactory Deploy to Infrastructure
  • 27. Deployment Infrastructure (I) Spring I/O 2016 Discovery Design Build QA Deployment Operations • PaaS is the perfect fit for Microservices, providing features that simplify microservices development and deployment. Polyglot languages and frameworks Consistent testing environments Scaling Instant Rollback and Versioning Self Service
  • 28. Deployment Infrastructure (and II) Spring I/O 2016 Discovery Design Build QA Deployment Operations API Gateway Routing Services Runtime Persistent Volumes Platform Runtime Administration Console CLI/API PaaS basic model Continuous integration Build Test Deploy Zuul Gateway Eureka Registry Configuration Monitoring MicroServices Configuration Logs
  • 30. Operation Spring Cloud Dashboard Spring I/O 2016 Discovery Design Build QA Deployment Operations • Simple GUI to administrate Spring Cloud applications infrastructure • Fork of Spring Boot Admin to manage applications registered in service registry (like Eureka). Features for every register service • Show name/id and version number • Show health status • Show details, like • Java System / Environment / Spring properties • JVM & memory metrics • Counter & gauge Metrics • Datasource Metrics • Easy logger level management • Interact with JMX-Beans • View Threaddump • Application registry history ( from Eureka Server ) • Circuit Breaker dashboard ( from Hystrix or Turbine )
  • 31. Operation Logging Discovery Design Build QA Deployment Operations • Centralized Logging with ELK Stack Front App Front App API Gateway Business Services - SOAMicroservices Central Logging Server ETL Store Dashboards Logging MicroService Async call e2e trackingId Spring I/O 2016
  • 32. Operation Audit Discovery Design Build QA Deployment Operations Spring I/O 2016 • Audit events integrated in centralized logging system • Extended to Front and SOA Layer to provide e2e traceability Start Request Sent Response received End Error Functional Automatically generated Generated from application Event types Event info Timestamp Event Type Hostname TrackingId Source Application Arch version Error info App Version Message JVMName MicroServiceType MicroServiceID MIcroServiceName OperationName RequestMapping Automatically generated Generated from application/ architecture Microservice layer specific
  • 35. Conclusions Final thoughts Spring I/O 2016 • Microservices architectures have a lot of positive aspects but also challenges to be solved, technical and related to the enterprise. • Design is a key concept, there’s no silver bullet but some techniques can help. • Standardised tools and procedures aids productivity and scalability in big projects... • …but extensible and open for future incremental enhancements. • PaaS environments are best suited for microservices deployment. Lessons learned • Brixton upgrade, Docker, HATEOAS, Event management, Asynchronous messaging, … Backlog
  • 37. Spring I/O 2016 everis.com Consulting, IT & Outsourcing Professional Services