DevOps is a set of cultural, practices, and tools, which improves the collaboration between developers and operations. It aims to shorten the SDLC and provide continuous delivery with high software quality.
What is SDLC?
Why do we need DevOps?
DevOps allows organizations to create and improve products at a faster pace, release new features sooner and fix bugs quicker.
DevOps delivery cycle
DevOps requires a delivery cycle that comprises planning, development, testing, deployment, release, and monitoring with active cooperation between different team members.
What is Agile?
Agile organizes work in short iterations (e.g. sprints) to increase the number of releases. (Agile delivers the software on a regular basis for feedback by the customers).
In Continuous integration, development work is divided into small portions for better and faster production. Engineers commit code in small chunks multiple times a day for it to be easily tested. If bugs and vulnerabilities are revealed, they are sent back to the engineering team.
You can use Jenkins to automate CI process.
Continuous delivery is an extension of continuous integration since it deploys your changes on staging or production environment after the build stage completed. This means you can deploy your application any time by clicking a button.
You can use gitops like, argocd to automate CD process.
What is Infrastructure as Code (IaC)?
Infrastructure as Code (IaC) automates the provisioning of infrastructure through code instead of manual process. Its easy to manage configurations files.
You can use terraform, cloudformation, Chef, or etc to automate IaC process.
What is Container?
Docker container is a lightweight and executable package of software that includes your code and all its dependencies to run your applications quickly from one computing environment to another.
What is Orchestration?
Kubernetes helps you to control the resource allocation and traffic management for cloud applications and microservices. It offers automated scheduling, rollouts, rollback, self-healing, horizontal scaling, load balancing, zero downtime and etc.
What is CM?
Configuration Management (CM) is a process for maintaining computer systems, servers, and softwares automatically.
You can use Ansible, Chef, Puppet, SaltStack, or etc to automate CM process.
What is Monolithic?
Monolithic is a traditional way to build applications. Monolithic applications have one large code base and lack modularity. That means to apply a new technology in a monolithic application is problematic because then the entire application has to be rewritten.
What is Microservice?
Microservice breaks your applications into a collection of small modules which communicate each other through API. Each service covers its own scope and can be updated, deployed, and scaled independently.
What is Cloud Computing?
Cloud computing is the on-demand delivery of IT resources over the internet and it provides Network, Hardware, Storage, Database, Compute and etc to create virtual servers.
- Amazon Web Services (AWS)?
- Google Cloud Platform (GCP)
- Microsoft Azure
- IBM Cloud
- Alibaba Cloud
Public cloud is managed by a third-party vendors (AWS, GCP, Azure) over the internet and you pay only for what you use.
Private cloud is where an organization creates and maintains their own cloud.
Hybrid cloud is the combination of public and private cloud.
Infrastructure as a Service (IaaS) contains the basic building blocks for cloud. It gives you the highest level of flexibility and management control over your IT resources.
- AWS: EBS and SNS
Platform as a Service (PaaS) allows you to focus on app development instead of worring about underlying infrastructure management, like Heroku.
- AWS: Serverless, RDS, S3 and Lambda
Software as a Service (SaaS) provides you a complete product that runs and manages by the service provider like Dropbox. It allows data to be accessed from any device over the internet via mobile app and web-browser.
- AWS: EC2, VPC, Security Groups, CloudFormation
- Terraform, Dropbox
You can also learn git, python, nginx, linux, and database.
- Terraform instead of CloudFormation
- Jenkins instead of CodeBuild
- GitOps instead of CodeDeploy
- Git/Github instead of CodeCommit
Disaster is an unexpected event which disrupts your business and it could be caused by the failure of a hardware, data center fire, cyberattack and etc. So you can use backup-and-recovery, pilot-light, warm-standby, or multi-site recovery approaches.
- Recovery Point Objective (RPO) is the maximum amount of data loss your company is willing to accept as measured in time.
- Recovery Time Objective (RTO) is the maximum length of time after an outage that your company is willing to wait for the recovery process to finish.
- Mean Time To Failure (MTTF) other known as uptime, can be defined as how long the system runs before if fails.
- Mean Time To Recover (MTTR) on the other hand, is the amount of time it takes to repair a broken system.
- Mean Time Between Failures (MTBF) is the amount of time between failures of the system.
Stateless vs Stateful
- Stateless applications don’t store any data in the host which makes it ideal for horizontal scaling and microservices.
- Stateful applications depend on the storage to save state and data, typically databases are stateful applications.