SlideShare a Scribd company logo
1 of 40
Download to read offline
DEVOPS:
AUTOMATE ALL THE THINGS
Mat Mannion, Web Development Team Leader, IT Services
14th November 2017 / CS352 Project Management for Computer Scientists
• 13 years ago I was sat where you are now. I knew nothing, and I didn’t
know that I knew nothing.
• 6 years as team leader. Many projects come and go.
• Everything you do is a learning experience.
Why should you listen to me?
• 12 web developers
• 40 web applications
Sitebuilder (CMS), Tabula, My Warwick app, web sign-on, CourseSync, Files.Warwick, Search, Online Payments, PeopleSearch,
Car Parking, Blogs, Start.Warwick…
• Loosely grouped into 3 agile teams; Ada, Babbage, Turing (so a developer
doesn’t need to know about everything at once)
• Mainly JVM-based
Java EE (Spring framework + Hibernate ORM), Scala (Play! Framework + anorm or Slick ORM), node.js (Express + mongodb)
The Web Development Team
• Unified development and operations
• Automation and monitoring at all steps
of software construction and
deployment
• Shorter development cycles, increased
deployment frequency
• More able to respond to changing
requirements – more agile
WHAT IS
DEVOPS?
Source: Kharnagy on Wikipedia
https://en.wikipedia.org/wiki/DevOps#/media/File:Devops-toolchain.svg
PLAN
• Initial questions:
- Who’s paying for it?
- Who’s going to use it?
- Is there a requirements document?
- Do we buy or build?
• In the 21st Century, software evolves
• So is this a product, or is it a service?
BRIEF: REPLACE
THE EXISTING
TOOL TO
PROVIDE ID
PHOTOS
“A project has a finite and defined lifespan”
PRINCE2:
• Agile software development
• Rapid, continuous delivery of useful software
• Late breaking changes are welcome (mostly)
• Close co-operation between stakeholders and
the software development team
Build, but build how?
Incremental vs. Iterative
Source: Jeff Patton, “Don’t Know What I Want, But I Know How To Get It”, January 2008,
http://jpattonassociates.com/dont_know_what_i_want/
• Work is taken from the backlog at the start
of a sprint in a sprint planning meeting
• Daily stand-ups to assess progress and
work through any blockers
• Sprint review meeting and release at the
end of the sprint, if approved by the
product owner
Scrum or Kanban?
With Scrum, build in a series of fixed-length
iterations, with milestones at the end of each sprint
• Work travels from left to right on a Kanban
board through defined stages from the
backlog to completion
• Releases can happen continuously, or at
the team’s discretion
• Change can happen at any time
With Kanban, build to just in time (JIT) principles with
continuous deployment
• Meetings at the end of sprints to review
the previous sprint and plan the next one
• Daily stand-ups to keep the team focused
on the sprint goals
• Release at the end of sprints with work
packages – each sprint has a goal
Scrumban!
Take some of the structure from Scrum that helps
visibility to stakeholders:
• Within a sprint, work travels across a
Kanban board
• Changes can happen to the work during the
sprint (but are generally discouraged as we
can’t learn about velocity of the team)
Take some of the flexibility of Kanban:
• Bring together the development team with
product owner
• Identify development themes
• Split themes into epics (big user stories)
• Break down epics into stories – a story should fit
within a single sprint (if it doesn’t, break it down
further)
• Stories may comprise multiple tasks
• “Definition of Done” – consistent acceptance
criteria across all user stories
Initial planning meeting
Photo upload
As a new student, I need to
provide an official photo
As a new student, I want
to upload a new official
photo
Create photo
upload form
Send uploaded
photo to
membership
system
As a new student, I want
to be able to change my
official photo
Create page to
display all
uploaded
photos
Set photo in
membership
when selected
Theme
Epic
Story
Task
• Estimating is hard
• Defining how many hours a task will take at the start
of the project is near-impossible
• Just give rough estimates to start with
• We use t-shirt sizes, i.e. XS, S, M, L, XL, XXL, XXXL
• Anything over L probably isn’t doable in a single sprint
• We can get better at estimating as we gain
experience in the project
How long is a piece of string?
The cone of uncertainty
Source: Steve McConnel, The Cone of Uncertainty
http://www.construx.com/Thought_Leadership/Books/The_Cone_of_Uncertainty/
• Do MoSCoW prioritisation of stories from the
backlog – do this every time as priorities change
• Take the highest priority stories and put them into
the next sprint
• Only put as much in there as you can achieve – as
estimations get better, this will become more
accurate
• Anything not done at the end of each sprint goes
back into the backlog for re-prioritisation
Sprint planning meeting
Source: https://www.agilebusiness.org/content/moscow-prioritisation-0
CREATE
Kanban board
Source: https://www.unixmen.com/taskboard-kanban-based-software-centos-7/
Kanban board
Development practices that support iterative development
• Pair programming on new features and
changes – effectively constant code review
• Continuous integration (using Bamboo, in our
case) to ensure that the system meets all
automated testing (“Definition of Done”)
• Coding standards to define a consistent style
and format
• Code reviews for all non-trivial changes before
they are merged into the mainline
There are a number of development practices that we use to make agile development work well and produce good
quality, maintainable software. We use many practices from Extreme Programming (XP):
• A branching model for a git (or other VCS) repository
• Development is against a develop branch, master is always
the current state of production
• Work takes place in branches off develop – branches are
named after issue numbers. Keep feature branches
relatively short-lived so they don’t diverge
• When it’s time to release, this is branched off as a release
branch (e.g. release/1.0) to allow work to continue on
develop
• Code reviews whenever we want to merge into develop or
master
Git flow
Source: http://nvie.com/posts/a-successful-git-branching-model/
• Demo what’s changed in the most recent sprint to the
customers
• Take feedback for the next sprint
• If everyone agrees, release the work to production
• Make a cup of tea and start again, using the gained
knowledge to improve prioritisation and estimation
Sprint review meeting
VERIFY, PACKAGE,
RELEASE
Issue tracking
Continuous integration
Code review
Code review
Look back – what was the discussion?
Deploy
CONFIGURE
• Architecture and team must support continuous
delivery
• Traditionally servers are the responsibility of an
Ops or Platforms team – who probably don’t
understand the software you’re deploying on it
• In our environment, Operations manage the tin,
then jointly configure and manage servers through
code
BRIEF: NOW
YOU’VE BUILT IT,
RUN IT FOREVER
• Bad: Run an application server (e.g.) Tomcat, deploy the application to it. Redeploys
unload the application and reload it
• Less bad: Run a web server (e.g. Apache) and load balance (mod_jk or HAproxy) across
multiple application servers. Redeploys can take servers out of the load balancing pool
to minimise downtime. Still a SPOF
• Good: Load balance across multiple servers with a load balancer appliance. Separate
concerns by running a service-oriented architecture for database, storage, search etc.
• Very good: Deploy your application as containers (e.g. Docker). Build new containers in
CI and switch out an entire new set of containers when deploying new versions
Application architecture - evolution
We are here
• Have to design your applications to run in a stateless environment
• No local filesystem, no in-memory or filesystem sessions
• Build your applications so it doesn’t matter if you hit one server with your first request
and a different one with your second
• Build mechanisms for your applications to communicate with each other where
necessary (e.g. propagating configuration changes while running)
Building stateless applications
• ~40 applications, dev, test & prod, separation of
concerns. >750 nodes (at time of writing)
• How do you maintain configuration and consistency?
• How does support and maintenance work for
applications co-located across many servers?
• Our solution: Configure with code, decentralise all
management, have the system describe itself
The problem:
Puppet
Source: https://www.slideshare.net/PuppetLabs/agile-deployments-with-puppet
• A node tuac3-tabula-prod-api-1 describes
itself as running on the physical server
tuac3, part of the tabula application, the
production deployment, the api tier
• The node sends facts about itself to the
master; e.g. that it’s running Solaris 11.2
Node classification, roles and profiles
Each node describes what it is, and that builds a
classification along with facts about the node:
• Profiles to manage SSL, Java, Tomcat
• Our YAML configuration files describe
configuration specific to applications,
deployments, tiers etc. which are combined to get
the actual configuration
• PuppetDB stores information about all configured
nodes and can be queried to create overarching
config
A number of profiles are applied to nodes based on
its classification:
• 24 nodes in each Tabula
deployment across 2 data centres
• 4 application nodes
• 4 API nodes
• 4 background task processors
• 4 message queue brokers
• 4 memcache nodes
• 3-node ElasticSearch cluster + 1 Kibana
node
• Multiply out for dev, test, sandbox
(training) deployments
What does it look like in practice?
• F5 BIG-IP load balancer
• Object storage service for storing
files (OpenStack Swift)
• Oracle RAC cluster for database
MONITOR
• check_mk monitors general health of the node (memory/CPU etc)
• This runs as a script on the node itself and the result is collected by central
monitoring server(s)
• Deliver check_mk plugins for each profile applied to a node (e.g. Tomcat
or memcache)
• Each application we deploy delivers service endpoints to monitor the
application – gtg, healthcheck, metrics
• Keep performance data for a long time to spot trends
• Notifications go into Slack channels, email, SMS, depending on the
importance of the node (e.g. is it prod, is it a dependency for other apps)
Monitoring individual nodes
• All our logs (application, audit and access) are sent and stored securely on
an ELK centralised logging service
• We monitor patterns in logs and alert on an exception basis (e.g.
increased error rates, increased avg response times etc.)
• We can visualise log data across multiple instances of an application or
even multiple applications to diagnose issues
Monitoring applications
ANY QUESTIONS?
• https://www.atlassian.com/agile/kanban
• https://aws.amazon.com/devops/what-is-devops/
• http://nvie.com/posts/a-successful-git-branching-model/
Resources / further reading

