DevOps

DevOps

⭐ Day 01 of #90DaysofDevOps

Hi Everyone, welcome to Day 01 of the #90DaysofDevops learning journey. In this session, we will cover various topics related to DevOps.

🔶 What is DevOps?

The word DevOps is a combination of the development and operations of the term, meant to represent a collaborative or shared approach to the tasks performed by a company's application development and IT operations teams.

Initially, the operations team and the development team worked independently. Deployment and testing were separate phases that were taken up after the activities of design and build. Before the advent of DevOps, the team members used to spend a lot of time in activities like designing, testing, etc. rather than creating business services. Not being in synchronization with one another, the development and operations teams had their separate timelines, which would lead to delays. DevOps helped to bridge this gap.

In simple terms, DevOps can be understood as a collaborative effort that helps to bring about a collaboration between IT operations and Development in a way that is repeatable and automated. It helps to boost the speed of the organization to deliver services and software applications.

While DevOps is not a technology, DevOps environments generally apply common methodologies. These include the following:

  • continuous integration and continuous delivery or continuous deployment (CI/CD) tools, with an emphasis on task automation;

  • systems and tools that support DevOps adoption, including real-time monitoring, incident management, configuration management, and collaboration platforms; and

  • cloud computing, microservices, and containers are implemented concurrently with DevOps methodologies.

    🔸 How does DevOps work?

DevOps is a software development approach that combines software development and IT operations. It aims to increase the speed and efficiency of software delivery while improving the quality of the software. DevOps involves collaboration, automation, and continuous delivery to streamline the software development process from start to finish.

DevOps methodology is meant to improve work throughout the software development lifecycle. You can visualize a DevOps process as an infinite loop, comprising these steps: plan, code, build, test, release, deploy, operate, monitor, and through feedback plan, which resets the loop.

Ideally, DevOps means that an IT team writes software that perfectly meets user requirements, deploys without any wasted time, and runs optimally on the first try. Organizations use a combination of culture and technology to pursue this goal.

🔶What is Automation?

DevOps automation is the addition of technology that performs tasks with reduced human assistance to processes that facilitate feedback loops between operations and development teams so that iterative updates can be deployed faster to applications in production.

Automating infrastructure setup and configurations, and software deployment is the key highlight of DevOps practice. DevOps practice id is dependent on automation to make deliveries over a few hours and make frequent deliveries across platforms.

Automation in DevOps boosts speed, consistency, higher accuracy, and reliability, and increases the number of deliveries. Automation in DevOps encapsulates everything right from building, deploying, and monitoring.

🔶What is scaling?

Cloud scalability in cloud computing refers to the ability to increase or decrease IT resources as needed to meet changing demand. Scalability is one of the hallmarks of the cloud and the primary driver of its exploding popularity with businesses.

In cloud computing, scaling is the process of adding or removing compute, storage, and network services to meet the demands a workload makes for resources to maintain availability and performance as utilization increases. Scaling generally refers to adding or reducing the number of active servers (instances) being leveraged against your workload’s resource demands. Scaling up and scaling out refer to two dimensions across which resources and therefore, capacity can be added.

1. Horizontal Scaling (Scale IN/OUT)

Scaling out means spreading a load out by adding additional components in parallel.

To scale horizontally (scaling in or out), you add or reduce more resources like servers to your system to spread out the workload across machines, which in turn increases performance and storage capacity. Horizontal scaling is especially important for businesses with high-availability services requiring minimal downtime.

Benefits of Horizontal Scaling :

  1. Ability to scale out as much as you want.

  2. Easier to run fault tolerance

  3. High availability

  4. Much lower cost than vertical scaling

Limitation of Horizontal Scaling :

  1. Multiple servers are harder to maintain than a single server. Additionally, you will need to add software for load balancing and possibly virtualization. Backing up your machines may also become a little more complex. You will need to ensure that nodes synchronize and communicate effectively.

  2. Cost may be higher, and more servers may be required. Adding new servers is far more expensive than upgrading old ones.

  3. Higher utility costs (Electricity and cooling)

  4. A limited number of software is available that can take advantage of horizontal scaling.

2.Vertical Scaling (Scale UP/DOWN)

Vertical Scaling is defined as the ability to increase an existing system's capacity by adding resources.

Scaling up refers to making an infrastructure component more powerful—larger or faster—so it can handle more load.

Resizing a server (or replacing it with another server) to increase or decrease its number of CPUs, RAM, or network resources is known as scaling up.

Benefits of Scaling up:

  1. Due to only having one server to handle, vertical scalability reduces operational overhead. There is no requirement to divide the workload among several servers and to coordinate them.

  2. Easy to manage and install hardware within a single machine.

  3. Less Power consumption than running multiple servers.

  4. The best applications for vertical scaling are those that are challenging to distribute. When a relational database is distributed, for instance, the system needs to support transactions that can modify data on different servers. Although major relational databases can be set up to run on several servers, vertical scaling is frequently simpler.

Limitation of Scaling up:

  1. There are upper boundaries for the amount of memory and CPU that can be allocated to a single instance, and there are connectivity ceilings for each underlying physical host.

  2. If an instance has sufficient CPU and memory, some of those resources may sit idle at times, and you will continue to pay for those unused resources. So it requires a huge amount of financial investment.

  3. Greater risk of hardware failure causing bigger outages.

  4. Low availability

🔶 What is infrastructure?

Infrastructure is the foundation or framework that supports a system or organization. When we talk about infrastructure, we're talking about the underlying hardware and software resources needed to support the creation, testing, and deployment of software applications.

Servers, networks, storage systems, and other hardware may be included, as well as the programs and frameworks used to automate and manage these resources.

In computing, information technology infrastructure is composed of physical and virtual resources that support the flow, storage, processing, and analysis of data. Infrastructure may be centralized within a data center, or it may be decentralized and spread across several data centers that are either controlled by the organization or by a third party, such as a cloud provider.

1. Traditional Infrastructure

Traditional infrastructure refers to the physical hardware and software systems that organizations use to manage their operations and store their data. This includes things like on-premises servers, networking equipment, and databases. Traditional infrastructure is often thought of as expensive to run and requires large amounts of hardware, like servers, as well as power and physical space.

2.Cloud Infrastructure

Cloud infrastructure is a collection of remote servers, storage, networking, and software that allows users to access and manage their computing resources over the Internet. It provides on-demand access to scalable computing resources, enabling businesses to quickly and easily provision and deploy IT infrastructure without the need for physical hardware.

🔶Why DevOps is important?

DevOps is important because it enables faster and more reliable software releases through increased collaboration and automation between development and operations teams. This results in improved efficiency, quality, and customer satisfaction.

Some advantages of DevOps include:

  1. Faster delivery of software and services

  2. Improved collaboration and communication between development and operations teams

  3. Increased efficiency and productivity through automation and streamlined processes

  4. Improved quality and reliability of software through continuous testing and feedback

  5. Enhanced customer satisfaction through faster response times to issues and feedback

  6. Greater agility and flexibility in responding to changing market conditions and customer needs.

🎉 Task Done👍 day01 of #90daysofdevops 💯

If you enjoyed this article please like it and share it with your friends and colleagues!

Thank you for reading🤓