SlideShare uma empresa Scribd logo
1 de 56
Baixar para ler offline
Marcel de Vries
CTO Xpirit
Architecting systems for
Continuous delivery
About me: Marcel de Vries
mdevries@xpirit.com
@marcelv
http://fluentbytes.comXpirit
Also regional director
AGENDA
• Continuous delivery maturity model
– How fast do you need to go?
• Architectural concepts to solve bottlenecks
– Smaller shippable units
– Decreasing hard coupling between (sub) systems
– Enabling zero downtime deployments
– Different thinking around releases
– Different thinking around testing
• Better operations by build in monitoring
• Call to action
Source: http://www.infoq.com/resource/articles/Continuous-Delivery-Maturity-Model
Where do you want to be?
Where does your
organization need to be?
How fast?
• How often do you need to deploy?
– Look at it from your organization perspective!
Gartner differentiation of systems
Systems of Innovation
Systems of Differentiation
Systems of Records
 Innovative systems meant to introduce new concepts or new
business
 High release cadence (Daily)
 System lifespan: 6 months to 3 year
 Support primary business functions (a.k.a. back office)
 Low release cadence (quarterly, half year release cycles)
 System lifespan: 10 to 20 years
 Deliver moderate competitive advantage
 Average release cadence (monthly-weekly)
 System lifespan : 3 to 5 year
