SlideShare a Scribd company logo
1 of 22
UNDERSTANDING
MICROSERVICES
VENKATT GUHESAN
MAY 2019
9/7/2019 2
OUR GOAL TODAY
- Me ;-)
UNDERSTANDING OUR HUMAN JOURNEY WILL
HELP YOU IDENTIFY WHERE WE ARE GOING
AND HOPEFULLY UNDERSTAND THE PLACE
FOR MICROSERVICES IN THIS JOURNEY AND
THE FUTURE AHEAD
Putting this differently… I can’t teach you microservices in one hour! But I can take you
through a journey that shows you - how we got here, different solutions engineered by
others to solve the problem of Microservices, why there is a need for this type of
framework, different ways to slice and dice the problem and hopefully you can have
enough tools to help you invent your own ** Microservices ** solution!
9/7/2019 3
MICROSERVICES – DEFINITION (CURRENT)
Microservices is a software development technique where
the components (or parts of the application) are:
1. Loosely Coupled
2. Highly Maintainable
3. Independently Deployable
So any application you’re developing that
meets the three criteria can be technically
called a “microservice”.
Three-Criteria applied:
Yesterday vs. Today vs. Tomorrow
== totally different results
9/7/2019 4
MICROSERVICES – REALITY
Let’s take a look at how we got here in the
next set of slides … The Journey
9/7/2019 5
LEGACY MONOLITHIC APPLICATION STRUCTURE
Browser
Load-Balancer
+
Apache or Nginx
Tomcat
WAR
Authentication
StoreFront
Shopping Cart
Checkout
Credit-card Processor
Service
Order Mgt.
Roles & Rights Mgt.
Monolithic
Database
Relational Data
Session Management
Shopping Cart Data
External
Credit-card
Processor
Perl, PHP, Cold Fusion were
dominating this scene and
Java was making it’s mark!
dial-up
telephony
service
WAR file deployed in multiple servers to
scale horizontally
9/7/2019 6
SCALING OUT A LEGACY MONOLITHIC APPLICATION
Monolithic
DatabaseMonolithic
Database
9/7/2019 7
LEGACY MONOLITHIC APPLICATION DEFICIENCIES
Then came Containers/J2EE/EJBs
 Threads were the bottleneck, this fueled …
 Servers with multi-CPUs and …
 Introduced the concept of multi-cores
But fundamentally they were suffering from:
 Limited Concurrent-Processing
 Limited in capacity/clustering using
Memcached and other similar disk-
persistence technologies
 Easy prey to DoS attacks (which proliferated
the Load-Balancer market space)
9/7/2019 8
ENTERPRISE (J2EE) APPLICATION STRUCTURE
Tomcat
WAR
Authentication
StoreFront
Shopping Cart
Checkout
Credit-card Processor
Service
Order Mgt.
Roles & Rights
Mgt.
Database
Relational Data
Session Management
Shopping Cart Data
Authentication
Service
EJB
Access Rights
Service
Shopping Cart
Service
EJB
Access Rights
Service
.
.
.
Database
J2EE Container
Java is now used
extensively on the server-
side and led to the growth
of the Enterprise
Perl, PHP, Cold Fusion are
slowly being replaced!
DATA
WAREHOUSING
9/7/2019 9
ENTERPRISE (J2EE) APPLICATION DEFICIENCIES
 Threads were still the bottleneck
 But then came multi-cores & multi-CPU’s to push us forward (this
meant more POSIX threads)
 Reaching 10K concurrent connections was still an issue.
But the underlying problem was shifted to
multiple tiers there-by giving the illusion
of scaling. But this new architecture
gave rise to lookup services/RMI/JNDI
Then came Rod Johnson who introduced the
Java world to Spring / DI / IoC… which brought
us to the “age of the simple-container”
9/7/2019 10
AGE OF THE SIMPLE-CONTAINER
 Java was the ruler in this domain!
 Dependency Injection & Inversion of
Control meets modern world
 Simplified Software Development &
Deployment
Simple (Web/REST) Container
JMS
Entity
Beans
Session
Beans
But in this world how does one SCALE UP?
The World looks back in time
&
Erlang comes to the rescue with Actor-Message
(“little engine that could” from the telecom era)
Welcome to the world of Queues
- RabbitMQ, ZeroMQ
- MuleSoft
- Camel etc.
 Enterprise Service Bus [ESB]
