SlideShare a Scribd company logo
asalazar@advlatam.com
@betoSalazar
Part I - Second Edition: The Journey
How to Handle the Complexity
of Migrate to Microservices from Monolithic Ten year
Alberto Salazar,
CTO Advance Latam,
Auth0 Ambassador
21th June 2018
Alberto Salazar
● Speaker, Java Consultant, #Community
● Auth0 Ambassador
● Author -> new challenge
● Java User Group Leader, JCP Member
● Working 17 years with monolithic
● Founder and CTO:
AdvanceLatam & Cloudbanco
@betoSalazar
@EcuadorJUG
@Auth0Ambassador
www.advlatam.com www.cloudbanco.com www.ecuadorjug.org
www.javaday.ec
Legacy: Is our monolithic
@betoSalazar
Source: 97 Things Every Software Architect Should Know
Legacy: How it looks after 10 years of code
@betoSalazar
The journey
● The evolution of 10 years of code on Enterprise App
● Why to move from Monolith to Microservices
● The fact - 10 years of code
● The path - Tips, tricks, pros & cons of Microservices
● Conclusions
@betoSalazar
The evolution of more than 10 years of code
J2EE , JEE
App Server
or
Apache Felix OSGI
Apache Karaf
SOA
Industry approach
ESB
BPM
BAM
(-) external influence
Evolution
Frontend:
Html 5 Css3
Mobile
Split the monster
Microservices
the beginning
Microservices
Rest End points
Vert.x | Spring boot |
Micro-profile |
JEE -> Jakarta EE
NodeJS, Angular,
React, Native,
VueJS………………
……………………….
Devops
Docker
Kubernetes
Istio
Serverless
The vision behind the scenes
@betoSalazar
asalazar@advlatam.com
@betoSalazar
The motivation to migrate
from Monolith to Microservices
Microservices
@betoSalazar
Microservices ?
@betoSalazar
The buzz word
Microservices is the architectural approach that everybody talks about and everybody wants it,
but be prepare to manage a distributed system….
The Goal
@betoSalazar
VELOCITY
TIME
TO MARKET
The goal that organizations need is to increasing velocity & agility;

Get into production as soon as posible;

