SlideShare a Scribd company logo
1 of 59
Download to read offline
© Equal Experts UK Ltd 2015
Microservices
Scaling Human Work
by Paulo Gaspar
@paulogaspar7
© Equal Experts UK Ltd 2015
Does size matter?
(Why didn’t Jeff Bezos want to give more than two pizzas to each team?)
© Equal Experts UK Ltd 2015
Large versus Small (Systems)
• Ever worked on both?
• Compare…
• Knowledge sharing / communication?
• Pace of progress?
• New technology adoption?
• Ease of technical debt elimination?
• Accountability (not throwing issues over the wall)?
© Equal Experts UK Ltd 2015
But what are Microservices?
© Equal Experts UK Ltd 2015
Fowler Description
§ The microservice architectural style is an approach to developing a single
application as a suite of small services, each running in its own process and
communicating with lightweight mechanisms, often an HTTP resource API.
These services are built around business capabilities and independently
deployable by fully automated deployment machinery. There is a bare
minimum of centralized management of these services, which may be written
in different programming languages and use different data storage
technologies.
http://martinfowler.com/articles/microservices.html
© Equal Experts UK Ltd 2015
Fowler Description…
…says nothing about its WHYs
© Equal Experts UK Ltd 2015
Why Microservices?
§Performance?
§Availability?
§Scalability?
§Because you like Docker and doing DevOps?
© Equal Experts UK Ltd 2015
Why Microservices?
§Or is there a “non production time” reason?
© Equal Experts UK Ltd 2015
My experience…
© Equal Experts UK Ltd 2015
A NAIVE FIRST TIME…
© Equal Experts UK Ltd 2015
The very First Time…
• Just because of Spring Boot
(and Spring Loaded!)
• We loved how fast and easy was running a service for development tests
• Naturally, services were split and kept being split by functionality
• We had different load requirements per service…
• We started everything by hand, with scripts
• We looked at Docker and several other tools for automation
• Size was kept small “just” because it helped dividingwork and keepingchurn out high
© Equal Experts UK Ltd 2015
The First Time
Were this real Microservices?
…or just a SOA flavour?
© Equal Experts UK Ltd 2015
2ND TIME
EXPERIENCED PARTNERS
© Equal Experts UK Ltd 2015
The Dream Team - First impressions
• Very large overall project (a few hundred developers)
• Very senior team
• Real Agile, TDD, Reactive Programming, Scala, Pairing …
• So many services, but my laptop can run all I need for integration tests!
• Infrastructure of sharedtechnologies (messaging, database, monitoring…)
• Infrastructure restrictions on used technologies
• No management interferenceon technical decisions
• Management (P.O. and others) supports technical issue prioritization
• Management (P.O. and others) displays full trust on development team indications
© Equal Experts UK Ltd 2015
The Dream Team – the line up
• Product Owner (P.O.)
• Scrum Master
• 8 Developers
• 2 QA (Quality andAssurance)
• A couple of B.A.s (BusinessAnalysts)
• Shared UX team (Design, User Experience, etc.)
• A couple of business monitoring elements
© Equal Experts UK Ltd 2015
Second impressions– Technicalities
• Impressive churn out…
• Functional stories oftendone faster than I initially estimated
• Was this repeated across these many teams? (Scalability)
• Shocked: no Business Logic on Libraries!!!
• Shocked: not only do we pair, but pairs rotate twice a week
• Internal Open Source for technical code
• Each Microserviceis, at most, a few thousand lines big
• There are mechanisms to deal with distributed computingissues
(error propagation, latencies, cumulative latencies…)
• Improving monitoringand available metrics receives a lot of attention
© Equal Experts UK Ltd 2015
Second impressions– Tribal team behaviour
• Programming intensity is very high - almost all the time (out of meetings) is spent coding
(Sounds normal to complete a medium size ticket in 2 to 4 days)
• Some tribal behavioursof the developer team:
• A whole team impromptu meeting is triggered if we find a production problem
• Impromptu meetings also when a structural decision must be taken when coding
(Yes, the code is own by the “tribe” as a whole)
• Working out of office hours dedicated to monitoring
• Developers report a large portion of the production issues
(often before they have impact)
• A lot of importance given by management to developers feedback
• Work pace is not affected after one of the most experiencedteam members leaves
© Equal Experts UK Ltd 2015
Interactions separated by domain…
• Developers directly take care of solving technical issues
• Infrastructure teams send people to help and doctrine Microservice developers on the hows and whys of
their systems / services
• …and support Microservice teams into monitoring their own services
• Technical issues / doubts sorted out by direct developer contact with other teams
(Infrastructure, other development teams,architects,…)
• Technical code is shared (with all teams) as internal Open Source
• Business / management people directly take care of solving business related issues
• All Stories are defined by B.A.s and reviewed by Developer before considering them ready
• All remaining doubts about business related issues sorted out by B.A.s or P.O.s
• Developers do not directly go get information from domain experts just to sort out a story
• Only B.A.s or P.O.s bring information across from domain experts to developers
© Equal Experts UK Ltd 2015
Customerfeedback
It was repeatedly mentioned by customer representatives
how the team had exceeded their productivity
expectations
(and how quality was kept high)
© Equal Experts UK Ltd 2015
The Big Picture
• Developersown the code as a group
• Developerstake direct care of technicalmatters
• Managers/ B.A.s take care of business related matters
• Managerstrust developers(and vice versa)
• Scalability: other teams seem to be doing just the same
• Customer is happy with productivity + quality
(this team’sand overall)
© Equal Experts UK Ltd 2015
The Big Picture
Ownership
Accountability
Trust
© Equal Experts UK Ltd 2015
The Big Picture
I believe we were doing
REAL Microservices
© Equal Experts UK Ltd 2015
WHAT DO OTHERS SAY?
© Equal Experts UK Ltd 2015
Development on LARGE applications
• Steeper learning curve
• Higher CODE DRAG
• Throwing responsibilities over the wall
• Development tools and containers get overloaded
=> slower development
• Larger teams have higher communication costs / problems
• Must rebuild and redeploy a large volume of code for any small change
• Any change (functional or technologic) is harder and riskier
• Riskier and expensive changes happen less frequently
=> slower evolution
© Equal Experts UK Ltd 2015
Development on Microservices
• Smaller teams
• Less communication paths, lowercommunication costs
• Services get developedand deployed independently
• Smaller and simpler code bases are
• Easier to learn and faster to develop on
• Less prone to dependency hell
• Faster + simpler to build and deploy
• Easier to compose and to replace
• Producing less code drag
• Change is simpler and risks more isolated
• Evolution is easier
© Equal Experts UK Ltd 2015
Microservices – the WHYs…
Achieving
SCALABLE
high productivity
© Equal Experts UK Ltd 2015
Is this SOA
• “Traditional SOA” was dominated by vendors and the technologiesthey promoted
(e.g.: some people thought that SOAhad to be done with SOAP)
• Microservices grew from practical needs and concerns, with no vendor/technology ties
• SOA done right?
© Equal Experts UK Ltd 2015
MY 2 CENTS
© Equal Experts UK Ltd 2015
But I noticed that developing“with Microservices”…
Does NOT always work that well!
© Equal Experts UK Ltd 2015
Developing“with Microservices”…
Does not always work that well, because
Microservices are an enabler, NOT a
guarantee
© Equal Experts UK Ltd 2015
Scaling high productivity=> high productivityon each Dev. Team!
© Equal Experts UK Ltd 2015
To have good results developing with Microservices…
Several roles must be well played
Several things must be done right
…or you are just doing a SOA flavour!
© Equal Experts UK Ltd 2015
To have good results developing with Microservices…
Doing Agile well sure helps
(You know you can read about Agile elsewhere!)
© Equal Experts UK Ltd 2015
The role of Developers…
• Is to code/producea maximum of business functionality
• It works better if:
• Distractions and obstacles to play that role are kept to a minimum
• The business functionality to implement is well defined from the start of each task/ticket
• Stress is kept to the necessary minimum
• Team members rotate across all of the team’s Microservices
• Knowledge and decisions are (BOTH) shared
(Only with shared knowledge is decision sharing productive)
• All other roles and practices we talk about simply serve this purpose
© Equal Experts UK Ltd 2015
The importance of having team QAs…
• Acceptance tests and the dance of pushing to deployment have high latencies
• The developer can transport the coding momentum to the next ticket
• The QA fills latencies better by juggling between multiple tickets
• The QA validates produced work better because:
• He/she is not biased by the development work, keeping an higher focus on specs
• Has a better overview overwhat is going on across tickets
• Their independence from development qualifies them better to produce good acceptance tests
• …and you can read a lot more about this role elsewhere
© Equal Experts UK Ltd 2015
The importance of a Scrum Masters or Delivery Manager,
Product Owners, BusinessAnalysts…
• Keep the programming team’s focus
• And feed it with a well coordinated/ordered and uninterrupted
stream of clearly defined tasks/stories acrossteams
• This actually means many order tasks, defining and keepinga vision, like prioritizing work,
coordinating work across teams, handling the customer, keeping unnecessarypolitics away
from development work, etc.
© Equal Experts UK Ltd 2015
Improving DRY(Don’t Repeat Yourself)
• Common vision + principles increase the opportunities for synergies
• Creating synergies demands coordination + steering
• …reducing redundant efforts and boring wheel reinvention
• …improving sharing and development speed
• Balance steering to give some room for experimentation -> evolution
© Equal Experts UK Ltd 2015
The importance of good horizontal teams (improvingDRY)
© Equal Experts UK Ltd 2015
Horizontal Team – Business / Management (improvingDRY)
• A (Functional/Business)Vision
• A Plan
• Well coordinated and well prioritizedflow of stories…
• …consistent across all teams
© Equal Experts UK Ltd 2015
Horizontal Team – SystemArchitecture (improving DRY)
• Vision
• Overall high level (but well grounded) design
• Consistent design principles / values / philosophy
• Steering
• Gathering collective experience and sharingthe resulting knowledge
• (Interesting discussionabout this role on the Sam Newman’s book)
© Equal Experts UK Ltd 2015
Horizontal Teams – Infrastructure (improving DRY)
• Means to effectively share knowledge across teams
• Means to support the sharingof “internal open source”
• Shared productionservices (databases, message queues, etc.)
• Other shared development support services
• Other means to share and reduce the cost of technical services
© Equal Experts UK Ltd 2015
Coding -the importance of service SIZE…
• We are talking about MICROservices
• Not of Large or Extra Large services
• Not even of Medium Services
• Not even Small-ish or Mini Services
• The name is MICROservices!!!
© Equal Experts UK Ltd 2015
Would you call this a Micro mammal?
© Equal Experts UK Ltd 2015
The importance of SIZE – remember, smaller code bases are…
• Easier to learn and faster to develop on
• Less prone to dependency hell
• Faster + simpler to build and deploy
• Easier to compose and to replace
• Producing less code drag, therefore being easier to
• Replace
• Refactor
• Evolve, independently, at the most convenient pace
© Equal Experts UK Ltd 2015
Signs it is NOT a Microservice (just a service)…
• Lines of code count is high - into the 5 (or more) digits
• Covers multiple (worse if disparate) functional topics
• Big volumes of technical code included - e.g.: an audit servlet filter
(But you can have their functionalityincluded in libraries)
• A lot of developers working simultaneously on the same service
Maybe you are doing some other SOA flavour
© Equal Experts UK Ltd 2015
Signs it is a good Microservice…
• Lines of code count is low (3 or 4 digits)
• Focus on business logic code
• Covers one functional topic
(although you might end up dividing it in sub-topics forever…)
• No business logic in libraries
(since it produces version management and functional consistencyproblems)
• No duplicate business logicwith other services
(DRY, functional consistency)
• Meaningful volumes of reusable technical code are placed in libraries to
• Keep focus on business logic
• Ease future splits
• Share (i.e.: reduce overall) technical cost
© Equal Experts UK Ltd 2015
When you start
• Start small
• Learn the basics well andASAP
• Just the essential principles you need for your scale
• …inclusive about REST, if you use it
• …and CQRS (Command Query Responsibility Segregation)
• Don’t be in a hurry to divide services
• Take your time to learn each piece you add
• Lear about the “new” types of error you are exposed to, like:
• Fallacies of distributed computing
https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing
© Equal Experts UK Ltd 2015
When you start (doing large scale Microservices)
• Embrace Devops
• Brace for networking related problems
• Latency across a call stack
• Manage timeouts
• Cascading failures
• Circuit breakers,bulkheads,isolation
• Start monitoring
• Collect metrics
• Good logs and a log repository
• Tracing
© Equal Experts UK Ltd 2015
…remember the fallacies…
• The network is reliable.
• Latency is zero.
• Bandwidth is infinite.
• The network is secure.
• Topology doesn't change.
• There is one administrator.
• Transport cost is zero.
• The network is homogeneous.
© Equal Experts UK Ltd 2015
READING/STUDY MATERIAL…
© Equal Experts UK Ltd 2015
Some reading material
• Building Microservices, by Sam Newman
(O’REILLY)
• http://microservices.io
• Netflix stuff
• http://netflix.github.io
• Distributed computing
(some topics to search for…)
• CAP Theorem (read the paper)
• Eventual Consistency (read the Dynamo DB paper)
• Idempotency
• Consensus
• Causality
• Serializability and Linearizability
© Equal Experts UK Ltd 2015
Historic Big Players
• Amazon
• Amazon Cloud
• Amazon’s Two-Pizza Team Rule
http://blog.idonethis.com/two-pizza-team/
• Netflix
• http://netflix.github.io
© Equal Experts UK Ltd 2015
Microservice frameworks
• Dropwizard
http://www.dropwizard.io
• Spring Boot
http://projects.spring.io/spring-boot/
https://github.com/spring-projects/spring-loaded
https://spring.io/blog/2015/06/17/devtools-in-spring-boot-1-3
http://projects.spring.io/spring-hateoas/
• Play Framework
https://www.playframework.com
• Netflix Karyon
https://github.com/Netflix/karyon
© Equal Experts UK Ltd 2015
Monitoring
• Metrics
https://dropwizard.github.io/metrics/
• Grafana
http://grafana.org
• ELK – ElasticSearch, LogStash, Kibana
https://www.elastic.co/webinars/introduction-elk-stack
• Twitter Zipkin (tracing)
http://twitter.github.io/zipkin/
© Equal Experts UK Ltd 2015
Basic Resilience
• Netflix stuff
(discovery, client side LB, circuit breakers)
• http://netflix.github.io
• http://cloud.spring.io/spring-cloud-netflix/
• Spring Cloud
• http://cloud.spring.io/
© Equal Experts UK Ltd 2015
Databases and Datastores
• Service databases
(one instance/schema per service family)
• Separated report database (usually relational)
• Database variants
• Relational, document based, key-value, etc.
• Notable databases / data stores
• MongoDB, PostgreSQL, Redis, ElasticSearch
• http://projects.spring.io/spring-data/
© Equal Experts UK Ltd 2015
Messaging
• Sophisticated Routing
RabbitMQ
https://www.rabbitmq.com
• High volume
Apache Kafka
http://kafka.apache.org
https://github.com/spring-projects/spring-integration-kafka
© Equal Experts UK Ltd 2015
Others
• Swagger
(service description)
http://swagger.io
• Docker
(virtualization)
https://www.docker.com
• Kubernetes
(Cloud deployment)
http://kubernetes.io
• NGINX
(networking infrastructure)
https://www.nginx.com
• Zookeeper
(consensus, presence, other coordination)
http://zookeeper.apache.org
© Equal Experts UK Ltd 2015
Thank you!
Paulo Gaspar
@paulogaspar7