In between all of this the
web hosting world was shifting to a CLOUD
9/7/2019 11
BIRTH-OF-THE-CLOUD VS THE ENTERPRISE
• The generation that was left behind in
the web world with PHP, Cold Fusion,
Perl got a new boost with the cloud.
They began reinventing the old tools in
a new paradigm.
• Newer easy to deploy, easy to spin off
new instances and tool sets such as
Python, Ruby began to populate the
landscape.
• Ruby on Rails, Django for Python,
CakePHP for PHP were showing off how
easy it is to create applications
• To compete with this Java introduces
Groovy (and Grails) … this revolution
eventually takes us to POLYGOT
software development! Scripting
language support gets introduced into
Java
Cloud @ The Enterprise
Exponential
growth of data
• Data storage solutions increases to
support the increased data growth
• Map-Reduce comes to the rescue for
searching through the forest for a
needle.
• Distributed File systems takes center-
stage introducing Peta Bytes and Yeta
Bytes into our everyday vocabulary
• Java solves the challenges with Hadoop,
HDFS
DATA BECOMES THE KING
To support this new wave, there is a silent revolution going on in
the back-drop within the storage world with iSCSI, de-duping,
multipath, RAID-10, Fiber-Channel, Infiniband, dNFS, ZeroCopy,
etc.
9/7/2019 12
DATA MEETS THE CLOUD… EVENT-LOOP/KQUEUE
With better tools and services for easy
deployment folks began experimenting
with technologies that dominated the
browser-side such as:
• V8 engine for JavaScript leveraging the
event-loop
• Services like Heroku, Digital Ocean
began to take over.
• World of Cloud Applications and
scripting languages like Python, Ruby,
Closure began to proliferate
• To complete with that Java secret
weapon:
• Spring Boot > Micronaut
• GraalVM (more on this in the next slides)
• Everyone can own a piece of the pie and the BIG
DREAM
• Spinning new instances for scaling up and down
became the norm
• This laid the perfect breading ground for …
MICROSERVICES
Small loosely coupled, highly maintainable,
independently deployable pieces of components that
makes up a BIG application
Node JS and similar languages solved the 10K
problem but then inherited limitations within
the run-time engine and context switching!
9/7/2019 13
THROUGHOUT THIS JOURNEY THERE HAS ALWAYS BEEN A
NEED FOR A COMMON SET OF CORE PRINCIPLES AND
SERVICES TO MAKE THIS TECHNOLOGY EVOLUTION POSSIBLE
THE COMMON THREAD
 Configuration Management
 Service Discovery & Lookup
 Load Balancing
 API Gateway (service gateway)
 Security
 Logging > (centralized logging)
 Application Tracing (distributed tracing)
 Debugging
 Fault-Tolerance (Resilience)
 Packaging, Deployment, Scheduling
 Job Management
The very same concerns that existed since the microbial/mainframe days still
exist today in microservices but how we solve them in the world of
microservices is evolving!
How we leverage this trend and use it to our needs defines our prosperity!
9/7/2019 14
MICROSERVICES AT 30,000 FEET
https://martinfowler.com/articles/microservices.html
https://microservices.io/
9/7/2019 15
MICROSERVICES – THE CURRENT TREND
 Configuration Management ……............................... Spring Config
 Service Discovery & Lookup ……………………………….... Netflix Eureka/etcd/Consul/ZooKeeper
 Load Balancing … Nginx / F5 BIG IP/ Netflix Ribbon / Riot Games / AWS Route 53 / RedBird
 API Gateway (service gateway) ……….. Application Specific (REST API) – Tyk, Kong, Gravitee
 Security ………….. Application Specific Dominance (Spring Cloud Zuul)
 Logging > (centralized logging) ………. ELK Stack / Splunk
 Application Tracing (distributed tracing) ….. Spring Spectator & Atlas / Grafana | Zipkin | Jaeger
 Debugging …… GrayLog, ELK, Splunk
 Fault-Tolerance (Resilience) …… Spring Hystrix, Turbine, Ribbon , Kong, Resilience4j
 Packaging ……….. Native to language, Java > Maven, Node > npm, etc.
 Deployment ………………. container-specific, cloud-specific
 Scheduling …… Kafka, Walmart Labs BigBen, Celery Job queue, Risque for Ruby
 Job Management ….. SLURM, Torque, PBS Pro, Open Lava
 Authentication ……… Kong/OAUTH/JWT
