DevOps

August 11, 2019 DevOps, Personal 3 minutes, 12 seconds

DevOps can usually unleash its full potential in combination with Cloud Computing and Infrastructure as Code, which are described in the following article as well.

Disclaimer

This page describes certain aspects in the area of DevOps. If not marked these statements are my own wording based upon my own thinking and experience without any engagement with respect to correctness and other opinions.

An enterprise culture aiming to deliver high quality software within a short lead time and high efficiency taking all the stakeholders into account.

What Devs want What Ops want
Deliver fast Ensure availability
Deliver frequently Caution
Deliver new features Stability and Security

CAMS by Damon Edwards and John Willis

  • Culture
  • Automation
  • Measurement
  • Sharing

coming soon

Utilization of dynamic IT ressources offered by a cloud service platform through a network.

Cloud Computing can be distinguished in infrastructure as a Service, Platform as a Service, Software as a Service and Function as a Service. The following picture illustrated the main differences ot those types and compares them to classical on premise datacenters.

Image link

Examples in the Amazon ecosystem:

Service Amazon Product
IaaS Amazon Web Services Elastic Compute Cloud (AWS EC2)
PaaS Amazon Web Services Elastic Compute Cloud Container Service (AWS ECS)
FaaS Amazon Web Services Lambda (AWS Lambda)
SaaS1 Amazon Web Services SaaS

Cloud Characteristic
Public Cloud Reachable from the public internet
Private Cloud Dedicated cloud for a single organization manged internally or externally
Hybrid Cloud Mix of public and private cloud

  • No need to invest in data centers
  • Pay as much as you consume
  • Benefit from reduced costs of scaling effects
  • Reduce complexity of capacity planing
  • Increase speed and agility
  • More focus on business instead of infrastructure

Automated management of the life cycle of all infrastructure components in their entirety by utilization of methods and best practices from the area of software engineering.

Infrastructure as Code is an approach of infrastructure automation based on practices already established in classical software development. It emphasizes consistent, repeatable routines for provisioning and changing systems as well as their configuration. Engineers use and enforce techniques commonly known in the field of software development, such as version control systems, automated testing, deployment orchestration, test driven development, and continuous integration/delivery. Therefore, infrastructure is treated as if it is software and data.

  1. Server Sprawl2
  2. Configuration Drift
  3. Snowflake Servers
  4. Fragile Infrastructure
  5. Automation Fear
  6. Erosion

  1. Systems should be reproducible
  • minimizes the overhead and costs for all stakeholders and helps to speed up team efficiency
  • minimizes automation fear and risks from making changes
  1. Systems should be disposable
  • robust, homogenous, and well-tested infrastructure
  • from unreliable software running on reliable hardware towards reliable software running on unreliable hardware
  1. Systems should be consistent
  • prevent configuration drift
  • fight against automation fear
  1. Processes should be repeatable
  • disposable systems are easier to achieve as systems can be easily created multiple times.
  • cost reduction, as ITstaff does not waste time on repetitive tasks.
  1. Design should be flexible
  • reduce the impact of a "big bang" change.
  • infrastructure is able to adopt to business needs being an enabler not a showstopper

Infrastructure as Code provides your DevOps teams the following benefigs:

  1. Develop and test against production-like systems
  2. Deploy with repeatable, reliable processes
  3. Monitor and validate operational quality
  4. Improve quality

  1. Better known examples for SaaS solutions are Gmail or Office365 

  2. According to "Infrastructure as Code - Managing Servers in the Cloud" by Kief Morris - an excellent book