Building Sustainable Secure Product is the motto of any organization in any field in order to establish a brand of their own.DevOps is a kind of operational discipline coupled with automation.
Everyone of us must have seen Construction sites. We notice
- Some of the workers carry the bricks to the top floors
- Masons in the top floor building a wall
- Some work with the Cement mixer and transport it to the Mason
- There are electricians/Plumbers working on other floors that are already built
All these works happen simultaneously. Mason need not wait until all the columns and beams are constructed and entire raw material is supplied. He only needs the construction plan from the Designer/Architect and some of the raw material .
Electrician/plumbers need not wait till entire brick work is over. They just need the mason to finish a part of the work.
Well, my focus is not into construction. I cherry picked this example to explain the fact that there is a similarity between IT field and the construction. Various teams like Design teams, Masonry, Electrical/plumbing teams, Raw material suppliers contribute at different levels to make the project a success. Also, machines were introduced to efficiently transport material to the locations wherever needed. Nobody wants to wait. Nor they should!!
Another popular and yummy example I can quote. If you have watched movie ‘The Founder’ you can relate to what I am trying to convey. For those who didn’t, I highly recommend to watch this clip -> : 'The Founder' Speedy System that explains it all. Speedy delivery of a Stable product builds trust in the customers and creates a 'Brand'. The whole world prefers organizations that promise Speedy delivery. Be it a Swiggy/Zomato parcel or an IT project :D
In order to deliver the project/product on time, to save on costs all the teams should work simultaneously. This requires a perspective and a culture that should include appropriate planning, collaboration among the teams,monitoring and Operation/ project delivery teams to handle all these processes. That is DevOps Culture. It involves collaboration and shared responsibility between development and operation teams. This greatly contributes to aligning the teams , processes and tools to work towards achieving a stable sustainable and Secure product.
What are DevOps Principles?
DevOps Principles help organise the DevOps Environment
- Incremental release
- Version Control
- Continuous Integration
- Continuous Delivery
- Continuous Deployment
- Continuous Monitoring
In DevOps environment, a Single project is divided into multiple smaller chunks of tasks and developers submit their code in increments. It makes it easier to test and troubleshoot any errors before deploying it into production. Such incremental release make development and deployment cycles more manageable. This gives them some space to address adhoc changes/errors.
Automation is essential while adopting DevOps as it allows speedy delivery of the product. Not all tasks need to be automated. Repetitive,Time consuming tasks, connecting flows between phases need to be automated. Jenkins( to automate the pipelines), Ansible/Terraform(Infrastructure configuration management) are such automation tools.
Whatever that could be automated should be automated. Automation allows developers to solely focus on writing code.
Version control helps to track and manage the changes to software code/ documents/ environment configuration. Developers would require to update the code multiple times as per the requirement and it is important to keep a track of all the changes. One developer on the team may be working on a new feature while another developer fixes an unrelated bug by changing code. Software teams that do not use Version control system usually have to deal with issues like untangling and merging different versions of code/document from different people.
Version control offers below benefits:
- Historical changes to the code/document/script
- Branching and Merging
Git,SVN,ClearCase,Helix Core (Perforce) are such version control systems.
Once the code is updated into a centralized repository from multiple contributors, it needs to be merged, built and tested using automation. This process is Continuous Integration.
Every revision that is committed triggers an automated build and test.Continuous Integration automatically builds and runs unit tests on the new code changes to immediately surface any errors.
After the Code is merged, built and unit tested, now it needs to be deployed onto Testing and/or production servers after the build is complete. Continuous Delivery is an automated release process that can be used to deploy the application into Production daily /weekly/fortnightly or anytime as per the Business requirements. It is recommended to make smaller releases so that it is easier to fix the bugs on smaller changes. This is a manual step where the code is deployed on 'Push of a button'
Continuous Deployment is about the actual release/deployment of the application into production without any manual intervention. Every change that passes all stages of production pipeline is released to the customer automatically.
Continuous Monitoring is an automated process to monitor and identify security threats and compliance issues in each phase of DevOps and IT operations lifecycles. Once the application is deployed to the users, Continuous monitoring alerts the teams if there are issues in the application or the environment. There are 3 types of monitoring:
Infrastructure monitoring : Includes monitoring of Servers, networks, Computer hardware and software, and storage. Popular Infrastructure monitoring tools are Nagios,Prometheus, Solarwinds etc.
Application Monitoring : Monitors performance of deployed application using metrics such as application uptime, transaction time and volume, log-monitoring , system responses, API responses, and the back-end and front-end's overall stability. These metrics and status are delivered in graphical representation like charts and pictures. Some of the popular application monitoring tools are AppDynamics, Dyntrace,Splunk etc
Network Monitoring: This is a critical process in DevOps Environment. Network monitoring covers components like routers, firewalls, servers, switches, and VMs. It is necessary to proactively find faults and measure performance in these components. This prevents network downtimes and failures.Network Monitoring System(NMS) tools include Cacti, ntop,nmap, Spiceworks, Wireshark,Traceroute etc.
DevOps teams usually gather feedback from stakeholders, end-users, and software-based monitoring technologies before, during, and after the release cycle. It helps to evaluate the effect of each release on the user experience and gives an opportunity to improve the further releases.
Dev and Ops teams need to communicate, share feedback, and collaborate throughout the entire development and deployment cycle. DevOps team carefully need to ensure quality deliverables at each step of the lifecycle. Teams will own a feature or project throughout the complete lifecycle from idea to delivery. To execute DevOps successfully, it’s crucial to have the stakeholders and DevOps teams be on the same page and continuous Collaboration is the only way out.
Did you find this article valuable?
Support Cloudnloud Tech Community by becoming a sponsor. Any amount is appreciated!