9/7/2019 16
EVOLVING TOOL CHAINS EXAMPLE
• Service Discovery & Registry: Netflix Eureka  ??? (Netflix has discontinued development – hence the
proliferation of new services)
• Deployment: Netflix Asgard (deprecated)  Spinnaker (red/black | blue/green deployments)
With so many tools to learn – which basket should I put my eggs?
 Focus on learning the patterns that serve the Microservices architecture rather than a specific
framework
 Let the technology-leads at large-organizations cherry-pick the grandiose pieces
 Since we are a Java-shop, learn Spring-Boot, Micronaut and GraalVM
 By the time the dust settles on the Java front wrt microservices, it will be a totally different
landscape from where we are today. So understanding them at a high-level is key (not the
details – we are focusing on the broad strokes and not the finer details)
 Focus on a much simpler model (ZeroConfig) where a lot of the ground-work has been
simplified for you such as Node.js/JavaScript based Microservices frameworks like Molecular
or Cote (this will help you get a better understanding of the parts and how they are evolving)
9/7/2019 17
COMMON MICROSERVICES PATTERNS
 Circuit-Breaker pattern
 Rate-Limiter pattern
 Bulkhead (limit amount of parallel
executions)
 Retry
 Cache
 Time Limit
 Health
 {Balanced, Broadcast} Events
9/7/2019 18
JAVA GRAALVM – FUTURE DEFINED
Run Programs Faster Anywhere
GraalVM is a universal virtual machine for running
applications written in JavaScript, Python, Ruby, R, JVM-
based languages like Java, Scala, Kotlin, Clojure, and
LLVM-based languages such as C and C++.
GraalVM removes the isolation between programming
languages and enables interoperability in a shared
runtime. It can run either standalone or in the context of
OpenJDK, Node.js, Oracle Database, or MySQL.
9/7/2019 19
JAVASCRIPT – NODE.JS – COTE.JS
JavaScript / Node.js Based
 http://cote.js.org/
 https://moleculer.services/
Java-Based
 https://micronaut.io/
DEMO TIME
• Cote.js - http://cote.js.org - Javascript engineered for microservices
Recommended Learning Path:
1. Cote.js
2. Molecular.js
3. Spring Boot
4. Micronaut with Spring Config (server)
5. Eureka | Consol | ETCD
6. Understand Micronaut with Eureka
7. Zipkin
8. Jaeger
9. Tyk
10. Kong
{welcome}
website
server
welcome
componentwelcome
componentwelcome
componentwelcome
component
git clone https://vguhesan@bitbucket.org/vguhesan/understanding-microservices-demo.git
/index.html
/welcome
Demo
https://bitbucket.org/vguhesan/understanding-microservices-demo/
9/7/2019 21
NODE.JS MISUNDERSTOOD
How does node.js scale using the event loop?
Stack
bar() {…}
foo() {…}
Heap
Shared resources include:
 CPU
 Network
 Network interfaces
 Memory
 Disk
IT’S TIME TO LEAVE
YOUR OWN
FOOTPRINTS WITH
MICROSERVICES

More Related Content

What's hot

Why Traditional Anti Malware Whitepaper
Why Traditional Anti Malware WhitepaperWhy Traditional Anti Malware Whitepaper
Why Traditional Anti Malware WhitepaperAVG Technologies
 
VMUG 6 Program
VMUG 6 ProgramVMUG 6 Program
VMUG 6 Programsubtitle
 
Cloud Computing and the Promise of Everything as a Service
Cloud Computing and the Promise of Everything as a ServiceCloud Computing and the Promise of Everything as a Service
Cloud Computing and the Promise of Everything as a ServiceLew Tucker
 
Ventana Research Presents: Best Practices with Hadoop - Real World Data
Ventana Research Presents:  Best Practices with Hadoop - Real World DataVentana Research Presents:  Best Practices with Hadoop - Real World Data
Ventana Research Presents: Best Practices with Hadoop - Real World DataCloudera, Inc.
 
Are you ready for the private cloud? [WHITEPAPER]
Are you ready for the  private cloud? [WHITEPAPER]Are you ready for the  private cloud? [WHITEPAPER]
Are you ready for the private cloud? [WHITEPAPER]KVH Co. Ltd.
 
The next generation ethernet gangster (part 3)
The next generation ethernet gangster (part 3)The next generation ethernet gangster (part 3)
The next generation ethernet gangster (part 3)Jeff Green
 
CLOUD, FOG, OR SMOG?
CLOUD, FOG, OR SMOG?CLOUD, FOG, OR SMOG?
CLOUD, FOG, OR SMOG?karlmotz
 