More Related Content

What's hot

All about that reactive ui
All about that reactive uiAll about that reactive ui
All about that reactive uiPaul van Zyl
 
Connections Migrations the easy way Soccnx10
Connections Migrations the easy way Soccnx10Connections Migrations the easy way Soccnx10
Connections Migrations the easy way Soccnx10Sharon James
 
The Rocky Cloud Road
The Rocky Cloud RoadThe Rocky Cloud Road
The Rocky Cloud RoadGert Drapers
 
Beyond Apache: Faster Web Servers
Beyond Apache: Faster Web ServersBeyond Apache: Faster Web Servers
Beyond Apache: Faster Web Serverswebhostingguy
 
Maximize Your Production Effort (English)
Maximize Your Production Effort (English)Maximize Your Production Effort (English)
Maximize Your Production Effort (English)slantsixgames
 
Automated testing DrupalCamp in Asheville
Automated testing DrupalCamp in AshevilleAutomated testing DrupalCamp in Asheville
Automated testing DrupalCamp in AshevillePromet Source
 
A Personal Journey
A Personal JourneyA Personal Journey
A Personal JourneyMichael Lihs
 
Connections Migration soccnx12
Connections Migration soccnx12Connections Migration soccnx12
Connections Migration soccnx12Sharon James
 
