SlideShare a Scribd company logo
1 of 60
Download to read offline
DW2
DevOps Design & Architecture
6/7/2017 11:30:00 AM
DW2 Architectural Patterns for an
Efficient Delivery Pipeline
Presented by:
Abraham Marin-Perez
Equal Experts
Brought to you by:
350 Corporate Way, Suite 400, Orange Park, FL 32073
888-­‐268-­‐8770 ·∙ 904-­‐278-­‐0524 - info@techwell.com - https://www.techwell.com/
Abraham Marin-Perez
Equal Experts
An associate of Equal Experts, Abraham Marin-Perez has been working in
software development for a decade, paying special attention to what maximizes
a team's capacity to deliver in the long term. This has led him to study everyday
programming habits and techniques that ensure the sustainability of the
development process. Abraham shares his views in Real-World Maintainable
Software and more informally in his blog and on Twitter @AbrahamMarin. An
author and public speaker, Abraham helps run the London Java Community and
contributes as a Java news editor at InfoQ.
Breaking Down Your Build:
Architectural Patterns for a More
Efficient Pipeline
fromfragiletoagile.com & Equal Experts
@AbrahamMarin #DocklandsLJC
About me
Making Software. Better.
Simple solutions to big business problems.
Equal Experts is a network of talented, experienced, software
consultants, specialising in agile delivery.
What’s in a Build?
Complexity
vs.
Simplicity
"Perfection is Achieved Not When
There Is Nothing More to Add,
But When There Is Nothing Left to
Take Away”
Antoine de Saint-Exupéry | author of The Little Prince
The fastest build
is the one you don’t need to run
Break down a monolith
Break down a monolith
Break down a monolith
APP
BACKEND
SUPER
APP
DATA
MODEL
APP
BACKEND
SUPER
APP
SUPER
APP
DATA
MODEL
APP
BACKEND
GUI
Build up your microservices
Build up your microservices
Build up your microservices
Build up your microservices
Build up your microservices
Build up your microservices
Build up your microservices
How to build a
CI/CD system like this
https://skillsmatter.com/skillscasts/6371-scalable-continuous-deployment-with-maven
View my talk
Good Refactoring Skills Needed
Safety First
Restructuring techniques
Restructuring techniques
Avoid build phases
Restructuring techniques
Avoid build phases
Build
Restructuring techniques
Avoid build phases
Build
Compile
Test
Deploy
Restructuring techniques
Avoid build phases
Build
Compile
Test
Deploy
Internal Logic
Integration Logic
Restructuring techniques
Avoid build phases
Build
Compile
Test
Deploy
Internal Logic
(unit tests)
Integration Logic
Restructuring techniques
Avoid build phases
Build
Compile
Test
Deploy
Internal Logic
(unit tests)
Integration Logic
Contract Tests
Full Integration
Tests
Smoke Tests
Restructuring techniques
Identify and restructure
sub-builds
Restructuring techniques
Identify and restructure sub-builds
A
B
C
D
Restructuring techniques
Identify and restructure sub-builds
B
C
D
A1
A2
A3
Restructuring techniques
Identify and restructure sub-builds
A1 B
C
D
A2
A3
Restructuring techniques
Transform
build-time dependencies into
run-time dependencies
Restructuring Patterns
Restructuring Patterns
● Decoupling API from implementation
● Horizontal vs. vertical slices
● Library as a service
● Reduce fan-out
● Configuration as a service
Restructuring Patterns
● Decoupling API from implementation
● Horizontal vs. vertical slices
● Library as a service
● Reduce fan-out
● Configuration as a service
Decoupling API from implementation
Decoupling API from implementation
WEB
INTERFACE
LIBRARY
Decoupling API from implementation
Goal
WEB
INTERFACE
LIBRARY
IMPL
LIBRARY
API
ASSEMBLY
Decoupling API from implementation
WEB
INTERFACE
LIBRARY
Decoupling API from implementation
ASSEMBLY
WEB
INTERFACE
LIBRARY
Decoupling API from implementation
ASSEMBLY
WEB
INTERFACE
LIBRARY
Integration Test
Deploy
Smoke Test
Compile
Unit Test
Contract Test
Decoupling API from implementation
ASSEMBLY
WEB
INTERFACE
LIBARY
API
LIBRARY
IMPL
Decoupling API from implementation
DI for IMPL
Use explicit wiring
ASSEMBLY
WEB
INTERFACE
LIBRARY
API
LIBRARY
IMPL
Decoupling API from implementation
WEB
INTERFACE
LIBRARY
API
LIBRARY
IMPL
LIBRARY
IMPL
No conflict in run time
because explicit wiring
ASSEMBLY
Decoupling API from implementation
WEB
INTERFACE
LIBRARY
API
LIBRARY
IMPL
LIBRARY
IMPL
ASSEMBLY
Decoupling API from implementation
WEB
INTERFACE
LIBRARY
IMPL
LIBRARY
API
ASSEMBLY
Restructuring Patterns
● Decoupling API from implementation
● Horizontal vs. vertical slices
● Library as a service
● Reduce fan-out
● Configuration as a service
Horizontal vs. vertical slices
Horizontal vs. vertical slices
Persistance
Validation
Logic
Front-End
Web Service
Horizontal vs. vertical slices
Web
Service
Persistence Validation Front-end
ACCOUNT
COMMS
PAYMENT
ACCOUNT
COMMS
PAYMENT
ACCOUNT
COMMS
PAYMENT
Horizontal vs. vertical slices
End Goal
Web
Service
COMMS
PERSISTENCE
VALIDATION
FRONT-END
ACCOUNT
PERSISTENCE
VALIDATION
FRONT-END
PAYMENT
PERSISTENCE
VALIDATION
FRONT-END
Horizontal vs. vertical slices
Web
Service
Persistence Validation Front-end
ACCOUNT
COMMS
PAYMENT
ACCOUNT
COMMS
PAYMENT
ACCOUNT
COMMS
PAYMENT
Horizontal vs. vertical slices
PAYMENT
PERSISTENCE
VALIDATION
FRONT-END
Web
Service
Persistence Validation Front-end
ACCOUNT
COMMS
PAYMENT
ACCOUNT
COMMS
PAYMENT
ACCOUNT
COMMS
PAYMENT
Horizontal vs. vertical slices
PAYMENT
Web
Service
Persistence Validation Front-end
ACCOUNT
COMMS
PAYMENT
ACCOUNT
COMMS
PAYMENT
ACCOUNT
COMMS
PAYMENT
PERSISTENCE
VALIDATION
FRONT-END
Horizontal vs. vertical slices
Web
Service
Persistence Validation Front-end
ACCOUNT
COMMS
ACCOUNT
COMMS
ACCOUNT
COMMS
PAYMENT
PERSISTENCE
VALIDATION
FRONT-END
Horizontal vs. vertical slices
COMMS
Web
Service
Persistence Validation Front-end
ACCOUNT
COMMS
ACCOUNT
COMMS
ACCOUNT
COMMS
PERSISTENCE
VALIDATION
FRONT-END
PAYMENT
PERSISTENCE
VALIDATION
FRONT-END
Horizontal vs. vertical slices
COMMSPersistence
ACCOUNT
COMMS
PERSISTENCE
VALIDATION
FRONT-END
PAYMENT
PERSISTENCE
VALIDATION
FRONT-END
Web
Service
Validation Front-end
ACCOUNT
COMMS
ACCOUNT
COMMS
Horizontal vs. vertical slices
COMMS
Web
Service
Persistence
ACCOUNT
PERSISTENCE
VALIDATION
FRONT-END
PAYMENT
PERSISTENCE
VALIDATION
FRONT-END
Validation Front-end
ACCOUNT ACCOUNT
Horizontal vs. vertical slices
ACCOUNT
PERSISTENCE
VALIDATION
FRONT-END
COMMS
Web
Service
Persistence Validation Front-end
ACCOUNT
PERSISTENCE
VALIDATION
FRONT-END
PAYMENT
PERSISTENCE
VALIDATION
FRONT-END
ACCOUNT ACCOUNT
Horizontal vs. vertical slices
ACCOUNT
PERSISTENCE
VALIDATION
FRONT-END
COMMS
Web
Service
Persistence Validation Front-end
ACCOUNT
PERSISTENCE
VALIDATION
FRONT-END
PAYMENT
PERSISTENCE
VALIDATION
FRONT-END
ACCOUNT ACCOUNT
Horizontal vs. vertical slices
Web
Service
COMMS
PERSISTENCE
VALIDATION
FRONT-END
ACCOUNT
PERSISTENCE
VALIDATION
FRONT-END
PAYMENT
PERSISTENCE
VALIDATION
FRONT-END
Restructuring Patterns
● Decoupling API from implementation
● Horizontal vs. vertical slices
● Library as a service
● Reduce fan-out
● Configuration as a service
Library as a service
Library as a service
Library
SERVICE
B
SERVICE
C
SERVICE
A
Library as a service
End Goal
SERVICE
B
SERVICE
C
SERVICE
A
IT A
IT B
IT C
Library
Service
Library as a service
Library
SERVICE
B
SERVICE
C
SERVICE
A
Library as a service
Library
SERVICE
B
SERVICE
C
SERVICE
A
IT A
IT B
IT C
Library as a service
Library
SERVICE
B
SERVICE
C
SERVICE
A
IT A
IT B
IT C
Library
Service
Library as a service
Library
SERVICE
B
SERVICE
C
SERVICE
A
IT A
IT B
IT C
Library
Service
Library as a service
Library
SERVICE
B
SERVICE
C
SERVICE
A
IT A
IT B
IT C
Library
Service
Library as a service
Library
SERVICE
B
SERVICE
C
SERVICE
A
IT A
IT B
IT C
Library
Service
Library as a service
SERVICE
B
SERVICE
C
SERVICE
A
IT A
IT B
IT C
Library
Service
Restructuring Patterns
● Decoupling API from implementation
● Horizontal vs. vertical slices
● Library as a service
● Reduce fan-out
● Configuration as a service
Reduce fan-out
Reduce fan-out
B
H
C
D
E
F
G
A
Reduce fan-out
B
H
C
D
E
F
G
A
A1
A2 A3
Reduce fan-out
End Goal
B
H
C
D
E
F
G
A2
A3
A1
Reduce fan-out
B
H
C
D
E
F
G
A
A1
A2 A3
Reduce fan-out
B
H
C
D
E
F
G
A1
A2 A3
A1
Reduce fan-out
B
H
C
D
E
F
G
A1
A2 A3
A1
Reduce fan-out
B
H
C
D
E
F
G
A2
A3
A1
Reduce fan-out
B
H
C
D
E
F
G
A2
A3
A1
A3
Reduce fan-out
B
H
C
D
E
F
G
A2
A3
A1
A3
Reduce fan-out
B
H
C
D
E
F
G
A2
A3
A1
Reduce fan-out
B
H
C
D
E
F
G
A2
A3
A1
Restructuring Patterns
● Decoupling API from implementation
● Horizontal vs. vertical slices
● Library as a service
● Reduce fan-out
● Configuration as a service
Configuration as a service
Configuration as a service
Configuration
Configuration as a service
Configuration
● Feature Flag
● Throttling Variable
● A/B Testing
● URLs to other systems
● …
● (for each environment!)
Configuration as a service
Configuration
● Feature Flag
● Throttling Variable
● A/B Testing
● URLs to other systems
● …
● (for each environment!)
Service Rebuild
● Compile
● Test Internal Logic
● Contract Tests
● Full Integration Tests
● Deploy
● Smoke Tests
Configuration as a service
Config items
Soft : can check in runtime (eg. feature flag)
Hard : need to check in startup (eg. DB connection)
Configuration as a service
Service
Configuration as a service
Goal
Service
Smoke Tests
Hard
Config
Deploy
Soft
Config
Service
Configuration as a service
Service
Configuration as a service
Service
Config
Everything
Else
Deploy
Smoke
Tests
Configuration as a service
Service
Config
Smoke
Tests
Configuration as a service
Service
Config Smoke Tests
Configuration as a service
Service
Soft
Config
Smoke Tests
Hard
Config
Configuration as a service
Service
Soft
Config
Smoke Tests
Hard
Config
Soft
Config
Service
Configuration as a service
Service
Soft
Config
Smoke Tests
Hard
Config
Soft
Config
Service
Configuration as a service
Service
Smoke Tests
Hard
Config
Soft
Config
Service
Configuration as a service
Smoke Tests
Hard
Config
Everything
Else
Deploy
Service
Soft
Config
Service
Configuration as a service
Goal
Service
Smoke Tests
Hard
Config
Deploy
Soft
Config
Service
Restructuring Patterns
● Decoupling API from implementation
● Horizontal vs. vertical slices
● Library as a service
● Reduce fan-out
● Configuration as a service
But… Should I Do It?
But… Should I Do It?
https://youtu.be/8JxoKJng_eQ
Check out my
video on YouTube
Recapping…
Don’t run things faster, run fewer things
Seek simplicity
Restructure as needed
Thank You!
fromfragiletoagile.com
@AbrahamMarin #DocklandsLJC
Thank You
Twitter
@EqualExperts
LinkedIn
linkedin.com/company/equal-experts
UNITED KINGDOM
+44 203 603 7830
helloUK@equalexperts.com
Equal Experts UK Ltd
30 Brock Street
London NW1 3FG
INDIA
+91 20 6607 7763
helloIndia@equalexperts.com
Equal Experts India Private Ltd
Office No. 4-C
Cerebrum IT Park No. B3
Kumar City, Kalyani Nagar
Pune, 411006
Web
www.equalexperts.com
CANADA
+1 403 775 4861
helloCanada@equalexperts.com
Equal Experts Devices Inc
205 - 279 Midpark way S.E.
T2X 1M2
Calgary, Alberta
PORTUGAL
+351 211 378 414
helloPortugal@equalexperts.com
Equal Experts Portugal
Avenida Dom João II, Nº35
Edificio Infante 11ºA
1990-083 Parque das Nações
Lisboa – Portugal
& Equal Experts
USA
+1 866-943-9737
helloUSA@equalexperts.com
Equal Experts Inc
1460 Broadway
New York
NY 10036
 