Cloudcomputing Nivo Consultancy 26 Mei 2009 Versie 1
Cloudcomputing Nivo Consultancy 26 Mei 2009 Versie 1Cloudcomputing Nivo Consultancy 26 Mei 2009 Versie 1
Cloudcomputing Nivo Consultancy 26 Mei 2009 Versie 1Ruud Ramakers
 
Avg SMB Cloud Computing Guide 2011
Avg SMB Cloud Computing Guide 2011Avg SMB Cloud Computing Guide 2011
Avg SMB Cloud Computing Guide 2011AVG Technologies
 

What's hot (13)

MongoUK 2012
MongoUK 2012MongoUK 2012
MongoUK 2012
 
Why Traditional Anti Malware Whitepaper
Why Traditional Anti Malware WhitepaperWhy Traditional Anti Malware Whitepaper
Why Traditional Anti Malware Whitepaper
 
VMUG 6 Program
VMUG 6 ProgramVMUG 6 Program
VMUG 6 Program
 
InfoWorld
InfoWorldInfoWorld
InfoWorld
 
Cloud Computing and the Promise of Everything as a Service
Cloud Computing and the Promise of Everything as a ServiceCloud Computing and the Promise of Everything as a Service
Cloud Computing and the Promise of Everything as a Service
 
RHEV 3.0
RHEV 3.0RHEV 3.0
RHEV 3.0
 
Ventana Research Presents: Best Practices with Hadoop - Real World Data
Ventana Research Presents:  Best Practices with Hadoop - Real World DataVentana Research Presents:  Best Practices with Hadoop - Real World Data
Ventana Research Presents: Best Practices with Hadoop - Real World Data
 
Are you ready for the private cloud? [WHITEPAPER]
Are you ready for the  private cloud? [WHITEPAPER]Are you ready for the  private cloud? [WHITEPAPER]
Are you ready for the private cloud? [WHITEPAPER]
 
The next generation ethernet gangster (part 3)
The next generation ethernet gangster (part 3)The next generation ethernet gangster (part 3)
The next generation ethernet gangster (part 3)
 
Cms solution 08072010
Cms solution 08072010Cms solution 08072010
Cms solution 08072010
 
CLOUD, FOG, OR SMOG?
CLOUD, FOG, OR SMOG?CLOUD, FOG, OR SMOG?
CLOUD, FOG, OR SMOG?
 
Cloudcomputing Nivo Consultancy 26 Mei 2009 Versie 1
Cloudcomputing Nivo Consultancy 26 Mei 2009 Versie 1Cloudcomputing Nivo Consultancy 26 Mei 2009 Versie 1
Cloudcomputing Nivo Consultancy 26 Mei 2009 Versie 1
 
Avg SMB Cloud Computing Guide 2011
Avg SMB Cloud Computing Guide 2011Avg SMB Cloud Computing Guide 2011
Avg SMB Cloud Computing Guide 2011
 

Similar to Understanding Microservices

Cloudify your applications: microservices and beyond
Cloudify your applications: microservices and beyondCloudify your applications: microservices and beyond
Cloudify your applications: microservices and beyondUgo Landini
 
Building cloud-ready Microservices
Building cloud-ready MicroservicesBuilding cloud-ready Microservices
Building cloud-ready Microservicesveredflis
 
Evolving to Cloud-Native - Nate Schutta (2/2)
Evolving to Cloud-Native - Nate Schutta (2/2)Evolving to Cloud-Native - Nate Schutta (2/2)
Evolving to Cloud-Native - Nate Schutta (2/2)VMware Tanzu
 
Evolving to Cloud-Native - Nate Schutta 2/2
Evolving to Cloud-Native - Nate Schutta 2/2Evolving to Cloud-Native - Nate Schutta 2/2
Evolving to Cloud-Native - Nate Schutta 2/2VMware Tanzu
 
Microservices: Where do they fit within a rapidly evolving integration archit...
Microservices: Where do they fit within a rapidly evolving integration archit...Microservices: Where do they fit within a rapidly evolving integration archit...
Microservices: Where do they fit within a rapidly evolving integration archit...Kim Clark
 
FEVR - Micro Frontend
FEVR - Micro FrontendFEVR - Micro Frontend
FEVR - Micro FrontendMiki Lombardi
 
