Tools Installation and configuration
Many people think DevOps as a single tool or as a kind of dashboard that they have to work on. But actually, DevOps is a practice which has a set of tools that are used to promote the source code to different environments and ultimately to customers/end users.
There might be situations while working for a project where there would be a need to install and configure the required tools from scratch. Also, sometimes it would be required to work with vendors and get different tools on-boarded which would meet the project needs. In other cases, work on additional configuration becomes an essential on existing tools.
There are many categories of tools involved in the SDLC ( Software Development Life Cycle).
- For example, SCM (Source code management) tools are used for setting up a centralized repository for the development teams to check-in their code changes on a regular basis. In order to achieve this setup, installation of SCM tools like GitHub, Bitbucket, SVN, TFS is required followed by the configuration of the repositories with multiple branches using different branching strategies as per the Development team requirements.
- To build and promote the code from SCM tools to different environments, installation and configuration of different types of build tools, testing tools, deployment tools has to be performed to achieve the Continuous Integration and Continuous Delivery (CI – CD) expectations.
- Alongside this, code quality of the product is also a major aspect for the organizations. Installing and configuring some of the tools like SonarQube, Fortify, Black duck in the CI-CD pipeline will help to achieve this.
- Automation plays an important role in CI-CD pipeline to perform different tasks during the entire cycle and can be put in place using different Configuration management tools like Ansible, Chef, Puppet, Salt Stack. Likewise, implementing automated deployments using tools like UDeploy, Jenkins would be beneficial to the organizations to save a lot of money and time.
- In recent times, many organizations are moving to cloud platforms such as AWS, GCP, Azure etc., to host their applications and handle the application deployments. For this, configuration of various services available in the preferred Cloud platform is required according to the project requirements.
Usually, in Project implementation, there would be 4 to 5 environments consisting of Lower and Higher environments.Development environment is where developers have full control which allows them to deploy their code changes to this environment and test it there before code is being deployed to other environments.
As part of any Environment setup, configuring Infrastructure is one of the biggest efforts for the organizations. Maintenance and administration of servers where the infrastructure and applications are hosted would be another important task.
Since, software applications are on different servers in different environments, making sure to configure all the additional aspects like CPUs, Storage, Databases, Networking etc. on them is also required. It takes a lot of time to perform some of maintenance tasks to be done regularly like rebooting servers, adding external storage, upgrading software versions, patch work etc. But the utilization of some configuration management tools would make these types of tasks easier by Automation.
To achieve stability of the hosted applications and to reduce Application downtime to customers/end users, organizations implement different stratagies like High Availability and Disaster recovery clusters between data centers. Using different load balancer tools like F5, Nginx can divert and manage the traffic on different nodes that are hosted on different data centres.
Health status checks of Infrastructure and Application servers in different environments can be performed using Continuous Monitoring strategy and various Logging tools.
Daily Code Deployments
Code deployment processes may vary from organization to organization. In the past, companies used to do this process of deployment with manual methods which takes plenty of effort and time. But after automation tools have been introduced, everything can be achieved in comparatively lesser time.
Configuration of the deployment process should be performed to be able to deploy code to different environments so that developers can get regular feedback to fix if there are any issues in the code.
Also, integration of automated testing strategies like unit and functional testing in CI-CD pipeline can be configured.During this entire Code deployment process, product is not deployed to end users but tested at several stages/environments and code quality improvements are achieved.
Working closely with Test engineers to test the application after every successful deployment is useful so that the test analysis reports can be generated and stored in centralized repositories like ALM, IBM Rational Quality Manager, HP Quality Center, etc.
The developed product after a series of deployments to different environments and continuous testing, finally is released to end customers which is referred to as a Production Release.
Change orders or some record of changes would be required as per organization’s policy/standards for release management.Coordination with change management system and project management to ensure release schedules and to make Go/No-Go decisions would be important to perform releases.
Validation of product functionality after production release would be required to ensure customer satisfaction.
It is crucial to not only maintain the stable release of the product but also be prepared to handle any Production issues that users might report after Production release which comes under Production support.
Training and Documentation
DevOps process involves a lot of co-ordination with development teams as well as operation teams. So, there would be a need to train and familiarize teams on different tools which would be a part of Continuous Integration and Continuous Delivery pipeline.
Cross training sessions/T-shaped skill sessions would help teams in the organization to get acknowledged about the tools being used by other teams.
Documentation of daily activities and also the challenges addressed would help team members to get an understanding of the system. For this purpose, different documentation tools like Confluence, Share Point, etc., can be used which has access to the members of that team.
Maintenance of Building Infrastructure and Deployment process documentation would avoid the need to do the whole research again thereby saving a lot of time and effort.