SlideShare a Scribd company logo
1 of 50
Building Mirco Services with Go
&
Manage with Mesos
Pravin Mishra
Twitter: pravinmishra88
Today Objectives
• The Pain
• Therefore, Microservices
• Building REST Services in Go
• Mind It Please
• Continuous Build, Integration, and Deployment
• Challenges
• Conclusion

Questions are always welcome
Observed problems
Area of consideration

It was all my fault, really?

Built collaboratively by several development
teams

With traffic load that requires horizontal scaling
(i.e. load balancing across multiple copies of
the system)
Observation

Such systems are often built as monoliths or
Software Monolith
A Software Monolith

One build and deployment unit

One code base

One technology stack (Linux, JVM, Tomcat,
Libraries)
Benefits

Simple mental model for developers
One unit of access for coding, building, and
deploying
Problems of Software Monoliths
Huge and intimidating code base for
developers

Development tools get overburdened

Scaling is limited
Growing systems beyond the limits
Therefore, Microservices
Microservices are small, autonomous services
that work together
Small, and Focused on Doing One Thing
Well
Functional system decomposition into
manageable
and independently deployable components
Underlying principle

The term “micro” refers to the sizing: a
microservice must be manageable by a single
development team (5-9 developers)

Functional system decomposition means
vertical slicing
(in contrast to horizontal slicing through layers)

Independent deployability implies no shared
state, do inter-process communication
More specifically

Each microservice is functionally complete
with...

Each microservice handles one resource (or
verb)

Microservices are fun-sized services, as in “still
fun to develop and deploy”
Independent Deployability
Independent code base
Each service has its own software repository

Codebase is maintainable for developers – it
fits into their brain

Tools work fast – building, testing, refactoring
code takes seconds

Service startup only takes seconds
Independent technology stacks
Each service is implemented on its own
technology stacks

The technology stack can be selected to fit the
task best

Teams can also experiment with new
technologies within a single microservice

No system-wide standardized technology stack
also means
Independent Scaling
Each microservice can be scaled independently

Identified bottlenecks can be addressed directly

Data sharding can be applied to microservices
as needed

Parts of the system that do not represent
bottlenecks can remain simple and un-scaled
Independent evolution of Features
Microservices can be extended without affecting
other services

For example, you can deploy a new version of
(a part of) the UI without re-deploying the whole
system

You can also go so far as to replace the service
by a complete rewrite
Building REST Services in Go
Options
Ruby
Don’t repeat yourself’, thus saving time and effort
Python
Less lines of code == means lesser bugs
Nodejs
Easier server-side development at the cost of
performance, scalability
Easy async code patterns and great concurrency
So what is Go?
Go is an attempt to combine the ease of
programming of an interpreted, dynamically
typed language, with the efficiency and safety of
a statically typed, compiled language.
Why Go?

Good performance

Easy concurrency

Easy error handling

Safety

Fast development time
Simple and easy
Go only contains 25 keywords

Python 3.5.0: 33

Ruby 2.2.0: 41

ANSI C: 32
Standard Library

net (http, mail)

archives (zip, tar, gzip)

encodings (json, csv, xml)

cryptography (aes, des, md5)

html template system
Go tools
gofmt is not the only tool which Go has to offer,
many more are available. To name some:

golint to check for style violations

go vet to check for programming errors

go test to test the code
I love about Go. I hope to see more languages
adopt this in the future.
Mind It Please
Fallacies of Distributed Computing
Essentially everyone, when they first build a
distributed application, makes the following
eight assumptions. All prove to be false in the
long run and all cause big trouble and painful
learning

experiences.

The network is reliable

Latency is zero

Bandwidth is infinite
Microservices Prerequisites
Before applying microservices, you should have
in place

Rapid provisioning
Dev teams should be able to automatically
provision new infrastructure

Basic monitoring
Essential to detect problems in the complex system
landscape
Evolving interfaces correctly

