SlideShare a Scribd company logo
Building Next Gen Applications and Microservices
Steve Mirman, IBM Bluemix Architect
@SteveMirman
June 15, 2016
Progression to Microservices
2
Continuous
Integration
Agile
Heavyweight
development
Continuous
Deployment
DevOps
Microservices
1. From Heavyweight Development to Agile
3
• A consolidation of ideas from
Extreme Programming,
Scrum, Lean, etc.
• Tried to remove the overhead
and risk of large scale
software development by
having:
– Smaller work increments
– Frequent iterations
– Rapid prototyping
Continuous
Integration
Agile
Heavyweight
development
Continuous
Deployment
DevOps
Microservices
2. From Agile to Continuous Integration (CI)
4
• Sought to combine software components as early in
the lifecycle as possible in order to minimize the
impact of code integration issues.
• Virtualization and automated testing removed
technological barriers to CI.
• The adoption of Agile led to a growth in CI, which
was a common practice in Extreme Programming.
Continuous
Integration
Agile
Heavyweight
development
Continuous
Deployment
DevOps
Microservices
3. From CI to Continuous Delivery (CD)
5
• CD defines a deployment
pipeline to bring changes to
production as quickly as possible.
• Is an instantiation of Scrum’s
“potentially shippable product
increment”.
Continuous
Integration
Agile
Heavyweight
development
Continuous
Deployment
DevOps
Microservices
4. From CD to DevOps
6
• In most organizations development and operations were separate.
• Organizations where operations and development were together
were more successful at establishing CD practices.
• Engineering approaches were taken to problems that were
previously dealt with procedurally.
• This led to:
– Higher automation in day to day tasks
– Greater stability and resilience
Continuous
Integration
Agile
Heavyweight
development
Continuous
Deployment
DevOps
Microservices
5. From DevOps to Microservices
7
• The architectural phase where large monolithic
applications are broken down into discrete, business
focused services.
• This led to:
– Higher development parallelization
– Greater scalability and utilization
Continuous
Integration
Agile
Heavyweight
development
Continuous
Deployment
DevOps
Microservices
Microservice Outcomes
• Increase Speed
• Reduce Cost
• Improve Resilience
• Enable Visibility
8
Microservice Keys to Success
9
Architecture
MethodologyTechnology
Organization
Organizational Success
• Are teams aligned to business or
technology?
• How are responsibilities divided between
teams?
• At what level of organization are
development and operations divided?
DevOps or Development and Operations?
• What are team sizes and skills?
• Dependencies and cross-team
communications?
• Power distribution between teams?
10
Architecture
MethodologyTechnology
Organization
Methodological Success
• Product or projects?
• Agile or waterfall?
• Who controls business requirements?
• Fear of change, or continuous delivery?
• Degree of automation in deployment and
operations?
11
Architecture
MethodologyTechnology
Organization
Technological Success
• Cloud provisioning?
• Virtualization? Containerization?
• Application integration approach?
• Security and identity management?
• Operational middleware?
• Language? Databases?
• Legacy technologies?
12
Architecture
MethodologyTechnology
Organization
Architectural Example
13
Architecture
MethodologyTechnology
Organization
Microservice Technologies
• Containers
– Encapsulate services and are accessible by IP/port combination
• Service Discovery
– Provides a way to know when services have been added/removed and
where they are located
• Service Orchestration
– Manages service topologies
– Ensures availability and utilization
• API gateway
– Security
– Routing
14
High Level View
• Connect to services through
HTTP
• Services communicate through
event bus
• Services can be written in
whatever language is best for
the task and skills available
• Each service stores data
independently
15
Containerized Deployment
• Services can scale
independently according to
load without affecting the
others
• Services connect to external
data stores (databases, BLOB
stores, etc.)
• Containers, service discovery,
API gateway
• Efficient/single point of failure
16
Optimized Containerized Deployment
• Groups of services can be
collocated on physical systems
• Containers, service discovery,
service orchestration, API
gateway
• Efficient/highly available
17
Microservice Principles
• Do One Thing Well
• Build Afresh
• Expect Output to Become Input
• Don’t Insist on Interactive Input
• Try Early
• Don’t Hesitate to Throw it Away
• Toolmaking
18
19

More Related Content