DevOps: Building by feature with immutable infrastructure at Serv.sg
DevOps: Building by feature with immutable infrastructure at Serv.sgDevOps: Building by feature with immutable infrastructure at Serv.sg
DevOps: Building by feature with immutable infrastructure at Serv.sgNicolas Mas
 
Continuous Deployment
Continuous DeploymentContinuous Deployment
Continuous DeploymentBrian Moon
 
PHP Unconference Continuous Integration
PHP Unconference Continuous IntegrationPHP Unconference Continuous Integration
PHP Unconference Continuous IntegrationNils Hofmeister
 
Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Ryan Cuprak
 
Gdco12 kartik ayyar
Gdco12 kartik ayyarGdco12 kartik ayyar
Gdco12 kartik ayyarKartik Ayyar
 
Developing in the Cloud
Developing in the CloudDeveloping in the Cloud
Developing in the CloudRyan Cuprak
 
The JavaScript Delusion
The JavaScript DelusionThe JavaScript Delusion
The JavaScript DelusionJUGBD
 
Staging and Deployment
Staging and DeploymentStaging and Deployment
Staging and Deploymentheyrocker
 
Automating Ensemble Monitoring and Reporting
Automating Ensemble Monitoring and ReportingAutomating Ensemble Monitoring and Reporting
Automating Ensemble Monitoring and ReportingInterSystems Corporation
 
