Intro to DevOps

What is DevOps?

What problems does DevOps address?

What can DevOps do for you?

Operations is so slow

We create real value

Devs don't know real production

We protect real value

Wall of confusion

  • code gets thrown over the wall with little to no explanation
  • ops usually not involved in the architecture planning
  • defects are released into production causing outages
  • a lot of finger pointing happens when things get wrong
  • long delays while dev/QA or another team waits for responses from other teams
  • releases slip/fail
  • a lot of hands on server time debugging

Agile

  • Simplify the developer workflow
  • Make adapting to change a central theme
  • Get the development team to collaborate
DevOps is the practice of Operations and Development Engineers participating together in the entire service lifecycle, from design through the development process, to support.

Three pillars of devops

  • Infrastructure automation
  • Continuous delivery
  • Reliability engineering
  • High performance IT organizations deploy 30x more frequently, with 200x shorter lead times; they have 60x fewer failures and recover from issues 168x faster.
  • Lean management and continuous delivery practices create the conditions for delivering value faster, sustainably..
  • High performance is achievable whether your apps are greenfield, brownfield or legacy.

Infrastructure
Automation

Infrastructure as code

  • Automate everything
    • Infrastructure provisioning
    • Application deployment
    • Testing automation
    • Runtime orchestration
  • Builds should be reproducible

But why?

Immutable infrastructure

  • makes it easy to deploy new copies of an app
  • makes it extremely easy to recover after a node failure
  • nodes should be treated as cattle, not pets

Benefits

  • Minimize defects due to subtle differences of application nodes 
  • Allows applications to scale as nodes can easily come and go
  • Provides higher fault toleration through things as blue/green deployments
  • Infrastructure models: AWS CloudFormation, Terraform, Azure ARM, Ubuntu Juju, etc
  • Hardware provisioning: Packer, MaaS, Foreman, Cobbler, etc
  • Configuration Management: Chef, Puppet, Ansible, SaltStack
  • Integration testing: rspec, cucumber, protractor
  • Orchestration: ansible, Kubernetes, DCOS

Tools of the trade

<- All you need to know

 

Integration (CI): Build and Test

 

Deployment (CD): Deploy and Integration test

 

Delivery: All the way to production baby

Best practices

  • Try to build working software, all the time, I mean it
  • Builds should pass the coffee test (< 5 minutes)
  • Commit really small bits
  • Never leave the build broken
  • Don't allow flaky tests, fix them!
  • The build should return a status, a log and an artifact

The CI pipeline

Best practices

  • Only build artifacts once
  • Artifacts should be immutable
  • Deployments should go to a copy of production before going into production
  • Stop deploys if previous step fails
  • Deployments should be idempotent

Reliability engineering

Design for operation

  • Design patterns exist for creating resilient systems
  • If your app sucks there's not much an ops team can do about it once it's deployed.
  • Devs need to take responsibility for their app through deployment.

Adding ops into dev

  • Enhance service design with operational knowledge
    • Reliability
    • Performance
    • Security
    • Design patterns (12 factor)
  • Foster a culture of responsibility (whether your code passes tests, and stays up in production - it's your responsibility)
  • Make development better with ops
    • Production like environments
    • Power tooling (vagrant, docker-compose, etc)
  • Don't do tasks for people. Build tools so they can do their work. Ops is now a dev team and the platform is their product.
  • Automate. This means code and coder practices
  • Developers do on call production support.
  • SRE model - devs support till it gets big and ops accepts support

Tools of the trade

  • Monitoring: Prometheus/Grafana, Newrelic, DataDog, etc
  • Alerting: Nagios, Ichinga, Pingdom, etc
  • Logging: Splunk, ELK, Fluentd

Q
&
A

Resources

Mattermost

https://mattermost.everymatrix.com/everymatrix

#DevOps Academy

Made with Slides.com