More Related Content

What's hot

J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"
J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"
J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"Daniel Bryant
 
Introduce yourself to java 17
Introduce yourself to java 17Introduce yourself to java 17
Introduce yourself to java 17ankitbhandari32
 
12-factor applications using WAS Liberty, IBM Bluemix, and Docker
12-factor applications using WAS Liberty, IBM Bluemix, and Docker12-factor applications using WAS Liberty, IBM Bluemix, and Docker
12-factor applications using WAS Liberty, IBM Bluemix, and DockerErin Schnabel
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice ArchitectureNguyen Tung
 
Applying DevOps, PaaS and cloud for better citizen service outcomes - IBM Fe...
Applying DevOps, PaaS and cloud for better citizen service  outcomes - IBM Fe...Applying DevOps, PaaS and cloud for better citizen service  outcomes - IBM Fe...
Applying DevOps, PaaS and cloud for better citizen service outcomes - IBM Fe...Sanjeev Sharma
 
DEVNET-1147 Energizing Your Career with Cloud Technologies
DEVNET-1147	Energizing Your Career with Cloud TechnologiesDEVNET-1147	Energizing Your Career with Cloud Technologies
DEVNET-1147 Energizing Your Career with Cloud TechnologiesCisco DevNet
 
Managing Internal, Private External, and Open Developer Ecosystems
Managing Internal, Private External, and Open Developer EcosystemsManaging Internal, Private External, and Open Developer Ecosystems
Managing Internal, Private External, and Open Developer EcosystemsLarry McDonough
 