Engage 2019 - De04. Java with Domino After XPages
Engage 2019 - De04. Java with Domino After XPagesEngage 2019 - De04. Java with Domino After XPages
Engage 2019 - De04. Java with Domino After XPagesJesse Gallagher
 
NoSQL for SQL Server Developers using Couchbase
NoSQL for SQL Server Developers using CouchbaseNoSQL for SQL Server Developers using Couchbase
NoSQL for SQL Server Developers using CouchbaseBrant Burnett
 

What's hot (20)

All about that reactive ui
All about that reactive uiAll about that reactive ui
All about that reactive ui
 
Connections Migrations the easy way Soccnx10
Connections Migrations the easy way Soccnx10Connections Migrations the easy way Soccnx10
Connections Migrations the easy way Soccnx10
 
The Rocky Cloud Road
The Rocky Cloud RoadThe Rocky Cloud Road
The Rocky Cloud Road
 
Beyond Apache: Faster Web Servers
Beyond Apache: Faster Web ServersBeyond Apache: Faster Web Servers
Beyond Apache: Faster Web Servers
 
Maximize Your Production Effort (English)
Maximize Your Production Effort (English)Maximize Your Production Effort (English)
Maximize Your Production Effort (English)
 
Automated testing DrupalCamp in Asheville
Automated testing DrupalCamp in AshevilleAutomated testing DrupalCamp in Asheville
Automated testing DrupalCamp in Asheville
 
A Personal Journey
A Personal JourneyA Personal Journey
A Personal Journey
 
Connections Migration soccnx12
Connections Migration soccnx12Connections Migration soccnx12
Connections Migration soccnx12
 
DevOps: Building by feature with immutable infrastructure at Serv.sg
DevOps: Building by feature with immutable infrastructure at Serv.sgDevOps: Building by feature with immutable infrastructure at Serv.sg
DevOps: Building by feature with immutable infrastructure at Serv.sg
 
Continuous Deployment
Continuous DeploymentContinuous Deployment
Continuous Deployment
 
PHP Unconference Continuous Integration
PHP Unconference Continuous IntegrationPHP Unconference Continuous Integration
PHP Unconference Continuous Integration
 
Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]
 
Gdco12 kartik ayyar
Gdco12 kartik ayyarGdco12 kartik ayyar
Gdco12 kartik ayyar
 
Developing in the Cloud
Developing in the CloudDeveloping in the Cloud
Developing in the Cloud
 
Eureka moment
Eureka momentEureka moment
Eureka moment
 
The JavaScript Delusion
The JavaScript DelusionThe JavaScript Delusion
The JavaScript Delusion
 
Staging and Deployment
Staging and DeploymentStaging and Deployment
Staging and Deployment
 
Automating Ensemble Monitoring and Reporting
Automating Ensemble Monitoring and ReportingAutomating Ensemble Monitoring and Reporting
Automating Ensemble Monitoring and Reporting
 
Engage 2019 - De04. Java with Domino After XPages
Engage 2019 - De04. Java with Domino After XPagesEngage 2019 - De04. Java with Domino After XPages
Engage 2019 - De04. Java with Domino After XPages
 
NoSQL for SQL Server Developers using Couchbase
NoSQL for SQL Server Developers using CouchbaseNoSQL for SQL Server Developers using Couchbase
NoSQL for SQL Server Developers using Couchbase
 

Similar to DevOps: Automate all the things

Getting to Walk with DevOps
Getting to Walk with DevOpsGetting to Walk with DevOps
Getting to Walk with DevOpsEklove Mohan
 
Preparing for DevOps
Preparing for DevOpsPreparing for DevOps
Preparing for DevOpsEklove Mohan
 