Deploy new features as soon as posible.
The journey
@betoSalazar
The reasons of this talk
@betoSalazar
The plan of move forward (Microservices -> cloud -> serverless ?)
Everybody are talking about the result (microservices architectural style)
but just a few are showing the painpath
asalazar@advlatam.com
@betoSalazar
The fact - 10 years of code
The Monolithic
Legacy: Is our monolithic
@betoSalazar
The Monolith
@betoSalazar
How it looks
http://microservices.io/patterns/monolithic.html
The Monolith
@betoSalazar
Characteristics
! Attachment to the environment(language, platform & OS)
! Single logical executable, deploy everything at once or nothing at all
! Bottlenecks and Failure of part == failure of whole
! Take months even years getting into production
! Centralized authority slows the delivery process (DBA, OPS, QA)
! Coordinated releases are hard, because brings many changes
together from different teams
How start this legacy
@betoSalazar
1 Year of code
Always the goal was to keep the modularization
Team work on the legacy
@betoSalazar
5 Years of code
Modularization ?
Really ?
@betoSalazar
10 Years of code
Modular WTF
10 Years of code
@betoSalazar
OMG
Migrate several years of code, It will be Easy ?
@betoSalazar
The challenge
! > 2MM lines of highly coupled code
! Build one microservice is easy, but what
about a complete microservice architecture
based on 2MM lines of code
! Time to delivery features are between: 6 to
12 months & project overhead $$
! Working on production environment for
several years
asalazar@advlatam.com
@betoSalazar
The path - Tips, tricks, pros , cons
Microservices
The Monolith to Microservices
@betoSalazar
How it looks
http://microservices.io/patterns/monolithic.html http://microservices.io/patterns/microservices.html
Microservices
@betoSalazar
Characteristics
! Deployable, executable & scaled independently
! Smaller code modules are easier to understand
! High cohesion, low coupling
! Failure is isolated (Fail one part of the system)
! Independent Teams (decide their own
architecture)
! Polyglot “Plus”
https://martinfowler.com/articles/microservices.html
https://martinfowler.com/bliki/MicroservicePrerequisites.html
The path
@betoSalazar
Microservices
! Split the frontend from the backend & keep
the centralized data
! Secure your API
! Containers, logs, monitoring
! Split the data
! Don’t forget the frontend
JEE application server
The path -> Split the frontend from the backend
@betoSalazar
The Monolith
Database
JEE application server
theApp.ear
MODULE1.war
MODULE1-JS.jar
MODULE2.war
MODULE3.war
css.war
MODULE4.war
businesslogic.jar
businesslogic.jar
businesslogic.jar
businesslogic.jar
@betoSalazar
Split the frontend from the backend
JSF Controller Code
Call the Facade
The path -> Split the frontend from the backend
@betoSalazar
Split the frontend from the backend
Facade Code
Call the Business
Logic
The path -> Split the frontend from the backend
@betoSalazar
The communication
JEE application server
theApp-backend.ear
businesslogi
businesslogi
businesslogibusinesslogic.jar
JEE application server
theApp.ear
MODULE1.war
MODULE1-JS.jar
MODULE2.war
MODULE3.war
css.war
MODULE4.war
Database
Message
Queue
Apache ActiveMQ
RabbitMQ
Apache Kafka……
http://activemq.apache.org
https://www.rabbitmq.com
https://kafka.apache.org
producer.jar
http://camel.apache.org/mdc-logging.html
consumer.jar
The path -> Split the frontend from the backend
@betoSalazar
Split the frontend from the backend
Use Camel Routes
Request - reply
Call the Processor
The consumer
@betoSalazar
The consumer
Split the frontend from the backend
Camel Processor Code
Call the Facade
@betoSalazar
JEE application server
theApp.ear
MODULE1.war
MODULE1-JS.jar
MODULE2.war
MODULE3.war
css.war
MODULE4.war
Database
Message
Queue
producer.jar
JEE application server
theApp-backend.ear
businesslogic.jar
consumer.jar
JEE application server
theApp-backend.ear
businesslogic.jar
consumer.jar
JEE application server
theApp-backend.ear
businesslogic.jar
consumer.jar
JEE application server
theApp-backend.ear
businesslogic.jar
consumer.jar
JEE application server
theApp-backend.ear
businesslogic.jar
consumer.jar
Split the backend
The path -> Split the frontend from the backend
@betoSalazar
Split the backend
https://projects.spring.io/spring-boot/
https://microprofile.io/
https://vertx.io/
https://www.docker.com/
https://github.com/fabric8io/docker-maven-plugin
https://github.com/spotify/docker-maven-plugin
Spring boot
install just
what you need
in a Docker
Container
Osgi container
engine-orchestrator.jar
Osgi container
dynamic-camel-routes.jar
fat jar
batch.jar
fat jar
services.jar
fat jar
business-module1.jar
fat jar
business-module-n.jar
Service
some api
Service
some api
Service
some api
Service
some api
Service
some api
Service
some api
businesslogic.jar
consumer.jar
businesslogic.jar
consumer.jar
businesslogic.jar
consumer.jar
businesslogic.jar
consumer.jar
businesslogic.jar
consumer.jar
businesslogic.jar
consumer.jar
The path -> Split the frontend from the backend
@betoSalazar
The path
Logging, trace & Monitoring
http://www.baeldung.com/mdc-in-log4j-2-logback
https://www.elastic.co/products/elasticsearch
https://www.elastic.co/products/logstash
https://www.elastic.co/products/kibana
logstash
1) Use Mapped Diagnostic Context (MDC)
Enrich log files
2) Introduce a correlationId
3) Collect the logs
4) Search by rest API or use Kibana
Osgi container
engine-orchestrator.jar
Osgi container
dynamic-camel-routes.jar
fat jar
batch.jar
fat jar
services.jar
fat jar
business-module1.jar
fat jar
business-module-n.jar
Service
some api
Service
some api
Service
some api
Service
some api
Service
some api
Service
some api
businesslogic.jar
consumer.jar
businesslogic.jar
consumer.jar
businesslogic.jar
consumer.jar
businesslogic.jar
consumer.jar
businesslogic.jar
consumer.jar
businesslogic.jar
consumer.jar
The path -> Split the frontend from the backend
JEE application server
theApp-backend.ear
businesslogic.jar
consumer.jar
JEE application server
theApp-backend.ear
businesslogic.jar
consumer.jar
JEE application server
theApp-backend.ear
businesslogic.jar
consumer.jar
@betoSalazar
JEE application server
theApp.ear
MODULE1.war
MODULE1-JS.jar
MODULE2.war
MODULE3.war
css.war
MODULE4.war
Database
Message
Queue
producer.jar
JEE application server
theApp-backend.ear
businesslogic.jar
consumer.jar
JEE application server
theApp-backend.ear
businesslogic.jar
consumer.jarRest API
rest-client.jar
Rest-api-layer
Rest-api-layer
Rest-api-layer
Rest-api-layer
Rest-api-layer
The path -> Split the frontend from the backend
@betoSalazar
https://docs.spring.io/spring/docs/current/spring-framework-
reference/web.html#mvc-introduction
Spring MVC
Osgi container
engine-orchestrator.jar
Osgi container
dynamic-camel-routes.jar
fat jar
batch.jar
fat jar
services.jar
fat jar
business-module1.jar
fat jar
business-module-n.jar
Service
some api
Service
some api
Service
some api
Service
some api
Service
some api
Service
some api
businesslogic.jar
Rest-api-layer
businesslogic.jar
Rest-api-layer
businesslogic.jar
Rest-api-layer
businesslogic.jar
Rest-api-layer
businesslogic.jar
Rest-api-layer
businesslogic.jar
Rest-api-layer
The path -> Split the frontend from the backend
Rest API
@betoSalazar
https://docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.html#spring-webflux
Spring Webflux
The path -> Split the frontend from the backend
Rest API
@betoSalazar
https://vertx.io/docs/vertx-core/java/
Vert.x
The path -> Split the frontend from the backend
Rest API
@betoSalazar
https://javaee.github.io/tutorial/jaxrs003.html
JAX-RS JEE 8
The path -> Split the frontend from the backend
Rest API
@betoSalazar
The path -> Secure your API
POST bank.com/api/v1/accouts
POST bank.com/api/v1/accouts
Secure your API
JWT
JSON WEB TOKEN
&
Authorization Server
https://jwt.io/
https://auth0.com
https://auth0.com/blog/implementing-jwt-authentication-on-
spring-boot/
https://auth0.com/blog/securing-spring-boot-with-jwts/
fat jar
api-gateway.jar
Services
api rest
logstash
Database
Login
Angular nodejs
Transaction
Angular nodejs
Module n
Angular nodejs
Osgi container
engine-orchestrator.jar
Osgi container
dynamic-camel-routes.jar
fat jar
batch.jar
fat jar
services.jar
fat jar
business-module1.jar
fat jar
business-module-n.jar
Service
some api
Service
some api
Service
some api
Service
some api
Service
some api
Service
some api
Rest-api-layer
Rest-api-layer
Rest-api-layer
Rest-api-layer
Rest-api-layer
Rest-api-layer
@betoSalazar
https://auth0.com/blog/securing-spring-boot-with-jwts/
JWT + + Springboot + Spring Security
The path -> Secure your API
@betoSalazar
https://medium.com/@ryanchenkie_40935/angular-authentication-using-route-guards-bf7a4ca13ae3
https://github.com/auth0/angular2-jwt
JWT + AuthGuard with AngularSecure
App
The path -> Secure your Application
@betoSalazar
The path -> Discovery Services
https://hazelcast.org/
Discovery services to inspect or rely on the contents of any named IMap
Hazelcast
Discovery Services via IMDG
backbone of your Microservices architecture
POST bank.com/api/v1/accouts
Rest endpoints & API Gateway
fat jar
api-gateway.jar
Services
api rest
Osgi container
engine-orchestrator.jar
Osgi container
dynamic-camel-routes.jar
fat jar
batch.jar
fat jar
services.jar
fat jar
business-module1.jar
fat jar
business-module-n.jar
Service
some api
Service
some api
Service
some api
Service
some api
Service
some api
Service
some api
businesslogic.jar
Rest-api-layer
businesslogic.jar
Rest-api-layer
businesslogic.jar
Rest-api-layer
businesslogic.jar
Rest-api-layer
businesslogic.jar
Rest-api-layer
businesslogic.jar
Rest-api-layer
@betoSalazar
The path
Split de database
https://flywaydb.org/
https://developers.redhat.com/promotions/migrating-
to-microservice-databases/
- Consistency Models:

