ljcconf 2013 "chuck norris doesn't need devops"

44
Chuck Norris Doesn’t Need DevOps… but the rest of us might benefit Daniel Bryant CTO, Instant Access Technologies [email protected] @taidevcouk

Upload: daniel-bryant

Post on 11-May-2015

1.455 views

Category:

Technology


0 download

DESCRIPTION

We all hear the term "DevOps" being thrown around on a daily basis, but what does it actually mean? With a little help from everyone's favourite 80's action hero, we'll undergo a whistle-stop tour of the philosophy, culture and tooling behind this buzzword, specifically aimed at Java Developers. We'll also look at a real-world case study from Instant Access Technologies Ltd, and explore the key role that DevOps has played during a successful upgrade of the epoints customer loyalty platform to support increasing traffic. The core discussion will focus on the challenges encountered as we moved from a monolithic app deployed into a data centre on a 'big bang' schedule, to a platform of loosely-coupled components, all being continuously deployed into the Cloud.

TRANSCRIPT

Page 1: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

Chuck Norris Doesn’t Need DevOps…but the rest of us might benefit

Daniel BryantCTO, Instant Access Technologies

[email protected]@taidevcouk

Page 2: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

epoints.com

• At the center of IAT’s offerings

• Customer rewards/loyalty

• Earn everywhere– Online shopping– Social sites– Your company? (partnerships available!)

Page 3: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Page 4: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

epoints.com 2012/13 Upgrade…

• Increasing traffic – Scalability being stretched

• Increasingly diverse requirements

• Our starting point– Developers creating monolithic application– Manual QA– Operations deploying to data center

Page 5: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Core Changes…

• Service-Oriented Architecture

• Cloud-based deployments

• DevOps Culture

Page 6: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

What is DevOps?

• “DevOps is a software development method that stresses communication, collaboration and integration between software developers and information technology (IT) professionals.”

• “DevOps […] aims to help an organization rapidly produce software products and services”

http://en.wikipedia.org/wiki/DevOps

Page 7: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

So, What’s Chuck Norris Doing Here?

Page 8: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Chuck Norris doesn’t need DevOps……as a one-man army he codes with one hand, tests with the other and deploys with his beard

The rest of us……work in teams to develop software

Page 9: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Software Development Teams

• Developers

• Quality Assurance

• Operations

Page 10: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Page 11: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Software Development Teams

• Developers

• Quality Assurance

• Operations

Page 12: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Page 13: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Software Development Teams

• Developers

• Quality Assurance

• Operations

Page 14: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Page 15: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

This silo mentality has to stop

Page 16: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Culture is vital

• Culture drives behaviour, drives culture…– Everyone is responsible for delivery– Systems thinking– Continuous experimentation and learning

• Not easy to change culture– The hardest part of DevOps…– …but you get to learn new things

Page 17: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Changing Culture

• Greenfield– Flickr’s story (slidesha.re/sHpYV)– Sandro Mancuso “Why other people don’t get it”

(slidesha.re/1bcStpe)

• Enterprise– “The Pheonix Project” by Gene Kim et al

• Create an effective team– Martijn Verburg “Habits of highly effective technical teams”

(bit.ly/1aF9SnK)

Page 18: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Chuck Norris doesn’t do iterative development……all applications Chuck Norris creates are right first time, every time

The rest of us……need to enable agility (and ideally facilitate continuous delivery)

Page 19: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

We all do CI, right?

• “Continuous Delivery” is the next step– Book by Jez Humble and Dave Farley– Great InfoQ Video (bit.ly/XugWi8)

• Create a “build pipeline”– Goal is fast feedback

• Continuous Deployment– Awesome, but we don’t deploy to production (yet…)

Page 20: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Gotchas

• Managing dependencies in SOA is hard, very hard

• Branching– Gitflow, Branch Per Feature, or Trunk– Integrate from ‘develop’ branch

• Migrating data can be challenging– Liquibase / Flyway– MongoDB / Solr Schema versions in data– Wooga case study (bit.ly/1egArDC)

Page 21: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Chuck Norris doesn’t do QA……Chuck Norris can test an entire application with a single assert (and get 110% code coverage)

