What is DevOps?
By TechWorld with Nana
New, broad, maybe encompassing other IT fields.
An overlap of Development and Operations, which are two main components of the release process.
Release Process
Create an application and release it to end users.
Idea -> requirements -> code it -> test it -> build & package -> deploy
o Deploy -> configure server, configure firewall rules, launch
After launch, have to Operate & Monitor, optimize, improve, add features.
Each major change after launch is tracked through “Versioning” ie 1.0.0, 1.0.2, etc.
This describes a cycle of Continuous Delivery. DevOps oversees quickly delivering high quality code.
Challenges
Challenges (frictions, roadblocks) in release process
Miscommunications & lack of collaboration between developers and operations
o Developers may code without considering how it deploys, or write a good deployment
guide
o Operations may not understand app’s purpose or how it works
o If no clearly defined, streamlined, automated process to handover between Dev & Ops
Conflict of Interest
o Dev & Ops may have different interests or priorities
Dev: New features fast
Ops: maintain stability, so resist speed of release to check stability & safety
Security
o similar to Ops ensuring stability, DevSecOps has to ensure security, which can slow
deployment especially in a traditional, manual, bureaucratic manner
Application testing
o Testing is often done manually.
Manual Work
o Manually deploying app
o Manually preparing deployment environment
o Manually configuring “Jenkins” build jobs
o Manually configuring access & permissions
o Manual work can be slower, more error-prone. Sharing knowledge is more difficult. It’s
intransparent & hard to trace. More difficult to recover & replicate exact infrastructure
state
DevOps tries to remove all these challenges & roadblocks and automate & streamline release process.
DevOps as a Solution
Combination of anything that creates the process of releasing software fast & high quality. This
is very broad so each company deploys in different ways, although patterns & practices have
developed.
What is DevOps? By TechWorld with Nana
Continuous Integration, Continuous Delivery (CI/CD) is the central process
Continuous Integration, Continuous Delivery (CI/CD)
What makes a fully streamlined CICD process and in general what does a DevOps engineer need to
know?
CICD
Development – DevOps don’t code, but need to know:
o how developers work.
o Which Git (code repository) workflow they’re using
o How app is configured
o Automated testing
Operations
o Servers
o Preparing infrastructure servers
o Servers are Linux
Linux Command Line (CLI)
Linux shell commands
Linux file system
Server Management
Networking & security
o Configure firewalls & proxy servers
o Load balances
o HTTP/HTTPs
o IP addresses/DNS name resolution
DevOps vs IT Opeations
o Need basics, not specialized knowledge of servers & other infrastructure
Containerized Applications
o Docker – creates containers. crucial
o Kubernetes – manages docker containers
Release – a main responsibility of DevOps
o Package Application – after development & testing, package the app as an Artifact such
as a .jar file for deployment
Package using “Build Tools & Package Manager” tools such as npm, Maven,
Gradle, etc.
o Build Docker images
o Push to Artifact Repository – Where artifacts are saved – Nexus, DockerHub are
examples. DevOps needs to manage this repository
o Automate: using tools like “Jenkins” for Continuous Integration/Continuous deployment
Continuous integration: gets code & code changes from Git repository
Continuous deployment: deploys code on server
What is DevOps? By TechWorld with Nana
Configure complete CICD pipeline
Cloud Providers
Amazon Web Services, Azure, Google Cloud
o Save costs, offer a range of services, usually platform-specific, so learn at least one of
these
Container Orchestration
Apps run in/as containers
Smaller apps can be managed by DockerCompose (included with Docker?)
Larger app clusters run by Kubernetes, powerful but complex
Monitoring:
o Track performance
o Discover problems
o Monitoring tools you need to know: Prometheus, Nagios
Infrastructure as Code
Automate replicating production environment into testing, staging, development environments
o Doing this manually is time consuming and error prone
Infrastructure provisioning (Terraform), or configuration management tools (Ansible, CHEF,
Puppet) make this more efficient
Scripting language
Small apps usable to automate tasks, so learn at least one scripting language like Bash or
Powershell (OS dependent), or Python, Ruby, GoLink (OS independent). Python is most popular.
Version Control
Manage versioning through GIT
What is DevOps? By TechWorld with Nana
Learn the most popular tool in each category.
DevOps vs Site Reliability Engineering
SRE may be a specific application of high level DevOps concepts
DevOps became more focused on speed of delivery (CI/CD cycle)
SRE as more focused on reliability/stability. SRE & DevOps became two sides of one coin.