PPTX
Bluemix DevOps Services
PPT
Bluemix and DevOps workshop lab
PDF
Get over the Cloud with Bluemix
PDF
Integrating BlueMix into a DevOps pipeline
PDF
Getting Started with Cloud Foundry on Bluemix
PDF
Getting Started with Cloud Foundry on Bluemix
PPT
Cognitive Computing on the Cloud - Watson services for bluemix
PPTX
IBM Relay 2015: Opening Keynote
 
Bluemix DevOps Services
Bluemix and DevOps workshop lab
Get over the Cloud with Bluemix
Integrating BlueMix into a DevOps pipeline
Getting Started with Cloud Foundry on Bluemix
Getting Started with Cloud Foundry on Bluemix
Cognitive Computing on the Cloud - Watson services for bluemix
IBM Relay 2015: Opening Keynote
 

What's hot (20)

PPTX
IBM Relay 2015: Expect More From Private Cloud
 
PPTX
Containers, Microsoft and DevOps: What is Microsoft Doing About All This Anyw...
PPTX
Applying DevOps, PaaS and cloud for better citizen service outcomes - IBM Fe...
PDF
Ibm bluemix paris_techtalks 2015
PPTX
DevOps on Microsoft Platform
PDF
Bluemix DevOps Meetup
PDF
The Muda, Mura and Muri of DevOps
PDF
Devops the Microsoft Way
PDF
Adopting DevOps in a Hybrid Cloud Featuring UrbanCode Deploy with Bluemix
PDF
Hybrid Cloud DevOps with Apprenda and UrbanCode Deploy
PDF
Mastering DevOps Automation: Webinar
PDF
Security and DevOps - Managing Security in a DevOps Enterprise
PPTX
IBM Bluemix Overview
PDF
IBM Connect 2014 - BP207 - Don’t Reinvent the Wheel - (Re)use Open Source Sof...
PDF
From DevOps to DevSecOps: 2 Dimensions of Security for DevOps
PPTX
Cloud and agile software projects: Overview and Benefits
PDF
The Future of DevOps and UrbanCode
PPTX
DevOps made simple - Understand DevOps and steps to become a DevOps expert
PPTX
Enterprise DevOps: Scaling Build, Deploy, Test, Release
PPTX
DevOps For Everyone: Bringing DevOps Success to Every App and Every Role in y...
IBM Relay 2015: Expect More From Private Cloud
 
Containers, Microsoft and DevOps: What is Microsoft Doing About All This Anyw...
Applying DevOps, PaaS and cloud for better citizen service outcomes - IBM Fe...
Ibm bluemix paris_techtalks 2015
DevOps on Microsoft Platform
Bluemix DevOps Meetup
The Muda, Mura and Muri of DevOps
Devops the Microsoft Way
Adopting DevOps in a Hybrid Cloud Featuring UrbanCode Deploy with Bluemix
Hybrid Cloud DevOps with Apprenda and UrbanCode Deploy
Mastering DevOps Automation: Webinar
Security and DevOps - Managing Security in a DevOps Enterprise
IBM Bluemix Overview
IBM Connect 2014 - BP207 - Don’t Reinvent the Wheel - (Re)use Open Source Sof...
From DevOps to DevSecOps: 2 Dimensions of Security for DevOps
Cloud and agile software projects: Overview and Benefits
The Future of DevOps and UrbanCode
DevOps made simple - Understand DevOps and steps to become a DevOps expert
Enterprise DevOps: Scaling Build, Deploy, Test, Release
DevOps For Everyone: Bringing DevOps Success to Every App and Every Role in y...
Ad

Similar to Building Next Gen Applications and Microservices (20)