Micro Front Ends for Micro Services using Oracle JET
Micro Front Ends for Micro Services using Oracle JETMicro Front Ends for Micro Services using Oracle JET
Micro Front Ends for Micro Services using Oracle JETVijay Nair
 
Bluemix DevOps Meetup
Bluemix DevOps MeetupBluemix DevOps Meetup
Bluemix DevOps MeetupKyle Brown
 
Infrastructure less development with Azure Service Fabric
Infrastructure less development with Azure Service FabricInfrastructure less development with Azure Service Fabric
Infrastructure less development with Azure Service FabricSaba Jamalian
 
Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)
Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)
Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)Nedelcho Delchev
 
Grails At Linked
Grails At LinkedGrails At Linked
Grails At LinkedLinkedIn
 
Building Cloud Native Applications with Oracle Autonomous Database.
Building Cloud Native Applications with Oracle Autonomous Database.Building Cloud Native Applications with Oracle Autonomous Database.
Building Cloud Native Applications with Oracle Autonomous Database.Oracle Developers
 
Application Architecture For The Cloud
Application Architecture For The CloudApplication Architecture For The Cloud
Application Architecture For The CloudSteve Loughran
 
Building Cloud Native Applications
Building Cloud Native Applications Building Cloud Native Applications
Building Cloud Native Applications Munish Gupta
 
Cloud Native Application
Cloud Native ApplicationCloud Native Application
Cloud Native ApplicationVMUG IT
 
The Journey to Mainframe DevOps
The Journey to Mainframe DevOpsThe Journey to Mainframe DevOps
The Journey to Mainframe DevOpsMicro Focus
 

What's hot (20)

J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"
J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"
J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"
 
Introduce yourself to java 17
Introduce yourself to java 17Introduce yourself to java 17
Introduce yourself to java 17
 