More Related Content

What's hot

Rb erp lean module overview
Rb erp lean module overviewRb erp lean module overview
Rb erp lean module overviewHarry Mosesian
 
RepreZen DSL: Pushing the limits of language usability with XText
RepreZen DSL: Pushing the limits of language usability with XTextRepreZen DSL: Pushing the limits of language usability with XText
RepreZen DSL: Pushing the limits of language usability with XTextTatiana Tanya Fesenko
 
RAPID - Building a highly usable API Design language with XText
RAPID - Building a highly usable API Design language with XTextRAPID - Building a highly usable API Design language with XText
RAPID - Building a highly usable API Design language with XTextTed Epstein
 
Workflow for Development, Release and Versioning with OSGi / bndtools- Real W...
Workflow for Development, Release and Versioning with OSGi / bndtools- Real W...Workflow for Development, Release and Versioning with OSGi / bndtools- Real W...
Workflow for Development, Release and Versioning with OSGi / bndtools- Real W...mfrancis
 
Scrum with TeamCompanion
Scrum with TeamCompanionScrum with TeamCompanion
Scrum with TeamCompanionOgnjen Bajic
 
Teams progress presenation
Teams progress presenationTeams progress presenation
Teams progress presenationOleg Seriaga
 
LAB - Component Based Development
LAB - Component Based DevelopmentLAB - Component Based Development
LAB - Component Based DevelopmentPerforce
 