Strong vs Eventual consistency

- Materalized views

- ETL Tools
Automate your database
migration
fat jar
api-gateway.jar
Services
api rest
logstash
POST bank.com/api/v1/accouts
POST bank.com/api/v1/accouts
Login
Angular nodejs
Transaction
Angular nodejs
Module n
Angular nodejs
Osgi container
engine-orchestrator.jar
Osgi container
dynamic-camel-routes.jar
fat jar
batch.jar
fat jar
services.jar
fat jar
business-module1.jar
fat jar
business-module-n.jar
Service
some api
Service
some api
Service
some api
Service
some api
Service
some api
Service
some api
businesslogic.jar
Rest-api-layer
businesslogic.jar
Rest-api-layer
businesslogic.jar
Rest-api-layer
businesslogic.jar
Rest-api-layer
businesslogic.jar
Rest-api-layer
businesslogic.jar
Rest-api-layer
@betoSalazar
The path
Don’t forget the frontend & the agility
https://jwt.io/
https://nodejs.org/es/
https://facebook.github.io/react/
https://angular.io/
https://facebook.github.io/react-native/
fat jar
api-gateway.jar
Services
api rest
POST bank.com/api/v1/accouts
POST bank.com/api/v1/accouts
logstash
Login
Angular nodejs
Transaction
Angular nodejs
Module n
Angular nodejs
Osgi container
engine-orchestrator.jar
Osgi container
dynamic-camel-routes.jar
fat jar
batch.jar
fat jar
services.jar
fat jar
business-module1.jar
fat jar
business-module-n.jar
Service
some api
Service
some api
Service
some api
Service
some api
Service
some api
Service
some api
businesslogic.jar
Rest-api-layer
businesslogic.jar
Rest-api-layer
businesslogic.jar
Rest-api-layer
businesslogic.jar
Rest-api-layer
businesslogic.jar
Rest-api-layer
businesslogic.jar
Rest-api-layer
JWT
JSON WEB TOKEN
&
Authorization Server
Microservices Architecture
@betoSalazar
Containers - Orchestrators - Cloud
@betoSalazar
Istio: Service Mesh
Containers (Docker) ->
Manage the same code + environment in diferente stages
Orchestrators (Kubernetes, Docker Swarm, Mesos) ->
We need to orchestrated our containers
Cloud (eg. Oracle Cloud, Google Cloud, AWS, Azure, Bluemix)
asalazar@advlatam.com
@betoSalazar
Summary &
Code blueprints repositories
@betoSalazar
The conclusion
Microservices Architecture Losses
! Transactions
! Single data repository
! Better problems solver needed (Developers /
architects)
! the system and services have to deal with
network communications, failures, rebalances,
splits.
@betoSalazar
The conclusion
Recommendations
Design your application modular (either monolith, OSGi or microservices)
Continuously refactor your modules or microservices to achieve optimal boundaries
Monolithic apps only look simple from the outside, but you just open the box
Care about logs, monitoring and always use a CORRELATIONID and MDC (Mapped Diagnostic Context)
We need to deal with service load balance, monitoring, security
@betoSalazar
Recommendations
Use Docker + Kubernates + Istio
Automate the deployment and delivery process -> CI & CD -> DEVOPS Culture
Design for failover, Service load balancing and automatic scaling, data Separation,
Integrity, Performance
Use lightweight frameworks or java containers (Karaf, Vert.x, Spring boot, Microprofile
(Payara, WildFly Swarm, OpenLiberty, TomEE))
Secure your APIs - JWT json web token, Json Web Signature, Json Web Encryption
The conclusion
asalazar@advlatam.com
@betoSalazar
code blueprints:
https://github.com/lasalazarr/fastdev
https://github.com/lasalazarr/guide-monolithic-to-
microservices
@betoSalazar
#Community
Quito - Ecuador
September 8th
https://www.javaday.ec
asalazar@advlatam.com
@betoSalazar
THANK YOU
Auth0 Ambassadors.
Helping the developer community make the
internet safer.