SystemsofInnovation
SystemsofDifferentiation
SystemsofRecords
Source: http://www.infoq.com/resource/articles/Continuous-Delivery-Maturity-Model
Many of these items have
Architectural implications
Organizational challenges
Valued business drivers
Better
• Resilient
• Technology
choice
Cheaper
• Test effort
• Cost of
maintaining
Faster
• Change
• Deployment
• Execution
Dev Test Acceptance Production
Every step between silos adds waste & lead time to the delivery process
Why are we doing this?
Forces on shipping
Developer
Project managers
Tester
OperationsThe Product
Direction of shipping the product
Business stakeholderBusiness stakeholder
How can we converge these forces to ship?
• Operations: ensure we don’t break stuff. This has multiple sides:
– Ship smaller increments, since less changes, less change of breaking stuff
– Automate delivery to production, since most problems are caused by
misconfiguration or wrong install
– Build in monitoring so we can predict better how systems behave under
certain conditions
• Business stakeholder: Provide them faster flow of value, make them
understand things can be delivered in increments and make them
in control of what matters most for their business
• Testers: proof you deliver a quality product
Architectural challenges of CD
• Faster delivery by
– Smaller shippable units
– Decreasing hard coupling between (sub) systems
– Enabling zero downtime deployments
– Different thinking around releases
– Different thinking around testing
• Better operations by build in monitoring
Smaller shippable units
?
SOAMonolith
Smaller shippable units
• What is the architecture of your system?
Monolith
• Dependencies
– All software is tightly coupled. Most often the system is build in the same
software technology (e.g. .NET with C#)
– Often one database with strong schema dependency
• Deployment strategy
– De-install, upgrade/migrate DB Schema, Install new version
– System will be unavailable during deployment
– Takes hours to complete
• Scaling strategy
– Scale up and out
• Monitoring
– Based on home grown monitoring tools
Monolith
How do we compose systems?
• We can create a monolith in various ways
– Composed out of classes
– Composed out of components
– Composed out of services
• When are these systems no longer a monolith?
– When we use components & Services?
• What defines the monolith is the way the system is
composable and flexible
– Can we add/remove parts without bringing the system down
SOA
• Dependencies
– Software can be in multiple technologies, communication via a
Service Bus
– Strong dependency on message schema’s
– Strong dependency of services on Middleware
technology
• Deployment strategy
– Per service
• De-install, upgrade/migrate DB Schema, Install new version
• System will be unavailable during deployment
– Takes hours to complete & coordinated effort
– Upgrades of ESB also requires coordinated effort
SOA
SOA improved
• SOA suffered from vendors pushing their broker software and
making all services dependent on this piece of middleware
• We see many examples where we have the ESB as the
centralized piece of middleware
– This often forces us to use one stack, or we need to add adapters
to our services
– Creates a single point of failure and often also a scalability
challenge
• What if we eliminate this broker and create a mesh of small
services?
Enter the world of Microservices
MSA
The many definitions of microservices
- Small and
focused on doing
one thing well
- Autonomous
“Loosely coupled service
oriented architecture with
bounded contexts”
Adrian Cockcroft (Netflix)
“SOA done right”
Anonymous
“… services are independently deployable and scalable,
each service also provides a firm module boundary,
even allowing for different services to be written in
different programming languages.”
Martin Fowler (Thoughtworks)
Services as a network of independent parts
Microservices architecture
Which Service owns this page?
None!
Composition is key!
Decreasing hard coupling
between (sub) systems
Using events to decouple services
• Systems keep their own state
• Events are used to notify changes
• Systems use events to replicate data
• Each service will have it’s own data store
• Downsides:
– Latency in data changes
– No central control of business logic
– Challenge to reconcile in case of disaster
Why are event driven architectures relevant?
Characteristics of EDA
• Broadcast Model
– Anyone can receive the events
• Completely Asynchronous
– publishers do not wait on any subscribers
• Fine Grained Events
– Individual events
• Ontology
– Hierarchy of events
– Publishers can subscribe to these selected events
Publisher
Subscriber
Subscriber
Subscriber
Subscriber
Subscriber
Subscriber
Event
Event
Event
Cross-service coupling
• Smart endpoints, dumb pipes
• No intelligent middleware
• Technologies to look at:
– Queues (Azure, MSMQ, WebSphereMQ , ...)
– Service Bus (NServiceBus, Azure ServiceBus, ...)
– Language neutral data serialization
(Google Protocol buffers, Apache Thrift)
Enabling zero downtime
deployments
Minimize downtime
• Decompose the system into more granular
parts that can be deployed independently
– Better management of system dependencies
• Dependencies on other Systems
• Dependencies on own components/services
• Dependencies on OS and infrastructure
Minimize downtime
• Rethink how your application works
• Traditional
– When deploying we need to upgrade the Database schema
• Downtime
• Potential Solutions:
– Use other database technologies that don’t require a strict
schema
– Make your system more flexible towards the DB schema, e.g.
support multiple version of the schema
– Upgrade the schema when the data is touched (just in time
migration)
Minimize downtime
• In SOA systems become less dependent on
strict message schema
– E.g. XML + CSD v.s JSON
– Get rid of the ESB dependency
• Cater for failure in downstream systems an
provide fallback scenarios
– Well known pattern here is e.g. Circuit breaker
– Let systems fall back gracefully
Circuit Breaker Pattern
• Handle faults that may take a variable amount
of time to rectify when connecting remote
service or resource.
• to a
– This pattern can
improve the stability
and resiliency of an
application.
Retry Pattern
• Enable an application to handle temporary failures
when connecting to a service or network resource by
transparently retrying the operation in the
expectation that the failure is transient. This pattern
can improve the stability of the application.
Different thinking around
releases
Use of feature flags/toggles
• When you want to ship often, how do you cope
with non finished features?
• Traditionally you use feature branches to isolate
– But what if you ship daily or weekly?
• Break up the changes in independent parts that can
be released separately
– Use feature toggles/flags to enable or disable the
feature
– Give business control on who gets which feachures
Don’t build your own, many out there
• If-Else
• Nfeature (LGPL-3.0!, last update june 2012)
• Feature Toggle (Apache 2.0, last update dec.
2014)
• Feature Switcher (Apache 2.0, Last update Jan
2014)
• FlipIt (Apache 2.0, Last update feb 2012)
http://www.philjhale.com/2012/07/a-brief-look-at-some-feature-toggle.html
Different thinking about
(Automated) testing
Classical approach
• Unit testing
• Integration testing
• Manual testing
• CD tells us: Automate everything….
– Move to more automation
– Manual testing -> Use of UI Automation tools
“There is no place like Production”
Source: Brian Harry, Microsoft Technical Fellow
Testing in production
SU1
Feature
SU2 SU3
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature Feature Feature
Customer segment A
<1000
Customer segment B
<10000
Customer segment C
All other
Choosing the right scale unit is crucial
to enable this concept
Test in production
• A/B Testing is a simple example
• Azure supports this out of the box
– Put your new code in production
– Throttle a small % of users to
the new code
– Watch behavior
• Telemetry!
– No issues?
• Slowly move all users over
• MS uses it extensively
– VSO, Windows 10 insiders program, etc.
Better operations by isolation
and build in monitoring
Hosting your services
Host
Application
container
Micro
Service
Micro
Service
Hosting in application
container
Host
Micro
Service
Micro
Service
Micro
Service
Micro
Service
High density hosting
Host
Micro
Service
Host
Micro
Service
Host
Micro
Service
Host
Micro
Service
One service per
host
Services up and running
OS
Virtual
machines
PaaS
Container
runtimes
Monitoring build in
Performance UsageAvailability Diagnostics
Application Insights
Entering (Biz)DevOps
• Multidisciplinary teams
• “You build it, you run it”
– No more ops needs to fix it, you do it your self!
• Teams own a set of services
• Coordination cross teams where required
Recap
• Establish a reference point for your system where you need to go in CD
– How fast do you need to go, no free lunch!
• Think of the organizational implication, it’s not only technology
• Decompose your system in more independent deployable units
– Make services smaller
– Rethink your dependencies between services
– E.g. Adapt event driven style of communication
– Make services failure resilient
– Isolate them by minimizing environment dependencies
– Ensure services can be monitored
• Rethink the way systems are tested and implications on your systems
architecture
Further reading
• Microservice architecture, Sam Newman
• Domain Driven Design, Eric Evans
• Microservices, Martin Fowler
• Continuous Delivery. Jez Humble
• Xpirit magazine
– Azure service fabric, Micro services articles
Your feedback is important!
Scan the QR Code and let us know via the TechDays App.
Laat ons weten wat u van de sessie vindt!
Scan the QR Code via de TechDays App.
Bent u al lid van de Microsot Virtual Academy?! Op MVA kunt u altijd iets
nieuws leren over de laatste technologie van Microsoft. Meld u vandaag aan
op de MVA Stand. MVA biedt 7/24 gratis online training on-demand voor IT-
Professionals en Ontwikkelaars.
Architecting systems for continuous delivery

Mais conteúdo relacionado

Mais procurados

From Gates to Guardrails: Alternate Approaches to Product Security
From Gates to Guardrails: Alternate Approaches to Product SecurityFrom Gates to Guardrails: Alternate Approaches to Product Security
From Gates to Guardrails: Alternate Approaches to Product Security
Jason Chan
 
From 0 to DevOps in 80 Days [Webinar Replay]
From 0 to DevOps in 80 Days [Webinar Replay]From 0 to DevOps in 80 Days [Webinar Replay]
From 0 to DevOps in 80 Days [Webinar Replay]
Dynatrace
 
Continous Integration for iOS Projects
Continous Integration for iOS ProjectsContinous Integration for iOS Projects
Continous Integration for iOS Projects
Ciprian Redinciuc
 

Mais procurados (20)

Deeper Root Cause Analysis to App Performance Bottlenecks with Appvance APM I...
Deeper Root Cause Analysis to App Performance Bottlenecks with Appvance APM I...Deeper Root Cause Analysis to App Performance Bottlenecks with Appvance APM I...
Deeper Root Cause Analysis to App Performance Bottlenecks with Appvance APM I...
 
Continuous Integration, Deploy, Test From Beginning To End 2014
Continuous Integration, Deploy, Test From Beginning To End 2014Continuous Integration, Deploy, Test From Beginning To End 2014
Continuous Integration, Deploy, Test From Beginning To End 2014
 
STARWest: Use Jenkins For Continuous 
Load Testing And Mobile Test Automation
STARWest: Use Jenkins For Continuous 
Load Testing And Mobile Test AutomationSTARWest: Use Jenkins For Continuous 
Load Testing And Mobile Test Automation
STARWest: Use Jenkins For Continuous 
Load Testing And Mobile Test Automation
 
Running JMeter Tests In Appvance PerformanceCloud
Running JMeter Tests In Appvance PerformanceCloudRunning JMeter Tests In Appvance PerformanceCloud
Running JMeter Tests In Appvance PerformanceCloud
 
CloudBees Continuous Integration and Test with Appvance PerformanceCloud
CloudBees Continuous Integration and Test with Appvance PerformanceCloudCloudBees Continuous Integration and Test with Appvance PerformanceCloud
CloudBees Continuous Integration and Test with Appvance PerformanceCloud
 
Neev QA Offering
Neev QA OfferingNeev QA Offering
Neev QA Offering
 
Splitting the Check on Compliance and Security
Splitting the Check on Compliance and SecuritySplitting the Check on Compliance and Security
Splitting the Check on Compliance and Security
 
Resilience and Compliance at Speed and Scale
Resilience and Compliance at Speed and ScaleResilience and Compliance at Speed and Scale
Resilience and Compliance at Speed and Scale
 
From Gates to Guardrails: Alternate Approaches to Product Security
From Gates to Guardrails: Alternate Approaches to Product SecurityFrom Gates to Guardrails: Alternate Approaches to Product Security
From Gates to Guardrails: Alternate Approaches to Product Security
 
Proactive Security AppSec Case Study
Proactive Security AppSec Case StudyProactive Security AppSec Case Study
Proactive Security AppSec Case Study
 
SauceCon 2017: Making Your Mobile App Automatable
SauceCon 2017: Making Your Mobile App AutomatableSauceCon 2017: Making Your Mobile App Automatable
SauceCon 2017: Making Your Mobile App Automatable
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
From 0 to DevOps in 80 Days [Webinar Replay]
From 0 to DevOps in 80 Days [Webinar Replay]From 0 to DevOps in 80 Days [Webinar Replay]
From 0 to DevOps in 80 Days [Webinar Replay]
 
Resilience and Security @ Scale: Lessons Learned
Resilience and Security @ Scale: Lessons LearnedResilience and Security @ Scale: Lessons Learned
Resilience and Security @ Scale: Lessons Learned
 
3 Tips to Deliver Fast Performance Across Mobile Web
3 Tips to Deliver Fast Performance Across Mobile Web3 Tips to Deliver Fast Performance Across Mobile Web
3 Tips to Deliver Fast Performance Across Mobile Web
 
Continuous Everything @ dotnet cologne 2019
Continuous Everything @ dotnet cologne 2019Continuous Everything @ dotnet cologne 2019
Continuous Everything @ dotnet cologne 2019
 
Making security-agile matt-tesauro
Making security-agile matt-tesauroMaking security-agile matt-tesauro
Making security-agile matt-tesauro
 
Continous Integration for iOS Projects
Continous Integration for iOS ProjectsContinous Integration for iOS Projects
Continous Integration for iOS Projects
 
we45 - SecDevOps Concept Presentation
we45 - SecDevOps Concept Presentationwe45 - SecDevOps Concept Presentation
we45 - SecDevOps Concept Presentation
 
Pivotal Tracker Overview
Pivotal Tracker OverviewPivotal Tracker Overview
Pivotal Tracker Overview
 

Semelhante a Architecting systems for continuous delivery

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
 
API-driven Legacy Migration: Results from Project Winterfell
API-driven Legacy Migration: Results from Project WinterfellAPI-driven Legacy Migration: Results from Project Winterfell
API-driven Legacy Migration: Results from Project Winterfell
Keith McFarlane
 
How to Overcome Data Challenges When Refactoring Monoliths to Microservices
How to Overcome Data Challenges When Refactoring Monoliths to MicroservicesHow to Overcome Data Challenges When Refactoring Monoliths to Microservices
How to Overcome Data Challenges When Refactoring Monoliths to Microservices
VMware Tanzu
 

Semelhante a Architecting systems for continuous delivery (20)

Status Quo on the automation support in SOA Suite OGhTech17
Status Quo on the automation support in SOA Suite OGhTech17Status Quo on the automation support in SOA Suite OGhTech17
Status Quo on the automation support in SOA Suite OGhTech17
 
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...
 
Microservices: Yes or not?
Microservices: Yes or not?Microservices: Yes or not?
Microservices: Yes or not?
 
API-driven Legacy Migration: Results from Project Winterfell
API-driven Legacy Migration: Results from Project WinterfellAPI-driven Legacy Migration: Results from Project Winterfell
API-driven Legacy Migration: Results from Project Winterfell
 
Agile and continuous delivery – How IBM Watson Workspace is built
Agile and continuous delivery – How IBM Watson Workspace is builtAgile and continuous delivery – How IBM Watson Workspace is built
Agile and continuous delivery – How IBM Watson Workspace is built
 
Stay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolithStay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolith
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Should i break it?
Should i break it?Should i break it?
Should i break it?
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Deploying at will - SEI
 Deploying at will - SEI Deploying at will - SEI
Deploying at will - SEI
 
VSTS Migration Briefing
VSTS Migration BriefingVSTS Migration Briefing
VSTS Migration Briefing
 
How to Overcome Data Challenges When Refactoring Monoliths to Microservices
How to Overcome Data Challenges When Refactoring Monoliths to MicroservicesHow to Overcome Data Challenges When Refactoring Monoliths to Microservices
How to Overcome Data Challenges When Refactoring Monoliths to Microservices
 
DevOps: Automate all the things
DevOps: Automate all the thingsDevOps: Automate all the things
DevOps: Automate all the things
 
Microservices Architecture
Microservices ArchitectureMicroservices Architecture
Microservices Architecture
 
Itsummit2015 blizzard
Itsummit2015 blizzardItsummit2015 blizzard
Itsummit2015 blizzard
 
June 2014 HUG - Continuuity Loom : Cluster Management
June 2014 HUG - Continuuity Loom : Cluster ManagementJune 2014 HUG - Continuuity Loom : Cluster Management
June 2014 HUG - Continuuity Loom : Cluster Management
 
Iot cloud service v2.0
Iot cloud service v2.0Iot cloud service v2.0
Iot cloud service v2.0
 
MicroserviceArchitecture in detail over Monolith.
MicroserviceArchitecture in detail over Monolith.MicroserviceArchitecture in detail over Monolith.
MicroserviceArchitecture in detail over Monolith.
 
building microservices
building microservicesbuilding microservices
building microservices
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
 

Mais de Marcel de Vries

Cross platform mobile developement introduction
Cross platform mobile developement   introductionCross platform mobile developement   introduction
Cross platform mobile developement introduction
Marcel de Vries
 

Mais de Marcel de Vries (8)

Continuous delivery with Release Management for visual Studio
Continuous delivery with Release Management for visual StudioContinuous delivery with Release Management for visual Studio
Continuous delivery with Release Management for visual Studio
 
Release management with tfs 2013
Release management with tfs 2013Release management with tfs 2013
Release management with tfs 2013
 
Cross platform native mobile app development for iOS, Android and Windows usi...
Cross platform native mobile app development for iOS, Android and Windows usi...Cross platform native mobile app development for iOS, Android and Windows usi...
Cross platform native mobile app development for iOS, Android and Windows usi...
 
Release management with tfs 2013
Release management with tfs 2013Release management with tfs 2013
Release management with tfs 2013
 
Leveraging the azure cloud for your mobile apps
Leveraging the azure cloud for your mobile appsLeveraging the azure cloud for your mobile apps
Leveraging the azure cloud for your mobile apps
 
Developing i phone, android and windows phone 7 applications with c#
Developing i phone, android and windows phone 7 applications with c#Developing i phone, android and windows phone 7 applications with c#
Developing i phone, android and windows phone 7 applications with c#
 
Cross platform mobile developement introduction
Cross platform mobile developement   introductionCross platform mobile developement   introduction
Cross platform mobile developement introduction
 
Mobile en cloud wat is de impact op ons huidige it ecosysteem
Mobile en cloud wat is de impact op ons huidige it ecosysteemMobile en cloud wat is de impact op ons huidige it ecosysteem
Mobile en cloud wat is de impact op ons huidige it ecosysteem
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Último (20)

Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 

Architecting systems for continuous delivery

  • 1.
  • 2. Marcel de Vries CTO Xpirit Architecting systems for Continuous delivery
  • 3. About me: Marcel de Vries mdevries@xpirit.com @marcelv http://fluentbytes.comXpirit Also regional director
  • 4. AGENDA • Continuous delivery maturity model – How fast do you need to go? • Architectural concepts to solve bottlenecks – Smaller shippable units – Decreasing hard coupling between (sub) systems – Enabling zero downtime deployments – Different thinking around releases – Different thinking around testing • Better operations by build in monitoring • Call to action
  • 6. How fast? • How often do you need to deploy? – Look at it from your organization perspective!
  • 7. Gartner differentiation of systems Systems of Innovation Systems of Differentiation Systems of Records  Innovative systems meant to introduce new concepts or new business  High release cadence (Daily)  System lifespan: 6 months to 3 year  Support primary business functions (a.k.a. back office)  Low release cadence (quarterly, half year release cycles)  System lifespan: 10 to 20 years  Deliver moderate competitive advantage  Average release cadence (monthly-weekly)  System lifespan : 3 to 5 year
  • 11. Valued business drivers Better • Resilient • Technology choice Cheaper • Test effort • Cost of maintaining Faster • Change • Deployment • Execution
  • 12. Dev Test Acceptance Production Every step between silos adds waste & lead time to the delivery process Why are we doing this?
  • 13. Forces on shipping Developer Project managers Tester OperationsThe Product Direction of shipping the product Business stakeholderBusiness stakeholder
  • 14. How can we converge these forces to ship? • Operations: ensure we don’t break stuff. This has multiple sides: – Ship smaller increments, since less changes, less change of breaking stuff – Automate delivery to production, since most problems are caused by misconfiguration or wrong install – Build in monitoring so we can predict better how systems behave under certain conditions • Business stakeholder: Provide them faster flow of value, make them understand things can be delivered in increments and make them in control of what matters most for their business • Testers: proof you deliver a quality product
  • 15. Architectural challenges of CD • Faster delivery by – Smaller shippable units – Decreasing hard coupling between (sub) systems – Enabling zero downtime deployments – Different thinking around releases – Different thinking around testing • Better operations by build in monitoring
  • 17. ? SOAMonolith Smaller shippable units • What is the architecture of your system?
  • 18. Monolith • Dependencies – All software is tightly coupled. Most often the system is build in the same software technology (e.g. .NET with C#) – Often one database with strong schema dependency • Deployment strategy – De-install, upgrade/migrate DB Schema, Install new version – System will be unavailable during deployment – Takes hours to complete • Scaling strategy – Scale up and out • Monitoring – Based on home grown monitoring tools Monolith
  • 19. How do we compose systems? • We can create a monolith in various ways – Composed out of classes – Composed out of components – Composed out of services • When are these systems no longer a monolith? – When we use components & Services? • What defines the monolith is the way the system is composable and flexible – Can we add/remove parts without bringing the system down
  • 20. SOA • Dependencies – Software can be in multiple technologies, communication via a Service Bus – Strong dependency on message schema’s – Strong dependency of services on Middleware technology • Deployment strategy – Per service • De-install, upgrade/migrate DB Schema, Install new version • System will be unavailable during deployment – Takes hours to complete & coordinated effort – Upgrades of ESB also requires coordinated effort SOA
  • 21. SOA improved • SOA suffered from vendors pushing their broker software and making all services dependent on this piece of middleware • We see many examples where we have the ESB as the centralized piece of middleware – This often forces us to use one stack, or we need to add adapters to our services – Creates a single point of failure and often also a scalability challenge • What if we eliminate this broker and create a mesh of small services?
  • 22. Enter the world of Microservices MSA
  • 23. The many definitions of microservices - Small and focused on doing one thing well - Autonomous “Loosely coupled service oriented architecture with bounded contexts” Adrian Cockcroft (Netflix) “SOA done right” Anonymous “… services are independently deployable and scalable, each service also provides a firm module boundary, even allowing for different services to be written in different programming languages.” Martin Fowler (Thoughtworks)
  • 24. Services as a network of independent parts
  • 26. Which Service owns this page?
  • 27. None!
  • 30. Using events to decouple services • Systems keep their own state • Events are used to notify changes • Systems use events to replicate data • Each service will have it’s own data store • Downsides: – Latency in data changes – No central control of business logic – Challenge to reconcile in case of disaster
  • 31. Why are event driven architectures relevant?
  • 32. Characteristics of EDA • Broadcast Model – Anyone can receive the events • Completely Asynchronous – publishers do not wait on any subscribers • Fine Grained Events – Individual events • Ontology – Hierarchy of events – Publishers can subscribe to these selected events Publisher Subscriber Subscriber Subscriber Subscriber Subscriber Subscriber Event Event Event
  • 33. Cross-service coupling • Smart endpoints, dumb pipes • No intelligent middleware • Technologies to look at: – Queues (Azure, MSMQ, WebSphereMQ , ...) – Service Bus (NServiceBus, Azure ServiceBus, ...) – Language neutral data serialization (Google Protocol buffers, Apache Thrift)
  • 35. Minimize downtime • Decompose the system into more granular parts that can be deployed independently – Better management of system dependencies • Dependencies on other Systems • Dependencies on own components/services • Dependencies on OS and infrastructure
  • 36. Minimize downtime • Rethink how your application works • Traditional – When deploying we need to upgrade the Database schema • Downtime • Potential Solutions: – Use other database technologies that don’t require a strict schema – Make your system more flexible towards the DB schema, e.g. support multiple version of the schema – Upgrade the schema when the data is touched (just in time migration)
  • 37. Minimize downtime • In SOA systems become less dependent on strict message schema – E.g. XML + CSD v.s JSON – Get rid of the ESB dependency • Cater for failure in downstream systems an provide fallback scenarios – Well known pattern here is e.g. Circuit breaker – Let systems fall back gracefully
  • 38. Circuit Breaker Pattern • Handle faults that may take a variable amount of time to rectify when connecting remote service or resource. • to a – This pattern can improve the stability and resiliency of an application.
  • 39. Retry Pattern • Enable an application to handle temporary failures when connecting to a service or network resource by transparently retrying the operation in the expectation that the failure is transient. This pattern can improve the stability of the application.
  • 41. Use of feature flags/toggles • When you want to ship often, how do you cope with non finished features? • Traditionally you use feature branches to isolate – But what if you ship daily or weekly? • Break up the changes in independent parts that can be released separately – Use feature toggles/flags to enable or disable the feature – Give business control on who gets which feachures
  • 42. Don’t build your own, many out there • If-Else • Nfeature (LGPL-3.0!, last update june 2012) • Feature Toggle (Apache 2.0, last update dec. 2014) • Feature Switcher (Apache 2.0, Last update Jan 2014) • FlipIt (Apache 2.0, Last update feb 2012) http://www.philjhale.com/2012/07/a-brief-look-at-some-feature-toggle.html
  • 44. Classical approach • Unit testing • Integration testing • Manual testing • CD tells us: Automate everything…. – Move to more automation – Manual testing -> Use of UI Automation tools
  • 45. “There is no place like Production” Source: Brian Harry, Microsoft Technical Fellow
  • 46. Testing in production SU1 Feature SU2 SU3 Feature Feature Feature Feature Feature Feature Feature Feature Feature Feature Feature Feature Feature Feature Feature Feature Feature Feature Feature Feature Feature Feature Feature Feature Feature Feature Customer segment A <1000 Customer segment B <10000 Customer segment C All other Choosing the right scale unit is crucial to enable this concept
  • 47. Test in production • A/B Testing is a simple example • Azure supports this out of the box – Put your new code in production – Throttle a small % of users to the new code – Watch behavior • Telemetry! – No issues? • Slowly move all users over • MS uses it extensively – VSO, Windows 10 insiders program, etc.
  • 48. Better operations by isolation and build in monitoring
  • 49. Hosting your services Host Application container Micro Service Micro Service Hosting in application container Host Micro Service Micro Service Micro Service Micro Service High density hosting Host Micro Service Host Micro Service Host Micro Service Host Micro Service One service per host
  • 50. Services up and running OS Virtual machines PaaS Container runtimes
  • 51. Monitoring build in Performance UsageAvailability Diagnostics Application Insights
  • 52. Entering (Biz)DevOps • Multidisciplinary teams • “You build it, you run it” – No more ops needs to fix it, you do it your self! • Teams own a set of services • Coordination cross teams where required
  • 53. Recap • Establish a reference point for your system where you need to go in CD – How fast do you need to go, no free lunch! • Think of the organizational implication, it’s not only technology • Decompose your system in more independent deployable units – Make services smaller – Rethink your dependencies between services – E.g. Adapt event driven style of communication – Make services failure resilient – Isolate them by minimizing environment dependencies – Ensure services can be monitored • Rethink the way systems are tested and implications on your systems architecture
  • 54. Further reading • Microservice architecture, Sam Newman • Domain Driven Design, Eric Evans • Microservices, Martin Fowler • Continuous Delivery. Jez Humble • Xpirit magazine – Azure service fabric, Micro services articles
  • 55. Your feedback is important! Scan the QR Code and let us know via the TechDays App. Laat ons weten wat u van de sessie vindt! Scan the QR Code via de TechDays App. Bent u al lid van de Microsot Virtual Academy?! Op MVA kunt u altijd iets nieuws leren over de laatste technologie van Microsoft. Meld u vandaag aan op de MVA Stand. MVA biedt 7/24 gratis online training on-demand voor IT- Professionals en Ontwikkelaars.