30 days or less: New Features to Production

Post on 15-Jan-2015

564 views 1 download

Tags:

description

These are my slides from the ignite talk from DevOpsDays Austin 2012.

transcript

30 days or lessNew features to production

Karthik Gaekwad@iteration1

Who is this guy?

Member of the Cloud Team @NI I’m the dude that plays the dude

that designs and implements REST Services and Web Apps.

Platform Owner- “Canopy”- User Management and licensing for NI Cloud products.

Being Agile

Typically, NI has a yearly product releases Waterfalley

Cloud Iterations: monthly Feature by Feature Features ready for production

deployment at the end of an iteration

Our Process

Few features at a time. Design->Implement->Test->Deploy

Before we write code…

We listen! Know what we are really trying to

accomplish. Who is my end user?

Interact with the end customer. Do I understand the feature?

Pro Tip!

Create ‘Research Item’ tasks Don’t have enough information upfront need to investigate an approach.

Make this time bound.Goal: Know what a prototype would

look like, and how it may function.

And then

Create the Cloudlet Model Describes the end to end system. Dev and Ops communicate effectively.

Core belief: Model Driven Automation.

Next Step

Design the feature Core belief:

Build platforms, not applications Reuse existing platforms

Security @Design Time

Proactive stance with @wickett on the team

@wickett- CISSP, GWAPT

Write the Code

Best practice:Don’t write crappy code

Make it robust & resilient Fix bugs as soon as you can Get it reviewed

Never release with known bugs.

Save it

Not Ctrl+S Source Control!

We use Perforce/TFS

“If it’s not in source control, it won’t be deployed”

Test your stuff

Unit Tests to test out individual methods

Integration Tests to test out system Production Ready?

Load Test Monitors that can execute

custom workflow checks

Worst advice ever

Time To Deploy!

PIE Time- Our homegrown DevOps tool.

Create the PIE recipe (System Model Files)

Deploy to the environment of our choice- typically Dev/Test

Demo

People “get it” when they see it. End of Iteration demos Demos to the end users Iterate based on feedback

Release the feature!

Push to production Pushed by the Operation Team

The act of pushing files to production SHOULD NOT be a big deal.

If it is, the process has holes.

Blog It!

Cultivate an open culture Easier to track what happened with

frequent releases Internal Users can read at their own

convenience

Production Bug- What to do?

Don’t freak out. Figure out what (really) broke. Figure out why it broke. Accept that it happened. Fix the code! Write a new integration tests/

monitors for this

Pro Tips

Know your end user. The customer is your biggest ally

Agile is a process. Tweak it, to make it work for you

Release Early, Release Often. Bigger the release, more stuff that will go

wrong Harder to rollback

Create integration tests that can be executed by the whole team. Great when you are on vacation!

Pro Tips

Keep system designs simple. Complex cloud designs are brittle and hard to

scale Log like a champion!

But not sensitive data Create APIs to measure metrics.

Even more important in the cloud If you do something awesome, tell people.

Others are solving similar issues #DevOpsCulture

Thank You!

Questions? Find me here or on twitter

@iteration1