SlideShare a Scribd company logo
Eduards Sizovs - Micro Service Architecture
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
Eduards Sizovs - Micro Service Architecture
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.
Eduards Sizovs - Micro Service Architecture
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
Eduards Sizovs - Micro Service Architecture
Eduards Sizovs - Micro Service Architecture
Eduards Sizovs - Micro Service Architecture
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

PDF
Micro service architecture - building scalable web solutions - George James -...
PPTX
Introduction to micro-services @DevOps pune Meetup
PPTX
Microservices
PPTX
Continuous Delivery
PPTX
Micro Service Architecture
PDF
Dark launching with Consul at Hootsuite - Bill Monkman
PPTX
.NET Fest 2019. Андрей Винда. Создание REST API с поддержкой высокой нагрузки
PDF
Fastest to Mobile with Scalatra + Swagger
Micro service architecture - building scalable web solutions - George James -...
Introduction to micro-services @DevOps pune Meetup
Microservices
Continuous Delivery
Micro Service Architecture
Dark launching with Consul at Hootsuite - Bill Monkman
.NET Fest 2019. Андрей Винда. Создание REST API с поддержкой высокой нагрузки
Fastest to Mobile with Scalatra + Swagger

What's hot (20)

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

Viewers also liked (20)

PPTX
Linux principles and philosophy
PPTX
Unix philosophy and principles
PPTX
Linux principles and philosophy
KEY
Mobile Knife Fighting at JSConf US
PDF
Bringing the Unix Philosophy to Big Data
PPTX
Mocking Test - QA Ninja Conf 2016
PPTX
Unix Philosophy
PDF
Writing Well-Behaved Unix Utilities
ODP
Circuit breakers for Java: Failsafe, Javaslang-Circuitbreaker, Hystrix and Ve...
PDF
Micro Service – The New Architecture Paradigm
PDF
To Microservices and Beyond
PPTX
Mockito vs JMockit, battle of the mocking frameworks
PPTX
Using Hystrix to Build Resilient Distributed Systems
PPTX
Mocking
PPTX
How we sleep well at night using Hystrix at Finn.no
PDF
Microservice Architecture
PDF
Microservices vs. The First Law of Distributed Objects - GOTO Nights Chicago ...
PPT
DDD Framework for Java: JdonFramework
PDF
Towards complex adaptive architectures
PDF
Production-ready Software
Linux principles and philosophy
Unix philosophy and principles
Linux principles and philosophy
Mobile Knife Fighting at JSConf US
Bringing the Unix Philosophy to Big Data
Mocking Test - QA Ninja Conf 2016
Unix Philosophy
Writing Well-Behaved Unix Utilities
Circuit breakers for Java: Failsafe, Javaslang-Circuitbreaker, Hystrix and Ve...
Micro Service – The New Architecture Paradigm
To Microservices and Beyond
Mockito vs JMockit, battle of the mocking frameworks
Using Hystrix to Build Resilient Distributed Systems
Mocking
How we sleep well at night using Hystrix at Finn.no
Microservice Architecture
Microservices vs. The First Law of Distributed Objects - GOTO Nights Chicago ...
DDD Framework for Java: JdonFramework
Towards complex adaptive architectures
Production-ready Software
Ad

Similar to Eduards Sizovs - Micro Service Architecture (20)

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

More from DevConFu (20)

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

Recently uploaded (20)

PPTX
history of c programming in notes for students .pptx
PPTX
ISO 45001 Occupational Health and Safety Management System
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PPTX
Transform Your Business with a Software ERP System
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
System and Network Administraation Chapter 3
PDF
AI in Product Development-omnex systems
PDF
top salesforce developer skills in 2025.pdf
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PPTX
CHAPTER 2 - PM Management and IT Context
PPTX
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
System and Network Administration Chapter 2
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PPTX
Operating system designcfffgfgggggggvggggggggg
history of c programming in notes for students .pptx
ISO 45001 Occupational Health and Safety Management System
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
Transform Your Business with a Software ERP System
Navsoft: AI-Powered Business Solutions & Custom Software Development
Design an Analysis of Algorithms I-SECS-1021-03
System and Network Administraation Chapter 3
AI in Product Development-omnex systems
top salesforce developer skills in 2025.pdf
Design an Analysis of Algorithms II-SECS-1021-03
CHAPTER 2 - PM Management and IT Context
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
PTS Company Brochure 2025 (1).pdf.......
System and Network Administration Chapter 2
Which alternative to Crystal Reports is best for small or large businesses.pdf
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
Softaken Excel to vCard Converter Software.pdf
2025 Textile ERP Trends: SAP, Odoo & Oracle
Operating system designcfffgfgggggggvggggggggg

Eduards Sizovs - Micro Service Architecture

  • 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.
  • 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.
  • 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
  • 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

  • #7: 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
  • #9: 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.
  • #10: 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.
  • #11: Build Internal Loan Underwriting System based on “micro-service architecture” step by step.
  • #14: Time to create the 1st micro service!
  • #16: Serious breakup – now MySQL is single, so let’s take the opportunity 
  • #23: --- 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
  • #24: How well does it scale: Eventually I’ll have to scale both JMS and CHNAPI gateway
  • #28: - 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
  • #29: Challenges are defeated! For quite simple app we’ve built 5 independently deployable micro services.
  • #31: Frameworks: No jar hell. Downgrade CXF example. Summary: Developers can experiment & leverage their skillset better Less risk of failure (Disposable – rewrite over maintain)
  • #32: 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.
  • #33: 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)
  • #42: AppDynamics - Usually workflow involves plenty of services. Woods instead of trees. Visualize TX flow, bottlenecks etc.
  • #48: 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.