SlideShare a Scribd company logo
1 of 48
Service Architecture
www.craftsmans.lv
Eduards Sizovs
eduards.sizovs@gmail.com
www.linkedin.com/in/eduardsi
@eduardsi on Twitter
Who is broadcasting?
Agenda
• Anatomy of a micro service
• Micro service architecture by example
• The Good Parts of the solution
• Tooling
• Q&A
Anatomy of a micro service
Micro services are tiny apps talking
via uniform interface
installed as well-behaved OS
services.
java –jar micro-service.jar config.yml
Traditional application vs. µservice based
Micro service architecture by example
Dropwizard
• Jetty
• Jersey
• Jackson
• Metrics
• Guava
• Joda Time
• Hibernate Validator
• LiquiBase
• YAML configuration
• Graceful shutdown
• Command-line API
Foundation for production
ready micro services
developed by
Dropwizard on InfoQ  goo.gl/2RYALb
Command-line API?
unrecognized argument '--tpye'
Did you mean:
--type
Internal Loan Underwriting System
Requirement №1
Perform underwriting according to rules specified
in DSL and store decisions in relational DB.
“…according to rules specified in DSL
DSL hero is…
RDB hero is…
“…and store decisions in Relational DB
Underwriter
Relational
DB
RESTful API / JSON
Internal Loan Underwriting System
Requirement №2
Fancy back-office application that allows users to perform
underwriting and look over decisions.
Why separate micro service?
• Back-office is a regular client. Many still to come.
• Back-office is stateful
• Back-office is server-centric, no JavaScript experience
• Independent coding, testing & deployment
“…fancy back-office application
Fancy UI hero is…
…because we’re close to Finland
Underwriter
Relational
DB
Back-Office
Internal Loan Underwriting System
Requirement №3
Collect credit history from various 3rd party providers in
parallel.
Why separate micro service?
• SRP!
• We have a team of Scala enthusiasts
• ... which never Bootstrapped apps from scratch
• Operations must self-heal in case of failure – Akka
Underwriter
Relational
DB
Back-Office
Credit History
Collector
Internal Loan Underwriting System
Requirement №4
Project codename «CHNAPI» - API for our brand new
partner «Chuck Norris».
Why separate micro service?
• Public service must run in DMZ
• Huge number of requests – queuing is a must
• Underwriter is not ready to scale – other dev priorities
• We don’t know what kind of architecture to apply yet
Underwriter & CHNAPI Gateway integration
• Push can cause overload
• What if Underwriter is down?
Underwriter CHNAPI
Gateway?
HTTP
Underwriter CHNAPI
Gateway
• More elements in chain
• How well does it scale?
JMSUnderwriter
CHNAPI
Gateway
• CHNAPI exposes Feed
• Underwriter polls CHNAPI
for updates
Underwriter CHNAPI
Gateway
HTTP Polling
WebSockets Web Hooks
Underwriter CHNAPI
Gateway
HTTP
Polling
CHNAPI
Gateway
CHNAPI
Gateway
Load
Balancer
Load
Balancer
DMZ
CHNAPI Gateway
JSON feed, OData or custom-crafted
Any JSON storage, e.g. MongoDB
CHNAPI
Gateway
Underwriter
Relational
DB
Back-Office
Credit History
Collector
MongoDB
Internal Loan Underwriting System
Requirement №5
Chuck Norris is interested in all underwriting decisions.
Project codename «CHNORR».
Why separate micro service?
• Daily reporting, during active working hours
• External API Client with a tail of transitive dependencies
• Neightbor dev team would like to use CHNORR!
Underwriter CHNORR
CHNORR
CHNORR
DMZ
CHNORR
Load
Balancer
Events
Spring Batch
Any storage for keeping data in reporting-friendly format
HTTP
CHNAPI
Gateway
Underwriter
Relational
DB
Back-Office
Credit History
Collector
MongoDB
CHNORR
MongoDB
The Good Parts of the solution
Toolset unchained
• Architectural approaches
• Polyglot
• Storages
• Frameworks
Scalability
• HTTP stack
• Independent provisioning
• Fine tuning
• Elasticity
Independence
• Development
• Testing
• Deployment
How to deploy in a proper order?
Supply Dependency Descriptor with each
micro service. For example:
depend.yaml for foo-service
dependencies:
group: com.microservices
artifact: bar-service
version: 2.x.x
-
How to deploy in a proper order?
We can forbid deployment in the wrong order
by validating dependencies on Pipeline
2.0.0
Test Prodbar-service
1.0.0
foo-service
Test Prod
1.9.0
bar-service
1.0.0
foo-service
How to develop?
Together with Dependency Descriptor (DD), put
Vagrant file with DD-fed provisioner in a root
source directory.
- depend.yaml
- Vagrantfile
up
Launch app with test doubles in
place of real dependencies
How to test?
For every dependency create a test double
App
Foo
Bar Qux
Production
HTTP App
Foo-TD
Bar-TD
Testing
HTTP
Never mock internals. Mock externals instead.
Tooling
Testing & Live Doc 
• MOCO for test double creation
• REST-assured for testing REST APIs
• Cucumberfor describing API usage with examples
• Relishfor publishing Cucumbers online
A shipping container system for your apps
VM without an overhead of VM
Docker on InfoQ  http://goo.gl/ALnjYt
Why Docker? Why Not Chef?  goo.gl/iJ8Idl
Learn more 
• Micro Services by James Lewis  goo.gl/PS7BYK
• Micro Services by Fred George  goo.gl/dgd8Ya
http://goo.gl/khddl
Conclusion
The next morning, "we had this orgy of `one liners.' Everybody
had a one liner. Look at this, look at that. ...Everybody started
putting forth the UNIX philosophy. Write programs that do one
thing and do it well. Write programs to work together. Write
programs that handle text streams, because that is a
universal interface." Those ideas which add up to the tool
approach, were there in some unformed way before pipes, but
they really came together afterwards. Pipes became the
catalyst for this UNIX philosophy. "The tool thing has turned
out to be actually successful. With pipes, many programs
could work together, and they could work together at a
distance."
The Unix Philosophy
http://www.faqs.org/docs/artu/ch01s06.html
The next morning, "we had this orgy of `one liners.' Everybody
had a one liner. Look at this, look at that. ...Everybody started
putting forth the UNIX philosophy. Write programs that do one
thing and do it well. Write programs to work together. Write
programs that handle text streams, because that is a
universal interface." Those ideas which add up to the tool
approach, were there in some unformed way before pipes, but
they really came together afterwards. Pipes became the
catalyst for this UNIX philosophy. "The tool thing has turned
out to be actually successful. With pipes, many programs
could work together, and they could work together at a
distance."
The next morning, "we had this orgy of `one liners.' Everybody
had a one liner. Look at this, look at that. ...Everybody started
putting forth the UNIX philosophy. Write programs that do one
thing and do it well. Write programs to work together. Write
programs that handle text streams, because that is a
universal interface." Those ideas which add up to the tool
approach, were there in some unformed way before pipes, but
they really came together afterwards. Pipes became the
catalyst for this UNIX philosophy. "The tool thing has turned
out to be actually successful. With pipes, many programs
could work together, and they could work together at a
distance."
The next morning, "we had this orgy of `one liners.' Everybody
had a one liner. Look at this, look at that. ...Everybody started
putting forth the UNIX philosophy. Write programs that do one
thing and do it well. Write programs to work together. Write
programs that handle text streams, because that is a
universal interface." Those ideas which add up to the tool
approach, were there in some unformed way before pipes, but
they really came together afterwards. Pipes became the
catalyst for this UNIX philosophy. "The tool thing has turned
out to be actually successful. With pipes, many programs
could work together, and they could work together at a
distance."
The next morning, "we had this orgy of `one liners.' Everybody
had a one liner. Look at this, look at that. ...Everybody started
putting forth the UNIX philosophy. Write programs that do one
thing and do it well. Write programs to work together. Write
programs that handle text streams, because that is a
universal interface." Those ideas which add up to the tool
approach, were there in some unformed way before pipes, but
they really came together afterwards. Pipes became the
catalyst for this UNIX philosophy. "The tool thing has turned
out to be actually successful. With pipes, many programs
could work together, and they could work together at a
distance."
THANK YOU!

