DevOps With AWS

DevOps With AWS

AWS

Start your DevOps Learning Journey!!

1- What is DevOps?

DevOps is a software engineering culture and practice, a methodology, a way of work, where the development (Dev) and operations (Ops) team works closely or together, to provide continuous delivery of the product with high software quality and with much shorter time with the help of a variety of Automations. DevOps is the union of people, processes, and technology to continually provide value to customers. The philosophy of DevOps aims to bring applications and services faster to the market by mainly focusing on the automation of manual tasks with few scripts and a variety of tools.

DevOps Methodology

DevOps Methodology with relevant tools

2- What is Automation?

Automation is defined as a wide range of technologies that minimize human intervention in processes. By predetermining decision criteria, subprocess linkages, and related actions, and embodying those predeterminations in computers — human intervention is decreased. Automation effectively increases the speed of particular work and it increases the overall productivity and efficiency of work. The best advantage of Automation to me is, it has made the recurring manual task “One Time Code & BOOM!”.

3- Most common technologies/terms used in DevOps?

a)Public Cloud platforms (e.g. AWS, Azure, GCP) for providing infrastructure and services for deployment. Though DevOps is equally possible in on-prem, hybrid cloud and private cloud models too. But for ease of accessing infra without having a headache for Downtime, we use Public Cloud Platforms.

b)Operating System(e.g. Linux, Windows ) to operate the whole process. It’s highly recommended to Learn and have a good knowledge of Linux as Automation is much easier here and the over all os management requires less resources and effort. Also to mention, Linux is highly secure than other OS.

c) Version control systems (e.g. Git & GitHub) for managing and tracking code changes. Git is a version control system that lets you track changes you make to your files over time. With Git, you can revert to various states of your files (like a time-traveling machine). GitHub is an online hosting service for Git repositories. It is like storage to store code in branch format.

d)Continuous integration tools (e.g. Jenkins, CircleCI, Drone CI ) for automating the build and testing of code and generating artifacts which help in the easy deployment of applications.

e) Configuration management tools (e.g. Ansible, Puppet, Chef) for automating the configuration and management of infrastructure.

f) Containerization technologies (e.g. Docker) for packaging and deploying applications.

g) container orchestration tool (e.g. Kubernetes, Docker swarm, Normad) to manage containers. We mostly use Kubernetes ( commonly stylized as K8s) which is an open-source container orchestration system for automating software deployment, scaling, and management. Google originally designed Kubernetes, but the Cloud Native Computing Foundation now maintains the project.

h) IAC (Infrastructure as Code) uses DevOps methodology and versioning with a descriptive model to define and deploy infrastructure, such as networks, virtual machines, load balancers, and connection topologies with the help of programming language such as Terraform. An IaC model generates the same environment every time it deploys. IaC is a key DevOps practice and a component of continuous delivery.

i) Monitoring tools (e.g. Nagios, Prometheus) for tracking the performance and availability of systems.

4- What is Auto**-Scaling ?**

Auto-Scaling is a cloud computing technique for dynamically allocating computational resources. Depending on the load to a server farm or pool, the number of active servers will typically vary automatically as user needs fluctuate. Auto-scaling and load-balancing are related because an application typically scales based on load-balancing serving capacity. In other words, the serving capacity of the load balancer is one of several metrics (including cloud monitoring metrics and CPU utilization) that shapes the auto-scaling policy. In simple words, auto-scaling helps to increase/decrease server count or pod count(in k8s) as load increases/decreases.

5- What is Auto-healing ?

It’s a big concept and very important too as this ‘feature’ forced us to choose Kubernetes as a container orchestration tool. Auto-healing simply means, if any server/pod is forced to delete for some unwanted reason, it will simply heal itself and become UP again in a second. You can’t delete the server fully. This feature ensures the least downtime for applications, running on the server/pod, and increases production efficiency with the level best till now.

6- Why DevOps is Important?

1)Faster delivery of software updates: By automating the build, test, and deployment process, DevOps enables organizations to deliver software updates faster and more frequently.

2)Improved collaboration: DevOps promotes collaboration between software developers and IT operations, which can help to improve communication and integration between these teams, removing the usual ‘conflict nature’.

3)Increased reliability and stability: By automating the deployment process and implementing testing and monitoring at various stages, DevOps can help to improve the reliability and stability of systems. This can reduce the risk of errors and downtime, and can help to improve the overall quality of the software.

4)Better security: By incorporating security testing and monitoring into the development and deployment process, DevOps can help to improve the security of systems. For a new concept called DevSecOps is introduced with Static Application Security Testing ( SAST) & Dynamic Application Security Testing ( DAST). This can help to protect against vulnerabilities and threats and can help to ensure that systems are compliant with relevant security standards and regulations.

Thank you for reading this article !!

- Sagar Radadiya