Transcript
Page 1: Puppet at Constant Contact

Puppet at Constant Contact

Adoption, the process

Page 2: Puppet at Constant Contact

Constant Contact

Market leader for Small Businesses• Email, Event, Survey & Social Campaigns• ~500k paying customers• Many customers pay as little as $15 a month

Technology• 87 applications, mix of old/new codebase• Two datacenters• ~2 million database transactions per minute

Page 3: Puppet at Constant Contact

Why Puppet?

• Scaling

• Decentralization• Diverse app servers• Distributed systems• Agile Kanban dev teams• Service architecture

• Social apps need to iterate faster

Page 4: Puppet at Constant Contact

How to manage all these servers?

Page 5: Puppet at Constant Contact

Control of Change

Page 6: Puppet at Constant Contact

Daemon mode, at last

Page 7: Puppet at Constant Contact

Cultural Change, part one

Ok,

let’s start with

Incremental Config

&

Push

Page 8: Puppet at Constant Contact

Time to market better, but…

Page 9: Puppet at Constant Contact

Special thanks to:

Our DevOps, “we can do this with Puppet” guy, Mark Schena

& our puppetmaster, Aleks Margan

Page 10: Puppet at Constant Contact

Cultural Change, part two

Page 11: Puppet at Constant Contact

It works, right?

Yes, errr. Well… kinda.

Page 12: Puppet at Constant Contact

12

Page 13: Puppet at Constant Contact
Page 14: Puppet at Constant Contact

The dream of CI

Page 15: Puppet at Constant Contact

Fix The Flow

Page 16: Puppet at Constant Contact

I Я COW!

Page 17: Puppet at Constant Contact

Configuration as code?

Page 18: Puppet at Constant Contact

Configuration as code!

Page 19: Puppet at Constant Contact

19

Page 20: Puppet at Constant Contact

Repository layout

application repository• code• puppet module• integration tests• database schema

Source Control

puppet repository• common puppet modules• system puppet modules

Page 21: Puppet at Constant Contact

Two types of puppet modules

• Common modules provide non-application-specific classes and resources.

• Application modules leverage common modules to configure an environment for a given application.

+ =

application module common module

running application

Page 22: Puppet at Constant Contact

Okay, I lied, there’s three types of puppet modules

Page 23: Puppet at Constant Contact

Module development workflow

Page 24: Puppet at Constant Contact

Deployment

complete set of puppet modules

puppetmaster

environmentenvironmentenvironmentenvironment

QA-1 QA-2 PROD

Page 25: Puppet at Constant Contact

Thanks!“Dave Connors” <[email protected]>VP, Operations

“Hawk Newton” <[email protected]> Software Architect


Top Related