Ugif 10 2012 lycia2 introduction in 45 minutes
Ugif 10 2012 lycia2 introduction in 45 minutesUgif 10 2012 lycia2 introduction in 45 minutes
Ugif 10 2012 lycia2 introduction in 45 minutesUGIF
 
Advancing OpenFabrics Interfaces
Advancing OpenFabrics InterfacesAdvancing OpenFabrics Interfaces
Advancing OpenFabrics Interfacesinside-BigData.com
 

What's hot (14)

Rb erp lean module overview
Rb erp lean module overviewRb erp lean module overview
Rb erp lean module overview
 
RepreZen DSL: Pushing the limits of language usability with XText
RepreZen DSL: Pushing the limits of language usability with XTextRepreZen DSL: Pushing the limits of language usability with XText
RepreZen DSL: Pushing the limits of language usability with XText
 
RAPID - Building a highly usable API Design language with XText
RAPID - Building a highly usable API Design language with XTextRAPID - Building a highly usable API Design language with XText
RAPID - Building a highly usable API Design language with XText
 
Workflow for Development, Release and Versioning with OSGi / bndtools- Real W...
Workflow for Development, Release and Versioning with OSGi / bndtools- Real W...Workflow for Development, Release and Versioning with OSGi / bndtools- Real W...
Workflow for Development, Release and Versioning with OSGi / bndtools- Real W...
 
Release planning
Release planningRelease planning
Release planning
 
Gluecon 2018 JaC
Gluecon 2018 JaCGluecon 2018 JaC
Gluecon 2018 JaC
 
Diwakar Nag
Diwakar NagDiwakar Nag
Diwakar Nag
 
Scrum with TeamCompanion
Scrum with TeamCompanionScrum with TeamCompanion
Scrum with TeamCompanion
 
Teams progress presenation
Teams progress presenationTeams progress presenation
Teams progress presenation
 
LAB - Component Based Development
LAB - Component Based DevelopmentLAB - Component Based Development
LAB - Component Based Development
 
RFT - Ashish Mathur
RFT - Ashish MathurRFT - Ashish Mathur
RFT - Ashish Mathur
 