More Related Content

What's hot

Application Rollout - Istio
Application Rollout - Istio Application Rollout - Istio
Application Rollout - Istio Mandar Jog
 
Cloud-Native Landscape
Cloud-Native LandscapeCloud-Native Landscape
Cloud-Native LandscapeVMware Tanzu
 
Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud with...
Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud with...Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud with...
Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud with...VMware Tanzu
 
Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud - An...
Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud - An...Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud - An...
Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud - An...VMware Tanzu
 
SpringOne 2016 in a nutshell
SpringOne 2016 in a nutshellSpringOne 2016 in a nutshell
SpringOne 2016 in a nutshellJeroen Resoort
 
Go Faster - Remove Inhibitors to Rapid Innovation
Go Faster - Remove Inhibitors to Rapid InnovationGo Faster - Remove Inhibitors to Rapid Innovation
Go Faster - Remove Inhibitors to Rapid InnovationFred George
 
Microservice no fluff, the REAL stuff
Microservice no fluff, the REAL stuffMicroservice no fluff, the REAL stuff
Microservice no fluff, the REAL stuffnklmish
 
NYC Kubernetes Meetup: Ambassador and Istio - Flynn, Datawire
NYC Kubernetes Meetup: Ambassador and Istio - Flynn, DatawireNYC Kubernetes Meetup: Ambassador and Istio - Flynn, Datawire
NYC Kubernetes Meetup: Ambassador and Istio - Flynn, DatawireAmbassador Labs
 
Cloud-Native Roadshow - Landscape - Charlotte
Cloud-Native Roadshow - Landscape - Charlotte Cloud-Native Roadshow - Landscape - Charlotte
Cloud-Native Roadshow - Landscape - Charlotte VMware Tanzu
 
Microservices with Spring Boot
Microservices with Spring BootMicroservices with Spring Boot
Microservices with Spring BootRasheed Waraich
 
Detailed Introduction To Docker
Detailed Introduction To DockerDetailed Introduction To Docker
Detailed Introduction To Dockernklmish
 
Bringing DevOps to Routing with evolved XR: an overview
Bringing DevOps to Routing with evolved XR: an overviewBringing DevOps to Routing with evolved XR: an overview
Bringing DevOps to Routing with evolved XR: an overviewCisco DevNet
 
FOSDEM 2021 - Infrastructure as Code Drift & Driftctl
FOSDEM 2021 - Infrastructure as Code Drift & DriftctlFOSDEM 2021 - Infrastructure as Code Drift & Driftctl
FOSDEM 2021 - Infrastructure as Code Drift & DriftctlStephane Jourdan
 