12-factor applications using WAS Liberty, IBM Bluemix, and Docker
12-factor applications using WAS Liberty, IBM Bluemix, and Docker12-factor applications using WAS Liberty, IBM Bluemix, and Docker
12-factor applications using WAS Liberty, IBM Bluemix, and Docker
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
 
Applying DevOps, PaaS and cloud for better citizen service outcomes - IBM Fe...
Applying DevOps, PaaS and cloud for better citizen service  outcomes - IBM Fe...Applying DevOps, PaaS and cloud for better citizen service  outcomes - IBM Fe...
Applying DevOps, PaaS and cloud for better citizen service outcomes - IBM Fe...
 
Why Microservice
Why Microservice Why Microservice
Why Microservice
 
DEVNET-1147 Energizing Your Career with Cloud Technologies
DEVNET-1147	Energizing Your Career with Cloud TechnologiesDEVNET-1147	Energizing Your Career with Cloud Technologies
DEVNET-1147 Energizing Your Career with Cloud Technologies
 
Managing Internal, Private External, and Open Developer Ecosystems
Managing Internal, Private External, and Open Developer EcosystemsManaging Internal, Private External, and Open Developer Ecosystems
Managing Internal, Private External, and Open Developer Ecosystems
 
Micro Front Ends for Micro Services using Oracle JET
Micro Front Ends for Micro Services using Oracle JETMicro Front Ends for Micro Services using Oracle JET
Micro Front Ends for Micro Services using Oracle JET
 
Bluemix DevOps Meetup
Bluemix DevOps MeetupBluemix DevOps Meetup
Bluemix DevOps Meetup
 
Infrastructure less development with Azure Service Fabric
Infrastructure less development with Azure Service FabricInfrastructure less development with Azure Service Fabric
Infrastructure less development with Azure Service Fabric
 
Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)
Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)
Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)
 
Grails At Linked
Grails At LinkedGrails At Linked
Grails At Linked
 
Building Cloud Native Applications with Oracle Autonomous Database.
Building Cloud Native Applications with Oracle Autonomous Database.Building Cloud Native Applications with Oracle Autonomous Database.
Building Cloud Native Applications with Oracle Autonomous Database.
 
12-Factor Apps
12-Factor Apps12-Factor Apps
12-Factor Apps
 
Application Architecture For The Cloud
Application Architecture For The CloudApplication Architecture For The Cloud
Application Architecture For The Cloud
 
Building Cloud Native Applications
Building Cloud Native Applications Building Cloud Native Applications
Building Cloud Native Applications
 
Bluemix summary
Bluemix summaryBluemix summary
Bluemix summary
 
Cloud Native Application
Cloud Native ApplicationCloud Native Application
Cloud Native Application
 
The Journey to Mainframe DevOps
The Journey to Mainframe DevOpsThe Journey to Mainframe DevOps
The Journey to Mainframe DevOps
 

Similar to Microservices

Microservices - Scaling Development and Service
Microservices - Scaling Development and ServiceMicroservices - Scaling Development and Service
Microservices - Scaling Development and ServicePaulo Gaspar
 
Introduction to 5w’s of DevOps
Introduction to 5w’s of DevOpsIntroduction to 5w’s of DevOps
Introduction to 5w’s of DevOpsCygnet Infotech
 
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...Microservices at Scale: How to Reduce Overhead and Increase Developer Product...
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...DevOps.com
 
Webinar: Ten Ways to Enhance Your Salesforce.com Application in 2013
Webinar: Ten Ways to Enhance Your Salesforce.com Application in 2013Webinar: Ten Ways to Enhance Your Salesforce.com Application in 2013
Webinar: Ten Ways to Enhance Your Salesforce.com Application in 2013Emtec Inc.
 
Building a DevOps Team that Isn't Evil
Building a DevOps Team that Isn't EvilBuilding a DevOps Team that Isn't Evil
Building a DevOps Team that Isn't EvilIBM UrbanCode Products
 
7 Secrets to Becoming a Citrix Hero
7 Secrets to Becoming a Citrix Hero7 Secrets to Becoming a Citrix Hero
7 Secrets to Becoming a Citrix HeroeG Innovations
 
Chris Munns, DevOps @ Amazon: Microservices, 2 Pizza Teams, & 50 Million Depl...
Chris Munns, DevOps @ Amazon: Microservices, 2 Pizza Teams, & 50 Million Depl...Chris Munns, DevOps @ Amazon: Microservices, 2 Pizza Teams, & 50 Million Depl...
Chris Munns, DevOps @ Amazon: Microservices, 2 Pizza Teams, & 50 Million Depl...TriNimbus
 
Atlassian Executive Business Forum - LinkedIn HQ
Atlassian Executive Business Forum - LinkedIn HQAtlassian Executive Business Forum - LinkedIn HQ
Atlassian Executive Business Forum - LinkedIn HQServiceRocket
 
AWS Community Day: From Monolith to Microservices - What Could Go Wrong?
AWS Community Day: From Monolith to Microservices - What Could Go Wrong?AWS Community Day: From Monolith to Microservices - What Could Go Wrong?
AWS Community Day: From Monolith to Microservices - What Could Go Wrong?Phuong Mai Nguyen
 
Kanban testing
Kanban testingKanban testing
Kanban testingCprime
 
Continuous Delivery: why ? where to start ? how to scale ?
Continuous Delivery: why ? where to start ? how to scale ?Continuous Delivery: why ? where to start ? how to scale ?
Continuous Delivery: why ? where to start ? how to scale ?Jean-Philippe Briend
 
6 ways DevOps helped PrepSportswear move from monolith to microservices
6 ways DevOps helped PrepSportswear move from monolith to microservices6 ways DevOps helped PrepSportswear move from monolith to microservices
6 ways DevOps helped PrepSportswear move from monolith to microservicesDynatrace
 
Delivering A Great End User Experience
Delivering A Great End User ExperienceDelivering A Great End User Experience
Delivering A Great End User ExperienceTrevor Warren
 
Continous Integration Webinar
Continous Integration WebinarContinous Integration Webinar
Continous Integration WebinarPaul Senatillaka
 
Changing the Game with Cloud, Microservices, and DevOps
Changing the Game with Cloud, Microservices, and DevOps Changing the Game with Cloud, Microservices, and DevOps
Changing the Game with Cloud, Microservices, and DevOps Brian Chambers
 
Continuous Delivery at Wix, Yaniv Even Haim
Continuous Delivery at Wix, Yaniv Even HaimContinuous Delivery at Wix, Yaniv Even Haim
Continuous Delivery at Wix, Yaniv Even HaimDevOpsDays Tel Aviv
 