Ugif 10 2012 lycia2 introduction in 45 minutes
Ugif 10 2012 lycia2 introduction in 45 minutesUgif 10 2012 lycia2 introduction in 45 minutes
Ugif 10 2012 lycia2 introduction in 45 minutes
 
Advancing OpenFabrics Interfaces
Advancing OpenFabrics InterfacesAdvancing OpenFabrics Interfaces
Advancing OpenFabrics Interfaces
 
Querix Lycia: 4GL is modern!
Querix Lycia: 4GL is modern!Querix Lycia: 4GL is modern!
Querix Lycia: 4GL is modern!
 

Similar to Architectural Patterns for an Efficient Delivery Pipeline

Breaking down your build: Architectural patterns for a more efficient pipelin...
Breaking down your build: Architectural patterns for a more efficient pipelin...Breaking down your build: Architectural patterns for a more efficient pipelin...
Breaking down your build: Architectural patterns for a more efficient pipelin...Abraham Marin-Perez
 
Manchester Expert Talks (April 2017) - Breaking Down Your Build: Architectura...
Manchester Expert Talks (April 2017) - Breaking Down Your Build: Architectura...Manchester Expert Talks (April 2017) - Breaking Down Your Build: Architectura...
Manchester Expert Talks (April 2017) - Breaking Down Your Build: Architectura...Abraham Marin-Perez
 
Continuous API Strategies for Integrated Platforms
 Continuous API Strategies for Integrated Platforms Continuous API Strategies for Integrated Platforms
Continuous API Strategies for Integrated PlatformsBill Doerrfeld
 
Continuous delivery xebia
Continuous delivery xebiaContinuous delivery xebia
Continuous delivery xebiaAgileNCR2016
 
Immutable Infrastructure: Rise of the Machine Images
Immutable Infrastructure: Rise of the Machine ImagesImmutable Infrastructure: Rise of the Machine Images
Immutable Infrastructure: Rise of the Machine ImagesC4Media
 
PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...
PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...
PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...Alexandr Savchenko
 
"Different software evolutions from Start till Release in PHP product" Oleksa...
"Different software evolutions from Start till Release in PHP product" Oleksa..."Different software evolutions from Start till Release in PHP product" Oleksa...
"Different software evolutions from Start till Release in PHP product" Oleksa...Fwdays
 
Building A Product Assortment Recommendation Engine
Building A Product Assortment Recommendation EngineBuilding A Product Assortment Recommendation Engine
Building A Product Assortment Recommendation EngineDatabricks
 
Industrializing Machine learning pipelines
Industrializing Machine learning pipelinesIndustrializing Machine learning pipelines
Industrializing Machine learning pipelinesGermain Tanguy
 
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with ConcourseContinuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with ConcourseVMware Tanzu
 
Introducing Neo4j 3.0
Introducing Neo4j 3.0Introducing Neo4j 3.0
Introducing Neo4j 3.0Neo4j
 
How to Migrate Applications Off a Mainframe
How to Migrate Applications Off a MainframeHow to Migrate Applications Off a Mainframe
How to Migrate Applications Off a MainframeVMware Tanzu
 
Delivery Pipelines as a First Class Citizen @deliverAgile2019
Delivery Pipelines as a First Class Citizen @deliverAgile2019Delivery Pipelines as a First Class Citizen @deliverAgile2019
Delivery Pipelines as a First Class Citizen @deliverAgile2019ciberkleid
 
Infrastructure as Code
Infrastructure as CodeInfrastructure as Code
Infrastructure as CodeSurjeet Singh
 
Confluent Partner Tech Talk with Reply
Confluent Partner Tech Talk with ReplyConfluent Partner Tech Talk with Reply
Confluent Partner Tech Talk with Replyconfluent
 
Designing API Platforms that Developers Love - New York Life Build Blue May 2017
Designing API Platforms that Developers Love - New York Life Build Blue May 2017Designing API Platforms that Developers Love - New York Life Build Blue May 2017
Designing API Platforms that Developers Love - New York Life Build Blue May 2017Deepak Nadig
 
Infrastructure as Code for Network
Infrastructure as Code for NetworkInfrastructure as Code for Network
Infrastructure as Code for NetworkDamien Garros
 
Bitbucket Pipelines - Atlassian Belgian User Group
Bitbucket Pipelines - Atlassian Belgian User GroupBitbucket Pipelines - Atlassian Belgian User Group
Bitbucket Pipelines - Atlassian Belgian User GroupJeroen De Raedt
 

Similar to Architectural Patterns for an Efficient Delivery Pipeline (20)

Breaking down your build: Architectural patterns for a more efficient pipelin...
Breaking down your build: Architectural patterns for a more efficient pipelin...Breaking down your build: Architectural patterns for a more efficient pipelin...
Breaking down your build: Architectural patterns for a more efficient pipelin...
 
Manchester Expert Talks (April 2017) - Breaking Down Your Build: Architectura...
Manchester Expert Talks (April 2017) - Breaking Down Your Build: Architectura...Manchester Expert Talks (April 2017) - Breaking Down Your Build: Architectura...
Manchester Expert Talks (April 2017) - Breaking Down Your Build: Architectura...
 
Continuous API Strategies for Integrated Platforms
 Continuous API Strategies for Integrated Platforms Continuous API Strategies for Integrated Platforms
Continuous API Strategies for Integrated Platforms
 
Continuous delivery xebia
Continuous delivery xebiaContinuous delivery xebia
Continuous delivery xebia
 
Immutable Infrastructure: Rise of the Machine Images
Immutable Infrastructure: Rise of the Machine ImagesImmutable Infrastructure: Rise of the Machine Images
Immutable Infrastructure: Rise of the Machine Images
 
PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...
PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...
PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...
 
"Different software evolutions from Start till Release in PHP product" Oleksa...
"Different software evolutions from Start till Release in PHP product" Oleksa..."Different software evolutions from Start till Release in PHP product" Oleksa...
"Different software evolutions from Start till Release in PHP product" Oleksa...
 