eigr.io – a Serverless Runtime on the BEAM (ACM SIGPLAN, ICFP 2021 Erlang Wor...
eigr.io – a Serverless Runtime on the BEAM (ACM SIGPLAN, ICFP 2021 Erlang Wor...eigr.io – a Serverless Runtime on the BEAM (ACM SIGPLAN, ICFP 2021 Erlang Wor...
eigr.io – a Serverless Runtime on the BEAM (ACM SIGPLAN, ICFP 2021 Erlang Wor...MarcelLanz
 
Don't Assume Your API Gateway is Ready for Microservices
Don't Assume Your API Gateway is Ready for MicroservicesDon't Assume Your API Gateway is Ready for Microservices
Don't Assume Your API Gateway is Ready for MicroservicesAmbassador Labs
 
Programming for the Internet of Things
Programming for the Internet of ThingsProgramming for the Internet of Things
Programming for the Internet of ThingsKinoma
 
A. De Biase/C. Quatrini/M. Barsocchi - API Release Process: how to make peopl...
A. De Biase/C. Quatrini/M. Barsocchi - API Release Process: how to make peopl...A. De Biase/C. Quatrini/M. Barsocchi - API Release Process: how to make peopl...
A. De Biase/C. Quatrini/M. Barsocchi - API Release Process: how to make peopl...Codemotion
 

What's hot (20)

Application Rollout - Istio
Application Rollout - Istio Application Rollout - Istio
Application Rollout - Istio
 
Cloud-Native Landscape
Cloud-Native LandscapeCloud-Native Landscape
Cloud-Native Landscape
 
Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud with...
Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud with...Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud with...
Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud with...
 
Microservices with Spring
Microservices with SpringMicroservices with Spring
Microservices with Spring
 
Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud - An...
Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud - An...Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud - An...
Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud - An...
 
SpringOne 2016 in a nutshell
SpringOne 2016 in a nutshellSpringOne 2016 in a nutshell
SpringOne 2016 in a nutshell
 
Go Faster - Remove Inhibitors to Rapid Innovation
Go Faster - Remove Inhibitors to Rapid InnovationGo Faster - Remove Inhibitors to Rapid Innovation
Go Faster - Remove Inhibitors to Rapid Innovation
 
A sail in the cloud
A sail in the cloudA sail in the cloud
A sail in the cloud
 
Microservice no fluff, the REAL stuff
Microservice no fluff, the REAL stuffMicroservice no fluff, the REAL stuff
Microservice no fluff, the REAL stuff
 
NYC Kubernetes Meetup: Ambassador and Istio - Flynn, Datawire
NYC Kubernetes Meetup: Ambassador and Istio - Flynn, DatawireNYC Kubernetes Meetup: Ambassador and Istio - Flynn, Datawire
NYC Kubernetes Meetup: Ambassador and Istio - Flynn, Datawire
 
Cloud-Native Roadshow - Landscape - Charlotte
Cloud-Native Roadshow - Landscape - Charlotte Cloud-Native Roadshow - Landscape - Charlotte
Cloud-Native Roadshow - Landscape - Charlotte
 
Microservices with Spring Boot
Microservices with Spring BootMicroservices with Spring Boot
Microservices with Spring Boot
 
Detailed Introduction To Docker
Detailed Introduction To DockerDetailed Introduction To Docker
Detailed Introduction To Docker
 
Bringing DevOps to Routing with evolved XR: an overview
Bringing DevOps to Routing with evolved XR: an overviewBringing DevOps to Routing with evolved XR: an overview
Bringing DevOps to Routing with evolved XR: an overview
 
FOSDEM 2021 - Infrastructure as Code Drift & Driftctl
FOSDEM 2021 - Infrastructure as Code Drift & DriftctlFOSDEM 2021 - Infrastructure as Code Drift & Driftctl
FOSDEM 2021 - Infrastructure as Code Drift & Driftctl
 
eigr.io – a Serverless Runtime on the BEAM (ACM SIGPLAN, ICFP 2021 Erlang Wor...
eigr.io – a Serverless Runtime on the BEAM (ACM SIGPLAN, ICFP 2021 Erlang Wor...eigr.io – a Serverless Runtime on the BEAM (ACM SIGPLAN, ICFP 2021 Erlang Wor...
eigr.io – a Serverless Runtime on the BEAM (ACM SIGPLAN, ICFP 2021 Erlang Wor...
 
Don't Assume Your API Gateway is Ready for Microservices
Don't Assume Your API Gateway is Ready for MicroservicesDon't Assume Your API Gateway is Ready for Microservices
Don't Assume Your API Gateway is Ready for Microservices
 
Kube Apps in action
Kube Apps in actionKube Apps in action
Kube Apps in action
 
Programming for the Internet of Things
Programming for the Internet of ThingsProgramming for the Internet of Things
Programming for the Internet of Things
 
A. De Biase/C. Quatrini/M. Barsocchi - API Release Process: how to make peopl...
A. De Biase/C. Quatrini/M. Barsocchi - API Release Process: how to make peopl...A. De Biase/C. Quatrini/M. Barsocchi - API Release Process: how to make peopl...
A. De Biase/C. Quatrini/M. Barsocchi - API Release Process: how to make peopl...
 

Viewers also liked

Linux principles and philosophy
Linux principles and philosophyLinux principles and philosophy
Linux principles and philosophyFa6ma_
 
Unix philosophy and principles
Unix philosophy and principlesUnix philosophy and principles
Unix philosophy and principlesmaryamalmarrii
 
Linux principles and philosophy
Linux principles and philosophyLinux principles and philosophy
Linux principles and philosophyaliabintouq
 
Mobile Knife Fighting at JSConf US
Mobile Knife Fighting at JSConf US Mobile Knife Fighting at JSConf US
Mobile Knife Fighting at JSConf US Brian LeRoux
 
Bringing the Unix Philosophy to Big Data
Bringing the Unix Philosophy to Big DataBringing the Unix Philosophy to Big Data
Bringing the Unix Philosophy to Big Databcantrill
 
Mocking Test - QA Ninja Conf 2016
Mocking Test - QA Ninja Conf 2016Mocking Test - QA Ninja Conf 2016
Mocking Test - QA Ninja Conf 2016Renato Groff
 
Writing Well-Behaved Unix Utilities
Writing Well-Behaved Unix UtilitiesWriting Well-Behaved Unix Utilities
Writing Well-Behaved Unix UtilitiesRob Miller
 
Circuit breakers for Java: Failsafe, Javaslang-Circuitbreaker, Hystrix and Ve...
Circuit breakers for Java: Failsafe, Javaslang-Circuitbreaker, Hystrix and Ve...Circuit breakers for Java: Failsafe, Javaslang-Circuitbreaker, Hystrix and Ve...
Circuit breakers for Java: Failsafe, Javaslang-Circuitbreaker, Hystrix and Ve...Micha Kops
 
Micro Service – The New Architecture Paradigm
Micro Service – The New Architecture ParadigmMicro Service – The New Architecture Paradigm
Micro Service – The New Architecture ParadigmEberhard Wolff
 
To Microservices and Beyond
To Microservices and BeyondTo Microservices and Beyond
To Microservices and BeyondMatt Stine
 
Mockito vs JMockit, battle of the mocking frameworks
Mockito vs JMockit, battle of the mocking frameworksMockito vs JMockit, battle of the mocking frameworks
Mockito vs JMockit, battle of the mocking frameworksEndranNL
 
Using Hystrix to Build Resilient Distributed Systems
Using Hystrix to Build Resilient Distributed SystemsUsing Hystrix to Build Resilient Distributed Systems
Using Hystrix to Build Resilient Distributed SystemsMatt Jacobs
 
(ARC317) Maintaining a Resilient Front Door at Massive Scale | AWS re:Invent ...
(ARC317) Maintaining a Resilient Front Door at Massive Scale | AWS re:Invent ...(ARC317) Maintaining a Resilient Front Door at Massive Scale | AWS re:Invent ...
(ARC317) Maintaining a Resilient Front Door at Massive Scale | AWS re:Invent ...Amazon Web Services
 
How we sleep well at night using Hystrix at Finn.no
How we sleep well at night using Hystrix at Finn.noHow we sleep well at night using Hystrix at Finn.no
How we sleep well at night using Hystrix at Finn.noHenning Spjelkavik
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecturetyrantbrian
 
Microservices vs. The First Law of Distributed Objects - GOTO Nights Chicago ...
Microservices vs. The First Law of Distributed Objects - GOTO Nights Chicago ...Microservices vs. The First Law of Distributed Objects - GOTO Nights Chicago ...
Microservices vs. The First Law of Distributed Objects - GOTO Nights Chicago ...Phil Calçado
 
DDD Framework for Java: JdonFramework
DDD Framework for Java: JdonFrameworkDDD Framework for Java: JdonFramework
DDD Framework for Java: JdonFrameworkbanq jdon
 
Towards complex adaptive architectures
Towards complex adaptive architecturesTowards complex adaptive architectures
Towards complex adaptive architecturesUwe Friedrichsen
 

Viewers also liked (20)

Linux principles and philosophy
Linux principles and philosophyLinux principles and philosophy
Linux principles and philosophy
 
Unix philosophy and principles
Unix philosophy and principlesUnix philosophy and principles
Unix philosophy and principles
 
Linux principles and philosophy
Linux principles and philosophyLinux principles and philosophy
Linux principles and philosophy
 
Mobile Knife Fighting at JSConf US
Mobile Knife Fighting at JSConf US Mobile Knife Fighting at JSConf US
Mobile Knife Fighting at JSConf US
 
Bringing the Unix Philosophy to Big Data
Bringing the Unix Philosophy to Big DataBringing the Unix Philosophy to Big Data
Bringing the Unix Philosophy to Big Data
 
Mocking Test - QA Ninja Conf 2016
Mocking Test - QA Ninja Conf 2016Mocking Test - QA Ninja Conf 2016
Mocking Test - QA Ninja Conf 2016
 
Unix Philosophy
Unix PhilosophyUnix Philosophy
Unix Philosophy
 
Writing Well-Behaved Unix Utilities
Writing Well-Behaved Unix UtilitiesWriting Well-Behaved Unix Utilities
Writing Well-Behaved Unix Utilities
 
Circuit breakers for Java: Failsafe, Javaslang-Circuitbreaker, Hystrix and Ve...
Circuit breakers for Java: Failsafe, Javaslang-Circuitbreaker, Hystrix and Ve...Circuit breakers for Java: Failsafe, Javaslang-Circuitbreaker, Hystrix and Ve...
Circuit breakers for Java: Failsafe, Javaslang-Circuitbreaker, Hystrix and Ve...
 
Micro Service – The New Architecture Paradigm
Micro Service – The New Architecture ParadigmMicro Service – The New Architecture Paradigm
Micro Service – The New Architecture Paradigm
 
To Microservices and Beyond
To Microservices and BeyondTo Microservices and Beyond
To Microservices and Beyond
 
Mockito vs JMockit, battle of the mocking frameworks
Mockito vs JMockit, battle of the mocking frameworksMockito vs JMockit, battle of the mocking frameworks
Mockito vs JMockit, battle of the mocking frameworks
 
Using Hystrix to Build Resilient Distributed Systems
Using Hystrix to Build Resilient Distributed SystemsUsing Hystrix to Build Resilient Distributed Systems
Using Hystrix to Build Resilient Distributed Systems
 
Mocking
MockingMocking
Mocking
 
(ARC317) Maintaining a Resilient Front Door at Massive Scale | AWS re:Invent ...
(ARC317) Maintaining a Resilient Front Door at Massive Scale | AWS re:Invent ...(ARC317) Maintaining a Resilient Front Door at Massive Scale | AWS re:Invent ...
(ARC317) Maintaining a Resilient Front Door at Massive Scale | AWS re:Invent ...
 
How we sleep well at night using Hystrix at Finn.no
How we sleep well at night using Hystrix at Finn.noHow we sleep well at night using Hystrix at Finn.no
How we sleep well at night using Hystrix at Finn.no
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
 
Microservices vs. The First Law of Distributed Objects - GOTO Nights Chicago ...
Microservices vs. The First Law of Distributed Objects - GOTO Nights Chicago ...Microservices vs. The First Law of Distributed Objects - GOTO Nights Chicago ...
Microservices vs. The First Law of Distributed Objects - GOTO Nights Chicago ...
 
DDD Framework for Java: JdonFramework
DDD Framework for Java: JdonFrameworkDDD Framework for Java: JdonFramework
DDD Framework for Java: JdonFramework
 
Towards complex adaptive architectures
Towards complex adaptive architecturesTowards complex adaptive architectures
Towards complex adaptive architectures
 

Similar to Eduards Sizovs - Micro Service Architecture

Node js - Enterprise Class
Node js - Enterprise ClassNode js - Enterprise Class
Node js - Enterprise ClassGlenn Block
 
NumPyCNNAndroid: A Library for Straightforward Implementation of Convolutiona...
NumPyCNNAndroid: A Library for Straightforward Implementation of Convolutiona...NumPyCNNAndroid: A Library for Straightforward Implementation of Convolutiona...
NumPyCNNAndroid: A Library for Straightforward Implementation of Convolutiona...Ahmed Gad
 
Rich Web Applications with Aspenware
Rich Web Applications with AspenwareRich Web Applications with Aspenware
Rich Web Applications with AspenwareAspenware
 
Applying the Unix Philosophy to Django projects: a report from the real world
Applying the Unix Philosophy to Django projects: a report from the real worldApplying the Unix Philosophy to Django projects: a report from the real world
Applying the Unix Philosophy to Django projects: a report from the real worldFederico Capoano
 
The DIY Punk Rock DevOps Playbook
The DIY Punk Rock DevOps PlaybookThe DIY Punk Rock DevOps Playbook
The DIY Punk Rock DevOps Playbookbcantrill
 
ICON: Intelligent Container Overlays
ICON: Intelligent Container OverlaysICON: Intelligent Container Overlays
ICON: Intelligent Container OverlaysNitinder Mohan
 
Reaktive Programmierung mit den Reactive Extensions (Rx)
Reaktive Programmierung mit den Reactive Extensions (Rx)Reaktive Programmierung mit den Reactive Extensions (Rx)
Reaktive Programmierung mit den Reactive Extensions (Rx)NETUserGroupBern
 
DockerCon SF 2015: Keynote Day 1
DockerCon SF 2015: Keynote Day 1DockerCon SF 2015: Keynote Day 1
DockerCon SF 2015: Keynote Day 1Docker, Inc.
 
Global Open Source Development 2011-2014 Review and 2015 Forecast
Global Open Source Development 2011-2014 Review and 2015 ForecastGlobal Open Source Development 2011-2014 Review and 2015 Forecast
Global Open Source Development 2011-2014 Review and 2015 ForecastSammy Fung
 
Perspectives on Open
Perspectives on OpenPerspectives on Open
Perspectives on OpenTim O'Reilly
 
An introduction to Node.js
An introduction to Node.jsAn introduction to Node.js
An introduction to Node.jsKasey McCurdy
 
An Iterative Approach to Service Oriented Architecture
An Iterative Approach to Service Oriented ArchitectureAn Iterative Approach to Service Oriented Architecture
An Iterative Approach to Service Oriented ArchitectureEric Saxby
 
Achieving Visibility and Insight across OpenStack Projects.ppt
Achieving Visibility and Insight across OpenStack Projects.pptAchieving Visibility and Insight across OpenStack Projects.ppt
Achieving Visibility and Insight across OpenStack Projects.pptOpenStack Foundation
 
zAgile for OpenStack Summit - v2-3.ppt
zAgile for OpenStack Summit - v2-3.pptzAgile for OpenStack Summit - v2-3.ppt
zAgile for OpenStack Summit - v2-3.pptOpenStack Foundation
 
2016 05 sanger
2016 05 sanger2016 05 sanger
2016 05 sangerChris Dwan
 
Choosing the right Technologies for your next unicorn.
Choosing the right Technologies for your next unicorn.Choosing the right Technologies for your next unicorn.
Choosing the right Technologies for your next unicorn.Gladson DSouza
 
node.js and Containers: Dispatches from the Frontier
node.js and Containers: Dispatches from the Frontiernode.js and Containers: Dispatches from the Frontier
node.js and Containers: Dispatches from the Frontierbcantrill
 

Similar to Eduards Sizovs - Micro Service Architecture (20)

Node js - Enterprise Class
Node js - Enterprise ClassNode js - Enterprise Class
Node js - Enterprise Class
 
NumPyCNNAndroid: A Library for Straightforward Implementation of Convolutiona...
NumPyCNNAndroid: A Library for Straightforward Implementation of Convolutiona...NumPyCNNAndroid: A Library for Straightforward Implementation of Convolutiona...
NumPyCNNAndroid: A Library for Straightforward Implementation of Convolutiona...
 
Rich Web Applications with Aspenware
Rich Web Applications with AspenwareRich Web Applications with Aspenware
Rich Web Applications with Aspenware
 
Applying the Unix Philosophy to Django projects: a report from the real world
Applying the Unix Philosophy to Django projects: a report from the real worldApplying the Unix Philosophy to Django projects: a report from the real world
Applying the Unix Philosophy to Django projects: a report from the real world
 
2014 Picking a Platform by Anand Kulkarni
2014 Picking a Platform by Anand Kulkarni2014 Picking a Platform by Anand Kulkarni
2014 Picking a Platform by Anand Kulkarni
 
The DIY Punk Rock DevOps Playbook
The DIY Punk Rock DevOps PlaybookThe DIY Punk Rock DevOps Playbook
The DIY Punk Rock DevOps Playbook
 
ICON: Intelligent Container Overlays
ICON: Intelligent Container OverlaysICON: Intelligent Container Overlays
ICON: Intelligent Container Overlays
 
Reaktive Programmierung mit den Reactive Extensions (Rx)
Reaktive Programmierung mit den Reactive Extensions (Rx)Reaktive Programmierung mit den Reactive Extensions (Rx)
Reaktive Programmierung mit den Reactive Extensions (Rx)
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
DockerCon SF 2015: Keynote Day 1
DockerCon SF 2015: Keynote Day 1DockerCon SF 2015: Keynote Day 1
DockerCon SF 2015: Keynote Day 1
 
Global Open Source Development 2011-2014 Review and 2015 Forecast
Global Open Source Development 2011-2014 Review and 2015 ForecastGlobal Open Source Development 2011-2014 Review and 2015 Forecast
Global Open Source Development 2011-2014 Review and 2015 Forecast
 
Perspectives on Open
Perspectives on OpenPerspectives on Open
Perspectives on Open
 
An introduction to Node.js
An introduction to Node.jsAn introduction to Node.js
An introduction to Node.js
 
An Iterative Approach to Service Oriented Architecture
An Iterative Approach to Service Oriented ArchitectureAn Iterative Approach to Service Oriented Architecture
An Iterative Approach to Service Oriented Architecture
 
Achieving Visibility and Insight across OpenStack Projects.ppt
Achieving Visibility and Insight across OpenStack Projects.pptAchieving Visibility and Insight across OpenStack Projects.ppt
Achieving Visibility and Insight across OpenStack Projects.ppt
 
zAgile for OpenStack Summit - v2-3.ppt
zAgile for OpenStack Summit - v2-3.pptzAgile for OpenStack Summit - v2-3.ppt
zAgile for OpenStack Summit - v2-3.ppt
 
2016 05 sanger
2016 05 sanger2016 05 sanger
2016 05 sanger
 
Choosing the right Technologies for your next unicorn.
Choosing the right Technologies for your next unicorn.Choosing the right Technologies for your next unicorn.
Choosing the right Technologies for your next unicorn.
 
node.js and Containers: Dispatches from the Frontier
node.js and Containers: Dispatches from the Frontiernode.js and Containers: Dispatches from the Frontier
node.js and Containers: Dispatches from the Frontier
 
Node Js
Node JsNode Js
Node Js
 

More from DevConFu

Hanno Jarvet - Agile is a bad strategy or 5 things every Agile practitioner s...
Hanno Jarvet - Agile is a bad strategy or 5 things every Agile practitioner s...Hanno Jarvet - Agile is a bad strategy or 5 things every Agile practitioner s...
Hanno Jarvet - Agile is a bad strategy or 5 things every Agile practitioner s...DevConFu
 
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...DevConFu
 
Gojko Adzic - Taking the business on the journey - ConFu
Gojko Adzic - Taking the business on the journey - ConFuGojko Adzic - Taking the business on the journey - ConFu
Gojko Adzic - Taking the business on the journey - ConFuDevConFu
 
Vasco Duarte - Agile Innovation - Product Management in turbulent times - ConFu
Vasco Duarte - Agile Innovation - Product Management in turbulent times - ConFuVasco Duarte - Agile Innovation - Product Management in turbulent times - ConFu
Vasco Duarte - Agile Innovation - Product Management in turbulent times - ConFuDevConFu
 
Hanno Jarvet - VSM, Planning and Problem Solving - ConFu
Hanno Jarvet - VSM, Planning and Problem Solving - ConFuHanno Jarvet - VSM, Planning and Problem Solving - ConFu
Hanno Jarvet - VSM, Planning and Problem Solving - ConFuDevConFu
 
Andrey Adamovich - Enterprise flight into DevOps space - ConFu
Andrey Adamovich - Enterprise flight into DevOps space - ConFuAndrey Adamovich - Enterprise flight into DevOps space - ConFu
Andrey Adamovich - Enterprise flight into DevOps space - ConFuDevConFu
 
Jina Bolton - in the search of the single source of truth
Jina Bolton - in the search of the single source of truth Jina Bolton - in the search of the single source of truth
Jina Bolton - in the search of the single source of truth DevConFu
 
Jina bolton - Refactoring Web Interfaces
Jina bolton - Refactoring Web InterfacesJina bolton - Refactoring Web Interfaces
Jina bolton - Refactoring Web InterfacesDevConFu
 
Hanno Jarvet - The Lean Toolkit – Value Stream Mapping and Problem Solving
Hanno Jarvet - The Lean Toolkit – Value Stream Mapping and Problem SolvingHanno Jarvet - The Lean Toolkit – Value Stream Mapping and Problem Solving
Hanno Jarvet - The Lean Toolkit – Value Stream Mapping and Problem SolvingDevConFu
 
Didzis Balodis - Web application security – war stories from real penetration...
Didzis Balodis - Web application security – war stories from real penetration...Didzis Balodis - Web application security – war stories from real penetration...
Didzis Balodis - Web application security – war stories from real penetration...DevConFu
 
Ivan Gaydamakin and Juri Tishko - ​3D Printing (workshop)
Ivan Gaydamakin and Juri Tishko -  ​3D Printing (workshop)Ivan Gaydamakin and Juri Tishko -  ​3D Printing (workshop)
Ivan Gaydamakin and Juri Tishko - ​3D Printing (workshop)DevConFu
 
Robin Hawkes - Using OpenStreetMap and WebGL to create real-world cities in 3D
Robin Hawkes - Using OpenStreetMap and WebGL to create real-world cities in 3DRobin Hawkes - Using OpenStreetMap and WebGL to create real-world cities in 3D
Robin Hawkes - Using OpenStreetMap and WebGL to create real-world cities in 3DDevConFu
 
Marion de Groot - Scrum and Specs
Marion de Groot - Scrum and SpecsMarion de Groot - Scrum and Specs
Marion de Groot - Scrum and SpecsDevConFu
 
Allan Kelly - Dialogue Sheets for retrospectives and discussion
Allan Kelly - Dialogue Sheets for retrospectives and discussionAllan Kelly - Dialogue Sheets for retrospectives and discussion
Allan Kelly - Dialogue Sheets for retrospectives and discussionDevConFu
 
Robert Virkus - Playing with LEGO Mindstorms from your Mobile Phone
Robert Virkus - Playing with LEGO Mindstorms from your Mobile PhoneRobert Virkus - Playing with LEGO Mindstorms from your Mobile Phone
Robert Virkus - Playing with LEGO Mindstorms from your Mobile PhoneDevConFu
 
Misha Beshkin - How to organize execution of tests on real Android devices
Misha Beshkin - How to organize execution of tests on real Android devicesMisha Beshkin - How to organize execution of tests on real Android devices
Misha Beshkin - How to organize execution of tests on real Android devicesDevConFu
 
Jon Arne Sæterås - Give Responsive Design a mobile performance boost
Jon Arne Sæterås - Give Responsive Design a mobile performance boost Jon Arne Sæterås - Give Responsive Design a mobile performance boost
Jon Arne Sæterås - Give Responsive Design a mobile performance boost DevConFu
 
Andrey Adamovich and Luciano Fiandesio - Groovy dev ops in the cloud
Andrey Adamovich and Luciano Fiandesio - Groovy dev ops in the cloudAndrey Adamovich and Luciano Fiandesio - Groovy dev ops in the cloud
Andrey Adamovich and Luciano Fiandesio - Groovy dev ops in the cloudDevConFu
 
Patrick H. Lauke - Getting Touchy; an introduction to touch and pointer events
Patrick H. Lauke - Getting Touchy; an introduction to touch and pointer eventsPatrick H. Lauke - Getting Touchy; an introduction to touch and pointer events
Patrick H. Lauke - Getting Touchy; an introduction to touch and pointer eventsDevConFu
 
Allan Kelly - Do it right, then do the right thing
Allan Kelly - Do it right, then do the right thingAllan Kelly - Do it right, then do the right thing
Allan Kelly - Do it right, then do the right thingDevConFu
 

More from DevConFu (20)

Hanno Jarvet - Agile is a bad strategy or 5 things every Agile practitioner s...
Hanno Jarvet - Agile is a bad strategy or 5 things every Agile practitioner s...Hanno Jarvet - Agile is a bad strategy or 5 things every Agile practitioner s...
Hanno Jarvet - Agile is a bad strategy or 5 things every Agile practitioner s...
 
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
 
Gojko Adzic - Taking the business on the journey - ConFu
Gojko Adzic - Taking the business on the journey - ConFuGojko Adzic - Taking the business on the journey - ConFu
Gojko Adzic - Taking the business on the journey - ConFu
 
Vasco Duarte - Agile Innovation - Product Management in turbulent times - ConFu
Vasco Duarte - Agile Innovation - Product Management in turbulent times - ConFuVasco Duarte - Agile Innovation - Product Management in turbulent times - ConFu
Vasco Duarte - Agile Innovation - Product Management in turbulent times - ConFu
 
Hanno Jarvet - VSM, Planning and Problem Solving - ConFu
Hanno Jarvet - VSM, Planning and Problem Solving - ConFuHanno Jarvet - VSM, Planning and Problem Solving - ConFu
Hanno Jarvet - VSM, Planning and Problem Solving - ConFu
 
Andrey Adamovich - Enterprise flight into DevOps space - ConFu
Andrey Adamovich - Enterprise flight into DevOps space - ConFuAndrey Adamovich - Enterprise flight into DevOps space - ConFu
Andrey Adamovich - Enterprise flight into DevOps space - ConFu
 
Jina Bolton - in the search of the single source of truth
Jina Bolton - in the search of the single source of truth Jina Bolton - in the search of the single source of truth
Jina Bolton - in the search of the single source of truth
 
Jina bolton - Refactoring Web Interfaces
Jina bolton - Refactoring Web InterfacesJina bolton - Refactoring Web Interfaces
Jina bolton - Refactoring Web Interfaces
 
Hanno Jarvet - The Lean Toolkit – Value Stream Mapping and Problem Solving
Hanno Jarvet - The Lean Toolkit – Value Stream Mapping and Problem SolvingHanno Jarvet - The Lean Toolkit – Value Stream Mapping and Problem Solving
Hanno Jarvet - The Lean Toolkit – Value Stream Mapping and Problem Solving
 
Didzis Balodis - Web application security – war stories from real penetration...
Didzis Balodis - Web application security – war stories from real penetration...Didzis Balodis - Web application security – war stories from real penetration...
Didzis Balodis - Web application security – war stories from real penetration...
 
Ivan Gaydamakin and Juri Tishko - ​3D Printing (workshop)
Ivan Gaydamakin and Juri Tishko -  ​3D Printing (workshop)Ivan Gaydamakin and Juri Tishko -  ​3D Printing (workshop)
Ivan Gaydamakin and Juri Tishko - ​3D Printing (workshop)
 
Robin Hawkes - Using OpenStreetMap and WebGL to create real-world cities in 3D
Robin Hawkes - Using OpenStreetMap and WebGL to create real-world cities in 3DRobin Hawkes - Using OpenStreetMap and WebGL to create real-world cities in 3D
Robin Hawkes - Using OpenStreetMap and WebGL to create real-world cities in 3D
 
Marion de Groot - Scrum and Specs
Marion de Groot - Scrum and SpecsMarion de Groot - Scrum and Specs
Marion de Groot - Scrum and Specs
 
Allan Kelly - Dialogue Sheets for retrospectives and discussion
Allan Kelly - Dialogue Sheets for retrospectives and discussionAllan Kelly - Dialogue Sheets for retrospectives and discussion
Allan Kelly - Dialogue Sheets for retrospectives and discussion
 
Robert Virkus - Playing with LEGO Mindstorms from your Mobile Phone
Robert Virkus - Playing with LEGO Mindstorms from your Mobile PhoneRobert Virkus - Playing with LEGO Mindstorms from your Mobile Phone
Robert Virkus - Playing with LEGO Mindstorms from your Mobile Phone
 
Misha Beshkin - How to organize execution of tests on real Android devices
Misha Beshkin - How to organize execution of tests on real Android devicesMisha Beshkin - How to organize execution of tests on real Android devices
Misha Beshkin - How to organize execution of tests on real Android devices
 
Jon Arne Sæterås - Give Responsive Design a mobile performance boost
Jon Arne Sæterås - Give Responsive Design a mobile performance boost Jon Arne Sæterås - Give Responsive Design a mobile performance boost
Jon Arne Sæterås - Give Responsive Design a mobile performance boost
 
Andrey Adamovich and Luciano Fiandesio - Groovy dev ops in the cloud
Andrey Adamovich and Luciano Fiandesio - Groovy dev ops in the cloudAndrey Adamovich and Luciano Fiandesio - Groovy dev ops in the cloud
Andrey Adamovich and Luciano Fiandesio - Groovy dev ops in the cloud
 
Patrick H. Lauke - Getting Touchy; an introduction to touch and pointer events
Patrick H. Lauke - Getting Touchy; an introduction to touch and pointer eventsPatrick H. Lauke - Getting Touchy; an introduction to touch and pointer events
Patrick H. Lauke - Getting Touchy; an introduction to touch and pointer events
 
Allan Kelly - Do it right, then do the right thing
Allan Kelly - Do it right, then do the right thingAllan Kelly - Do it right, then do the right thing
Allan Kelly - Do it right, then do the right thing
 

Recently uploaded

Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...Akihiro Suda
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 

Recently uploaded (20)

Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 

Eduards Sizovs - Micro Service Architecture

  • 1.
  • 4. Agenda • Anatomy of a micro service • Micro service architecture by example • The Good Parts of the solution • Tooling • Q&A
  • 5. Anatomy of a micro service
  • 6. Micro services are tiny apps talking via uniform interface installed as well-behaved OS services.
  • 8.
  • 9. Traditional application vs. µservice based
  • 11. Dropwizard • Jetty • Jersey • Jackson • Metrics • Guava • Joda Time • Hibernate Validator • LiquiBase • YAML configuration • Graceful shutdown • Command-line API Foundation for production ready micro services developed by Dropwizard on InfoQ  goo.gl/2RYALb
  • 12. Command-line API? unrecognized argument '--tpye' Did you mean: --type
  • 13. Internal Loan Underwriting System Requirement №1 Perform underwriting according to rules specified in DSL and store decisions in relational DB.
  • 14. “…according to rules specified in DSL DSL hero is…
  • 15. RDB hero is… “…and store decisions in Relational DB
  • 17. Internal Loan Underwriting System Requirement №2 Fancy back-office application that allows users to perform underwriting and look over decisions. Why separate micro service? • Back-office is a regular client. Many still to come. • Back-office is stateful • Back-office is server-centric, no JavaScript experience • Independent coding, testing & deployment
  • 18. “…fancy back-office application Fancy UI hero is… …because we’re close to Finland
  • 20. Internal Loan Underwriting System Requirement №3 Collect credit history from various 3rd party providers in parallel. Why separate micro service? • SRP! • We have a team of Scala enthusiasts • ... which never Bootstrapped apps from scratch • Operations must self-heal in case of failure – Akka
  • 22. Internal Loan Underwriting System Requirement №4 Project codename «CHNAPI» - API for our brand new partner «Chuck Norris». Why separate micro service? • Public service must run in DMZ • Huge number of requests – queuing is a must • Underwriter is not ready to scale – other dev priorities • We don’t know what kind of architecture to apply yet
  • 23. Underwriter & CHNAPI Gateway integration • Push can cause overload • What if Underwriter is down? Underwriter CHNAPI Gateway? HTTP Underwriter CHNAPI Gateway • More elements in chain • How well does it scale? JMSUnderwriter CHNAPI Gateway • CHNAPI exposes Feed • Underwriter polls CHNAPI for updates Underwriter CHNAPI Gateway HTTP Polling WebSockets Web Hooks
  • 26. Internal Loan Underwriting System Requirement №5 Chuck Norris is interested in all underwriting decisions. Project codename «CHNORR». Why separate micro service? • Daily reporting, during active working hours • External API Client with a tail of transitive dependencies • Neightbor dev team would like to use CHNORR!
  • 27. Underwriter CHNORR CHNORR CHNORR DMZ CHNORR Load Balancer Events Spring Batch Any storage for keeping data in reporting-friendly format HTTP
  • 29. The Good Parts of the solution
  • 30. Toolset unchained • Architectural approaches • Polyglot • Storages • Frameworks
  • 31. Scalability • HTTP stack • Independent provisioning • Fine tuning • Elasticity
  • 33. How to deploy in a proper order? Supply Dependency Descriptor with each micro service. For example: depend.yaml for foo-service dependencies: group: com.microservices artifact: bar-service version: 2.x.x -
  • 34. How to deploy in a proper order? We can forbid deployment in the wrong order by validating dependencies on Pipeline 2.0.0 Test Prodbar-service 1.0.0 foo-service Test Prod 1.9.0 bar-service 1.0.0 foo-service
  • 35. How to develop? Together with Dependency Descriptor (DD), put Vagrant file with DD-fed provisioner in a root source directory. - depend.yaml - Vagrantfile up Launch app with test doubles in place of real dependencies
  • 36. How to test? For every dependency create a test double App Foo Bar Qux Production HTTP App Foo-TD Bar-TD Testing HTTP Never mock internals. Mock externals instead.
  • 37.
  • 39. Testing & Live Doc  • MOCO for test double creation • REST-assured for testing REST APIs • Cucumberfor describing API usage with examples • Relishfor publishing Cucumbers online
  • 40.
  • 41.
  • 42.
  • 43. A shipping container system for your apps VM without an overhead of VM Docker on InfoQ  http://goo.gl/ALnjYt Why Docker? Why Not Chef?  goo.gl/iJ8Idl
  • 44. Learn more  • Micro Services by James Lewis  goo.gl/PS7BYK • Micro Services by Fred George  goo.gl/dgd8Ya
  • 47. The next morning, "we had this orgy of `one liners.' Everybody had a one liner. Look at this, look at that. ...Everybody started putting forth the UNIX philosophy. Write programs that do one thing and do it well. Write programs to work together. Write programs that handle text streams, because that is a universal interface." Those ideas which add up to the tool approach, were there in some unformed way before pipes, but they really came together afterwards. Pipes became the catalyst for this UNIX philosophy. "The tool thing has turned out to be actually successful. With pipes, many programs could work together, and they could work together at a distance." The Unix Philosophy http://www.faqs.org/docs/artu/ch01s06.html The next morning, "we had this orgy of `one liners.' Everybody had a one liner. Look at this, look at that. ...Everybody started putting forth the UNIX philosophy. Write programs that do one thing and do it well. Write programs to work together. Write programs that handle text streams, because that is a universal interface." Those ideas which add up to the tool approach, were there in some unformed way before pipes, but they really came together afterwards. Pipes became the catalyst for this UNIX philosophy. "The tool thing has turned out to be actually successful. With pipes, many programs could work together, and they could work together at a distance." The next morning, "we had this orgy of `one liners.' Everybody had a one liner. Look at this, look at that. ...Everybody started putting forth the UNIX philosophy. Write programs that do one thing and do it well. Write programs to work together. Write programs that handle text streams, because that is a universal interface." Those ideas which add up to the tool approach, were there in some unformed way before pipes, but they really came together afterwards. Pipes became the catalyst for this UNIX philosophy. "The tool thing has turned out to be actually successful. With pipes, many programs could work together, and they could work together at a distance." The next morning, "we had this orgy of `one liners.' Everybody had a one liner. Look at this, look at that. ...Everybody started putting forth the UNIX philosophy. Write programs that do one thing and do it well. Write programs to work together. Write programs that handle text streams, because that is a universal interface." Those ideas which add up to the tool approach, were there in some unformed way before pipes, but they really came together afterwards. Pipes became the catalyst for this UNIX philosophy. "The tool thing has turned out to be actually successful. With pipes, many programs could work together, and they could work together at a distance." The next morning, "we had this orgy of `one liners.' Everybody had a one liner. Look at this, look at that. ...Everybody started putting forth the UNIX philosophy. Write programs that do one thing and do it well. Write programs to work together. Write programs that handle text streams, because that is a universal interface." Those ideas which add up to the tool approach, were there in some unformed way before pipes, but they really came together afterwards. Pipes became the catalyst for this UNIX philosophy. "The tool thing has turned out to be actually successful. With pipes, many programs could work together, and they could work together at a distance."

Editor's Notes

  1. Who have heard about micro services? Tiny: lightweight, small footprint, follow SRP Uniform interface: RESTful. Decoupled, Scalable, Discoverable. OS services: self-contained, run with a single one-liner: “jar – jar”, grab port & listen. No more arcane app servers. Use existing OS process management tool
  2. A methodology for building software-as-a-service apps, comprises 12 rules you must learn after this presentation. Says a lot about configuration, logging, concurrency etc.
  3. Evident differences: A lot of moving parts working together to achieve app’s goal Small Simple internal structure Micro-service is SOA application put to Nth (entieich) degree.
  4. Build Internal Loan Underwriting System based on “micro-service architecture” step by step.
  5. Time to create the 1st micro service!
  6. Serious breakup – now MySQL is single, so let’s take the opportunity 
  7. --- Not sure what INTERNAL architecture to apply – to minimize risk of failure, let’s separate services!! Welcome CHNAPI Gateway: Implements Chuck Norris API Transforms external request to a format understood by Underwriter Scales according to Chuck Norris needs
  8. How well does it scale: Eventually I’ll have to scale both JMS and CHNAPI gateway
  9. - Time to unlock our data and publish events so others can benefit. Let’s do it via HTTP! - Now we have a simple business processes span 1+ system. Middleware/ESBs for Orchestration suck! Prefer choreography
  10. Challenges are defeated! For quite simple app we’ve built 5 independently deployable micro services.
  11. Frameworks: No jar hell. Downgrade CXF example. Summary: Developers can experiment & leverage their skillset better Less risk of failure (Disposable – rewrite over maintain)
  12. HTTP stack: LB, Cache, Sec… SPDY Independent provisioning: different set of servers per micro service Fine tuning: understand performance in isolation. Fine-tune VM, JVM Elasticity: auto-scale (run one more instance) based on TX exec time, queue depth.
  13. Development: Scale dev: less conflict. Work streams: skill, location, risk, preference. Applications can evolve in different pace. Responsibilities: whose pager should ring Deployment: no big-bang, less risk, rollbacks (re-spawn attempt), fast startup (crazy idea of app+config)
  14. AppDynamics - Usually workflow involves plenty of services. Woods instead of trees. Visualize TX flow, bottlenecks etc.
  15. Taking this philosophy and applying it to a SOA architecture would imply building services that focus on a single piece of functionality and communicate with other services to provide business value. Worth giving a try.