DevOps Fundamentals You Ever Wanted To Know – hackernoon.com

@pramod.pandey83Pramod Chandrayan

CPO @FarmArt | AIML| Data Science | Product Engineering Consultant

Current IT practices, to support effective and efficient software development has seen a great paradigm shift. Now monolithic architecture is being replaced by Microservice architecture. Developer, QA and Operation team are no more working in their relative siloes. They are being bridged with the implementation of Dev+Operation amalgamation which we call, DevOps.

Now tech driven businesses need quick development and faster release cycle if they want to become more customer oriented to get quick Idea validation, all this led to the birth of CI/CD practices which is at the core of DevOps culture.

Earlier the entire SDLC was linear and sequential which led to the longer release cycle of the product, but with this fast changing market dynamics aggressive competition and ever changing customer needs, companies cant afford to cling on to same old development practices. They have to be more closer to their customer and need to constantly innovate to keep them engaged.

DevOps offered this solution and is been widely adopted by IT driven companies to improve their processes & practices for rapid delivery.

Lets try to understand What is DevOps all about?

DevOps Definition:

I very often quote w.r.t to DevOps that

Its time to make all your team members irrespective of their department to work closely with each other adopting tools and practices for effective and efficient delivery of software products.

Amazon defines DevOps as:

Microsoft puts DevOps in more simplified manner:

Which I feel is the best way to explain DevOps. It is a culture, is a philosophy to put people first in an organization, giving an congenial environment to allow them to thrive, so that irrespective of their department, they can collaborate & communicate well through a well defined process, to deliver results. To make the process efficient, allowing teams to work effectively there are many DevOps tools which work as an enabler of DevOps culture.

As discussed above DevOps doesnt have any fixed set of rules and practices, but it is more like a culture within any organization where teams from various departments having varied skill-sets come together to deliver an intended outcome. So how does this actually work, well let me explain it briefly through a diagram below:

So here Developers, QA, & Operation team use CI/CD practices to achieve the desired goals for the customer. Developer writes code and commits them to the source control tool like GitHub. The code gets pulled using CI tools by DevOps engineer to manage test automation and deployment to the production or staging test servers is handled through CD tools.

People having both development and operations skill sets work together and use various tools for CI-CD and Monitoring to respond quickly to customer's need and fix issues and bugs.

As you can see below:

There are multiple tools available for DevOps engineer to avail and achieve the desired outcome at every stage of the DevOps life Cycle.

Planning:

You can use Jira or Azure DevOps Board to manage and plan your work in an Agile way.

Development:

For code management, Git is the number 1 tool to manage your Code version History, branches, Push and Pull mechanism as a distributed way. You can also use Microsoft TFVC (Team Foundation Version Control) which is a Centralized version control system.

To automate your testing you can rely on Selenium, JUnit and Apache JMeter.

Jenkins is one of the most popular CI tool which enables integration of Developer process with operation process seamlessly.

Travis & Bamboo are other tools for CI.

Deployment & Configuration Management

Docker is one of the most popular & widely used tools for continuous deployment. It is also known as a Software containerization tool.

Other deployment & configuration management tools are Kubernetes, Chef, Ansible, and Puppet.

Monitoring:

Once your product is deployed in the right place, continuous monitoring becomes vital. Nagios, Splunk or New Relics are some of the widely used tools to support continuous monitoring

We will cover about CI/CD tools in length & breadth in the next article

DevOps CI/CD tools for agile enterprise development stay tuned

As discussed at the start of the article that for an IT driven organization to become more customer oriented they need to transform themselves from traditional software development practices to agile methodology of releasing products for their customers. Let us try to understand what are those best DevOps practices they need to adopt:

Let me explain them in brief

Amazon defines CI as:

Continuous delivery is a software development practice where any code changes done by developer are automatically prepared for a release to production.

Continuous delivery expands upon continuous integration by deploying all code changes to a testing environment and/or a production environment after the build stage.

Its a new software design approach where you build a single app as a set of small services/modules. As compared to Monolithic architecture where all the front-end and back-end code base along with database are all deployed in one go all pointing to the same server address, microservice architecture based app are broken down into services where each of them runs in its own process and communicates with other services through a well-defined interface using a lightweight mechanism, typically an HTTP-based application programming interface (API).

As per Amazon:

Is the process of managing and provisioning computer data centers through machine-readable definition files(code base), rather than physical hardware configuration or interactive configuration tools.