More Related Content

Similar to Oracle Code Javaday Sao Paulo Monolith_to Microservices

Groundbreakers tour Nowadays Architecture Trends, from Monolith to Microservi...
Groundbreakers tour Nowadays Architecture Trends, from Monolith to Microservi...Groundbreakers tour Nowadays Architecture Trends, from Monolith to Microservi...
Groundbreakers tour Nowadays Architecture Trends, from Monolith to Microservi...
Alberto Salazar
 
Jconf Colombia Nowadays Architecture Trends, from Monolith to Microservices a...
Jconf Colombia Nowadays Architecture Trends, from Monolith to Microservices a...Jconf Colombia Nowadays Architecture Trends, from Monolith to Microservices a...
Jconf Colombia Nowadays Architecture Trends, from Monolith to Microservices a...
Alberto Salazar
 
Devnexus - Nowadays Architecture Trends, from Monolith to Microservices and S...
Devnexus - Nowadays Architecture Trends, from Monolith to Microservices and S...Devnexus - Nowadays Architecture Trends, from Monolith to Microservices and S...
Devnexus - Nowadays Architecture Trends, from Monolith to Microservices and S...
Alberto Salazar
 
ES~Conference Mexico Nowadays Architecture Trends, from Monolith to Microserv...
ES~Conference Mexico Nowadays Architecture Trends, from Monolith to Microserv...ES~Conference Mexico Nowadays Architecture Trends, from Monolith to Microserv...
ES~Conference Mexico Nowadays Architecture Trends, from Monolith to Microserv...
Alberto Salazar
 
Jbcnconf Nowadays Architecture Trends, from Monolith to Microservices and Ser...
Jbcnconf Nowadays Architecture Trends, from Monolith to Microservices and Ser...Jbcnconf Nowadays Architecture Trends, from Monolith to Microservices and Ser...
Jbcnconf Nowadays Architecture Trends, from Monolith to Microservices and Ser...
Alberto Salazar
 
Voxxed days cluj-napoca Nowadays architecture trends alberto_salazarv2
Voxxed days cluj-napoca Nowadays architecture trends alberto_salazarv2Voxxed days cluj-napoca Nowadays architecture trends alberto_salazarv2
Voxxed days cluj-napoca Nowadays architecture trends alberto_salazarv2
Alberto Salazar
 
Oracle Code Javaday Sao Paulo Nowadays Architecture Trends, from Monolith to ...
Oracle Code Javaday Sao Paulo Nowadays Architecture Trends, from Monolith to ...Oracle Code Javaday Sao Paulo Nowadays Architecture Trends, from Monolith to ...
Oracle Code Javaday Sao Paulo Nowadays Architecture Trends, from Monolith to ...
Alberto Salazar
 
Js foo - Sept 8 upload
Js foo - Sept 8 uploadJs foo - Sept 8 upload
Js foo - Sept 8 upload
Debnath Sinha
 
DEVBCN_Jakarta EE! The future of enterprise application behind the myths. _Al...
DEVBCN_Jakarta EE! The future of enterprise application behind the myths.
_Al...DEVBCN_Jakarta EE! The future of enterprise application behind the myths.
_Al...
DEVBCN_Jakarta EE! The future of enterprise application behind the myths. _Al...
Alberto Salazar
 
Cloud-Native Modernization or Death? A false dichotomy. | DevNation Tech Talk
Cloud-Native Modernization or Death? A false dichotomy. | DevNation Tech TalkCloud-Native Modernization or Death? A false dichotomy. | DevNation Tech Talk
Cloud-Native Modernization or Death? A false dichotomy. | DevNation Tech Talk
Red Hat Developers
 
Rocking the microservice world with Helidon-LAOUCTour2023.pdf
Rocking the microservice world with Helidon-LAOUCTour2023.pdfRocking the microservice world with Helidon-LAOUCTour2023.pdf
Rocking the microservice world with Helidon-LAOUCTour2023.pdf
Alberto Salazar
 
Red Hat Agile integration workshop - Atlanta
Red Hat Agile integration workshop - AtlantaRed Hat Agile integration workshop - Atlanta
Red Hat Agile integration workshop - Atlanta
Judy Breedlove
 
Agile integration workshop Atlanta
Agile integration workshop   AtlantaAgile integration workshop   Atlanta
Agile integration workshop Atlanta
Jeremy Davis
 
How to migrate large project from Angular to React
How to migrate large project from Angular to ReactHow to migrate large project from Angular to React
How to migrate large project from Angular to React
Tomasz Bak
 
FEVR - Micro Frontend
FEVR - Micro FrontendFEVR - Micro Frontend
FEVR - Micro Frontend
Miki Lombardi
 
SignalR Intro + WPDev integration @ Codetock
SignalR Intro + WPDev integration @ CodetockSignalR Intro + WPDev integration @ Codetock
SignalR Intro + WPDev integration @ CodetockSam Basu
 
Building application in a "Microfrontends" way - Prasanna N Venkatesen *XConf...
Building application in a "Microfrontends" way - Prasanna N Venkatesen *XConf...Building application in a "Microfrontends" way - Prasanna N Venkatesen *XConf...
Building application in a "Microfrontends" way - Prasanna N Venkatesen *XConf...
Thoughtworks
 
SH 1 - SES 4 - Microservices - Andrew Morgan TLV.pptx
SH 1 - SES 4 - Microservices - Andrew Morgan TLV.pptxSH 1 - SES 4 - Microservices - Andrew Morgan TLV.pptx
SH 1 - SES 4 - Microservices - Andrew Morgan TLV.pptxMongoDB
 