Building A Product Assortment Recommendation Engine
Building A Product Assortment Recommendation EngineBuilding A Product Assortment Recommendation Engine
Building A Product Assortment Recommendation Engine
 
Industrializing Machine learning pipelines
Industrializing Machine learning pipelinesIndustrializing Machine learning pipelines
Industrializing Machine learning pipelines
 
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with ConcourseContinuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
 
Introducing Neo4j 3.0
Introducing Neo4j 3.0Introducing Neo4j 3.0
Introducing Neo4j 3.0
 
How to Migrate Applications Off a Mainframe
How to Migrate Applications Off a MainframeHow to Migrate Applications Off a Mainframe
How to Migrate Applications Off a Mainframe
 
Delivery Pipelines as a First Class Citizen @deliverAgile2019
Delivery Pipelines as a First Class Citizen @deliverAgile2019Delivery Pipelines as a First Class Citizen @deliverAgile2019
Delivery Pipelines as a First Class Citizen @deliverAgile2019
 
Infrastructure as Code
Infrastructure as CodeInfrastructure as Code
Infrastructure as Code
 
Confluent Partner Tech Talk with Reply
Confluent Partner Tech Talk with ReplyConfluent Partner Tech Talk with Reply
Confluent Partner Tech Talk with Reply
 
Designing API Platforms that Developers Love - New York Life Build Blue May 2017
Designing API Platforms that Developers Love - New York Life Build Blue May 2017Designing API Platforms that Developers Love - New York Life Build Blue May 2017
Designing API Platforms that Developers Love - New York Life Build Blue May 2017
 
Infrastructure as Code for Network
Infrastructure as Code for NetworkInfrastructure as Code for Network
Infrastructure as Code for Network
 
Visual studio 2019 launch
Visual studio 2019 launch Visual studio 2019 launch
Visual studio 2019 launch
 
Bitbucket Pipelines - Atlassian Belgian User Group
Bitbucket Pipelines - Atlassian Belgian User GroupBitbucket Pipelines - Atlassian Belgian User Group
Bitbucket Pipelines - Atlassian Belgian User Group
 
PPT for Seminar.pptx
PPT for Seminar.pptxPPT for Seminar.pptx
PPT for Seminar.pptx
 

More from TechWell

Failing and Recovering
Failing and RecoveringFailing and Recovering
Failing and RecoveringTechWell
 
Instill a DevOps Testing Culture in Your Team and Organization
Instill a DevOps Testing Culture in Your Team and Organization Instill a DevOps Testing Culture in Your Team and Organization
Instill a DevOps Testing Culture in Your Team and Organization TechWell
 
Test Design for Fully Automated Build Architecture
Test Design for Fully Automated Build ArchitectureTest Design for Fully Automated Build Architecture
Test Design for Fully Automated Build ArchitectureTechWell
 
System-Level Test Automation: Ensuring a Good Start
System-Level Test Automation: Ensuring a Good StartSystem-Level Test Automation: Ensuring a Good Start
System-Level Test Automation: Ensuring a Good StartTechWell
 
Build Your Mobile App Quality and Test Strategy
Build Your Mobile App Quality and Test StrategyBuild Your Mobile App Quality and Test Strategy
Build Your Mobile App Quality and Test StrategyTechWell
 
Testing Transformation: The Art and Science for Success
Testing Transformation: The Art and Science for SuccessTesting Transformation: The Art and Science for Success
Testing Transformation: The Art and Science for SuccessTechWell
 
Implement BDD with Cucumber and SpecFlow
Implement BDD with Cucumber and SpecFlowImplement BDD with Cucumber and SpecFlow
Implement BDD with Cucumber and SpecFlowTechWell
 
Develop WebDriver Automated Tests—and Keep Your Sanity
Develop WebDriver Automated Tests—and Keep Your SanityDevelop WebDriver Automated Tests—and Keep Your Sanity
Develop WebDriver Automated Tests—and Keep Your SanityTechWell
 
Eliminate Cloud Waste with a Holistic DevOps Strategy
Eliminate Cloud Waste with a Holistic DevOps StrategyEliminate Cloud Waste with a Holistic DevOps Strategy
Eliminate Cloud Waste with a Holistic DevOps StrategyTechWell
 
Transform Test Organizations for the New World of DevOps
Transform Test Organizations for the New World of DevOpsTransform Test Organizations for the New World of DevOps
Transform Test Organizations for the New World of DevOpsTechWell
 
The Fourth Constraint in Project Delivery—Leadership
The Fourth Constraint in Project Delivery—LeadershipThe Fourth Constraint in Project Delivery—Leadership
The Fourth Constraint in Project Delivery—LeadershipTechWell
 
Resolve the Contradiction of Specialists within Agile Teams
Resolve the Contradiction of Specialists within Agile TeamsResolve the Contradiction of Specialists within Agile Teams
Resolve the Contradiction of Specialists within Agile TeamsTechWell
 
Pin the Tail on the Metric: A Field-Tested Agile Game
Pin the Tail on the Metric: A Field-Tested Agile GamePin the Tail on the Metric: A Field-Tested Agile Game
Pin the Tail on the Metric: A Field-Tested Agile GameTechWell
 
Agile Performance Holarchy (APH)—A Model for Scaling Agile Teams
Agile Performance Holarchy (APH)—A Model for Scaling Agile TeamsAgile Performance Holarchy (APH)—A Model for Scaling Agile Teams
Agile Performance Holarchy (APH)—A Model for Scaling Agile TeamsTechWell
 
A Business-First Approach to DevOps Implementation
A Business-First Approach to DevOps ImplementationA Business-First Approach to DevOps Implementation
A Business-First Approach to DevOps ImplementationTechWell
 
Databases in a Continuous Integration/Delivery Process
Databases in a Continuous Integration/Delivery ProcessDatabases in a Continuous Integration/Delivery Process
Databases in a Continuous Integration/Delivery ProcessTechWell
 