Microservice architectures enable independent
evolution of services – but how is this done
without breaking existing clients?
There are two answers

Version service APIs on incompatible API
changes

Using JSON and REST limits versioning needs
of service APIs
Continuous Build, Integration, and Deployment
Can you release new, well-tested version of your
software in one day?

Integration issues

Bringing software into production is hard

Takes a lot of time

Error prone
The system must be able to build and tested
automatically.
Upon commits, the system is immediatly and
automatically 'Integrated'
Continuous Integration
“Continuous Integration is a software
development practice where members of a
team integrate their work frequently, usually
each person integrates at least daily - leading
to multiple integrations per day. Each
integration is verified by an automated build
(including test) to detect integration errors as
quickly as possible.”
- Martin Fowler
Jenkins
Distributed, open source CI tool, which
allows continuous integration
Repeatable build/test of software projects
Testing

Automate everything
If it hurts, do it more often. Continuously.
Fail fast.

Integration testing

Unit testing

Functional testing
Large community, rich plugin ecosystem
Benefits

Code is always in the consistent state

Code always compiles

Automatic tests

Automatic feedback on production readiness
Mesos
General-purpose cluster manager
Represent many machines as a single entity
Mesos is a scalable and distributed resource
manager designed to manage resources for
data centers.
Marathon
Mesos framework that provides private PaaS
Manages long-running tasks
Easily scale apps to N instances
Automatically restarts failed app instances
Challenges
Further Challenges

Testing the whole system
A single microservice isn‘t the whole system.
A clear picture of upstream and downstream
services is needed for integration testing

Transactions
Instead of distributed transactions, compensations
are used (as in SOA)

Authentication
Summary
Just adopt?

No. Microservices are a possible design
alternative for new web systems and an
evolution path for existing web systems.

There are considerable amounts of warnings
about challenges, complexities and
prerequisites of microservices architectures
from the community.
Thanks

More Related Content

What's hot

Tokyo azure meetup #12 service fabric internals
Tokyo azure meetup #12   service fabric internalsTokyo azure meetup #12   service fabric internals
Tokyo azure meetup #12 service fabric internalsTokyo Azure Meetup
 
Multi Layer Monitoring V1
Multi Layer Monitoring V1Multi Layer Monitoring V1
Multi Layer Monitoring V1Lahav Savir
 
Microservices with Azure Service Fabric
Microservices with Azure Service FabricMicroservices with Azure Service Fabric
Microservices with Azure Service FabricDavide Benvegnù
 
Continuous delivery by sergey seletsky
Continuous delivery by sergey seletskyContinuous delivery by sergey seletsky
Continuous delivery by sergey seletskySergey Seletsky
 
Service Fabric Deployments
Service Fabric DeploymentsService Fabric Deployments
Service Fabric DeploymentsDaniel Toomey
 
Monitoring in a Microservices World
Monitoring in a Microservices WorldMonitoring in a Microservices World
Monitoring in a Microservices WorldDocker, Inc.
 
Microservices, Spring Cloud & Cloud Foundry
Microservices, Spring Cloud & Cloud FoundryMicroservices, Spring Cloud & Cloud Foundry
Microservices, Spring Cloud & Cloud FoundryEmilio Garcia
 
Introduction to android - SpringPeople
Introduction to android - SpringPeopleIntroduction to android - SpringPeople
Introduction to android - SpringPeopleSpringPeople
 
Ss Esb
Ss EsbSs Esb
Ss EsbWSO2
 
WSO2Con US 2013 - Connected Business - making it happen
WSO2Con US 2013 - Connected Business - making it happenWSO2Con US 2013 - Connected Business - making it happen
WSO2Con US 2013 - Connected Business - making it happenWSO2
 
Tokyo Azure Meetup #5 - Microservices and Azure Service Fabric
Tokyo Azure Meetup #5 - Microservices and Azure Service FabricTokyo Azure Meetup #5 - Microservices and Azure Service Fabric
Tokyo Azure Meetup #5 - Microservices and Azure Service FabricTokyo Azure Meetup
 