VMblog - 2018 Containers Predictions from 16 Industry Experts
VMblog - 2018 Containers Predictions from 16 Industry ExpertsVMblog - 2018 Containers Predictions from 16 Industry Experts
VMblog - 2018 Containers Predictions from 16 Industry Expertsvmblog
 
GHC17 Abstract: From Monolith to Microservices
GHC17 Abstract: From Monolith to MicroservicesGHC17 Abstract: From Monolith to Microservices
GHC17 Abstract: From Monolith to MicroservicesPaulaPaulSlides
 
Microservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SREMicroservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SREAraf Karsh Hamid
 
A Tale of Contemporary Software
A Tale of Contemporary SoftwareA Tale of Contemporary Software
A Tale of Contemporary SoftwareYun Zhi Lin
 
Winds of change from vender lock in to the meta cloud
Winds of change from vender lock in to the meta cloudWinds of change from vender lock in to the meta cloud
Winds of change from vender lock in to the meta cloudMunisekhar Gunapati
 
Microservices Patterns with GoldenGate
Microservices Patterns with GoldenGateMicroservices Patterns with GoldenGate
Microservices Patterns with GoldenGateJeffrey T. Pollock
 
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 TalkRed Hat Developers
 
LinuxCon North America 2013: Why Lease When You Can Buy Your Cloud
LinuxCon North America 2013: Why Lease When You Can Buy Your CloudLinuxCon North America 2013: Why Lease When You Can Buy Your Cloud
LinuxCon North America 2013: Why Lease When You Can Buy Your CloudMark Hinkle
 
All-inclusive insights on Building JavaScript microservices with Node!.pdf
All-inclusive insights on Building JavaScript microservices with Node!.pdfAll-inclusive insights on Building JavaScript microservices with Node!.pdf
All-inclusive insights on Building JavaScript microservices with Node!.pdfShelly Megan
 
Building Microservices with Micronaut: A Full-Stack JVM-Based Framework
Building Microservices with Micronaut:  A Full-Stack JVM-Based FrameworkBuilding Microservices with Micronaut:  A Full-Stack JVM-Based Framework
Building Microservices with Micronaut: A Full-Stack JVM-Based FrameworkMichael Redlich
 
Cloud Computing & Its Services.pdf
Cloud Computing & Its Services.pdfCloud Computing & Its Services.pdf
Cloud Computing & Its Services.pdfPridesys IT Ltd.
 
Agile Corporation for MIT
Agile Corporation for MITAgile Corporation for MIT
Agile Corporation for MITCaio Candido
 
Enabling application portability with the greatest of ease!
Enabling application portability with the greatest of ease!Enabling application portability with the greatest of ease!
Enabling application portability with the greatest of ease!Ken Owens
 

Similar to Understanding Microservices (20)

Cloudify your applications: microservices and beyond
Cloudify your applications: microservices and beyondCloudify your applications: microservices and beyond
Cloudify your applications: microservices and beyond
 
Building cloud-ready Microservices
Building cloud-ready MicroservicesBuilding cloud-ready Microservices
Building cloud-ready Microservices
 
Evolving to Cloud-Native - Nate Schutta (2/2)
Evolving to Cloud-Native - Nate Schutta (2/2)Evolving to Cloud-Native - Nate Schutta (2/2)
Evolving to Cloud-Native - Nate Schutta (2/2)
 
Evolving to Cloud-Native - Nate Schutta 2/2
Evolving to Cloud-Native - Nate Schutta 2/2Evolving to Cloud-Native - Nate Schutta 2/2
Evolving to Cloud-Native - Nate Schutta 2/2
 
Microservices: Where do they fit within a rapidly evolving integration archit...
Microservices: Where do they fit within a rapidly evolving integration archit...Microservices: Where do they fit within a rapidly evolving integration archit...
Microservices: Where do they fit within a rapidly evolving integration archit...
 
FEVR - Micro Frontend
FEVR - Micro FrontendFEVR - Micro Frontend
FEVR - Micro Frontend
 
VMblog - 2018 Containers Predictions from 16 Industry Experts
VMblog - 2018 Containers Predictions from 16 Industry ExpertsVMblog - 2018 Containers Predictions from 16 Industry Experts
VMblog - 2018 Containers Predictions from 16 Industry Experts
 
GHC17 Abstract: From Monolith to Microservices
GHC17 Abstract: From Monolith to MicroservicesGHC17 Abstract: From Monolith to Microservices
GHC17 Abstract: From Monolith to Microservices
 