The rest of us……need high-quality automated QA

Page 22: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Automating QA

• Unit testing is essential

• Intra-component integration testing– Spock is awesome (code.google.com/p/spock)

– Utilise embedded datastore/middleware

• Inter-component integration testing– The hardest part of SOA…

Page 23: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Automating QA

• Performance– JMeter + plugins (jmeter-plugins.org)– BlazeMeter

• Website– Selenium (www.seleniumhq.org)– Geb (www.gebish.org)

Page 24: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Automating QA

• Make it easy for everyone to execute

• Include within the build pipeline

• Make people care – fail the build!

• “Agile Testing” by Lisa Crispin, Janet Gregory

Page 25: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Chuck Norris doesn’t need an OS……his keyboard has two keys, 0 and 1

The rest of us……need to provision bare metal, and also be comfortable with the OS

Page 26: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Say No To Snowflakes!

• Infrastructure as Code– Version control everything

• Automate all provisioning– Chef, Puppet, SaltStack, Python, AWS CLI

• Play with Vagrant (www.vagrantup.com)– “providers” are super cool

Page 27: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Thinking/Acting Like A Sysadmin

• Learn Linux fundamentals

• Diagnostic skills– top, iotop, iostat, netstat, vmstat– Java utils: jps, jstat, jmap, jhat– “DevOps Troubleshooting” by Kyle Rankin

• Maybe grow a beard…

Page 28: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Chuck Norris doesn’t fail……he just finds a new way in which reality is broken

The rest of us……should plan for failure

Page 29: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Design for failure

“Everything fails all the time [in the cloud]”Werner Vogels, CTO, Amazon.com

• 21st Century Application Architecture– www.skillsmatter.com (bit.ly/10jAdSV)

Page 30: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Design for failure

• Design patterns– Asynchronous communication– Timeouts / retries– Bulkheads / circuit-breakers

• Inspiration– Chris Richardson (slidesha.re/1ft3vsg)– Netflix (bit.ly/1h5GMid)

Page 31: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Page 32: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

All arrays Chuck Norris creates are of infinite size……as Chuck Norris knows no bounds

The rest of us……should manage our resources and cultivate ‘mechanical sympathy’

Page 33: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Mechanical Sympathy

• Be aware of deployment platform properties

• …especially if in the cloud– 1000Mbps network max transfer ~125MB/s– EBS Optimised? PIOPs?– “Noisy neighbours”

• Monitor everything (more on this later)

Page 34: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

When Chuck Norris throws Exceptions……everybody knows about it because they land outside of the data center

The rest of us……should log all errors (and other vital information for diagnostic purposes)

Page 35: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Logging

• Log pretty much everything– Use appropriate levels

• Make comments searchable/machine readable– Good tips (bit.ly/hweqm4)

• Use centralised logging – Especially if in the cloud– Logstash, Loggly, Papertrail

Page 36: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Chuck Norris doesn’t worry about application downtime……Chuck Norris’ production servers are so scared they constantly ping him

The rest of us……should monitor everything

Page 37: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Monitor All The Things!

• Infrastructure monitoring– Nagios– Zabbix

Page 38: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Metrics

• Dropwizard’s Metrics is very cool– metrics.codahale.com

Page 39: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Gauges, Counters, Meters, Timers…

Page 40: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Health Checks

Page 41: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Inspirational Metrics Companies

• Several trail-blazers– Etsy (www.codeascraft.com)– Netflix (techblog.netflix.com)

Page 42: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

In Summary…

• DevOps is driving agile into QA and Ops

• Faster, leaner and more effective software– The ability to experiment is awesome!

• There are some real benefits behind the buzz

• Now is the time to step-up as a developer

Page 43: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

The Developers DevOps Action Plan

• Think about your company culture• Explore continuous delivery• Learn Linux basics• Automate provisioning• Design for failure• Cultivate mechanical sympathy• Improve logging/metrics

Page 44: LJCConf 2013 "Chuck Norris Doesn't Need DevOps"

12/04/2023 @taidevcouk

Thanks For Listening

• Massive thanks to all the IAT team– Especially our DevOps guru, Jamie Clarkson

• Questions / comments?– [email protected]– @taidevcouk