DevOps - Orientation Session
DevOps - Orientation SessionDevOps - Orientation Session
DevOps - Orientation SessionM M Nair
 
Des serveurs créés pour vos usages specifiques, vous en avez reve HP l'a fait.
Des serveurs créés pour vos usages specifiques, vous en avez reve HP l'a fait.Des serveurs créés pour vos usages specifiques, vous en avez reve HP l'a fait.
Des serveurs créés pour vos usages specifiques, vous en avez reve HP l'a fait.Microsoft Décideurs IT
 

Similar to Microservices (20)

Microservices - Scaling Development and Service
Microservices - Scaling Development and ServiceMicroservices - Scaling Development and Service
Microservices - Scaling Development and Service
 
English digital business 2.1.pptx
English digital business 2.1.pptxEnglish digital business 2.1.pptx
English digital business 2.1.pptx
 
Introduction to 5w’s of DevOps
Introduction to 5w’s of DevOpsIntroduction to 5w’s of DevOps
Introduction to 5w’s of DevOps
 
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...Microservices at Scale: How to Reduce Overhead and Increase Developer Product...
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...
 
Webinar: Ten Ways to Enhance Your Salesforce.com Application in 2013
Webinar: Ten Ways to Enhance Your Salesforce.com Application in 2013Webinar: Ten Ways to Enhance Your Salesforce.com Application in 2013
Webinar: Ten Ways to Enhance Your Salesforce.com Application in 2013
 
Building a DevOps Team that Isn't Evil
Building a DevOps Team that Isn't EvilBuilding a DevOps Team that Isn't Evil
Building a DevOps Team that Isn't Evil
 
7 Secrets to Becoming a Citrix Hero
7 Secrets to Becoming a Citrix Hero7 Secrets to Becoming a Citrix Hero
7 Secrets to Becoming a Citrix Hero
 
Chris Munns, DevOps @ Amazon: Microservices, 2 Pizza Teams, & 50 Million Depl...
Chris Munns, DevOps @ Amazon: Microservices, 2 Pizza Teams, & 50 Million Depl...Chris Munns, DevOps @ Amazon: Microservices, 2 Pizza Teams, & 50 Million Depl...
Chris Munns, DevOps @ Amazon: Microservices, 2 Pizza Teams, & 50 Million Depl...
 
Atlassian Executive Business Forum - LinkedIn HQ
Atlassian Executive Business Forum - LinkedIn HQAtlassian Executive Business Forum - LinkedIn HQ
Atlassian Executive Business Forum - LinkedIn HQ
 
AWS Community Day: From Monolith to Microservices - What Could Go Wrong?
AWS Community Day: From Monolith to Microservices - What Could Go Wrong?AWS Community Day: From Monolith to Microservices - What Could Go Wrong?
AWS Community Day: From Monolith to Microservices - What Could Go Wrong?
 
Kanban testing
Kanban testingKanban testing
Kanban testing
 
Continuous Delivery: why ? where to start ? how to scale ?
Continuous Delivery: why ? where to start ? how to scale ?Continuous Delivery: why ? where to start ? how to scale ?
Continuous Delivery: why ? where to start ? how to scale ?
 
6 ways DevOps helped PrepSportswear move from monolith to microservices
6 ways DevOps helped PrepSportswear move from monolith to microservices6 ways DevOps helped PrepSportswear move from monolith to microservices
6 ways DevOps helped PrepSportswear move from monolith to microservices
 
Delivering A Great End User Experience
Delivering A Great End User ExperienceDelivering A Great End User Experience
Delivering A Great End User Experience
 
Continous Integration Webinar
Continous Integration WebinarContinous Integration Webinar
Continous Integration Webinar
 
Changing the Game with Cloud, Microservices, and DevOps
Changing the Game with Cloud, Microservices, and DevOps Changing the Game with Cloud, Microservices, and DevOps
Changing the Game with Cloud, Microservices, and DevOps
 
DevOps with Chef
DevOps with ChefDevOps with Chef
DevOps with Chef
 
Continuous Delivery at Wix, Yaniv Even Haim
Continuous Delivery at Wix, Yaniv Even HaimContinuous Delivery at Wix, Yaniv Even Haim
Continuous Delivery at Wix, Yaniv Even Haim
 
DevOps - Orientation Session
DevOps - Orientation SessionDevOps - Orientation Session
DevOps - Orientation Session
 
Des serveurs créés pour vos usages specifiques, vous en avez reve HP l'a fait.
Des serveurs créés pour vos usages specifiques, vous en avez reve HP l'a fait.Des serveurs créés pour vos usages specifiques, vous en avez reve HP l'a fait.
Des serveurs créés pour vos usages specifiques, vous en avez reve HP l'a fait.
 

More from PT.JUG

Putting Hypermedia Back in REST with JAX-RS
Putting Hypermedia Back in REST with JAX-RSPutting Hypermedia Back in REST with JAX-RS
Putting Hypermedia Back in REST with JAX-RSPT.JUG
 
Flame Graphs, uma (boa) alternativa para profiling de apps Java
Flame Graphs, uma (boa) alternativa para profiling de apps JavaFlame Graphs, uma (boa) alternativa para profiling de apps Java
Flame Graphs, uma (boa) alternativa para profiling de apps JavaPT.JUG
 
What's Coming in Java EE 8
What's Coming in Java EE 8What's Coming in Java EE 8
What's Coming in Java EE 8PT.JUG
 
An Introduction to Play 2 Framework
An Introduction to Play 2 FrameworkAn Introduction to Play 2 Framework
An Introduction to Play 2 FrameworkPT.JUG
 
JMockit & Hamcrest
JMockit & HamcrestJMockit & Hamcrest
JMockit & HamcrestPT.JUG
 
Apache Camel
Apache CamelApache Camel
Apache CamelPT.JUG
 
Using JPA applications in the era of NoSQL: Introducing Hibernate OGM
Using JPA applications in the era of NoSQL: Introducing Hibernate OGMUsing JPA applications in the era of NoSQL: Introducing Hibernate OGM
Using JPA applications in the era of NoSQL: Introducing Hibernate OGMPT.JUG
 
Introducing Infinispan
Introducing InfinispanIntroducing Infinispan
Introducing InfinispanPT.JUG
 
To SOA or not to SOA
To SOA or not to SOATo SOA or not to SOA
To SOA or not to SOAPT.JUG
 
