25
Building the Agile Enterprise: Combining Kanban and tooling to scale Agile beyond your team Gil Irizarry Karen Hannon Karen Hannon Constant Contact March 2012 Copyright © 2012 Constant Contact Inc. 1

2012 Building the Agile Enterprise - EclipseCon … Microsoft PowerPoint - 2012 Building the Agile Enterprise.pptx Author girizarry Created Date 3/23/2012 2:29:09 PM

  • Upload
    vodien

  • View
    216

  • Download
    3

Embed Size (px)

Citation preview

Building the Agile Enterprise: Combining Kanban and tooling to scale Agile beyond your team

Gil Irizarry

Karen HannonKaren Hannon

Constant Contact

March 2012

Copyright © 2012 Constant Contact Inc. 1

Agenda

• Background on Constant Contact

• Our Process

Copyright © 2012 Constant Contact Inc. 2

• Our Tooling

The Goal

• We want to release more features more frequently

• Why?

• React quicker to changing market conditions

• Get new features to users more quickly

Copyright © 2012 Constant Contact Inc. 3

• Get new features to users more quickly• Frequent releases are smaller releases: our customers often cannot absorb a large set of changes

• We also want teams to work more smoothly and continuously

The Challenge

• 13 software development teams

• 5 development and testing environments

• 2 production environments

Copyright © 2012 Constant Contact Inc. 4

• 2 production environments

• A code base that was first created around 2004 and built up over time

What do we have?

Copyright © 2012 Constant Contact Inc. 5

A mess of interdependencies!

So, how do we address this?

Copyright © 2012 Constant Contact Inc. 6

• With Scrum of Scrums!

• Um, wait…

Scrum of Scrums (of Scrums (of Scrums…))

• How to integrate teams in Scrum?

• Hold a Scrum of Scrums

• What happens if you have too many teams?

Copyright © 2012 Constant Contact Inc. 7

• Hold a Scrum of Scrums of Scrums, and so on…

• Add a MetaScrum or two

Our Process

• Kanban at the team level

• Release Management at the org level

Copyright © 2012 Constant Contact Inc. 8

• Manage the intersection of the two

5 Core Properties of Kanban

• Visualize the workflow• States in the team board are a reflection of how a team completes its work

• Limit work-in-progress (WIP)

• Manage Flow

Copyright © 2012 Constant Contact Inc. 9

• Manage Flow• Implied that flow should be continuous

• Make Process Policies Explicit

• Improve Collaboratively

Release Management

• Prioritized project list

• All At Once Planning

• Classes of Service

Copyright © 2012 Constant Contact Inc. 10

• (Near) Continuous integration and (mostly) automated regression testing

• Dependency and deliverable review

• Release train

Prioritized Project List

Copyright © 2012 Constant Contact Inc. 11

• Product Management, Engineering and Operations leads meet regularly to prioritize all development projects• This becomes the organizational backlog, which drives each team’s backlog

All At Once Planning

• Prior to the start of a release, teams use the prioritized project list to plan their upcoming work

• Planning involves the identification of deliverables and dependencies

Copyright © 2012 Constant Contact Inc. 12

• Dependencies are discussed with dependent teams

• A meeting is held in which all development and operations teams present their dependencies to each other

All At Once Planning

• At the end of the meeting, each team has their

planned deliverables and incoming dependencies

• If they haven’t already, they determine their capacity and, based on the priorities, commit to a set of work

Copyright © 2012 Constant Contact Inc. 13

• This means that a team may have capacity to do work, but may not get to it in a release if that work pushes the operations team beyond its capacity

• Once a release starts, we will have each team’s set of commitments

Dependency and deliverable review

• Project leads review the deliverables and

Copyright © 2012 Constant Contact Inc. 14

• Project leads review the deliverables and dependencies to which they have committed and say if they are on track or not

• We found the teams could still miss a deliverable even if they had no impediments. Deliverable tracking provides a better view of the state of the release

Release Train

Copyright © 2012 Constant Contact Inc. 15

• Releases are iterative but development is continuous

Release Train

• If a deliverable misses a release (the train), it simply waits to capture the next one

• We don’t penalize a team if a deliverable is not done at the end of a release and misses the release train

• Teams plan and test continuously

Copyright © 2012 Constant Contact Inc. 16

• Teams plan and test continuously

• It’s OK if a team pulls functionality from a release within a release cycle

• It’s OK if a team starts work for the next release in the current release

Release Train

• To make this work:

• Releases must be short

• Must have tooling for automated builds and

deployments

Copyright © 2012 Constant Contact Inc. 17

deployments

• Other areas of the organization must be flexible enough to react to last-minute product changes

So, How Do We Make This Happen?

Copyright © 2012 Constant Contact Inc. 18

We Updated Our Tooling

The Past Today

Source Control ClearCase GIT

Continuous Integration

None Jenkins

Builds Ant Maven

Copyright © 2012 Constant Contact Inc. 19

Builds Ant Maven

Environments Desktop PCs Macs/Vagrant

SQL Run manually Liquibase

We Updated Our Architecture and Infrastructure

•Transitioning from a monolithic codebase to a service based architecture

• And from a single DB2 database to application specific MySQL databases and Cassandra

Copyright © 2012 Constant Contact Inc. 20

• Moved from Websphere to Jboss

• Package Code, Configuration, SQL, and Tests together

• Automated our deployments with Puppet

Increased Emphasis on Testing

• Monitoring code coverage

• Advancing our automated test tooling; JUnit, Selenium and Rspec

• Unit tests run at build time

Copyright © 2012 Constant Contact Inc. 21

• Automated Smoke and Integration tests run in our CI environment

• Code not advanced if tests fail

• Daily emails to entire team on testing status

Evolving Branching Strategy

• Branch per application/team

• Initial development in developer’s local branch

• Team integration in Development branch

Copyright © 2012 Constant Contact Inc. 22

• Multi-Team integration in the Integration branch

• On the train – promoted to Release branch

• A Master branch for current production

Development workflow

Copyright © 2012 Constant Contact Inc. 23

Continuous Delivery

Brings together:

• Continuous integration• Automated testing• Automated deployment

Copyright © 2012 Constant Contact Inc. 24

Resulting in:

• Stable test environments• Increased developer productivity• Higher quality releases• Smaller, more frequent releases

Takeaways

• Decouple team planning from releases

• Make releases small and frequent

• Code, architecture and infrastructure must work

together to make small, frequent releases possible

Copyright © 2012 Constant Contact Inc. 25

together to make small, frequent releases possible

• Plan and prioritize continuously

• Automate Everything! (Building, Testing, and Deploying)