InteropWG Intro & Vertical Programs (May. 2017)
InteropWG Intro & Vertical Programs (May. 2017)InteropWG Intro & Vertical Programs (May. 2017)
InteropWG Intro & Vertical Programs (May. 2017)Mark Voelker
 
Build automation best practices
Build automation best practicesBuild automation best practices
Build automation best practicesCode Mastery
 
Ananth_Ravishankar
Ananth_RavishankarAnanth_Ravishankar
Ananth_Ravishankarananth R
 
DefCore: The Interoperability Standard for OpenStack
DefCore: The Interoperability Standard for OpenStackDefCore: The Interoperability Standard for OpenStack
DefCore: The Interoperability Standard for OpenStackMark Voelker
 
Learn from my Mistakes - Building Better Solutions in SPFx
Learn from my  Mistakes - Building Better Solutions in SPFxLearn from my  Mistakes - Building Better Solutions in SPFx
Learn from my Mistakes - Building Better Solutions in SPFxThomas Daly
 
Agile_SDLC_Node.js@Paypal_ppt
Agile_SDLC_Node.js@Paypal_pptAgile_SDLC_Node.js@Paypal_ppt
Agile_SDLC_Node.js@Paypal_pptHitesh Kumar
 
Professionalizing the Front-end
Professionalizing the Front-endProfessionalizing the Front-end
Professionalizing the Front-endJordi Anguela
 
Agile Secure Cloud Application Development Management
Agile Secure Cloud Application Development ManagementAgile Secure Cloud Application Development Management
Agile Secure Cloud Application Development ManagementAdam Getchell
 
Agileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinarAgileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinarRoberto Jr. Figueroa
 
Making software development processes to work for you
Making software development processes to work for youMaking software development processes to work for you
Making software development processes to work for youAmbientia
 
Architecting systems for continuous delivery
Architecting systems for continuous deliveryArchitecting systems for continuous delivery
Architecting systems for continuous deliveryMarcel de Vries
 
Chris OBrien - Azure DevOps for managing work
Chris OBrien - Azure DevOps for managing workChris OBrien - Azure DevOps for managing work
Chris OBrien - Azure DevOps for managing workChris O'Brien
 
DevOps Fest 2020. Kohsuke Kawaguchi. GitOps, Jenkins X & the Future of CI/CD
DevOps Fest 2020. Kohsuke Kawaguchi. GitOps, Jenkins X & the Future of CI/CDDevOps Fest 2020. Kohsuke Kawaguchi. GitOps, Jenkins X & the Future of CI/CD
DevOps Fest 2020. Kohsuke Kawaguchi. GitOps, Jenkins X & the Future of CI/CDDevOps_Fest
 
SynapseIndia drupal presentation on drupal info
SynapseIndia drupal  presentation on drupal infoSynapseIndia drupal  presentation on drupal info
SynapseIndia drupal presentation on drupal infoSynapseindiappsdevelopment
 
Simplified DevOps Bliss -with OpenAI API
Simplified DevOps Bliss -with OpenAI APISimplified DevOps Bliss -with OpenAI API
Simplified DevOps Bliss -with OpenAI APIVictorSzoltysek
 
Cloudify workshop at CCCEU 2014
Cloudify workshop at CCCEU 2014 Cloudify workshop at CCCEU 2014
Cloudify workshop at CCCEU 2014 Uri Cohen
 

Similar to DevOps: Automate all the things (20)

Getting to Walk with DevOps
Getting to Walk with DevOpsGetting to Walk with DevOps
Getting to Walk with DevOps
 
Preparing for DevOps
Preparing for DevOpsPreparing for DevOps
Preparing for DevOps
 
InteropWG Intro & Vertical Programs (May. 2017)
InteropWG Intro & Vertical Programs (May. 2017)InteropWG Intro & Vertical Programs (May. 2017)
InteropWG Intro & Vertical Programs (May. 2017)
 
Build automation best practices
Build automation best practicesBuild automation best practices
Build automation best practices
 
Case study
Case studyCase study
Case study
 