Introduction to Grails Framework
Introduction to Grails FrameworkIntroduction to Grails Framework
Introduction to Grails FrameworkPT.JUG
 
Apresentação LifeRay
Apresentação LifeRayApresentação LifeRay
Apresentação LifeRayPT.JUG
 
Oracle Java Strategy Lg V3
Oracle Java Strategy Lg V3Oracle Java Strategy Lg V3
Oracle Java Strategy Lg V3PT.JUG
 
Scripting na JVM
Scripting na JVMScripting na JVM
Scripting na JVMPT.JUG
 
The tale of the Fénix architecture
The tale of the Fénix architectureThe tale of the Fénix architecture
The tale of the Fénix architecturePT.JUG
 
Lightweight Grids With Terracotta
Lightweight Grids With TerracottaLightweight Grids With Terracotta
Lightweight Grids With TerracottaPT.JUG
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web ToolkitPT.JUG
 
Developers Java: O que as empresas dizem que precisam mesmo mesmo
Developers Java: O que as empresas dizem que precisam mesmo mesmoDevelopers Java: O que as empresas dizem que precisam mesmo mesmo
Developers Java: O que as empresas dizem que precisam mesmo mesmoPT.JUG
 

More from PT.JUG (17)

Putting Hypermedia Back in REST with JAX-RS
Putting Hypermedia Back in REST with JAX-RSPutting Hypermedia Back in REST with JAX-RS
Putting Hypermedia Back in REST with JAX-RS
 
Flame Graphs, uma (boa) alternativa para profiling de apps Java
Flame Graphs, uma (boa) alternativa para profiling de apps JavaFlame Graphs, uma (boa) alternativa para profiling de apps Java
Flame Graphs, uma (boa) alternativa para profiling de apps Java
 
What's Coming in Java EE 8
What's Coming in Java EE 8What's Coming in Java EE 8
What's Coming in Java EE 8
 
An Introduction to Play 2 Framework
An Introduction to Play 2 FrameworkAn Introduction to Play 2 Framework
An Introduction to Play 2 Framework
 
JMockit & Hamcrest
JMockit & HamcrestJMockit & Hamcrest
JMockit & Hamcrest
 
Apache Camel
Apache CamelApache Camel
Apache Camel
 
Using JPA applications in the era of NoSQL: Introducing Hibernate OGM
Using JPA applications in the era of NoSQL: Introducing Hibernate OGMUsing JPA applications in the era of NoSQL: Introducing Hibernate OGM
Using JPA applications in the era of NoSQL: Introducing Hibernate OGM
 
Introducing Infinispan
Introducing InfinispanIntroducing Infinispan
Introducing Infinispan
 
To SOA or not to SOA
To SOA or not to SOATo SOA or not to SOA
To SOA or not to SOA
 
Introduction to Grails Framework
Introduction to Grails FrameworkIntroduction to Grails Framework
Introduction to Grails Framework
 
Apresentação LifeRay
Apresentação LifeRayApresentação LifeRay
Apresentação LifeRay
 
Oracle Java Strategy Lg V3
Oracle Java Strategy Lg V3Oracle Java Strategy Lg V3
Oracle Java Strategy Lg V3
 
Scripting na JVM
Scripting na JVMScripting na JVM
Scripting na JVM
 
The tale of the Fénix architecture
The tale of the Fénix architectureThe tale of the Fénix architecture
The tale of the Fénix architecture
 
Lightweight Grids With Terracotta
Lightweight Grids With TerracottaLightweight Grids With Terracotta
Lightweight Grids With Terracotta
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Developers Java: O que as empresas dizem que precisam mesmo mesmo
Developers Java: O que as empresas dizem que precisam mesmo mesmoDevelopers Java: O que as empresas dizem que precisam mesmo mesmo
Developers Java: O que as empresas dizem que precisam mesmo mesmo
 

Recently uploaded

Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 

Recently uploaded (20)

Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 

