Best Practice of DevOps world
This article is about few best practices that I believe are crucial while working as DevOps from past years in tech.
Preferred reader: Developers, Operation manager, etc…
Read time : 3 minutes
DevOps is a methodology which is used broadly and it covers multiple areas of system development life cycle under its umbrella. Every project and company has their customized best practices to follow with DevOps. There are certain best practices which I believe are common and important for any project to follow in order to build a scalable and efficient system.
- Communication: For DevOps communication is the key piece due to highly collaborative environment across cross-functional teams and it bring transparency between teams.
There are multiple applications/tools available today that teams can utilize within a project to collaborate, communicate, share data, files, notifications across channels, video calls, audio calls, virtual meetings and many more functionalities available. Proactive communication approach can be used for example:
Communication about patches on servers, notifications about shutdown of environments, changes in environments that impact software development, version updates, configurational changes etc.
2. Documentation: it is an important and the most ignored piece in SDLC. Successful documentation helps keep track of all aspects of an application and improves software quality. Every project has its own standards and policy about documentation but there are certain practices which I have learned in past years of my experience which DevOps or any SDLC team can follow to easily access information.
- Document information about environments such as application name/version, server names, user details, code directories etc.
- Adding comments in automation scripts. Comments such as: purpose of the script, use of functions/procedures, arguments usage, examples to run that script/tool, create a readme.txt file etc.
- Incident management: The purpose of the issue, steps followed in troubleshooting, reason for updating the ticket, tagging respective resource or person involved etc.
3. Standardization: everyday we are inventing new technologies with one goal to save time and effort and stadardization plays an important role in effective communication between disparate system. Standards make it easier to monitor and avoid redundant transactions. Following standards can highly improve the quality and save time. For example:
- Using standard naming convention while building and maintaining multiple CI/CD pipeline.
- Using standard variables in your provisioning scripts while creating any resource within infrastructure. For example: variables for build-configurations, release-configuration, database-config etc.
- Tagging deployed resources: tagging api’s, databases, storage accounts ets. Categorizing resources and tagging them helps in monitoring and troubleshooting issues.
4. Security: There is a broad spectrum of security which include multiple bands such as infrastructure security, network security, application security and accessibility. Every DevOps team should plan the accessibility before building release management cycle.
- Access to resources in different environments. For ex: who can access, what to access and where to access.
- Type of access required for different resources. For ex: read-only access to prod databases, read-write access to storages, read access to metrics etc.
- Approvals and accessiblity to ci/cd pipelines.
- Access to code repositories across teams.
Above mentioned are some of the common practices I believe is important to build a secure, reliable and efficient product in SDLC . However, every project has their own set of standards and best practice to follow and I would appreciate the feedback of readers. That is what DevOps is all about “collaboration”