The Future of Cloud Innovation, featuring Adrian Cockcroft
The Future of Cloud Innovation, featuring Adrian CockcroftThe Future of Cloud Innovation, featuring Adrian Cockcroft
The Future of Cloud Innovation, featuring Adrian Cockcroft
 
Microservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SREMicroservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SRE
 
A Tale of Contemporary Software
A Tale of Contemporary SoftwareA Tale of Contemporary Software
A Tale of Contemporary Software
 
Winds of change from vender lock in to the meta cloud
Winds of change from vender lock in to the meta cloudWinds of change from vender lock in to the meta cloud
Winds of change from vender lock in to the meta cloud
 
Microservices Patterns with GoldenGate
Microservices Patterns with GoldenGateMicroservices Patterns with GoldenGate
Microservices Patterns with GoldenGate
 
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
 
LinuxCon North America 2013: Why Lease When You Can Buy Your Cloud
LinuxCon North America 2013: Why Lease When You Can Buy Your CloudLinuxCon North America 2013: Why Lease When You Can Buy Your Cloud
LinuxCon North America 2013: Why Lease When You Can Buy Your Cloud
 
All-inclusive insights on Building JavaScript microservices with Node!.pdf
All-inclusive insights on Building JavaScript microservices with Node!.pdfAll-inclusive insights on Building JavaScript microservices with Node!.pdf
All-inclusive insights on Building JavaScript microservices with Node!.pdf
 
Building Microservices with Micronaut: A Full-Stack JVM-Based Framework
Building Microservices with Micronaut:  A Full-Stack JVM-Based FrameworkBuilding Microservices with Micronaut:  A Full-Stack JVM-Based Framework
Building Microservices with Micronaut: A Full-Stack JVM-Based Framework
 
Cloud Computing & Its Services.pdf
Cloud Computing & Its Services.pdfCloud Computing & Its Services.pdf
Cloud Computing & Its Services.pdf
 
Agile Corporation for MIT
Agile Corporation for MITAgile Corporation for MIT
Agile Corporation for MIT
 
Enabling application portability with the greatest of ease!
Enabling application portability with the greatest of ease!Enabling application portability with the greatest of ease!
Enabling application portability with the greatest of ease!
 

Recently uploaded

Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfngoud9212
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
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
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
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
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
"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
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
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 pragmaticsAndrey Dotsenko
 

Recently uploaded (20)

Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdf
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
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
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
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)
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
"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...
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
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
 