How to avoid cascading failures in microservices
How to avoid cascading failures in microservicesHow to avoid cascading failures in microservices
How to avoid cascading failures in microservices
DevOps Indonesia
 
Building application in a "Microfrontends" way - Matthias Lauf *XConf Manchester
Building application in a "Microfrontends" way - Matthias Lauf *XConf ManchesterBuilding application in a "Microfrontends" way - Matthias Lauf *XConf Manchester
Building application in a "Microfrontends" way - Matthias Lauf *XConf Manchester
Thoughtworks
 

Similar to Oracle Code Javaday Sao Paulo Monolith_to Microservices (20)

Groundbreakers tour Nowadays Architecture Trends, from Monolith to Microservi...
Groundbreakers tour Nowadays Architecture Trends, from Monolith to Microservi...Groundbreakers tour Nowadays Architecture Trends, from Monolith to Microservi...
Groundbreakers tour Nowadays Architecture Trends, from Monolith to Microservi...
 
Jconf Colombia Nowadays Architecture Trends, from Monolith to Microservices a...
Jconf Colombia Nowadays Architecture Trends, from Monolith to Microservices a...Jconf Colombia Nowadays Architecture Trends, from Monolith to Microservices a...
Jconf Colombia Nowadays Architecture Trends, from Monolith to Microservices a...
 
Devnexus - Nowadays Architecture Trends, from Monolith to Microservices and S...
Devnexus - Nowadays Architecture Trends, from Monolith to Microservices and S...Devnexus - Nowadays Architecture Trends, from Monolith to Microservices and S...
Devnexus - Nowadays Architecture Trends, from Monolith to Microservices and S...
 
ES~Conference Mexico Nowadays Architecture Trends, from Monolith to Microserv...
ES~Conference Mexico Nowadays Architecture Trends, from Monolith to Microserv...ES~Conference Mexico Nowadays Architecture Trends, from Monolith to Microserv...
ES~Conference Mexico Nowadays Architecture Trends, from Monolith to Microserv...
 
Jbcnconf Nowadays Architecture Trends, from Monolith to Microservices and Ser...
Jbcnconf Nowadays Architecture Trends, from Monolith to Microservices and Ser...Jbcnconf Nowadays Architecture Trends, from Monolith to Microservices and Ser...
Jbcnconf Nowadays Architecture Trends, from Monolith to Microservices and Ser...
 
Voxxed days cluj-napoca Nowadays architecture trends alberto_salazarv2
Voxxed days cluj-napoca Nowadays architecture trends alberto_salazarv2Voxxed days cluj-napoca Nowadays architecture trends alberto_salazarv2
Voxxed days cluj-napoca Nowadays architecture trends alberto_salazarv2
 
Oracle Code Javaday Sao Paulo Nowadays Architecture Trends, from Monolith to ...
Oracle Code Javaday Sao Paulo Nowadays Architecture Trends, from Monolith to ...Oracle Code Javaday Sao Paulo Nowadays Architecture Trends, from Monolith to ...
Oracle Code Javaday Sao Paulo Nowadays Architecture Trends, from Monolith to ...
 
Js foo - Sept 8 upload
Js foo - Sept 8 uploadJs foo - Sept 8 upload
Js foo - Sept 8 upload
 
DEVBCN_Jakarta EE! The future of enterprise application behind the myths. _Al...
DEVBCN_Jakarta EE! The future of enterprise application behind the myths.
_Al...DEVBCN_Jakarta EE! The future of enterprise application behind the myths.
_Al...
DEVBCN_Jakarta EE! The future of enterprise application behind the myths. _Al...
 
Cloud-Native Modernization or Death? A false dichotomy. | DevNation Tech Talk
Cloud-Native Modernization or Death? A false dichotomy. | DevNation Tech TalkCloud-Native Modernization or Death? A false dichotomy. | DevNation Tech Talk
Cloud-Native Modernization or Death? A false dichotomy. | DevNation Tech Talk
 
Rocking the microservice world with Helidon-LAOUCTour2023.pdf
Rocking the microservice world with Helidon-LAOUCTour2023.pdfRocking the microservice world with Helidon-LAOUCTour2023.pdf
Rocking the microservice world with Helidon-LAOUCTour2023.pdf
 
Red Hat Agile integration workshop - Atlanta
Red Hat Agile integration workshop - AtlantaRed Hat Agile integration workshop - Atlanta
Red Hat Agile integration workshop - Atlanta
 
Agile integration workshop Atlanta
Agile integration workshop   AtlantaAgile integration workshop   Atlanta
Agile integration workshop Atlanta
 
How to migrate large project from Angular to React
How to migrate large project from Angular to ReactHow to migrate large project from Angular to React
How to migrate large project from Angular to React
 
FEVR - Micro Frontend
FEVR - Micro FrontendFEVR - Micro Frontend
FEVR - Micro Frontend
 
SignalR Intro + WPDev integration @ Codetock
SignalR Intro + WPDev integration @ CodetockSignalR Intro + WPDev integration @ Codetock
SignalR Intro + WPDev integration @ Codetock
 
Building application in a "Microfrontends" way - Prasanna N Venkatesen *XConf...
Building application in a "Microfrontends" way - Prasanna N Venkatesen *XConf...Building application in a "Microfrontends" way - Prasanna N Venkatesen *XConf...
Building application in a "Microfrontends" way - Prasanna N Venkatesen *XConf...
 
SH 1 - SES 4 - Microservices - Andrew Morgan TLV.pptx
SH 1 - SES 4 - Microservices - Andrew Morgan TLV.pptxSH 1 - SES 4 - Microservices - Andrew Morgan TLV.pptx
SH 1 - SES 4 - Microservices - Andrew Morgan TLV.pptx
 
