DevOps
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.
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.
- Server Sprawl2
- Configuration Drift
- Snowflake Servers
- Fragile Infrastructure
- Automation Fear
- Erosion
- 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
- Systems should be disposable
- robust, homogenous, and well-tested infrastructure
- from unreliable software running on reliable hardware towards reliable software running on unreliable hardware
- Systems should be consistent
- prevent configuration drift
- fight against automation fear
- 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.
- 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:
- Develop and test against production-like systems
- Deploy with repeatable, reliable processes
- Monitor and validate operational quality
- Improve quality