57
Chuck Norris Doesn’t Need DevOps… but Java Developers might benefit Daniel Bryant CTO, Instant Access Technologies [email protected] @taidevcouk

LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

Embed Size (px)

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 JVM-based 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. We will conclude the talk by recommending a learning path for Java developers who are interested to learn more about DevOps.

Citation preview

Page 1: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

Chuck Norris Doesn’t Need DevOps…but Java Developers might benefit

Daniel BryantCTO, Instant Access Technologies

[email protected]@taidevcouk

Page 2: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

Page 3: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/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 4: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023

Core Changes…

• Service-Oriented Architecture

• Cloud-based deployments

• DevOps Culture

@taidevcouk

Page 5: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

Core Changes…

• Service-Oriented Architecture– Twitter’s Story (bit.ly/1j1WbmI)

• Cloud-based deployments– “Cloud DHARMA”, 7th May at Skillsmatter

• DevOps Culture– Today!

Page 6: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

What is DevOps?

• “…a software development method that stresses communication, collaboration and integration between developers and IT professionals.”

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

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

Page 7: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

What’s in a Name?

• “Development / Operations”

• Increasing cohesion between:– Business– Development– Quality Assurance– Operations

“Bu-Dev-Qa-Ops”?

Page 8: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

yeah…‘DevOps’ sounds way cooler…

Page 9: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

Two Sides of the Same ‘DevOps’ Coin…

• Business-driven– ‘Creating organizational alignment’– Value stream mapping– Waste analysis

• Pragmatic Tech– Pushing Agile/XP into QA and Ops– Cross-functional empowerment– Tooling

Page 10: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

So, What’s Chuck Norris Doing Here?

Page 11: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/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 12: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

Software Development Teams

• Developers

• Quality Assurance

• Operations

Page 13: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

Software Development Teams

• Developers

• Quality Assurance

• Operations

Page 14: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

Page 15: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

Software Development Teams

• Developers

• Quality Assurance

• Operations

Page 16: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

Page 17: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

Software Development Teams

• Developers

• Quality Assurance

• Operations

Page 18: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

Page 19: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

This silo mentality has to stop

Page 20: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

Culture is Vital

• Culture drives behaviour, drives culture…– “Communication, simplicity, feedback, courage” – Everyone is responsible for delivery– Continuous experimentation and learning

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

Page 21: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

Changing Culture

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

• Sandro Mancuso (slidesha.re/1bcStpe)

• Enterprise– “The Pheonix Project”

• Gene Kim et al

Page 22: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

Changing Culture

• Create an effective team…

• “Habits of highly effective technical teams” – Martijn Verburg (bit.ly/1aF9SnK)

• “Patterns of Effective Teams”– Dan North (vimeo.com/68226771)

Page 23: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/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 (for both the business and technical teams)

Page 24: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

We all do Continuous Integration, right?

• Continuous Deployment/Delivery– Jez Humble and Dave Farley– Great InfoQ Video (bit.ly/XugWi8)

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

• Continuous Deployment– Production?

Page 26: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

Our Build Pipeline

• Component Build– Compile– Unit Tests (surefire)– Integration Tests (failsafe)

• Deployment onto QA Cloud– Python Scripts + Chef to provision– Verify success using Python

Page 27: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

Our Build Pipeline

• Acceptance Tests– Cucumber and Selenium– Work in progress…

• Performance Tests– Jmeter– Jenkins Jmeter performance plugin

• Staging / Live Deployment– Human-based conditional operation

Page 28: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

Gotchas

• Managing dependencies in SOA is hard, very hard

• Branching– Gitflow, Branch Per Feature, or Mainline

• Migrating data can be challenging– Liquibase / Flyway– MongoDB / Solr Schema versions in data– Wooga case study (bit.ly/1egArDC)– Shout out to Daniel Josefsson @ Shazam for tips!

Page 29: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/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 30: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/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 31: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

Automating QA

• Consumer-based Testing– Brandon Byars (bit.ly/1lmcoaD)

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

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

Page 32: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/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 33: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/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 34: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/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 35: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/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 K. Rankin

• Maybe grow a beard…

Page 36: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/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 37: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

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 38: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

Black Swan Theory

“…is a metaphor that describes an event that comes as a surprise, has a major effect, and is often inappropriately rationalized after the fact with the benefit of hindsight”

Nassim Nicholas Taleb, The Black Swanhttp://amzn.to/1gaIqxz

Page 39: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

Failure

Pre-Cloud we designed for success…and handled failure.

With Cloud we design for failure… and handle success.

Credit to John Bassil for inspiration here! (@johnbassil)

Page 40: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/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 41: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

Page 42: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

Antifragile

• The opposite of fragile?– Robust…– Antifragile…

• Netflix are best-in-class– bit.ly/1gs5n3q

• System must be robust first!

Page 43: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/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 44: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

Mechanical Sympathy

• Be aware of deployment platform properties

• …especially if in the cloud– Block Storage IOPS (100 vs 49k)– 1Gbps Network ( < 125MB/s vs > 400MB/s)– “Noisy neighbours”

• Monitor everything (more on this later)

Page 45: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/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 46: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/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 47: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/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 48: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

Monitor All The Things!

• Infrastructure monitoring– Nagios– Zabbix– Splunk– AppDynamics

Page 49: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

Metrics

• Dropwizard’s Metrics– metrics.codahale.com

• Netflix’s Servo– github.com/Netflix/servo

• Etsy’s StatsD– github.com/etsy/statsd/wiki

Page 50: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

Health Checks

Page 51: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

Gauges, Counters, Meters, Timers…

Page 52: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

Page 53: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

Page 54: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

Inspirational Metrics Companies

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

Page 55: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

In Summary…

• DevOps is driving Agile/XP into QA and Ops

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

• There are some real benefits behind the buzz

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

Page 56: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

The Developer’s 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 57: LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"

10/04/2023 @taidevcouk

Thanks For Listening

• Massive thanks to all the IAT team– DevOps gurus, Jamie Clarkson and Anjani Phuyal

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

• Devoxx UK 12-13th June– www.devoxx.co.uk