How to avoid cascading failures in microservices
How to avoid cascading failures in microservicesHow to avoid cascading failures in microservices
How to avoid cascading failures in microservices
 
Building application in a "Microfrontends" way - Matthias Lauf *XConf Manchester
Building application in a "Microfrontends" way - Matthias Lauf *XConf ManchesterBuilding application in a "Microfrontends" way - Matthias Lauf *XConf Manchester
Building application in a "Microfrontends" way - Matthias Lauf *XConf Manchester
 

Recently uploaded

BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
Explore Modern SharePoint Templates for 2024
Explore Modern SharePoint Templates for 2024Explore Modern SharePoint Templates for 2024
Explore Modern SharePoint Templates for 2024
Sharepoint Designs
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Anthony Dahanne
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
kalichargn70th171
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
WSO2
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
vrstrong314
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
De mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEDe mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FME
Jelle | Nordend
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
IES VE
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
Strategies for Successful Data Migration Tools.pptx
Strategies for Successful Data Migration Tools.pptxStrategies for Successful Data Migration Tools.pptx
Strategies for Successful Data Migration Tools.pptx
varshanayak241
 

Recently uploaded (20)

BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
Explore Modern SharePoint Templates for 2024
Explore Modern SharePoint Templates for 2024Explore Modern SharePoint Templates for 2024
Explore Modern SharePoint Templates for 2024
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
De mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEDe mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FME
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
Strategies for Successful Data Migration Tools.pptx
Strategies for Successful Data Migration Tools.pptxStrategies for Successful Data Migration Tools.pptx
Strategies for Successful Data Migration Tools.pptx
 