Microservices Architecture
Microservices ArchitectureMicroservices Architecture
Microservices ArchitectureMateus Prado
 
Introduction To Microservices
Introduction To MicroservicesIntroduction To Microservices
Introduction To MicroservicesLalit Kale
 
Hosting Microservices in Microsoft Azure
Hosting Microservices in Microsoft AzureHosting Microservices in Microsoft Azure
Hosting Microservices in Microsoft AzureSergii Kryshtop
 
What is IBM Bluemix , Une nouvelle façon de coder , dans le cloud
What is IBM Bluemix , Une nouvelle façon de coder , dans le cloudWhat is IBM Bluemix , Une nouvelle façon de coder , dans le cloud
What is IBM Bluemix , Une nouvelle façon de coder , dans le cloudPatrick Bouillaud
 
Infrastructure for Continuous Delivery & Microservices: PaaS or Docker?
Infrastructure for Continuous Delivery & Microservices: PaaS or Docker?Infrastructure for Continuous Delivery & Microservices: PaaS or Docker?
Infrastructure for Continuous Delivery & Microservices: PaaS or Docker?Eberhard Wolff
 
JavaEE Microservices platforms
JavaEE Microservices platformsJavaEE Microservices platforms
JavaEE Microservices platformsPayara
 

What's hot (20)

Tokyo azure meetup #12 service fabric internals
Tokyo azure meetup #12   service fabric internalsTokyo azure meetup #12   service fabric internals
Tokyo azure meetup #12 service fabric internals
 
Multi Layer Monitoring V1
Multi Layer Monitoring V1Multi Layer Monitoring V1
Multi Layer Monitoring V1
 
Microservices with Azure Service Fabric
Microservices with Azure Service FabricMicroservices with Azure Service Fabric
Microservices with Azure Service Fabric
 
Continuous delivery by sergey seletsky
Continuous delivery by sergey seletskyContinuous delivery by sergey seletsky
Continuous delivery by sergey seletsky
 
Service Fabric Deployments
Service Fabric DeploymentsService Fabric Deployments
Service Fabric Deployments
 
Microservices in Azure
Microservices in AzureMicroservices in Azure
Microservices in Azure
 
MicroServices on Azure
MicroServices on AzureMicroServices on Azure
MicroServices on Azure
 
Monitoring in a Microservices World
Monitoring in a Microservices WorldMonitoring in a Microservices World
Monitoring in a Microservices World
 
Microservices, Spring Cloud & Cloud Foundry
Microservices, Spring Cloud & Cloud FoundryMicroservices, Spring Cloud & Cloud Foundry
Microservices, Spring Cloud & Cloud Foundry
 
Azure Messaging Services 2
Azure Messaging Services 2Azure Messaging Services 2
Azure Messaging Services 2
 
Introduction to android - SpringPeople
Introduction to android - SpringPeopleIntroduction to android - SpringPeople
Introduction to android - SpringPeople
 
Ss Esb
Ss EsbSs Esb
Ss Esb
 
WSO2Con US 2013 - Connected Business - making it happen
WSO2Con US 2013 - Connected Business - making it happenWSO2Con US 2013 - Connected Business - making it happen
WSO2Con US 2013 - Connected Business - making it happen
 
Tokyo Azure Meetup #5 - Microservices and Azure Service Fabric
Tokyo Azure Meetup #5 - Microservices and Azure Service FabricTokyo Azure Meetup #5 - Microservices and Azure Service Fabric
Tokyo Azure Meetup #5 - Microservices and Azure Service Fabric
 
Microservices Architecture
Microservices ArchitectureMicroservices Architecture
Microservices Architecture
 
Introduction To Microservices
Introduction To MicroservicesIntroduction To Microservices
Introduction To Microservices
 