Ananth_Ravishankar
Ananth_RavishankarAnanth_Ravishankar
Ananth_Ravishankar
 
DefCore: The Interoperability Standard for OpenStack
DefCore: The Interoperability Standard for OpenStackDefCore: The Interoperability Standard for OpenStack
DefCore: The Interoperability Standard for OpenStack
 
Learn from my Mistakes - Building Better Solutions in SPFx
Learn from my  Mistakes - Building Better Solutions in SPFxLearn from my  Mistakes - Building Better Solutions in SPFx
Learn from my Mistakes - Building Better Solutions in SPFx
 
Agile_SDLC_Node.js@Paypal_ppt
Agile_SDLC_Node.js@Paypal_pptAgile_SDLC_Node.js@Paypal_ppt
Agile_SDLC_Node.js@Paypal_ppt
 
Professionalizing the Front-end
Professionalizing the Front-endProfessionalizing the Front-end
Professionalizing the Front-end
 
Extreme Makeover OnBase Edition
Extreme Makeover OnBase EditionExtreme Makeover OnBase Edition
Extreme Makeover OnBase Edition
 
Agile Secure Cloud Application Development Management
Agile Secure Cloud Application Development ManagementAgile Secure Cloud Application Development Management
Agile Secure Cloud Application Development Management
 
Agileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinarAgileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinar
 
Making software development processes to work for you
Making software development processes to work for youMaking software development processes to work for you
Making software development processes to work for you
 
Architecting systems for continuous delivery
Architecting systems for continuous deliveryArchitecting systems for continuous delivery
Architecting systems for continuous delivery
 
Chris OBrien - Azure DevOps for managing work
Chris OBrien - Azure DevOps for managing workChris OBrien - Azure DevOps for managing work
Chris OBrien - Azure DevOps for managing work
 
DevOps Fest 2020. Kohsuke Kawaguchi. GitOps, Jenkins X & the Future of CI/CD
DevOps Fest 2020. Kohsuke Kawaguchi. GitOps, Jenkins X & the Future of CI/CDDevOps Fest 2020. Kohsuke Kawaguchi. GitOps, Jenkins X & the Future of CI/CD
DevOps Fest 2020. Kohsuke Kawaguchi. GitOps, Jenkins X & the Future of CI/CD
 
SynapseIndia drupal presentation on drupal info
SynapseIndia drupal  presentation on drupal infoSynapseIndia drupal  presentation on drupal info
SynapseIndia drupal presentation on drupal info
 
Simplified DevOps Bliss -with OpenAI API
Simplified DevOps Bliss -with OpenAI APISimplified DevOps Bliss -with OpenAI API
Simplified DevOps Bliss -with OpenAI API
 
Cloudify workshop at CCCEU 2014
Cloudify workshop at CCCEU 2014 Cloudify workshop at CCCEU 2014
Cloudify workshop at CCCEU 2014
 

Recently uploaded

MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 

Recently uploaded (20)

MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 