Oracle Code Javaday Sao Paulo Monolith_to Microservices

  • 1. asalazar@advlatam.com @betoSalazar Part I - Second Edition: The Journey How to Handle the Complexity of Migrate to Microservices from Monolithic Ten year Alberto Salazar, CTO Advance Latam, Auth0 Ambassador 21th June 2018
  • 2. Alberto Salazar ● Speaker, Java Consultant, #Community ● Auth0 Ambassador ● Author -> new challenge ● Java User Group Leader, JCP Member ● Working 17 years with monolithic ● Founder and CTO: AdvanceLatam & Cloudbanco @betoSalazar @EcuadorJUG @Auth0Ambassador www.advlatam.com www.cloudbanco.com www.ecuadorjug.org www.javaday.ec
  • 3. Legacy: Is our monolithic @betoSalazar Source: 97 Things Every Software Architect Should Know
  • 4. Legacy: How it looks after 10 years of code @betoSalazar
  • 5. The journey ● The evolution of 10 years of code on Enterprise App ● Why to move from Monolith to Microservices ● The fact - 10 years of code ● The path - Tips, tricks, pros & cons of Microservices ● Conclusions @betoSalazar
  • 6. The evolution of more than 10 years of code J2EE , JEE App Server or Apache Felix OSGI Apache Karaf SOA Industry approach ESB BPM BAM (-) external influence Evolution Frontend: Html 5 Css3 Mobile Split the monster Microservices the beginning Microservices Rest End points Vert.x | Spring boot | Micro-profile | JEE -> Jakarta EE NodeJS, Angular, React, Native, VueJS……………… ………………………. Devops Docker Kubernetes Istio Serverless The vision behind the scenes @betoSalazar
  • 7. asalazar@advlatam.com @betoSalazar The motivation to migrate from Monolith to Microservices
  • 9. Microservices ? @betoSalazar The buzz word Microservices is the architectural approach that everybody talks about and everybody wants it, but be prepare to manage a distributed system….
  • 10. The Goal @betoSalazar VELOCITY TIME TO MARKET The goal that organizations need is to increasing velocity & agility; Get into production as soon as posible; Deploy new features as soon as posible.
  • 12. The reasons of this talk @betoSalazar The plan of move forward (Microservices -> cloud -> serverless ?) Everybody are talking about the result (microservices architectural style) but just a few are showing the painpath
  • 13. asalazar@advlatam.com @betoSalazar The fact - 10 years of code The Monolithic
  • 14. Legacy: Is our monolithic @betoSalazar
  • 15. The Monolith @betoSalazar How it looks http://microservices.io/patterns/monolithic.html
  • 16. The Monolith @betoSalazar Characteristics ! Attachment to the environment(language, platform & OS) ! Single logical executable, deploy everything at once or nothing at all ! Bottlenecks and Failure of part == failure of whole ! Take months even years getting into production ! Centralized authority slows the delivery process (DBA, OPS, QA) ! Coordinated releases are hard, because brings many changes together from different teams
  • 17. How start this legacy @betoSalazar 1 Year of code Always the goal was to keep the modularization
  • 18. Team work on the legacy @betoSalazar 5 Years of code Modularization ?
  • 19. Really ? @betoSalazar 10 Years of code Modular WTF
  • 20. 10 Years of code @betoSalazar OMG
  • 21. Migrate several years of code, It will be Easy ? @betoSalazar The challenge ! > 2MM lines of highly coupled code ! Build one microservice is easy, but what about a complete microservice architecture based on 2MM lines of code ! Time to delivery features are between: 6 to 12 months & project overhead $$ ! Working on production environment for several years
  • 22. asalazar@advlatam.com @betoSalazar The path - Tips, tricks, pros , cons Microservices
  • 23. The Monolith to Microservices @betoSalazar How it looks http://microservices.io/patterns/monolithic.html http://microservices.io/patterns/microservices.html
  • 24. Microservices @betoSalazar Characteristics ! Deployable, executable & scaled independently ! Smaller code modules are easier to understand ! High cohesion, low coupling ! Failure is isolated (Fail one part of the system) ! Independent Teams (decide their own architecture) ! Polyglot “Plus” https://martinfowler.com/articles/microservices.html https://martinfowler.com/bliki/MicroservicePrerequisites.html
  • 25. The path @betoSalazar Microservices ! Split the frontend from the backend & keep the centralized data ! Secure your API ! Containers, logs, monitoring ! Split the data ! Don’t forget the frontend
  • 26. JEE application server The path -> Split the frontend from the backend @betoSalazar The Monolith Database JEE application server theApp.ear MODULE1.war MODULE1-JS.jar MODULE2.war MODULE3.war css.war MODULE4.war businesslogic.jar businesslogic.jar businesslogic.jar businesslogic.jar
  • 27. @betoSalazar Split the frontend from the backend JSF Controller Code Call the Facade The path -> Split the frontend from the backend
  • 28. @betoSalazar Split the frontend from the backend Facade Code Call the Business Logic The path -> Split the frontend from the backend
  • 29. @betoSalazar The communication JEE application server theApp-backend.ear businesslogi businesslogi businesslogibusinesslogic.jar JEE application server theApp.ear MODULE1.war MODULE1-JS.jar MODULE2.war MODULE3.war css.war MODULE4.war Database Message Queue Apache ActiveMQ RabbitMQ Apache Kafka…… http://activemq.apache.org https://www.rabbitmq.com https://kafka.apache.org producer.jar http://camel.apache.org/mdc-logging.html consumer.jar The path -> Split the frontend from the backend
  • 30. @betoSalazar Split the frontend from the backend Use Camel Routes Request - reply Call the Processor The consumer
  • 31. @betoSalazar The consumer Split the frontend from the backend Camel Processor Code Call the Facade
  • 32. @betoSalazar JEE application server theApp.ear MODULE1.war MODULE1-JS.jar MODULE2.war MODULE3.war css.war MODULE4.war Database Message Queue producer.jar JEE application server theApp-backend.ear businesslogic.jar consumer.jar JEE application server theApp-backend.ear businesslogic.jar consumer.jar JEE application server theApp-backend.ear businesslogic.jar consumer.jar JEE application server theApp-backend.ear businesslogic.jar consumer.jar JEE application server theApp-backend.ear businesslogic.jar consumer.jar Split the backend The path -> Split the frontend from the backend
  • 33. @betoSalazar Split the backend https://projects.spring.io/spring-boot/ https://microprofile.io/ https://vertx.io/ https://www.docker.com/ https://github.com/fabric8io/docker-maven-plugin https://github.com/spotify/docker-maven-plugin Spring boot install just what you need in a Docker Container Osgi container engine-orchestrator.jar Osgi container dynamic-camel-routes.jar fat jar batch.jar fat jar services.jar fat jar business-module1.jar fat jar business-module-n.jar Service some api Service some api Service some api Service some api Service some api Service some api businesslogic.jar consumer.jar businesslogic.jar consumer.jar businesslogic.jar consumer.jar businesslogic.jar consumer.jar businesslogic.jar consumer.jar businesslogic.jar consumer.jar The path -> Split the frontend from the backend
  • 34. @betoSalazar The path Logging, trace & Monitoring http://www.baeldung.com/mdc-in-log4j-2-logback https://www.elastic.co/products/elasticsearch https://www.elastic.co/products/logstash https://www.elastic.co/products/kibana logstash 1) Use Mapped Diagnostic Context (MDC) Enrich log files 2) Introduce a correlationId 3) Collect the logs 4) Search by rest API or use Kibana Osgi container engine-orchestrator.jar Osgi container dynamic-camel-routes.jar fat jar batch.jar fat jar services.jar fat jar business-module1.jar fat jar business-module-n.jar Service some api Service some api Service some api Service some api Service some api Service some api businesslogic.jar consumer.jar businesslogic.jar consumer.jar businesslogic.jar consumer.jar businesslogic.jar consumer.jar businesslogic.jar consumer.jar businesslogic.jar consumer.jar The path -> Split the frontend from the backend
  • 35. JEE application server theApp-backend.ear businesslogic.jar consumer.jar JEE application server theApp-backend.ear businesslogic.jar consumer.jar JEE application server theApp-backend.ear businesslogic.jar consumer.jar @betoSalazar JEE application server theApp.ear MODULE1.war MODULE1-JS.jar MODULE2.war MODULE3.war css.war MODULE4.war Database Message Queue producer.jar JEE application server theApp-backend.ear businesslogic.jar consumer.jar JEE application server theApp-backend.ear businesslogic.jar consumer.jarRest API rest-client.jar Rest-api-layer Rest-api-layer Rest-api-layer Rest-api-layer Rest-api-layer The path -> Split the frontend from the backend
  • 36. @betoSalazar https://docs.spring.io/spring/docs/current/spring-framework- reference/web.html#mvc-introduction Spring MVC Osgi container engine-orchestrator.jar Osgi container dynamic-camel-routes.jar fat jar batch.jar fat jar services.jar fat jar business-module1.jar fat jar business-module-n.jar Service some api Service some api Service some api Service some api Service some api Service some api businesslogic.jar Rest-api-layer businesslogic.jar Rest-api-layer businesslogic.jar Rest-api-layer businesslogic.jar Rest-api-layer businesslogic.jar Rest-api-layer businesslogic.jar Rest-api-layer The path -> Split the frontend from the backend Rest API
  • 38. @betoSalazar https://vertx.io/docs/vertx-core/java/ Vert.x The path -> Split the frontend from the backend Rest API
  • 39. @betoSalazar https://javaee.github.io/tutorial/jaxrs003.html JAX-RS JEE 8 The path -> Split the frontend from the backend Rest API
  • 40. @betoSalazar The path -> Secure your API POST bank.com/api/v1/accouts POST bank.com/api/v1/accouts Secure your API JWT JSON WEB TOKEN & Authorization Server https://jwt.io/ https://auth0.com https://auth0.com/blog/implementing-jwt-authentication-on- spring-boot/ https://auth0.com/blog/securing-spring-boot-with-jwts/ fat jar api-gateway.jar Services api rest logstash Database Login Angular nodejs Transaction Angular nodejs Module n Angular nodejs Osgi container engine-orchestrator.jar Osgi container dynamic-camel-routes.jar fat jar batch.jar fat jar services.jar fat jar business-module1.jar fat jar business-module-n.jar Service some api Service some api Service some api Service some api Service some api Service some api Rest-api-layer Rest-api-layer Rest-api-layer Rest-api-layer Rest-api-layer Rest-api-layer
  • 41. @betoSalazar https://auth0.com/blog/securing-spring-boot-with-jwts/ JWT + + Springboot + Spring Security The path -> Secure your API
  • 43. @betoSalazar The path -> Discovery Services https://hazelcast.org/ Discovery services to inspect or rely on the contents of any named IMap Hazelcast Discovery Services via IMDG backbone of your Microservices architecture POST bank.com/api/v1/accouts Rest endpoints & API Gateway fat jar api-gateway.jar Services api rest Osgi container engine-orchestrator.jar Osgi container dynamic-camel-routes.jar fat jar batch.jar fat jar services.jar fat jar business-module1.jar fat jar business-module-n.jar Service some api Service some api Service some api Service some api Service some api Service some api businesslogic.jar Rest-api-layer businesslogic.jar Rest-api-layer businesslogic.jar Rest-api-layer businesslogic.jar Rest-api-layer businesslogic.jar Rest-api-layer businesslogic.jar Rest-api-layer
  • 44. @betoSalazar The path Split de database https://flywaydb.org/ https://developers.redhat.com/promotions/migrating- to-microservice-databases/ - Consistency Models: Strong vs Eventual consistency - Materalized views - ETL Tools Automate your database migration fat jar api-gateway.jar Services api rest logstash POST bank.com/api/v1/accouts POST bank.com/api/v1/accouts Login Angular nodejs Transaction Angular nodejs Module n Angular nodejs Osgi container engine-orchestrator.jar Osgi container dynamic-camel-routes.jar fat jar batch.jar fat jar services.jar fat jar business-module1.jar fat jar business-module-n.jar Service some api Service some api Service some api Service some api Service some api Service some api businesslogic.jar Rest-api-layer businesslogic.jar Rest-api-layer businesslogic.jar Rest-api-layer businesslogic.jar Rest-api-layer businesslogic.jar Rest-api-layer businesslogic.jar Rest-api-layer
  • 45. @betoSalazar The path Don’t forget the frontend & the agility https://jwt.io/ https://nodejs.org/es/ https://facebook.github.io/react/ https://angular.io/ https://facebook.github.io/react-native/ fat jar api-gateway.jar Services api rest POST bank.com/api/v1/accouts POST bank.com/api/v1/accouts logstash Login Angular nodejs Transaction Angular nodejs Module n Angular nodejs Osgi container engine-orchestrator.jar Osgi container dynamic-camel-routes.jar fat jar batch.jar fat jar services.jar fat jar business-module1.jar fat jar business-module-n.jar Service some api Service some api Service some api Service some api Service some api Service some api businesslogic.jar Rest-api-layer businesslogic.jar Rest-api-layer businesslogic.jar Rest-api-layer businesslogic.jar Rest-api-layer businesslogic.jar Rest-api-layer businesslogic.jar Rest-api-layer JWT JSON WEB TOKEN & Authorization Server
  • 47. Containers - Orchestrators - Cloud @betoSalazar Istio: Service Mesh Containers (Docker) -> Manage the same code + environment in diferente stages Orchestrators (Kubernetes, Docker Swarm, Mesos) -> We need to orchestrated our containers Cloud (eg. Oracle Cloud, Google Cloud, AWS, Azure, Bluemix)
  • 49. @betoSalazar The conclusion Microservices Architecture Losses ! Transactions ! Single data repository ! Better problems solver needed (Developers / architects) ! the system and services have to deal with network communications, failures, rebalances, splits.
  • 50. @betoSalazar The conclusion Recommendations Design your application modular (either monolith, OSGi or microservices) Continuously refactor your modules or microservices to achieve optimal boundaries Monolithic apps only look simple from the outside, but you just open the box Care about logs, monitoring and always use a CORRELATIONID and MDC (Mapped Diagnostic Context) We need to deal with service load balance, monitoring, security
  • 51. @betoSalazar Recommendations Use Docker + Kubernates + Istio Automate the deployment and delivery process -> CI & CD -> DEVOPS Culture Design for failover, Service load balancing and automatic scaling, data Separation, Integrity, Performance Use lightweight frameworks or java containers (Karaf, Vert.x, Spring boot, Microprofile (Payara, WildFly Swarm, OpenLiberty, TomEE)) Secure your APIs - JWT json web token, Json Web Signature, Json Web Encryption The conclusion
  • 54. asalazar@advlatam.com @betoSalazar THANK YOU Auth0 Ambassadors. Helping the developer community make the internet safer.