Hosting Microservices in Microsoft Azure
Hosting Microservices in Microsoft AzureHosting Microservices in Microsoft Azure
Hosting Microservices in Microsoft Azure
 
What is IBM Bluemix , Une nouvelle façon de coder , dans le cloud
What is IBM Bluemix , Une nouvelle façon de coder , dans le cloudWhat is IBM Bluemix , Une nouvelle façon de coder , dans le cloud
What is IBM Bluemix , Une nouvelle façon de coder , dans le cloud
 
Infrastructure for Continuous Delivery & Microservices: PaaS or Docker?
Infrastructure for Continuous Delivery & Microservices: PaaS or Docker?Infrastructure for Continuous Delivery & Microservices: PaaS or Docker?
Infrastructure for Continuous Delivery & Microservices: PaaS or Docker?
 
JavaEE Microservices platforms
JavaEE Microservices platformsJavaEE Microservices platforms
JavaEE Microservices platforms
 

Similar to A journey from monolith to micro services

Devops Explained & Best Practices
Devops Explained & Best PracticesDevops Explained & Best Practices
Devops Explained & Best PracticesShikhaKonda
 
DevOps and Microservice
DevOps and MicroserviceDevOps and Microservice
DevOps and MicroserviceInho Kang
 
Dev ops and safety critical systems
Dev ops and safety critical systemsDev ops and safety critical systems
Dev ops and safety critical systemsLen Bass
 
Visual Studio 2015 - Lançamento está próximo
Visual Studio 2015 - Lançamento está próximoVisual Studio 2015 - Lançamento está próximo
Visual Studio 2015 - Lançamento está próximoDaniel Semedo
 
DevOps and Build Automation
DevOps and Build AutomationDevOps and Build Automation
DevOps and Build AutomationHeiswayi Nrird
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice ArchitectureEngin Yoeyen
 
Top 20 DevOps Interview Questions & Answers in 2023.pptx
Top 20 DevOps Interview Questions & Answers in 2023.pptxTop 20 DevOps Interview Questions & Answers in 2023.pptx
Top 20 DevOps Interview Questions & Answers in 2023.pptxAnanthReddy38
 
Part 2 improving your software development v1.0
Part 2   improving your software development v1.0Part 2   improving your software development v1.0
Part 2 improving your software development v1.0Jasmine Conseil
 
Automating Applications with Habitat - Sydney Cloud Native Meetup
Automating Applications with Habitat - Sydney Cloud Native MeetupAutomating Applications with Habitat - Sydney Cloud Native Meetup
Automating Applications with Habitat - Sydney Cloud Native MeetupMatt Ray
 
MicroserviceArchitecture in detail over Monolith.
MicroserviceArchitecture in detail over Monolith.MicroserviceArchitecture in detail over Monolith.
MicroserviceArchitecture in detail over Monolith.PLovababu
 
Architecting for speed: How agile innovators accelerate growth through micros...
Architecting for speed: How agile innovators accelerate growth through micros...Architecting for speed: How agile innovators accelerate growth through micros...
Architecting for speed: How agile innovators accelerate growth through micros...Jesper Nordström
 
Architecting for speed - how agile innovators accelerate growth through micro...
Architecting for speed - how agile innovators accelerate growth through micro...Architecting for speed - how agile innovators accelerate growth through micro...
Architecting for speed - how agile innovators accelerate growth through micro...3gamma
 
DevOps Automation: Boosting Efficiency and Productivity
DevOps Automation: Boosting Efficiency and ProductivityDevOps Automation: Boosting Efficiency and Productivity
DevOps Automation: Boosting Efficiency and ProductivityFredReynolds2
 
Presentation 1 open source tools in continuous integration environment v1.0
Presentation 1   open source tools in continuous integration environment v1.0Presentation 1   open source tools in continuous integration environment v1.0
Presentation 1 open source tools in continuous integration environment v1.0Jasmine Conseil
 
