Accelerating
Agility With
Tech
Jon Haarmann
&
Blair Motchan
Jon Haarmann & Blair Motchan
Accelerating
Agility With
Tech
● Increase Business Agility
○ Tighter Feedback Loops
○ Speed Up Development
○ Speed Up Delivery
Goal of Adopting an
Agile Mindset?
How?
What should you do
when process change
isn’t enough?
“Continuous attention to
technical excellence and good
design enhances agility.”
“Continuous attention to
technical excellence and good
design enhances agility.”
-agile manifesto
Accelerating Transformation
With Tech
Real World Case Studies
● What was the problem
● What process change(s) we tried
● How technology helped
● Demo
Separation of Duties
No Developer Access
Dev QA
Pre
Prod
Prod
Development
Speed Up Delivery (Case Study)
Problem: Deployment Lag Time
Infrastructure
IT
Promotion
Path
Separate
Infrastructure Team
Deploy
Requests
Systems Engineers cannot
keep up with demandDev Teams Iterating Quickly
What we tried:
● Improve request process
● Create tiers of products to
determine priority requests
Dev Team Infrastructure Team
QA Team
Tech Solution: Automated Deployments
& Push Button Promotions
Dev QA Pre
Prod
Prod
Negotiated to have
CI tooling granted
permissions
Promotion Button
QA Team Only
(Separation of Duties)
Auto Deploys in Dev
DEMO
Product 1
DB
UI
Service
Product 2
UI
Service
● New product being built
● New product needs much of
the same data as the others
● Need to rebuild same
services, DAOs, etc
● If business logic changes,
need to apply to all
products
Hundreds
of tables
Speed Up Delivery (Case Study)
Problem: New products take too long
What we tried:
Adopt Scrum
Work in Sprints
Vertical slices
Focus on value
I.N.V.E.S.T.
UI
Service
Data Model
DB
A B C D
Front end
1
Front end
2
Shared REST Service Layer
App 1
DB
UI
Service
DB
App 2
UI
Service
Tech Solution: Shared Services Layer
Split applications horizontally
New UI
apps can
be built
quickly
DEMO
Monolithic Application (Single Codebase)
DB
feature
feature
feature
feature
feature
feature
feature
feature
domain domain domain domain domain domain
Team Team Team Team
Teams stepping
on each others
toes
Codebase Complex
and Tangled
Speed Up Development (Case Study)
Problem: Codebase Too Big
Changes for one team
causing issues for
another
Teams cannot evolve
product independently
What we tried:
● Switch to git from svn for
easier merging
● Use and expert PR
reviewer to resolve
conflicts
Independently
Deployable
Back End Apps
Team 2
Independently
Deployable
Front End Apps
Team 1
DB
Domain
Service A
DB
Domain
Service B
DB
Domain
Service C
Split application
vertically
Tech Solution: Microservices
DEMO
App 1
App 2
Perform Calcs
(down)
Client App
Speed up development (Case Study)
Problem: Coupling
Hundreds of thousands
of requests daily
DB
Error
Tables
Write errors
Manually Triage
each error and
perform manual
corrections to data
loss when needed
What we tried:
● Maintenance windows
● Coordinating deployments
across teams
App 1 App 2
Client App
App 1
Client App
App 2
Synchronous
Communication
Asynchronous
Communication
Tightly Coupled De-coupled
Tech Solution: Asynchronous Calls
Introduce
Queuing
Technology
Messages will resume
when app comes back up
DEMO
Speed up delivery (Case Study)
Problem: Organizational Readiness
Development Team
Team is recognizing the benefits of
small, low risk changes
Sprint A
(2 weeks)
Sprint B
(2 weeks)
Monthly
Release
“We should just release
every sprint !”
Product Support
“It would be too much
work to prepare release
notes every two weeks”
“Customers don’t like it
when the app changes all
the time”
What we tried:
● Dev team modified
definition of done to add
release notes to each ticket
● Auto generate release
notes
DB
Front End
Service Layer Feature
Flag DB
My App
Feature A (on)
Feature B (off - hidden)
Feature On/Off
A On
B Off
C On
Feature C (on)
Tech Solution: Feature Flags
Roll out every change behind a feature flag
Allows “deployment” of the code to
be separate from the “release” of the
feature
Turn on the feature when the
organization is ready to support it
DEMO
Sometimes
process
change is not
enough
Understand the
problem you are
trying to solve
Seek Out and
Remove
Foundational
Impediments
Challenge your
teams to strive
for technical
excellence
Accelerate
Agility With
Tech Thank You !!