DevOps: Automate all the things

  • 1. DEVOPS: AUTOMATE ALL THE THINGS Mat Mannion, Web Development Team Leader, IT Services 14th November 2017 / CS352 Project Management for Computer Scientists
  • 2. • 13 years ago I was sat where you are now. I knew nothing, and I didn’t know that I knew nothing. • 6 years as team leader. Many projects come and go. • Everything you do is a learning experience. Why should you listen to me?
  • 3. • 12 web developers • 40 web applications Sitebuilder (CMS), Tabula, My Warwick app, web sign-on, CourseSync, Files.Warwick, Search, Online Payments, PeopleSearch, Car Parking, Blogs, Start.Warwick… • Loosely grouped into 3 agile teams; Ada, Babbage, Turing (so a developer doesn’t need to know about everything at once) • Mainly JVM-based Java EE (Spring framework + Hibernate ORM), Scala (Play! Framework + anorm or Slick ORM), node.js (Express + mongodb) The Web Development Team
  • 4. • Unified development and operations • Automation and monitoring at all steps of software construction and deployment • Shorter development cycles, increased deployment frequency • More able to respond to changing requirements – more agile WHAT IS DEVOPS? Source: Kharnagy on Wikipedia https://en.wikipedia.org/wiki/DevOps#/media/File:Devops-toolchain.svg
  • 6. • Initial questions: - Who’s paying for it? - Who’s going to use it? - Is there a requirements document? - Do we buy or build? • In the 21st Century, software evolves • So is this a product, or is it a service? BRIEF: REPLACE THE EXISTING TOOL TO PROVIDE ID PHOTOS
  • 7. “A project has a finite and defined lifespan” PRINCE2:
  • 8. • Agile software development • Rapid, continuous delivery of useful software • Late breaking changes are welcome (mostly) • Close co-operation between stakeholders and the software development team Build, but build how?
  • 9. Incremental vs. Iterative Source: Jeff Patton, “Don’t Know What I Want, But I Know How To Get It”, January 2008, http://jpattonassociates.com/dont_know_what_i_want/
  • 10. • Work is taken from the backlog at the start of a sprint in a sprint planning meeting • Daily stand-ups to assess progress and work through any blockers • Sprint review meeting and release at the end of the sprint, if approved by the product owner Scrum or Kanban? With Scrum, build in a series of fixed-length iterations, with milestones at the end of each sprint • Work travels from left to right on a Kanban board through defined stages from the backlog to completion • Releases can happen continuously, or at the team’s discretion • Change can happen at any time With Kanban, build to just in time (JIT) principles with continuous deployment
  • 11. • Meetings at the end of sprints to review the previous sprint and plan the next one • Daily stand-ups to keep the team focused on the sprint goals • Release at the end of sprints with work packages – each sprint has a goal Scrumban! Take some of the structure from Scrum that helps visibility to stakeholders: • Within a sprint, work travels across a Kanban board • Changes can happen to the work during the sprint (but are generally discouraged as we can’t learn about velocity of the team) Take some of the flexibility of Kanban:
  • 12. • Bring together the development team with product owner • Identify development themes • Split themes into epics (big user stories) • Break down epics into stories – a story should fit within a single sprint (if it doesn’t, break it down further) • Stories may comprise multiple tasks • “Definition of Done” – consistent acceptance criteria across all user stories Initial planning meeting Photo upload As a new student, I need to provide an official photo As a new student, I want to upload a new official photo Create photo upload form Send uploaded photo to membership system As a new student, I want to be able to change my official photo Create page to display all uploaded photos Set photo in membership when selected Theme Epic Story Task
  • 13. • Estimating is hard • Defining how many hours a task will take at the start of the project is near-impossible • Just give rough estimates to start with • We use t-shirt sizes, i.e. XS, S, M, L, XL, XXL, XXXL • Anything over L probably isn’t doable in a single sprint • We can get better at estimating as we gain experience in the project How long is a piece of string?
  • 14. The cone of uncertainty Source: Steve McConnel, The Cone of Uncertainty http://www.construx.com/Thought_Leadership/Books/The_Cone_of_Uncertainty/
  • 15. • Do MoSCoW prioritisation of stories from the backlog – do this every time as priorities change • Take the highest priority stories and put them into the next sprint • Only put as much in there as you can achieve – as estimations get better, this will become more accurate • Anything not done at the end of each sprint goes back into the backlog for re-prioritisation Sprint planning meeting Source: https://www.agilebusiness.org/content/moscow-prioritisation-0
  • 19. Development practices that support iterative development • Pair programming on new features and changes – effectively constant code review • Continuous integration (using Bamboo, in our case) to ensure that the system meets all automated testing (“Definition of Done”) • Coding standards to define a consistent style and format • Code reviews for all non-trivial changes before they are merged into the mainline There are a number of development practices that we use to make agile development work well and produce good quality, maintainable software. We use many practices from Extreme Programming (XP):
  • 20. • A branching model for a git (or other VCS) repository • Development is against a develop branch, master is always the current state of production • Work takes place in branches off develop – branches are named after issue numbers. Keep feature branches relatively short-lived so they don’t diverge • When it’s time to release, this is branched off as a release branch (e.g. release/1.0) to allow work to continue on develop • Code reviews whenever we want to merge into develop or master Git flow Source: http://nvie.com/posts/a-successful-git-branching-model/
  • 21. • Demo what’s changed in the most recent sprint to the customers • Take feedback for the next sprint • If everyone agrees, release the work to production • Make a cup of tea and start again, using the gained knowledge to improve prioritisation and estimation Sprint review meeting
  • 27. Look back – what was the discussion?
  • 30. • Architecture and team must support continuous delivery • Traditionally servers are the responsibility of an Ops or Platforms team – who probably don’t understand the software you’re deploying on it • In our environment, Operations manage the tin, then jointly configure and manage servers through code BRIEF: NOW YOU’VE BUILT IT, RUN IT FOREVER
  • 31. • Bad: Run an application server (e.g.) Tomcat, deploy the application to it. Redeploys unload the application and reload it • Less bad: Run a web server (e.g. Apache) and load balance (mod_jk or HAproxy) across multiple application servers. Redeploys can take servers out of the load balancing pool to minimise downtime. Still a SPOF • Good: Load balance across multiple servers with a load balancer appliance. Separate concerns by running a service-oriented architecture for database, storage, search etc. • Very good: Deploy your application as containers (e.g. Docker). Build new containers in CI and switch out an entire new set of containers when deploying new versions Application architecture - evolution We are here
  • 32. • Have to design your applications to run in a stateless environment • No local filesystem, no in-memory or filesystem sessions • Build your applications so it doesn’t matter if you hit one server with your first request and a different one with your second • Build mechanisms for your applications to communicate with each other where necessary (e.g. propagating configuration changes while running) Building stateless applications
  • 33. • ~40 applications, dev, test & prod, separation of concerns. >750 nodes (at time of writing) • How do you maintain configuration and consistency? • How does support and maintenance work for applications co-located across many servers? • Our solution: Configure with code, decentralise all management, have the system describe itself The problem:
  • 35. • A node tuac3-tabula-prod-api-1 describes itself as running on the physical server tuac3, part of the tabula application, the production deployment, the api tier • The node sends facts about itself to the master; e.g. that it’s running Solaris 11.2 Node classification, roles and profiles Each node describes what it is, and that builds a classification along with facts about the node: • Profiles to manage SSL, Java, Tomcat • Our YAML configuration files describe configuration specific to applications, deployments, tiers etc. which are combined to get the actual configuration • PuppetDB stores information about all configured nodes and can be queried to create overarching config A number of profiles are applied to nodes based on its classification:
  • 36. • 24 nodes in each Tabula deployment across 2 data centres • 4 application nodes • 4 API nodes • 4 background task processors • 4 message queue brokers • 4 memcache nodes • 3-node ElasticSearch cluster + 1 Kibana node • Multiply out for dev, test, sandbox (training) deployments What does it look like in practice? • F5 BIG-IP load balancer • Object storage service for storing files (OpenStack Swift) • Oracle RAC cluster for database
  • 38. • check_mk monitors general health of the node (memory/CPU etc) • This runs as a script on the node itself and the result is collected by central monitoring server(s) • Deliver check_mk plugins for each profile applied to a node (e.g. Tomcat or memcache) • Each application we deploy delivers service endpoints to monitor the application – gtg, healthcheck, metrics • Keep performance data for a long time to spot trends • Notifications go into Slack channels, email, SMS, depending on the importance of the node (e.g. is it prod, is it a dependency for other apps) Monitoring individual nodes
  • 39. • All our logs (application, audit and access) are sent and stored securely on an ELK centralised logging service • We monitor patterns in logs and alert on an exception basis (e.g. increased error rates, increased avg response times etc.) • We can visualise log data across multiple instances of an application or even multiple applications to diagnose issues Monitoring applications
  • 40. ANY QUESTIONS? • https://www.atlassian.com/agile/kanban • https://aws.amazon.com/devops/what-is-devops/ • http://nvie.com/posts/a-successful-git-branching-model/ Resources / further reading