Mobile Testing: What—and What Not—to Automate
Mobile Testing: What—and What Not—to AutomateMobile Testing: What—and What Not—to Automate
Mobile Testing: What—and What Not—to AutomateTechWell
 
Cultural Intelligence: A Key Skill for Success
Cultural Intelligence: A Key Skill for SuccessCultural Intelligence: A Key Skill for Success
Cultural Intelligence: A Key Skill for SuccessTechWell
 
Turn the Lights On: A Power Utility Company's Agile Transformation
Turn the Lights On: A Power Utility Company's Agile TransformationTurn the Lights On: A Power Utility Company's Agile Transformation
Turn the Lights On: A Power Utility Company's Agile TransformationTechWell
 

More from TechWell (20)

Failing and Recovering
Failing and RecoveringFailing and Recovering
Failing and Recovering
 
Instill a DevOps Testing Culture in Your Team and Organization
Instill a DevOps Testing Culture in Your Team and Organization Instill a DevOps Testing Culture in Your Team and Organization
Instill a DevOps Testing Culture in Your Team and Organization
 
Test Design for Fully Automated Build Architecture
Test Design for Fully Automated Build ArchitectureTest Design for Fully Automated Build Architecture
Test Design for Fully Automated Build Architecture
 
System-Level Test Automation: Ensuring a Good Start
System-Level Test Automation: Ensuring a Good StartSystem-Level Test Automation: Ensuring a Good Start
System-Level Test Automation: Ensuring a Good Start
 
Build Your Mobile App Quality and Test Strategy
Build Your Mobile App Quality and Test StrategyBuild Your Mobile App Quality and Test Strategy
Build Your Mobile App Quality and Test Strategy
 
Testing Transformation: The Art and Science for Success
Testing Transformation: The Art and Science for SuccessTesting Transformation: The Art and Science for Success
Testing Transformation: The Art and Science for Success
 
Implement BDD with Cucumber and SpecFlow
Implement BDD with Cucumber and SpecFlowImplement BDD with Cucumber and SpecFlow
Implement BDD with Cucumber and SpecFlow
 
Develop WebDriver Automated Tests—and Keep Your Sanity
Develop WebDriver Automated Tests—and Keep Your SanityDevelop WebDriver Automated Tests—and Keep Your Sanity
Develop WebDriver Automated Tests—and Keep Your Sanity
 
Ma 15
Ma 15Ma 15
Ma 15
 
Eliminate Cloud Waste with a Holistic DevOps Strategy
Eliminate Cloud Waste with a Holistic DevOps StrategyEliminate Cloud Waste with a Holistic DevOps Strategy
Eliminate Cloud Waste with a Holistic DevOps Strategy
 
Transform Test Organizations for the New World of DevOps
Transform Test Organizations for the New World of DevOpsTransform Test Organizations for the New World of DevOps
Transform Test Organizations for the New World of DevOps
 
The Fourth Constraint in Project Delivery—Leadership
The Fourth Constraint in Project Delivery—LeadershipThe Fourth Constraint in Project Delivery—Leadership
The Fourth Constraint in Project Delivery—Leadership
 
Resolve the Contradiction of Specialists within Agile Teams
Resolve the Contradiction of Specialists within Agile TeamsResolve the Contradiction of Specialists within Agile Teams
Resolve the Contradiction of Specialists within Agile Teams
 
Pin the Tail on the Metric: A Field-Tested Agile Game
Pin the Tail on the Metric: A Field-Tested Agile GamePin the Tail on the Metric: A Field-Tested Agile Game
Pin the Tail on the Metric: A Field-Tested Agile Game
 
Agile Performance Holarchy (APH)—A Model for Scaling Agile Teams
Agile Performance Holarchy (APH)—A Model for Scaling Agile TeamsAgile Performance Holarchy (APH)—A Model for Scaling Agile Teams
Agile Performance Holarchy (APH)—A Model for Scaling Agile Teams
 
A Business-First Approach to DevOps Implementation
A Business-First Approach to DevOps ImplementationA Business-First Approach to DevOps Implementation
A Business-First Approach to DevOps Implementation
 
Databases in a Continuous Integration/Delivery Process
Databases in a Continuous Integration/Delivery ProcessDatabases in a Continuous Integration/Delivery Process
Databases in a Continuous Integration/Delivery Process
 
Mobile Testing: What—and What Not—to Automate
Mobile Testing: What—and What Not—to AutomateMobile Testing: What—and What Not—to Automate
Mobile Testing: What—and What Not—to Automate
 
Cultural Intelligence: A Key Skill for Success
Cultural Intelligence: A Key Skill for SuccessCultural Intelligence: A Key Skill for Success
Cultural Intelligence: A Key Skill for Success
 
Turn the Lights On: A Power Utility Company's Agile Transformation
Turn the Lights On: A Power Utility Company's Agile TransformationTurn the Lights On: A Power Utility Company's Agile Transformation
Turn the Lights On: A Power Utility Company's Agile Transformation
 

Recently uploaded

Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 

Recently uploaded (20)

Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 

