Author: Evan Glazer
DevOps Simplified: What is DevOps, Principles and Methods.
DevOps Simplified. This will be an on-going devops series for information technology professionals and associate to mid-level engineers to grow confidence and awareness. The series also has the intention to improve knowledge, simplify concepts and create awareness around tools that will fit into your day-to-day dev operations at work to be able to have a successful CI/CD environment.
As the series continues, comprehensive topics will be discussed ranging from AWS libraries like CloudFormation, CodeBuild, RDS, Device Farm, EC2, Load Balancing, Testing and the list continues on. This article is going to strictly focus on the philosophy, principles, and methods that devop professionals are thinking about when implementing architecture into the application.
So, what is DevOps?
DevOps is a practice that combines software development (Dev) and information technology operations (Ops) to shorten product release times and provide high software reliability to your clients. You will see devops a-lot of times
defined by an infinity loop to narrate
continuous integration and
processes in the development cycle.
Today, we think of development operations as a set of behavior and tools. While, it really is an enterprise fancy software term that means to improve the relationship between two business units. Overall, there are a-lot of tools needed to put the puzzle together for your operation: development, testing, integration, deployment, monitoring. But this should not scare you as learning about each topic and technology is key to break the fear!
DevOps Method Definitions
Methods or the processes behind the system are intricate parts to reach sustainability when releasing hotfixes on the spot, or doing weekly product pushes.
Everything is continuous. You will see this word slapped around in magnitudes of ways when people are speaking about devops. Normally there are many "continuous" integrations that are verified by an automated server before deployment.
This is the process in which engineer commits code in small chunks multiple times a day for it to be easily tested.
Code is ready to be deployed to run in a develop, staging, or production environment on a public server.
At this stage, it is time to find defects in the application, if any. Detecting problematic themes in the application and receiving feedback from users helps improve your clients experience.
principle is a fundamental truth that serves as a foundation for a system. When it comes to devops; the philosophy and belief system is set around these important principles: Automation, Continuous Improvement, and Collaboration.
Spending countless hours to days, or weeks trying to release a product can be extremely costly and slow down your project schedule. Automation is the key principle in my opinion when thinking about being able to release and deploy code in minutes to hours. Could you image a big client issue and you can't correct the issue for 3 days because someone who does devops on your team is out of town - (What do you do?). Having a strong automation server to be able to test and make sure nothing breaking is being released is key. And to be able to automate the deployment process when everything is ready to go and passes your companies "must" processes.
What tools help with Automation?
Jenkins - The leading open source automation server, Jenkins provides hundreds of plugins to support building, deploying and automating any project.
Kubernetes - Kubernetes (K8s) is an open-source system for automating deployment, scaling, and management of containerized applications.
I'm sure you've heard the phrase continuous integration (CI), deployment (CD). Continuous improvement is the ideation where the process can always be better and stronger and has room to adjust whenever needed. Testing your application before you deploy to make sure you don't break features is key to a continuous process, alongside being able to monitor your application metrics, responses, logs, errors, etc.
What tools help with Continuous Process?
Selenium - Primarily it is for automating web applications for testing purposes, but is certainly not limited to just that. Boring web-based administration tasks can (and should) also be automated as well.
Elastic - We're the company behind the Elastic Stack — that's Elasticsearch, Kibana, Beats, and Logstash. From stock quotes to Twitter streams, Apache logs to WordPress blogs, we help people explore and analyze their data differently using the power of search.
A source code repository is key for engineers to be successful working together. Following a successful Git Workflow to model development and release branches is needed to not create merge issues in the development process so you can release code rapidly.
What collaboration tools can help with the process?
Docker - Docker is a set of platform as a service products that uses OS-level virtualization to deliver software in packages called containers. Containers are isolated from one another and bundle their own software, libraries and configuration files; they can communicate with each other through well-defined channels.
Git Image - Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.