So developers can use code-based tools to interface with infrastructure to treat them more like an app. This enables infrastructure and servers to be swiftly deployed using standardized patterns, updated with the latest patches and versions, or duplicated in repeatable ways.

Traditionally, server (lifecycle) automation and configuration management tools were used to accomplish IaC. Now enterprises are also using continuous configuration automation tools or stand-alone IaC frameworks, such as Microsofts PowerShell DSC or AWS CloudFormation

Companies monitor metrics and logs to see how their application and infrastructure is performing. APM(Application performance management) strives to detect and diagnose complex application performance problems to maintain an expected level of service. APM is the translation of IT metrics into meaningful business metrics.

By capturing, categorizing, and then analyzing data and logs generated by applications and infrastructure, organizations understand how changes or updates impact users, shedding insights into the root causes of problems or unexpected changes.

As per wiki:

Two sets of performance metrics are closely monitored. The first set of performance metrics defines the performance experienced by end users of the application. One example of performance is average response times under peak load. The components of the set include load and response times.

I feel:

Increased communication and collaboration in an organization is one of the key cultural aspects of DevOps. With this culture in place, teams come together with the right kind of attitude and motivation to set strong cultural norms around information sharing and facilitating communication through the communication tools & apps, allowing all parts of the organization to align more closely with common goals and objectives.

To understand the value addition DevOps and how it has been adopted by companies:

Lets see the below infographics brought to you by veritis.

Above given infographics clearly lay down following key benefits of DevOps practice:

Speed:

DevOps facilitate organization to move at high velocity so you can innovate for customers faster, adapt to changing markets better, and grow more efficient at driving business results.

Quick Delivery:

With CI/CD based DevOps culture the application release cycle has been shortened, allowing quicker customer feedback and meaningful innovation to flourish within an organization. The quicker you can release new features and fix bugs, the faster you can respond to your customers needs and build competitive advantage.

Reliability:

DevOps empowers you to continuously improve upon your software quality through practices like continuous integration and continuous delivery to test that each change is functional and safe. This leads to the development of reliable & tested application & robust infra. DevOps continuous Monitoring and logging practices can help you to be well informed of your performance in real-time.

Culture:

DevOps fosters a great work culture to build more effective teams under its cultural model, which emphasizes values such as ownership and accountability.

Security:

By adopting DevOps model organization can use infrastructure as code and policy as code, to define and track compliances at scale, without sacrificing security. They can quickly progress while retaining control and preserving compliance.

Implementing DevOps culture in an organization is not easy. There is no standard set of rules to do so, it is more a game of changing the mindset of individuals and team of individuals. Its like asking people to get out of their comfort zone.

So lets see what are some of the common challenges In adopting DevOps as a culture.

1. Dev Vs OpsMindset:

Since ages developer and operation team has been working in isolation with totally different set of task to perform. So they have been fine tuned to think and act differently. Devs trying to innovate and make changes as quickly as possible and operations trying to maintain 100% service levels. Their objectives and priorities were different, so if we have to bring DevOps as a cultural practice in organization, that very mindset they are two isolated stream has to be eclipsed

Legacy infrastructure has been existent in the companies for years, but if they have to innovate fast they have to shed this approach and adopt more scalable IT architecture of Microservices. Using Infrastructure-as-code together with microservices is yet another step towards a future of continuous innovation.

However, there is a high entry barrier to change to microservice driven system. Adopting Microservice architecture requires best DevOps practices along with CI/CD implementation to be in place. It brings enormous workloads and operational challenges for an organization along with increased cost factor.

Devs team has totally different objective and metrics to measure and so they may need a toolset which may not be required for Ops team. So it is imperative that both teams are brought together to understand where they both can collaborate and integrate tools which makes sense to both of them and to unify the objective and metrics they can monitor.

Some teams may be reluctant to part with legacy tools that are not only technologically inferior but that also slow down the entire infrastructure due to compatibility issues. So make sure, the tools that are being implemented are aligned well to the companys product vision.

We will look into CI-CD practices, tools and implementation strategy.

Will try to understand why they are important and how they are changing the fate of the companies in a bigger way.

Till then stay tuned&

Subscribe to get your daily round-up of top tech stories!

Excerpt from:
DevOps Fundamentals You Ever Wanted To Know - hackernoon.com

Related Posts
This entry was posted in $1$s. Bookmark the permalink.