PPTX
Building next gen applications and microservices
PDF
Building Next Generation Applications and Microservices
PDF
Building Microservices Software practics
PPTX
Accelerate Delivery: Business case for Agile DevOps, CI/CD and Microservices
PPTX
Accelerate DevOps/Microservices and Kubernetes
PPTX
Best Practices Building Cloud Scale Apps with Microservices
PPTX
Developing Enterprise Applications for the Cloud, from Monolith to Microservices
PDF
Accelerate Delivery: Business Case for Agile DevOps, CI/CD and Microservices
PPTX
Architecting for speed: How agile innovators accelerate growth through micros...
PPTX
Architecting for speed - how agile innovators accelerate growth through micro...
PDF
Integration in the Cloud, by Rob Davies
PDF
Developing Enterprise Applications for the Cloud, from Monolith to Microservice
PDF
Evolving your Architecture to MicroServices
PDF
The Reality of Managing Microservices in Your CD Pipeline
PPTX
Continuous delivery by sergey seletsky
PDF
Microservices Architecture
PPTX
Microservices: Why and When? - Alon Fliess, CodeValue - Cloud Native Day Tel ...
PDF
Overcoming Ongoing Digital Transformational Challenges with a Microservices A...
PPTX
Business and IT agility through DevOps and microservice architecture powered ...
PDF
Dockercon State of the Art in Microservices
Building next gen applications and microservices
Building Next Generation Applications and Microservices
Building Microservices Software practics
Accelerate Delivery: Business case for Agile DevOps, CI/CD and Microservices
Accelerate DevOps/Microservices and Kubernetes
Best Practices Building Cloud Scale Apps with Microservices
Developing Enterprise Applications for the Cloud, from Monolith to Microservices
Accelerate Delivery: Business Case for Agile DevOps, CI/CD and Microservices
Architecting for speed: How agile innovators accelerate growth through micros...
Architecting for speed - how agile innovators accelerate growth through micro...
Integration in the Cloud, by Rob Davies
Developing Enterprise Applications for the Cloud, from Monolith to Microservice
Evolving your Architecture to MicroServices
The Reality of Managing Microservices in Your CD Pipeline
Continuous delivery by sergey seletsky
Microservices Architecture
Microservices: Why and When? - Alon Fliess, CodeValue - Cloud Native Day Tel ...
Overcoming Ongoing Digital Transformational Challenges with a Microservices A...
Business and IT agility through DevOps and microservice architecture powered ...
Dockercon State of the Art in Microservices
Ad

More from Paula Peña (She, Her, Hers) (7)

PDF
Getting Started with Cloud Foundry on Bluemix
PPTX
Bluemix Garage Method
PPTX
Blockchain Explained for Devlopers
PPTX
The App Evolution Continues
PPTX
App Development Evolution: What has changed?
PDF
Building an IOT app using MQTT
PDF
Offline-First Apps with PouchDB
Getting Started with Cloud Foundry on Bluemix
Bluemix Garage Method
Blockchain Explained for Devlopers
The App Evolution Continues
App Development Evolution: What has changed?
Building an IOT app using MQTT
Offline-First Apps with PouchDB

Recently uploaded (20)

PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Approach and Philosophy of On baking technology
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
cuic standard and advanced reporting.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Encapsulation theory and applications.pdf
PDF
Empathic Computing: Creating Shared Understanding
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Electronic commerce courselecture one. Pdf
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
MYSQL Presentation for SQL database connectivity
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
The Rise and Fall of 3GPP – Time for a Sabbatical?
Approach and Philosophy of On baking technology
20250228 LYD VKU AI Blended-Learning.pptx
cuic standard and advanced reporting.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Advanced methodologies resolving dimensionality complications for autism neur...
Encapsulation theory and applications.pdf
Empathic Computing: Creating Shared Understanding
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Mobile App Security Testing_ A Comprehensive Guide.pdf
The AUB Centre for AI in Media Proposal.docx
Per capita expenditure prediction using model stacking based on satellite ima...
Encapsulation_ Review paper, used for researhc scholars
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Electronic commerce courselecture one. Pdf
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Review of recent advances in non-invasive hemoglobin estimation
MYSQL Presentation for SQL database connectivity