Microservices

  • 1. © Equal Experts UK Ltd 2015 Microservices Scaling Human Work by Paulo Gaspar @paulogaspar7
  • 2. © Equal Experts UK Ltd 2015 Does size matter? (Why didn’t Jeff Bezos want to give more than two pizzas to each team?)
  • 3. © Equal Experts UK Ltd 2015 Large versus Small (Systems) • Ever worked on both? • Compare… • Knowledge sharing / communication? • Pace of progress? • New technology adoption? • Ease of technical debt elimination? • Accountability (not throwing issues over the wall)?
  • 4. © Equal Experts UK Ltd 2015 But what are Microservices?
  • 5. © Equal Experts UK Ltd 2015 Fowler Description § The microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies. http://martinfowler.com/articles/microservices.html
  • 6. © Equal Experts UK Ltd 2015 Fowler Description… …says nothing about its WHYs
  • 7. © Equal Experts UK Ltd 2015 Why Microservices? §Performance? §Availability? §Scalability? §Because you like Docker and doing DevOps?
  • 8. © Equal Experts UK Ltd 2015 Why Microservices? §Or is there a “non production time” reason?
  • 9. © Equal Experts UK Ltd 2015 My experience…
  • 10. © Equal Experts UK Ltd 2015 A NAIVE FIRST TIME…
  • 11. © Equal Experts UK Ltd 2015 The very First Time… • Just because of Spring Boot (and Spring Loaded!) • We loved how fast and easy was running a service for development tests • Naturally, services were split and kept being split by functionality • We had different load requirements per service… • We started everything by hand, with scripts • We looked at Docker and several other tools for automation • Size was kept small “just” because it helped dividingwork and keepingchurn out high
  • 12. © Equal Experts UK Ltd 2015 The First Time Were this real Microservices? …or just a SOA flavour?
  • 13. © Equal Experts UK Ltd 2015 2ND TIME EXPERIENCED PARTNERS
  • 14. © Equal Experts UK Ltd 2015 The Dream Team - First impressions • Very large overall project (a few hundred developers) • Very senior team • Real Agile, TDD, Reactive Programming, Scala, Pairing … • So many services, but my laptop can run all I need for integration tests! • Infrastructure of sharedtechnologies (messaging, database, monitoring…) • Infrastructure restrictions on used technologies • No management interferenceon technical decisions • Management (P.O. and others) supports technical issue prioritization • Management (P.O. and others) displays full trust on development team indications
  • 15. © Equal Experts UK Ltd 2015 The Dream Team – the line up • Product Owner (P.O.) • Scrum Master • 8 Developers • 2 QA (Quality andAssurance) • A couple of B.A.s (BusinessAnalysts) • Shared UX team (Design, User Experience, etc.) • A couple of business monitoring elements
  • 16. © Equal Experts UK Ltd 2015 Second impressions– Technicalities • Impressive churn out… • Functional stories oftendone faster than I initially estimated • Was this repeated across these many teams? (Scalability) • Shocked: no Business Logic on Libraries!!! • Shocked: not only do we pair, but pairs rotate twice a week • Internal Open Source for technical code • Each Microserviceis, at most, a few thousand lines big • There are mechanisms to deal with distributed computingissues (error propagation, latencies, cumulative latencies…) • Improving monitoringand available metrics receives a lot of attention
  • 17. © Equal Experts UK Ltd 2015 Second impressions– Tribal team behaviour • Programming intensity is very high - almost all the time (out of meetings) is spent coding (Sounds normal to complete a medium size ticket in 2 to 4 days) • Some tribal behavioursof the developer team: • A whole team impromptu meeting is triggered if we find a production problem • Impromptu meetings also when a structural decision must be taken when coding (Yes, the code is own by the “tribe” as a whole) • Working out of office hours dedicated to monitoring • Developers report a large portion of the production issues (often before they have impact) • A lot of importance given by management to developers feedback • Work pace is not affected after one of the most experiencedteam members leaves
  • 18. © Equal Experts UK Ltd 2015 Interactions separated by domain… • Developers directly take care of solving technical issues • Infrastructure teams send people to help and doctrine Microservice developers on the hows and whys of their systems / services • …and support Microservice teams into monitoring their own services • Technical issues / doubts sorted out by direct developer contact with other teams (Infrastructure, other development teams,architects,…) • Technical code is shared (with all teams) as internal Open Source • Business / management people directly take care of solving business related issues • All Stories are defined by B.A.s and reviewed by Developer before considering them ready • All remaining doubts about business related issues sorted out by B.A.s or P.O.s • Developers do not directly go get information from domain experts just to sort out a story • Only B.A.s or P.O.s bring information across from domain experts to developers
  • 19. © Equal Experts UK Ltd 2015 Customerfeedback It was repeatedly mentioned by customer representatives how the team had exceeded their productivity expectations (and how quality was kept high)
  • 20. © Equal Experts UK Ltd 2015 The Big Picture • Developersown the code as a group • Developerstake direct care of technicalmatters • Managers/ B.A.s take care of business related matters • Managerstrust developers(and vice versa) • Scalability: other teams seem to be doing just the same • Customer is happy with productivity + quality (this team’sand overall)
  • 21. © Equal Experts UK Ltd 2015 The Big Picture Ownership Accountability Trust
  • 22. © Equal Experts UK Ltd 2015 The Big Picture I believe we were doing REAL Microservices
  • 23. © Equal Experts UK Ltd 2015 WHAT DO OTHERS SAY?
  • 24. © Equal Experts UK Ltd 2015 Development on LARGE applications • Steeper learning curve • Higher CODE DRAG • Throwing responsibilities over the wall • Development tools and containers get overloaded => slower development • Larger teams have higher communication costs / problems • Must rebuild and redeploy a large volume of code for any small change • Any change (functional or technologic) is harder and riskier • Riskier and expensive changes happen less frequently => slower evolution
  • 25. © Equal Experts UK Ltd 2015 Development on Microservices • Smaller teams • Less communication paths, lowercommunication costs • Services get developedand deployed independently • Smaller and simpler code bases are • Easier to learn and faster to develop on • Less prone to dependency hell • Faster + simpler to build and deploy • Easier to compose and to replace • Producing less code drag • Change is simpler and risks more isolated • Evolution is easier
  • 26. © Equal Experts UK Ltd 2015 Microservices – the WHYs… Achieving SCALABLE high productivity
  • 27. © Equal Experts UK Ltd 2015 Is this SOA • “Traditional SOA” was dominated by vendors and the technologiesthey promoted (e.g.: some people thought that SOAhad to be done with SOAP) • Microservices grew from practical needs and concerns, with no vendor/technology ties • SOA done right?
  • 28. © Equal Experts UK Ltd 2015 MY 2 CENTS
  • 29. © Equal Experts UK Ltd 2015 But I noticed that developing“with Microservices”… Does NOT always work that well!
  • 30. © Equal Experts UK Ltd 2015 Developing“with Microservices”… Does not always work that well, because Microservices are an enabler, NOT a guarantee
  • 31. © Equal Experts UK Ltd 2015 Scaling high productivity=> high productivityon each Dev. Team!
  • 32. © Equal Experts UK Ltd 2015 To have good results developing with Microservices… Several roles must be well played Several things must be done right …or you are just doing a SOA flavour!
  • 33. © Equal Experts UK Ltd 2015 To have good results developing with Microservices… Doing Agile well sure helps (You know you can read about Agile elsewhere!)
  • 34. © Equal Experts UK Ltd 2015 The role of Developers… • Is to code/producea maximum of business functionality • It works better if: • Distractions and obstacles to play that role are kept to a minimum • The business functionality to implement is well defined from the start of each task/ticket • Stress is kept to the necessary minimum • Team members rotate across all of the team’s Microservices • Knowledge and decisions are (BOTH) shared (Only with shared knowledge is decision sharing productive) • All other roles and practices we talk about simply serve this purpose
  • 35. © Equal Experts UK Ltd 2015 The importance of having team QAs… • Acceptance tests and the dance of pushing to deployment have high latencies • The developer can transport the coding momentum to the next ticket • The QA fills latencies better by juggling between multiple tickets • The QA validates produced work better because: • He/she is not biased by the development work, keeping an higher focus on specs • Has a better overview overwhat is going on across tickets • Their independence from development qualifies them better to produce good acceptance tests • …and you can read a lot more about this role elsewhere
  • 36. © Equal Experts UK Ltd 2015 The importance of a Scrum Masters or Delivery Manager, Product Owners, BusinessAnalysts… • Keep the programming team’s focus • And feed it with a well coordinated/ordered and uninterrupted stream of clearly defined tasks/stories acrossteams • This actually means many order tasks, defining and keepinga vision, like prioritizing work, coordinating work across teams, handling the customer, keeping unnecessarypolitics away from development work, etc.
  • 37. © Equal Experts UK Ltd 2015 Improving DRY(Don’t Repeat Yourself) • Common vision + principles increase the opportunities for synergies • Creating synergies demands coordination + steering • …reducing redundant efforts and boring wheel reinvention • …improving sharing and development speed • Balance steering to give some room for experimentation -> evolution
  • 38. © Equal Experts UK Ltd 2015 The importance of good horizontal teams (improvingDRY)
  • 39. © Equal Experts UK Ltd 2015 Horizontal Team – Business / Management (improvingDRY) • A (Functional/Business)Vision • A Plan • Well coordinated and well prioritizedflow of stories… • …consistent across all teams
  • 40. © Equal Experts UK Ltd 2015 Horizontal Team – SystemArchitecture (improving DRY) • Vision • Overall high level (but well grounded) design • Consistent design principles / values / philosophy • Steering • Gathering collective experience and sharingthe resulting knowledge • (Interesting discussionabout this role on the Sam Newman’s book)
  • 41. © Equal Experts UK Ltd 2015 Horizontal Teams – Infrastructure (improving DRY) • Means to effectively share knowledge across teams • Means to support the sharingof “internal open source” • Shared productionservices (databases, message queues, etc.) • Other shared development support services • Other means to share and reduce the cost of technical services
  • 42. © Equal Experts UK Ltd 2015 Coding -the importance of service SIZE… • We are talking about MICROservices • Not of Large or Extra Large services • Not even of Medium Services • Not even Small-ish or Mini Services • The name is MICROservices!!!
  • 43. © Equal Experts UK Ltd 2015 Would you call this a Micro mammal?
  • 44. © Equal Experts UK Ltd 2015 The importance of SIZE – remember, smaller code bases are… • Easier to learn and faster to develop on • Less prone to dependency hell • Faster + simpler to build and deploy • Easier to compose and to replace • Producing less code drag, therefore being easier to • Replace • Refactor • Evolve, independently, at the most convenient pace
  • 45. © Equal Experts UK Ltd 2015 Signs it is NOT a Microservice (just a service)… • Lines of code count is high - into the 5 (or more) digits • Covers multiple (worse if disparate) functional topics • Big volumes of technical code included - e.g.: an audit servlet filter (But you can have their functionalityincluded in libraries) • A lot of developers working simultaneously on the same service Maybe you are doing some other SOA flavour
  • 46. © Equal Experts UK Ltd 2015 Signs it is a good Microservice… • Lines of code count is low (3 or 4 digits) • Focus on business logic code • Covers one functional topic (although you might end up dividing it in sub-topics forever…) • No business logic in libraries (since it produces version management and functional consistencyproblems) • No duplicate business logicwith other services (DRY, functional consistency) • Meaningful volumes of reusable technical code are placed in libraries to • Keep focus on business logic • Ease future splits • Share (i.e.: reduce overall) technical cost
  • 47. © Equal Experts UK Ltd 2015 When you start • Start small • Learn the basics well andASAP • Just the essential principles you need for your scale • …inclusive about REST, if you use it • …and CQRS (Command Query Responsibility Segregation) • Don’t be in a hurry to divide services • Take your time to learn each piece you add • Lear about the “new” types of error you are exposed to, like: • Fallacies of distributed computing https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing
  • 48. © Equal Experts UK Ltd 2015 When you start (doing large scale Microservices) • Embrace Devops • Brace for networking related problems • Latency across a call stack • Manage timeouts • Cascading failures • Circuit breakers,bulkheads,isolation • Start monitoring • Collect metrics • Good logs and a log repository • Tracing
  • 49. © Equal Experts UK Ltd 2015 …remember the fallacies… • The network is reliable. • Latency is zero. • Bandwidth is infinite. • The network is secure. • Topology doesn't change. • There is one administrator. • Transport cost is zero. • The network is homogeneous.
  • 50. © Equal Experts UK Ltd 2015 READING/STUDY MATERIAL…
  • 51. © Equal Experts UK Ltd 2015 Some reading material • Building Microservices, by Sam Newman (O’REILLY) • http://microservices.io • Netflix stuff • http://netflix.github.io • Distributed computing (some topics to search for…) • CAP Theorem (read the paper) • Eventual Consistency (read the Dynamo DB paper) • Idempotency • Consensus • Causality • Serializability and Linearizability
  • 52. © Equal Experts UK Ltd 2015 Historic Big Players • Amazon • Amazon Cloud • Amazon’s Two-Pizza Team Rule http://blog.idonethis.com/two-pizza-team/ • Netflix • http://netflix.github.io
  • 53. © Equal Experts UK Ltd 2015 Microservice frameworks • Dropwizard http://www.dropwizard.io • Spring Boot http://projects.spring.io/spring-boot/ https://github.com/spring-projects/spring-loaded https://spring.io/blog/2015/06/17/devtools-in-spring-boot-1-3 http://projects.spring.io/spring-hateoas/ • Play Framework https://www.playframework.com • Netflix Karyon https://github.com/Netflix/karyon
  • 54. © Equal Experts UK Ltd 2015 Monitoring • Metrics https://dropwizard.github.io/metrics/ • Grafana http://grafana.org • ELK – ElasticSearch, LogStash, Kibana https://www.elastic.co/webinars/introduction-elk-stack • Twitter Zipkin (tracing) http://twitter.github.io/zipkin/
  • 55. © Equal Experts UK Ltd 2015 Basic Resilience • Netflix stuff (discovery, client side LB, circuit breakers) • http://netflix.github.io • http://cloud.spring.io/spring-cloud-netflix/ • Spring Cloud • http://cloud.spring.io/
  • 56. © Equal Experts UK Ltd 2015 Databases and Datastores • Service databases (one instance/schema per service family) • Separated report database (usually relational) • Database variants • Relational, document based, key-value, etc. • Notable databases / data stores • MongoDB, PostgreSQL, Redis, ElasticSearch • http://projects.spring.io/spring-data/
  • 57. © Equal Experts UK Ltd 2015 Messaging • Sophisticated Routing RabbitMQ https://www.rabbitmq.com • High volume Apache Kafka http://kafka.apache.org https://github.com/spring-projects/spring-integration-kafka
  • 58. © Equal Experts UK Ltd 2015 Others • Swagger (service description) http://swagger.io • Docker (virtualization) https://www.docker.com • Kubernetes (Cloud deployment) http://kubernetes.io • NGINX (networking infrastructure) https://www.nginx.com • Zookeeper (consensus, presence, other coordination) http://zookeeper.apache.org
  • 59. © Equal Experts UK Ltd 2015 Thank you! Paulo Gaspar @paulogaspar7