Introducing Continuous Integration Using Vsts
Introducing Continuous Integration Using VstsIntroducing Continuous Integration Using Vsts
Introducing Continuous Integration Using VstsMohamed Samy
 
How Azure DevOps can boost your organization's productivity
How Azure DevOps can boost your organization's productivityHow Azure DevOps can boost your organization's productivity
How Azure DevOps can boost your organization's productivityIvan Porta
 
Architecting for speed: how agile innovators accelerate growth through micros...
Architecting for speed: how agile innovators accelerate growth through micros...Architecting for speed: how agile innovators accelerate growth through micros...
Architecting for speed: how agile innovators accelerate growth through micros...Jesper Nordström
 
Architecting for speed: how agile innovators accelerate growth through micros...
Architecting for speed: how agile innovators accelerate growth through micros...Architecting for speed: how agile innovators accelerate growth through micros...
Architecting for speed: how agile innovators accelerate growth through micros...3gamma
 

Similar to A journey from monolith to micro services (20)

Devops Explained & Best Practices
Devops Explained & Best PracticesDevops Explained & Best Practices
Devops Explained & Best Practices
 
DevOps and Microservice
DevOps and MicroserviceDevOps and Microservice
DevOps and Microservice
 
DevOps
DevOps DevOps
DevOps
 
Dev ops and safety critical systems
Dev ops and safety critical systemsDev ops and safety critical systems
Dev ops and safety critical systems
 
Visual Studio 2015 - Lançamento está próximo
Visual Studio 2015 - Lançamento está próximoVisual Studio 2015 - Lançamento está próximo
Visual Studio 2015 - Lançamento está próximo
 
DevOps and Build Automation
DevOps and Build AutomationDevOps and Build Automation
DevOps and Build Automation
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
 
Top 20 DevOps Interview Questions & Answers in 2023.pptx
Top 20 DevOps Interview Questions & Answers in 2023.pptxTop 20 DevOps Interview Questions & Answers in 2023.pptx
Top 20 DevOps Interview Questions & Answers in 2023.pptx
 
Part 2 improving your software development v1.0
Part 2   improving your software development v1.0Part 2   improving your software development v1.0
Part 2 improving your software development v1.0
 
Automating Applications with Habitat - Sydney Cloud Native Meetup
Automating Applications with Habitat - Sydney Cloud Native MeetupAutomating Applications with Habitat - Sydney Cloud Native Meetup
Automating Applications with Habitat - Sydney Cloud Native Meetup
 
MicroserviceArchitecture in detail over Monolith.
MicroserviceArchitecture in detail over Monolith.MicroserviceArchitecture in detail over Monolith.
MicroserviceArchitecture in detail over Monolith.
 
Architecting for speed: How agile innovators accelerate growth through micros...
Architecting for speed: How agile innovators accelerate growth through micros...Architecting for speed: How agile innovators accelerate growth through micros...
Architecting for speed: How agile innovators accelerate growth through micros...
 
Architecting for speed - how agile innovators accelerate growth through micro...
Architecting for speed - how agile innovators accelerate growth through micro...Architecting for speed - how agile innovators accelerate growth through micro...
Architecting for speed - how agile innovators accelerate growth through micro...
 
DevOps Automation: Boosting Efficiency and Productivity
DevOps Automation: Boosting Efficiency and ProductivityDevOps Automation: Boosting Efficiency and Productivity
DevOps Automation: Boosting Efficiency and Productivity
 
L02 Architecture
L02 ArchitectureL02 Architecture
L02 Architecture
 
Presentation 1 open source tools in continuous integration environment v1.0
Presentation 1   open source tools in continuous integration environment v1.0Presentation 1   open source tools in continuous integration environment v1.0
Presentation 1 open source tools in continuous integration environment v1.0
 
Introducing Continuous Integration Using Vsts
Introducing Continuous Integration Using VstsIntroducing Continuous Integration Using Vsts
Introducing Continuous Integration Using Vsts
 