Building Next Gen Applications and Microservices

  • 1. Building Next Gen Applications and Microservices Steve Mirman, IBM Bluemix Architect @SteveMirman June 15, 2016
  • 3. 1. From Heavyweight Development to Agile 3 • A consolidation of ideas from Extreme Programming, Scrum, Lean, etc. • Tried to remove the overhead and risk of large scale software development by having: – Smaller work increments – Frequent iterations – Rapid prototyping Continuous Integration Agile Heavyweight development Continuous Deployment DevOps Microservices
  • 4. 2. From Agile to Continuous Integration (CI) 4 • Sought to combine software components as early in the lifecycle as possible in order to minimize the impact of code integration issues. • Virtualization and automated testing removed technological barriers to CI. • The adoption of Agile led to a growth in CI, which was a common practice in Extreme Programming. Continuous Integration Agile Heavyweight development Continuous Deployment DevOps Microservices
  • 5. 3. From CI to Continuous Delivery (CD) 5 • CD defines a deployment pipeline to bring changes to production as quickly as possible. • Is an instantiation of Scrum’s “potentially shippable product increment”. Continuous Integration Agile Heavyweight development Continuous Deployment DevOps Microservices
  • 6. 4. From CD to DevOps 6 • In most organizations development and operations were separate. • Organizations where operations and development were together were more successful at establishing CD practices. • Engineering approaches were taken to problems that were previously dealt with procedurally. • This led to: – Higher automation in day to day tasks – Greater stability and resilience Continuous Integration Agile Heavyweight development Continuous Deployment DevOps Microservices
  • 7. 5. From DevOps to Microservices 7 • The architectural phase where large monolithic applications are broken down into discrete, business focused services. • This led to: – Higher development parallelization – Greater scalability and utilization Continuous Integration Agile Heavyweight development Continuous Deployment DevOps Microservices
  • 8. Microservice Outcomes • Increase Speed • Reduce Cost • Improve Resilience • Enable Visibility 8
  • 9. Microservice Keys to Success 9 Architecture MethodologyTechnology Organization
  • 10. Organizational Success • Are teams aligned to business or technology? • How are responsibilities divided between teams? • At what level of organization are development and operations divided? DevOps or Development and Operations? • What are team sizes and skills? • Dependencies and cross-team communications? • Power distribution between teams? 10 Architecture MethodologyTechnology Organization
  • 11. Methodological Success • Product or projects? • Agile or waterfall? • Who controls business requirements? • Fear of change, or continuous delivery? • Degree of automation in deployment and operations? 11 Architecture MethodologyTechnology Organization
  • 12. Technological Success • Cloud provisioning? • Virtualization? Containerization? • Application integration approach? • Security and identity management? • Operational middleware? • Language? Databases? • Legacy technologies? 12 Architecture MethodologyTechnology Organization
  • 14. Microservice Technologies • Containers – Encapsulate services and are accessible by IP/port combination • Service Discovery – Provides a way to know when services have been added/removed and where they are located • Service Orchestration – Manages service topologies – Ensures availability and utilization • API gateway – Security – Routing 14
  • 15. High Level View • Connect to services through HTTP • Services communicate through event bus • Services can be written in whatever language is best for the task and skills available • Each service stores data independently 15
  • 16. Containerized Deployment • Services can scale independently according to load without affecting the others • Services connect to external data stores (databases, BLOB stores, etc.) • Containers, service discovery, API gateway • Efficient/single point of failure 16
  • 17. Optimized Containerized Deployment • Groups of services can be collocated on physical systems • Containers, service discovery, service orchestration, API gateway • Efficient/highly available 17
  • 18. Microservice Principles • Do One Thing Well • Build Afresh • Expect Output to Become Input • Don’t Insist on Interactive Input • Try Early • Don’t Hesitate to Throw it Away • Toolmaking 18
  • 19. 19