Understanding Microservices

  • 2. 9/7/2019 2 OUR GOAL TODAY - Me ;-) UNDERSTANDING OUR HUMAN JOURNEY WILL HELP YOU IDENTIFY WHERE WE ARE GOING AND HOPEFULLY UNDERSTAND THE PLACE FOR MICROSERVICES IN THIS JOURNEY AND THE FUTURE AHEAD Putting this differently… I can’t teach you microservices in one hour! But I can take you through a journey that shows you - how we got here, different solutions engineered by others to solve the problem of Microservices, why there is a need for this type of framework, different ways to slice and dice the problem and hopefully you can have enough tools to help you invent your own ** Microservices ** solution!
  • 3. 9/7/2019 3 MICROSERVICES – DEFINITION (CURRENT) Microservices is a software development technique where the components (or parts of the application) are: 1. Loosely Coupled 2. Highly Maintainable 3. Independently Deployable So any application you’re developing that meets the three criteria can be technically called a “microservice”. Three-Criteria applied: Yesterday vs. Today vs. Tomorrow == totally different results
  • 4. 9/7/2019 4 MICROSERVICES – REALITY Let’s take a look at how we got here in the next set of slides … The Journey
  • 5. 9/7/2019 5 LEGACY MONOLITHIC APPLICATION STRUCTURE Browser Load-Balancer + Apache or Nginx Tomcat WAR Authentication StoreFront Shopping Cart Checkout Credit-card Processor Service Order Mgt. Roles & Rights Mgt. Monolithic Database Relational Data Session Management Shopping Cart Data External Credit-card Processor Perl, PHP, Cold Fusion were dominating this scene and Java was making it’s mark! dial-up telephony service WAR file deployed in multiple servers to scale horizontally
  • 6. 9/7/2019 6 SCALING OUT A LEGACY MONOLITHIC APPLICATION Monolithic DatabaseMonolithic Database
  • 7. 9/7/2019 7 LEGACY MONOLITHIC APPLICATION DEFICIENCIES Then came Containers/J2EE/EJBs  Threads were the bottleneck, this fueled …  Servers with multi-CPUs and …  Introduced the concept of multi-cores But fundamentally they were suffering from:  Limited Concurrent-Processing  Limited in capacity/clustering using Memcached and other similar disk- persistence technologies  Easy prey to DoS attacks (which proliferated the Load-Balancer market space)
  • 8. 9/7/2019 8 ENTERPRISE (J2EE) APPLICATION STRUCTURE Tomcat WAR Authentication StoreFront Shopping Cart Checkout Credit-card Processor Service Order Mgt. Roles & Rights Mgt. Database Relational Data Session Management Shopping Cart Data Authentication Service EJB Access Rights Service Shopping Cart Service EJB Access Rights Service . . . Database J2EE Container Java is now used extensively on the server- side and led to the growth of the Enterprise Perl, PHP, Cold Fusion are slowly being replaced! DATA WAREHOUSING
  • 9. 9/7/2019 9 ENTERPRISE (J2EE) APPLICATION DEFICIENCIES  Threads were still the bottleneck  But then came multi-cores & multi-CPU’s to push us forward (this meant more POSIX threads)  Reaching 10K concurrent connections was still an issue. But the underlying problem was shifted to multiple tiers there-by giving the illusion of scaling. But this new architecture gave rise to lookup services/RMI/JNDI Then came Rod Johnson who introduced the Java world to Spring / DI / IoC… which brought us to the “age of the simple-container”
  • 10. 9/7/2019 10 AGE OF THE SIMPLE-CONTAINER  Java was the ruler in this domain!  Dependency Injection & Inversion of Control meets modern world  Simplified Software Development & Deployment Simple (Web/REST) Container JMS Entity Beans Session Beans But in this world how does one SCALE UP? The World looks back in time & Erlang comes to the rescue with Actor-Message (“little engine that could” from the telecom era) Welcome to the world of Queues - RabbitMQ, ZeroMQ - MuleSoft - Camel etc.  Enterprise Service Bus [ESB] In between all of this the web hosting world was shifting to a CLOUD
  • 11. 9/7/2019 11 BIRTH-OF-THE-CLOUD VS THE ENTERPRISE • The generation that was left behind in the web world with PHP, Cold Fusion, Perl got a new boost with the cloud. They began reinventing the old tools in a new paradigm. • Newer easy to deploy, easy to spin off new instances and tool sets such as Python, Ruby began to populate the landscape. • Ruby on Rails, Django for Python, CakePHP for PHP were showing off how easy it is to create applications • To compete with this Java introduces Groovy (and Grails) … this revolution eventually takes us to POLYGOT software development! Scripting language support gets introduced into Java Cloud @ The Enterprise Exponential growth of data • Data storage solutions increases to support the increased data growth • Map-Reduce comes to the rescue for searching through the forest for a needle. • Distributed File systems takes center- stage introducing Peta Bytes and Yeta Bytes into our everyday vocabulary • Java solves the challenges with Hadoop, HDFS DATA BECOMES THE KING To support this new wave, there is a silent revolution going on in the back-drop within the storage world with iSCSI, de-duping, multipath, RAID-10, Fiber-Channel, Infiniband, dNFS, ZeroCopy, etc.
  • 12. 9/7/2019 12 DATA MEETS THE CLOUD… EVENT-LOOP/KQUEUE With better tools and services for easy deployment folks began experimenting with technologies that dominated the browser-side such as: • V8 engine for JavaScript leveraging the event-loop • Services like Heroku, Digital Ocean began to take over. • World of Cloud Applications and scripting languages like Python, Ruby, Closure began to proliferate • To complete with that Java secret weapon: • Spring Boot > Micronaut • GraalVM (more on this in the next slides) • Everyone can own a piece of the pie and the BIG DREAM • Spinning new instances for scaling up and down became the norm • This laid the perfect breading ground for … MICROSERVICES Small loosely coupled, highly maintainable, independently deployable pieces of components that makes up a BIG application Node JS and similar languages solved the 10K problem but then inherited limitations within the run-time engine and context switching!
  • 13. 9/7/2019 13 THROUGHOUT THIS JOURNEY THERE HAS ALWAYS BEEN A NEED FOR A COMMON SET OF CORE PRINCIPLES AND SERVICES TO MAKE THIS TECHNOLOGY EVOLUTION POSSIBLE THE COMMON THREAD  Configuration Management  Service Discovery & Lookup  Load Balancing  API Gateway (service gateway)  Security  Logging > (centralized logging)  Application Tracing (distributed tracing)  Debugging  Fault-Tolerance (Resilience)  Packaging, Deployment, Scheduling  Job Management The very same concerns that existed since the microbial/mainframe days still exist today in microservices but how we solve them in the world of microservices is evolving! How we leverage this trend and use it to our needs defines our prosperity!
  • 14. 9/7/2019 14 MICROSERVICES AT 30,000 FEET https://martinfowler.com/articles/microservices.html https://microservices.io/
  • 15. 9/7/2019 15 MICROSERVICES – THE CURRENT TREND  Configuration Management ……............................... Spring Config  Service Discovery & Lookup ……………………………….... Netflix Eureka/etcd/Consul/ZooKeeper  Load Balancing … Nginx / F5 BIG IP/ Netflix Ribbon / Riot Games / AWS Route 53 / RedBird  API Gateway (service gateway) ……….. Application Specific (REST API) – Tyk, Kong, Gravitee  Security ………….. Application Specific Dominance (Spring Cloud Zuul)  Logging > (centralized logging) ………. ELK Stack / Splunk  Application Tracing (distributed tracing) ….. Spring Spectator & Atlas / Grafana | Zipkin | Jaeger  Debugging …… GrayLog, ELK, Splunk  Fault-Tolerance (Resilience) …… Spring Hystrix, Turbine, Ribbon , Kong, Resilience4j  Packaging ……….. Native to language, Java > Maven, Node > npm, etc.  Deployment ………………. container-specific, cloud-specific  Scheduling …… Kafka, Walmart Labs BigBen, Celery Job queue, Risque for Ruby  Job Management ….. SLURM, Torque, PBS Pro, Open Lava  Authentication ……… Kong/OAUTH/JWT
  • 16. 9/7/2019 16 EVOLVING TOOL CHAINS EXAMPLE • Service Discovery & Registry: Netflix Eureka  ??? (Netflix has discontinued development – hence the proliferation of new services) • Deployment: Netflix Asgard (deprecated)  Spinnaker (red/black | blue/green deployments) With so many tools to learn – which basket should I put my eggs?  Focus on learning the patterns that serve the Microservices architecture rather than a specific framework  Let the technology-leads at large-organizations cherry-pick the grandiose pieces  Since we are a Java-shop, learn Spring-Boot, Micronaut and GraalVM  By the time the dust settles on the Java front wrt microservices, it will be a totally different landscape from where we are today. So understanding them at a high-level is key (not the details – we are focusing on the broad strokes and not the finer details)  Focus on a much simpler model (ZeroConfig) where a lot of the ground-work has been simplified for you such as Node.js/JavaScript based Microservices frameworks like Molecular or Cote (this will help you get a better understanding of the parts and how they are evolving)
  • 17. 9/7/2019 17 COMMON MICROSERVICES PATTERNS  Circuit-Breaker pattern  Rate-Limiter pattern  Bulkhead (limit amount of parallel executions)  Retry  Cache  Time Limit  Health  {Balanced, Broadcast} Events
  • 18. 9/7/2019 18 JAVA GRAALVM – FUTURE DEFINED Run Programs Faster Anywhere GraalVM is a universal virtual machine for running applications written in JavaScript, Python, Ruby, R, JVM- based languages like Java, Scala, Kotlin, Clojure, and LLVM-based languages such as C and C++. GraalVM removes the isolation between programming languages and enables interoperability in a shared runtime. It can run either standalone or in the context of OpenJDK, Node.js, Oracle Database, or MySQL.
  • 19. 9/7/2019 19 JAVASCRIPT – NODE.JS – COTE.JS JavaScript / Node.js Based  http://cote.js.org/  https://moleculer.services/ Java-Based  https://micronaut.io/ DEMO TIME • Cote.js - http://cote.js.org - Javascript engineered for microservices Recommended Learning Path: 1. Cote.js 2. Molecular.js 3. Spring Boot 4. Micronaut with Spring Config (server) 5. Eureka | Consol | ETCD 6. Understand Micronaut with Eureka 7. Zipkin 8. Jaeger 9. Tyk 10. Kong
  • 21. 9/7/2019 21 NODE.JS MISUNDERSTOOD How does node.js scale using the event loop? Stack bar() {…} foo() {…} Heap Shared resources include:  CPU  Network  Network interfaces  Memory  Disk
  • 22. IT’S TIME TO LEAVE YOUR OWN FOOTPRINTS WITH MICROSERVICES