How Azure DevOps can boost your organization's productivity
How Azure DevOps can boost your organization's productivityHow Azure DevOps can boost your organization's productivity
How Azure DevOps can boost your organization's productivity
 
Architecting for speed: how agile innovators accelerate growth through micros...
Architecting for speed: how agile innovators accelerate growth through micros...Architecting for speed: how agile innovators accelerate growth through micros...
Architecting for speed: how agile innovators accelerate growth through micros...
 
Architecting for speed: how agile innovators accelerate growth through micros...
Architecting for speed: how agile innovators accelerate growth through micros...Architecting for speed: how agile innovators accelerate growth through micros...
Architecting for speed: how agile innovators accelerate growth through micros...
 

More from Pravin Mishra

Overview of chef ( Infrastructure as a Code )
Overview of chef ( Infrastructure as a Code )Overview of chef ( Infrastructure as a Code )
Overview of chef ( Infrastructure as a Code )Pravin Mishra
 
Open Source Saturday - How can I contribute to Ruby on Rails?
Open Source Saturday - How can I contribute to Ruby on Rails?Open Source Saturday - How can I contribute to Ruby on Rails?
Open Source Saturday - How can I contribute to Ruby on Rails?Pravin Mishra
 
Selenium By Pravin Mishra
Selenium By Pravin MishraSelenium By Pravin Mishra
Selenium By Pravin MishraPravin Mishra
 

More from Pravin Mishra (6)

Happy Go programing
Happy Go programingHappy Go programing
Happy Go programing
 
Overview of chef ( Infrastructure as a Code )
Overview of chef ( Infrastructure as a Code )Overview of chef ( Infrastructure as a Code )
Overview of chef ( Infrastructure as a Code )
 
Open Source Saturday - How can I contribute to Ruby on Rails?
Open Source Saturday - How can I contribute to Ruby on Rails?Open Source Saturday - How can I contribute to Ruby on Rails?
Open Source Saturday - How can I contribute to Ruby on Rails?
 
App42 PaaS
App42 PaaSApp42 PaaS
App42 PaaS
 
Node.js
Node.jsNode.js
Node.js
 
Selenium By Pravin Mishra
Selenium By Pravin MishraSelenium By Pravin Mishra
Selenium By Pravin Mishra
 