Editor's Notes

  • #3: http://www.infoworld.com/article/3075880/application-development/microservice-architecture-is-agile-software-architecture.html Since the term “microservices” hit the software industry like a bolt of lightning in 2014, technical professionals of all stripes have been analyzing this new architectural style from their own frames of reference. Having lived through the rise and fall of service-oriented architecture, I had the same reaction as many others: How does microservice architecture differ from SOA? The more I learned about the case studies that led to the creation of the term “microservices,” the more I recognized that this question would not capture the essence of this new software movement. The first thing to recognize about the microservice movement is that it has been empirically defined. Microservice architecture emerged from a common set of patterns evident in companies like Amazon, Netflix, SoundCloud, and Gilt (now part of HBC Digital). Applications at these companies that were monolithic evolved over time into decomposed services that communicated via RESTful APIs and other network-based messaging protocols. However, the commonalities were not restricted to architectural patterns. The companies at the forefront of microservices also shared a common approach to software development, had similar organizational structures and cultural practices, and shared an affinity for cloud-based infrastructure and automation. Many companies that succeed with microservices have followed a similar progression driven by a desire for development speed and scalability. The agile progression In early 2001, a group of software professionals published the Agile Manifesto as a statement of values on how to improve software development. Although the principles stated were not new -- they were a consolidation of ideas from extreme programming, scrum, lean, and more -- the unified voice caught the industry’s attention. Just as microservice architecture is frequently defined in contrast to monolithic architecture, the manifesto differentiates agile software development from “documentation-driven, heavyweight software development processes.” The agile approach sought to remove the overhead and risk of large-scale software development by using smaller work increments, frequent iterations, and prototyping as a means of collaboration with users. The adoption of agile methods in the industry grew consistently following the publication of the manifesto. The spread of agile methods also led to the popularization of continuous integration (CI) in the software industry, a common practice from extreme programming. CI sought to combine software components as early in the lifecycle as possible in order to minimize the impact of code integration issues. However, many of the early agile adopters found that once they had removed the bottlenecks in the coding, they hit snags in releasing the software. These difficulties were only amplified by the popularization of SaaS as an increasingly preferred deployment option. To address the need for more frequent software releases, the practice of continuous delivery (CD) started to gain traction in 2006, taking the internal CI concept and applying it to the external view of software deliverables. CD takes scrum’s quality-focused “potentially shippable product increment” literally, defining a deployment pipeline to bring changes to production as quickly as possible. Virtualization and cloud computing removed technological barriers to CD, and new tools emerged to institutionalize CD practices. The combination of agile and CD was improving both the speed of production and the quality of the software produced. Still, there were bottlenecks. Agile’s primary scope was on the development of software, while CD extended that scope to include production deployment, an operations task. In most organizations, development and operations were consciously divided in both reporting and mission. In 2009, John Allspaw and Paul Hammond from Flickr gave an influential talk at the O’Reilly Velocity conference detailing how they had bridged this gap. From experiences like theirs, the devops movement arose to address this cultural divide. Organizations found that combining development and operations responsibilities in the same team led to highly effective continuous delivery practices. As collaboration increased between dev and ops, so did empathy. Developers designed solutions that included an operational perspective from the outset, and operations people used an engineering approach to tackle problems that were previously dealt with procedurally. Greater use of automation in day-to-day tasks resulted in greater system stability and resilience. Netflix's Simian Army approach to testing the resilience of production systems is an extreme example of this. The organizations that followed this "agile progression" -- from addressing software development to deployment to organizational structure -- now had alignment in these areas. Many of these agile pioneers were Web native and provided their software solutions in a single application stack. As the complexity and scale of their businesses increased, they found that this architecture not only became an impediment to new feature delivery, but caused stability issues due to brittleness and lack of scalability. In parallel, several companies -- such as SoundCloud -- discovered that breaking their monolithic applications into discrete, business-focused services was more suitable to their agile delivery methodology and devops culture. This is the true origin of microservice architecture. Microservices are the architectural phase of the agile progression. In search of agile software architecture In a 2013 post on his blog “Coding the Architecture,” software architect Simon Brown speculated about what an agile software architecture would look like. He points out that an agile architecture does not naturally emerge from agile development practices. Rather, it must be consciously sought. Note that his description of agile software architecture is a perfect match for microservice architecture (emphases mine): If we look at the characteristics of an agile software architecture, we tend to think of something that is built using a collection of small, loosely coupled components/services that collaborate together to satisfy an end-goal. This style of architecture provides agility in a number of ways. Small, loosely coupled components/services can be built, modified and tested in isolation, or even ripped out and replaced depending on how requirements change. This style of architecture also lends itself well to a very flexible and adaptable deployment model, since new components/services can be added and scaled if needed. Companies like Amazon, Netflix, SoundCloud, and Gilt encountered an architectural bottleneck when they reached a certain scale. This barrier motivated them to focus on the architecture, as Brown encourages, and they landed on microservices. There are important lessons to be gleaned from tracking this agile progression through to its architectural phase. First of all is that agile software development, continuous delivery, devops culture, and microservice architecture are all bound by a common set of goals: to be as responsive as possible to customer needs while maintaining high levels of software quality and system availability. Although these phases evolved in a particular order from the industry perspective, there is no right sequence for an individual organization to follow. For example, Amazon adopted an architecture that forced changes to its organization. By contrast, SoundCloud evaluated its delivery methodology and made changes to its team structure and architecture as a result. If you are evaluating how you can adopt microservices, it is important to understand where your organization is on the agile progression. Are you an agile shop? If so, who is looking after the architecture of your applications? If not, are you on a path to adopt agile practices? Do you have CD and deployment pipelines in place? What is the relationship between your development and operations teams, and who owns those responsibilities? Weighing the answers to these questions against your primary goals for adopting microservices will help you chart the right course to success that includes incremental wins along the way.
  • #5: The spread of agile methods also led to the popularization of continuous integration (CI) in the software industry, a common practice from extreme programming. CI sought to combine software components as early in the lifecycle as possible in order to minimize the impact of code integration issues. However, many of the early agile adopters found that once they had removed the bottlenecks in the coding, they hit snags in releasing the software. These difficulties were only amplified by the popularization of SaaS as an increasingly preferred deployment option.
  • #6: CD takes scrum’s quality-focused “potentially shippable product increment” literally, defining a deployment pipeline to bring changes to production as quickly as possible. Virtualization and cloud computing removed technological barriers to CD, and new tools emerged to institutionalize CD practices. The combination of agile and CD was improving both the speed of production and the quality of the software produced.
  • #12: The waterfall model is one in which each phase of a product’s life cycle takes place in sequence, so that progress flows steadily downwards through these phases like a waterfall. Nobody invented the waterfall method. Rather it was inherited by enterprise software developers from other industries where, once a particular phase of production is complete (like laying the foundations of a building for example), it was incredibly costly or impractical to go back and make changes. The waterfall was only codified when people subsequently realised that it wasn’t the only way of doing things. Pros of the waterfall method Potential issues that would have been found during development can be researched and bottomed out during the design phase. If appropriate meaning an alternate solution is selected before any code is written. The development process tends to be better documented since this methodology places greater emphasis on documentation like requirements and design docs. Many organisations find this reassuring. Because the waterfall process is a linear one it is perhaps easier to understand, especially for non-developers or those new to software development. Often teams feel more comfortable with this approach. Cons of the waterfall method Often the people we’re building software for (the client) don’t know exactly what they need up front and don’t know what’s possible with the technology available. This way of working doesn’t handle this well. Solution designers often aren’t able to foresee problems that will arise out of the implementation of their designs. Changes to requirements (e.g. like those resulting from new technologies, changes in a market or changes to business goals) can’t easily be incorporated with the waterfall method and there are often laborious change control procedures to go through when this happens The process doesn’t have its own momentum An Agile software development methodology – such as Scrum – is one which eschews a linear, sequential approach in favour of an incremental, iterative one. Instead of extensive planning and design up front, Agile methodologies allow for changing requirements over time by using cross-functional teams – incorporating planners, designers, developers and testers – which work on successive iterations of the product over fixed time periods (timeboxes). The work is organised in to a backlog that is prioritised in to exact priority order based on business (or user) value. These teams are self-organising, include a representative of the business (the product owner). The emphasis is on efficient face-to-face communication and short feedback loops. The goal of each iteration is to produce a working product, which can be demonstrated to stakeholders. Feedback can then be incorporated into the next or future iterations. Pros of Agile methods Working software is delivered much more quickly and successive iterations can be delivered frequently, at a consistent pace. There is closer collaboration between developers and the business. Changes to requirements can be incorporated at any point of the process – even late in development. It gives the opportunity for continuous improvement for live systems It is highly transparent Cons of Agile methods Agile methodologies (e.g. Scrum, XP, Kanban, Crystal etc) are often more difficult to understand than linear, sequential ones – at least initially. Because of the emphasis on working software there can be a perception that documentation can sometimes be neglected. The focus should be on appropriate documentation to the audience that needs it but, if not implemented well, this isn’t always the case. When implemented badly Agile can introduce extra inefficiencies in large organisations or can be working against long standing organisational processes.
  • #15: Service instances have dynamically assigned network locations. Moreover, the set of service instances changes dynamically because of auto-scaling, failures, and upgrades. Consequently, your client code needs to use a more elaborate service discovery mechanism. There are two main service discovery patterns: client-side discovery and server-side discovery. Let’s first look at client-side discovery. https://www.nginx.com/blog/service-discovery-in-a-microservices-architecture/