Architectural Patterns for an Efficient Delivery Pipeline

  • 1. DW2 DevOps Design & Architecture 6/7/2017 11:30:00 AM DW2 Architectural Patterns for an Efficient Delivery Pipeline Presented by: Abraham Marin-Perez Equal Experts Brought to you by: 350 Corporate Way, Suite 400, Orange Park, FL 32073 888-­‐268-­‐8770 ·∙ 904-­‐278-­‐0524 - info@techwell.com - https://www.techwell.com/
  • 2. Abraham Marin-Perez Equal Experts An associate of Equal Experts, Abraham Marin-Perez has been working in software development for a decade, paying special attention to what maximizes a team's capacity to deliver in the long term. This has led him to study everyday programming habits and techniques that ensure the sustainability of the development process. Abraham shares his views in Real-World Maintainable Software and more informally in his blog and on Twitter @AbrahamMarin. An author and public speaker, Abraham helps run the London Java Community and contributes as a Java news editor at InfoQ.
  • 3. Breaking Down Your Build: Architectural Patterns for a More Efficient Pipeline fromfragiletoagile.com & Equal Experts @AbrahamMarin #DocklandsLJC About me
  • 4. Making Software. Better. Simple solutions to big business problems. Equal Experts is a network of talented, experienced, software consultants, specialising in agile delivery.
  • 5. What’s in a Build? Complexity vs. Simplicity
  • 6. "Perfection is Achieved Not When There Is Nothing More to Add, But When There Is Nothing Left to Take Away” Antoine de Saint-Exupéry | author of The Little Prince
  • 7. The fastest build is the one you don’t need to run
  • 8. Break down a monolith Break down a monolith
  • 9. Break down a monolith APP BACKEND SUPER APP DATA MODEL APP BACKEND SUPER APP SUPER APP DATA MODEL APP BACKEND GUI Build up your microservices
  • 10. Build up your microservices Build up your microservices
  • 11. Build up your microservices Build up your microservices
  • 12. Build up your microservices Build up your microservices
  • 13. How to build a CI/CD system like this https://skillsmatter.com/skillscasts/6371-scalable-continuous-deployment-with-maven View my talk Good Refactoring Skills Needed
  • 15.
  • 17. Restructuring techniques Avoid build phases Build Restructuring techniques Avoid build phases Build Compile Test Deploy
  • 18. Restructuring techniques Avoid build phases Build Compile Test Deploy Internal Logic Integration Logic Restructuring techniques Avoid build phases Build Compile Test Deploy Internal Logic (unit tests) Integration Logic
  • 19. Restructuring techniques Avoid build phases Build Compile Test Deploy Internal Logic (unit tests) Integration Logic Contract Tests Full Integration Tests Smoke Tests Restructuring techniques Identify and restructure sub-builds
  • 20. Restructuring techniques Identify and restructure sub-builds A B C D Restructuring techniques Identify and restructure sub-builds B C D A1 A2 A3
  • 21. Restructuring techniques Identify and restructure sub-builds A1 B C D A2 A3 Restructuring techniques Transform build-time dependencies into run-time dependencies
  • 22. Restructuring Patterns Restructuring Patterns ● Decoupling API from implementation ● Horizontal vs. vertical slices ● Library as a service ● Reduce fan-out ● Configuration as a service
  • 23. Restructuring Patterns ● Decoupling API from implementation ● Horizontal vs. vertical slices ● Library as a service ● Reduce fan-out ● Configuration as a service Decoupling API from implementation
  • 24. Decoupling API from implementation WEB INTERFACE LIBRARY Decoupling API from implementation Goal WEB INTERFACE LIBRARY IMPL LIBRARY API ASSEMBLY
  • 25. Decoupling API from implementation WEB INTERFACE LIBRARY Decoupling API from implementation ASSEMBLY WEB INTERFACE LIBRARY
  • 26. Decoupling API from implementation ASSEMBLY WEB INTERFACE LIBRARY Integration Test Deploy Smoke Test Compile Unit Test Contract Test Decoupling API from implementation ASSEMBLY WEB INTERFACE LIBARY API LIBRARY IMPL
  • 27. Decoupling API from implementation DI for IMPL Use explicit wiring ASSEMBLY WEB INTERFACE LIBRARY API LIBRARY IMPL Decoupling API from implementation WEB INTERFACE LIBRARY API LIBRARY IMPL LIBRARY IMPL No conflict in run time because explicit wiring ASSEMBLY
  • 28. Decoupling API from implementation WEB INTERFACE LIBRARY API LIBRARY IMPL LIBRARY IMPL ASSEMBLY Decoupling API from implementation WEB INTERFACE LIBRARY IMPL LIBRARY API ASSEMBLY
  • 29. Restructuring Patterns ● Decoupling API from implementation ● Horizontal vs. vertical slices ● Library as a service ● Reduce fan-out ● Configuration as a service Horizontal vs. vertical slices
  • 30. Horizontal vs. vertical slices Persistance Validation Logic Front-End Web Service Horizontal vs. vertical slices Web Service Persistence Validation Front-end ACCOUNT COMMS PAYMENT ACCOUNT COMMS PAYMENT ACCOUNT COMMS PAYMENT
  • 31. Horizontal vs. vertical slices End Goal Web Service COMMS PERSISTENCE VALIDATION FRONT-END ACCOUNT PERSISTENCE VALIDATION FRONT-END PAYMENT PERSISTENCE VALIDATION FRONT-END Horizontal vs. vertical slices Web Service Persistence Validation Front-end ACCOUNT COMMS PAYMENT ACCOUNT COMMS PAYMENT ACCOUNT COMMS PAYMENT
  • 32. Horizontal vs. vertical slices PAYMENT PERSISTENCE VALIDATION FRONT-END Web Service Persistence Validation Front-end ACCOUNT COMMS PAYMENT ACCOUNT COMMS PAYMENT ACCOUNT COMMS PAYMENT Horizontal vs. vertical slices PAYMENT Web Service Persistence Validation Front-end ACCOUNT COMMS PAYMENT ACCOUNT COMMS PAYMENT ACCOUNT COMMS PAYMENT PERSISTENCE VALIDATION FRONT-END
  • 33. Horizontal vs. vertical slices Web Service Persistence Validation Front-end ACCOUNT COMMS ACCOUNT COMMS ACCOUNT COMMS PAYMENT PERSISTENCE VALIDATION FRONT-END Horizontal vs. vertical slices COMMS Web Service Persistence Validation Front-end ACCOUNT COMMS ACCOUNT COMMS ACCOUNT COMMS PERSISTENCE VALIDATION FRONT-END PAYMENT PERSISTENCE VALIDATION FRONT-END
  • 34. Horizontal vs. vertical slices COMMSPersistence ACCOUNT COMMS PERSISTENCE VALIDATION FRONT-END PAYMENT PERSISTENCE VALIDATION FRONT-END Web Service Validation Front-end ACCOUNT COMMS ACCOUNT COMMS Horizontal vs. vertical slices COMMS Web Service Persistence ACCOUNT PERSISTENCE VALIDATION FRONT-END PAYMENT PERSISTENCE VALIDATION FRONT-END Validation Front-end ACCOUNT ACCOUNT
  • 35. Horizontal vs. vertical slices ACCOUNT PERSISTENCE VALIDATION FRONT-END COMMS Web Service Persistence Validation Front-end ACCOUNT PERSISTENCE VALIDATION FRONT-END PAYMENT PERSISTENCE VALIDATION FRONT-END ACCOUNT ACCOUNT Horizontal vs. vertical slices ACCOUNT PERSISTENCE VALIDATION FRONT-END COMMS Web Service Persistence Validation Front-end ACCOUNT PERSISTENCE VALIDATION FRONT-END PAYMENT PERSISTENCE VALIDATION FRONT-END ACCOUNT ACCOUNT
  • 36. Horizontal vs. vertical slices Web Service COMMS PERSISTENCE VALIDATION FRONT-END ACCOUNT PERSISTENCE VALIDATION FRONT-END PAYMENT PERSISTENCE VALIDATION FRONT-END Restructuring Patterns ● Decoupling API from implementation ● Horizontal vs. vertical slices ● Library as a service ● Reduce fan-out ● Configuration as a service
  • 37. Library as a service Library as a service Library SERVICE B SERVICE C SERVICE A
  • 38. Library as a service End Goal SERVICE B SERVICE C SERVICE A IT A IT B IT C Library Service Library as a service Library SERVICE B SERVICE C SERVICE A
  • 39. Library as a service Library SERVICE B SERVICE C SERVICE A IT A IT B IT C Library as a service Library SERVICE B SERVICE C SERVICE A IT A IT B IT C Library Service
  • 40. Library as a service Library SERVICE B SERVICE C SERVICE A IT A IT B IT C Library Service Library as a service Library SERVICE B SERVICE C SERVICE A IT A IT B IT C Library Service
  • 41. Library as a service Library SERVICE B SERVICE C SERVICE A IT A IT B IT C Library Service Library as a service SERVICE B SERVICE C SERVICE A IT A IT B IT C Library Service
  • 42. Restructuring Patterns ● Decoupling API from implementation ● Horizontal vs. vertical slices ● Library as a service ● Reduce fan-out ● Configuration as a service Reduce fan-out
  • 44. Reduce fan-out End Goal B H C D E F G A2 A3 A1 Reduce fan-out B H C D E F G A A1 A2 A3
  • 45. Reduce fan-out B H C D E F G A1 A2 A3 A1 Reduce fan-out B H C D E F G A1 A2 A3 A1
  • 48. Reduce fan-out B H C D E F G A2 A3 A1 Restructuring Patterns ● Decoupling API from implementation ● Horizontal vs. vertical slices ● Library as a service ● Reduce fan-out ● Configuration as a service
  • 49. Configuration as a service Configuration as a service Configuration
  • 50. Configuration as a service Configuration ● Feature Flag ● Throttling Variable ● A/B Testing ● URLs to other systems ● … ● (for each environment!) Configuration as a service Configuration ● Feature Flag ● Throttling Variable ● A/B Testing ● URLs to other systems ● … ● (for each environment!) Service Rebuild ● Compile ● Test Internal Logic ● Contract Tests ● Full Integration Tests ● Deploy ● Smoke Tests
  • 51. Configuration as a service Config items Soft : can check in runtime (eg. feature flag) Hard : need to check in startup (eg. DB connection) Configuration as a service Service
  • 52. Configuration as a service Goal Service Smoke Tests Hard Config Deploy Soft Config Service Configuration as a service Service
  • 53. Configuration as a service Service Config Everything Else Deploy Smoke Tests Configuration as a service Service Config Smoke Tests
  • 54. Configuration as a service Service Config Smoke Tests Configuration as a service Service Soft Config Smoke Tests Hard Config
  • 55. Configuration as a service Service Soft Config Smoke Tests Hard Config Soft Config Service Configuration as a service Service Soft Config Smoke Tests Hard Config Soft Config Service
  • 56. Configuration as a service Service Smoke Tests Hard Config Soft Config Service Configuration as a service Smoke Tests Hard Config Everything Else Deploy Service Soft Config Service
  • 57. Configuration as a service Goal Service Smoke Tests Hard Config Deploy Soft Config Service Restructuring Patterns ● Decoupling API from implementation ● Horizontal vs. vertical slices ● Library as a service ● Reduce fan-out ● Configuration as a service
  • 58. But… Should I Do It? But… Should I Do It? https://youtu.be/8JxoKJng_eQ Check out my video on YouTube
  • 59. Recapping… Don’t run things faster, run fewer things Seek simplicity Restructure as needed
  • 60. Thank You! fromfragiletoagile.com @AbrahamMarin #DocklandsLJC Thank You Twitter @EqualExperts LinkedIn linkedin.com/company/equal-experts UNITED KINGDOM +44 203 603 7830 helloUK@equalexperts.com Equal Experts UK Ltd 30 Brock Street London NW1 3FG INDIA +91 20 6607 7763 helloIndia@equalexperts.com Equal Experts India Private Ltd Office No. 4-C Cerebrum IT Park No. B3 Kumar City, Kalyani Nagar Pune, 411006 Web www.equalexperts.com CANADA +1 403 775 4861 helloCanada@equalexperts.com Equal Experts Devices Inc 205 - 279 Midpark way S.E. T2X 1M2 Calgary, Alberta PORTUGAL +351 211 378 414 helloPortugal@equalexperts.com Equal Experts Portugal Avenida Dom João II, Nº35 Edificio Infante 11ºA 1990-083 Parque das Nações Lisboa – Portugal & Equal Experts USA +1 866-943-9737 helloUSA@equalexperts.com Equal Experts Inc 1460 Broadway New York NY 10036