A journey from monolith to micro services

  • 1. Building Mirco Services with Go & Manage with Mesos Pravin Mishra Twitter: pravinmishra88
  • 2. Today Objectives • The Pain • Therefore, Microservices • Building REST Services in Go • Mind It Please • Continuous Build, Integration, and Deployment • Challenges • Conclusion  Questions are always welcome
  • 3. Observed problems Area of consideration  It was all my fault, really?  Built collaboratively by several development teams  With traffic load that requires horizontal scaling (i.e. load balancing across multiple copies of the system) Observation  Such systems are often built as monoliths or
  • 4. Software Monolith A Software Monolith  One build and deployment unit  One code base  One technology stack (Linux, JVM, Tomcat, Libraries) Benefits  Simple mental model for developers One unit of access for coding, building, and deploying
  • 5. Problems of Software Monoliths Huge and intimidating code base for developers  Development tools get overburdened  Scaling is limited
  • 8. Microservices are small, autonomous services that work together
  • 9. Small, and Focused on Doing One Thing Well
  • 10. Functional system decomposition into manageable and independently deployable components
  • 11. Underlying principle  The term “micro” refers to the sizing: a microservice must be manageable by a single development team (5-9 developers)  Functional system decomposition means vertical slicing (in contrast to horizontal slicing through layers)  Independent deployability implies no shared state, do inter-process communication
  • 12. More specifically  Each microservice is functionally complete with...  Each microservice handles one resource (or verb)  Microservices are fun-sized services, as in “still fun to develop and deploy”
  • 14. Independent code base Each service has its own software repository  Codebase is maintainable for developers – it fits into their brain  Tools work fast – building, testing, refactoring code takes seconds  Service startup only takes seconds
  • 15. Independent technology stacks Each service is implemented on its own technology stacks  The technology stack can be selected to fit the task best  Teams can also experiment with new technologies within a single microservice  No system-wide standardized technology stack also means
  • 16. Independent Scaling Each microservice can be scaled independently  Identified bottlenecks can be addressed directly  Data sharding can be applied to microservices as needed  Parts of the system that do not represent bottlenecks can remain simple and un-scaled
  • 17. Independent evolution of Features Microservices can be extended without affecting other services  For example, you can deploy a new version of (a part of) the UI without re-deploying the whole system  You can also go so far as to replace the service by a complete rewrite
  • 19. Options Ruby Don’t repeat yourself’, thus saving time and effort Python Less lines of code == means lesser bugs Nodejs Easier server-side development at the cost of performance, scalability Easy async code patterns and great concurrency
  • 20. So what is Go? Go is an attempt to combine the ease of programming of an interpreted, dynamically typed language, with the efficiency and safety of a statically typed, compiled language.
  • 21. Why Go?  Good performance  Easy concurrency  Easy error handling  Safety  Fast development time
  • 22. Simple and easy Go only contains 25 keywords  Python 3.5.0: 33  Ruby 2.2.0: 41  ANSI C: 32
  • 23. Standard Library  net (http, mail)  archives (zip, tar, gzip)  encodings (json, csv, xml)  cryptography (aes, des, md5)  html template system
  • 24. Go tools gofmt is not the only tool which Go has to offer, many more are available. To name some:  golint to check for style violations  go vet to check for programming errors  go test to test the code
  • 25. I love about Go. I hope to see more languages adopt this in the future.
  • 27. Fallacies of Distributed Computing Essentially everyone, when they first build a distributed application, makes the following eight assumptions. All prove to be false in the long run and all cause big trouble and painful learning  experiences.  The network is reliable  Latency is zero  Bandwidth is infinite
  • 28. Microservices Prerequisites Before applying microservices, you should have in place  Rapid provisioning Dev teams should be able to automatically provision new infrastructure  Basic monitoring Essential to detect problems in the complex system landscape
  • 29. Evolving interfaces correctly  Microservice architectures enable independent evolution of services – but how is this done without breaking existing clients? There are two answers  Version service APIs on incompatible API changes  Using JSON and REST limits versioning needs of service APIs
  • 31. Can you release new, well-tested version of your software in one day?
  • 32.  Integration issues  Bringing software into production is hard  Takes a lot of time  Error prone
  • 33. The system must be able to build and tested automatically.
  • 34. Upon commits, the system is immediatly and automatically 'Integrated'
  • 35. Continuous Integration “Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible.” - Martin Fowler
  • 36. Jenkins Distributed, open source CI tool, which allows continuous integration
  • 37. Repeatable build/test of software projects
  • 38. Testing  Automate everything If it hurts, do it more often. Continuously. Fail fast.  Integration testing  Unit testing  Functional testing
  • 39. Large community, rich plugin ecosystem
  • 40. Benefits  Code is always in the consistent state  Code always compiles  Automatic tests  Automatic feedback on production readiness
  • 42. Represent many machines as a single entity
  • 43. Mesos is a scalable and distributed resource manager designed to manage resources for data centers.
  • 44. Marathon Mesos framework that provides private PaaS Manages long-running tasks
  • 45. Easily scale apps to N instances
  • 48. Further Challenges  Testing the whole system A single microservice isn‘t the whole system. A clear picture of upstream and downstream services is needed for integration testing  Transactions Instead of distributed transactions, compensations are used (as in SOA)  Authentication
  • 49. Summary Just adopt?  No. Microservices are a possible design alternative for new web systems and an evolution path for existing web systems.  There are considerable amounts of warnings about challenges, complexities and prerequisites of microservices architectures from the community.