AgileMidwest2018-Haarmann-AcceleratingAgilityWithTech

  • 1.
  • 2.
  • 3.
    Jon Haarmann &Blair Motchan
  • 4.
  • 5.
    ● Increase BusinessAgility ○ Tighter Feedback Loops ○ Speed Up Development ○ Speed Up Delivery Goal of Adopting an Agile Mindset?
  • 6.
  • 7.
    What should youdo when process change isn’t enough?
  • 8.
    “Continuous attention to technicalexcellence and good design enhances agility.”
  • 9.
    “Continuous attention to technicalexcellence and good design enhances agility.” -agile manifesto
  • 10.
    Accelerating Transformation With Tech RealWorld Case Studies ● What was the problem ● What process change(s) we tried ● How technology helped ● Demo
  • 11.
    Separation of Duties NoDeveloper Access Dev QA Pre Prod Prod Development Speed Up Delivery (Case Study) Problem: Deployment Lag Time Infrastructure IT Promotion Path Separate Infrastructure Team Deploy Requests Systems Engineers cannot keep up with demandDev Teams Iterating Quickly
  • 12.
    What we tried: ●Improve request process ● Create tiers of products to determine priority requests
  • 13.
    Dev Team InfrastructureTeam QA Team Tech Solution: Automated Deployments & Push Button Promotions Dev QA Pre Prod Prod Negotiated to have CI tooling granted permissions Promotion Button QA Team Only (Separation of Duties) Auto Deploys in Dev
  • 14.
  • 15.
    Product 1 DB UI Service Product 2 UI Service ●New product being built ● New product needs much of the same data as the others ● Need to rebuild same services, DAOs, etc ● If business logic changes, need to apply to all products Hundreds of tables Speed Up Delivery (Case Study) Problem: New products take too long
  • 16.
    What we tried: AdoptScrum Work in Sprints Vertical slices Focus on value I.N.V.E.S.T. UI Service Data Model DB A B C D
  • 17.
    Front end 1 Front end 2 SharedREST Service Layer App 1 DB UI Service DB App 2 UI Service Tech Solution: Shared Services Layer Split applications horizontally New UI apps can be built quickly
  • 18.
  • 19.
    Monolithic Application (SingleCodebase) DB feature feature feature feature feature feature feature feature domain domain domain domain domain domain Team Team Team Team Teams stepping on each others toes Codebase Complex and Tangled Speed Up Development (Case Study) Problem: Codebase Too Big Changes for one team causing issues for another Teams cannot evolve product independently
  • 20.
    What we tried: ●Switch to git from svn for easier merging ● Use and expert PR reviewer to resolve conflicts
  • 21.
    Independently Deployable Back End Apps Team2 Independently Deployable Front End Apps Team 1 DB Domain Service A DB Domain Service B DB Domain Service C Split application vertically Tech Solution: Microservices
  • 22.
  • 23.
    App 1 App 2 PerformCalcs (down) Client App Speed up development (Case Study) Problem: Coupling Hundreds of thousands of requests daily DB Error Tables Write errors Manually Triage each error and perform manual corrections to data loss when needed
  • 24.
    What we tried: ●Maintenance windows ● Coordinating deployments across teams
  • 25.
    App 1 App2 Client App App 1 Client App App 2 Synchronous Communication Asynchronous Communication Tightly Coupled De-coupled Tech Solution: Asynchronous Calls Introduce Queuing Technology Messages will resume when app comes back up
  • 26.
  • 27.
    Speed up delivery(Case Study) Problem: Organizational Readiness Development Team Team is recognizing the benefits of small, low risk changes Sprint A (2 weeks) Sprint B (2 weeks) Monthly Release “We should just release every sprint !” Product Support “It would be too much work to prepare release notes every two weeks” “Customers don’t like it when the app changes all the time”
  • 28.
    What we tried: ●Dev team modified definition of done to add release notes to each ticket ● Auto generate release notes
  • 29.
    DB Front End Service LayerFeature Flag DB My App Feature A (on) Feature B (off - hidden) Feature On/Off A On B Off C On Feature C (on) Tech Solution: Feature Flags Roll out every change behind a feature flag Allows “deployment” of the code to be separate from the “release” of the feature Turn on the feature when the organization is ready to support it
  • 30.
  • 31.
  • 32.
    Understand the problem youare trying to solve
  • 33.
  • 34.
    Challenge your teams tostrive for technical excellence
  • 35.