DevOps

At Tricloud we believe that DevOps principles are one of the main pillars of modern software development. We can help your organization achieve more by guiding you on the DevOps journey.

What is DevOps?

DevOps is many things, but first and foremost it is the collaboration of people to deliver great software products. The word DevOps is Development and Operations combined, and the term was coined, when these separate IT functions started to work closer together on delivering software products. Today DevOps teams include not only development and operations, but often also other business functions like business analysts and subject matter experts.

 

 

DevOps is a mindset and a culture that needs to be deeply founded in the organization that takes on the DevOps journey. The culture must embrace collaboration of people across functional boundaries, and it should allow open communication to get valuable feedback and knowledge to be embedded in the process. It must also promote shared responsibility of all parts of the product lifecycle and a willingness to allow failures, in order to improve the process and the products being developed.

 

 

Tricloud has adopted DevOps principles from the start, as the preferred way to develop great software products. We can help development teams with the adoption, or improvements, of many of the DevOps principles, and tools, that are part of the DevOps journey.

Agile Development

Agile methods like Scrum and Kanban are one of the foundations of DevOps. Adhering to agile methodology, enables small cross-functional teams to work closely together on software products. Work is often divided into smaller iterations to be able to deliver value, in the form of working software, at a higher pace than traditional software projects are known for. Agile planning covers how iterations and product roadmaps are prioritized. This allows teams to work on features that deliver most value, and to adapt quickly to changes or feedback from stakeholders.

Tricloud prefers working in agile setups, either as direct members of agile teams or as mentors, helping teams on their journey. Tricloud has consultants certified in Scrum and Kanban for software development projects, and provides certified SAFe consultants for large enterprise Agile Release Trains.

Built-in Quality

To ensure development of great software, delivered at a rapid cadence, it is pertinent for development teams to have quality built-in right from the beginning. This will minimize time spend on debugging and fixing bugs, which could be better spent adding value, such as new features. Tricloud adheres to the principles that software has quality built-in right from the start, by following the practices described below.

 

Version Control

Version control systems enable development teams to collaborate on shared code bases, which tracks individual changes to source code. In recent years, more and more developers have moved to Git as the preferred tool. Git is a distributed version control system, making it easy for distributed teams to collaborate on the same code base, and to integrate advanced workflows, that strengthens the quality of the code base.

To improve the workflow, when using tools like Git, DevOps teams often introduces several best practices. A best practice is to include code reviews into the workflow, also known as pull requests, which ensures knowledge sharing and quality checks of code changes. Another best practice is to treat infrastructure provisioning the same way as the source code. This practice is known as “infrastructure as code” and enables fast repeatable deployments, often leveraging the cloud and can prevent environment drift.

Test

To ensure that software works as expected, it must be tested. By moving the responsibility of testing to the development team implementing the software, you are likely to gain benefits such as improved quality and better productivity, with a minimum of context switching. The testing effort should focus on creating tests, that can be easily repeated, and thereby automated. Automation creates rapid feedback cycles, that ensures that both new and existing code live up to the specifications and quality standards defined by the team.

Automation

Automation is a key driver in DevOps to enable faster software delivery and is divided into Continuous Integration (CI) and Continuous Deployment (CD). High performing development teams will often use a high degree of automation. This enables a rapid development cycle where  changes in source code can be deployed to production within minutes rather than weeks, with a high degree of confidence that the system works.

Continuous Integration

CI is the process of integrating code changes frequently, often several times a day, in an automated way. The integration process should build, test, analyze and package code changes, making them ready for deployment. Should any bugs or defects be introduced with the changes, the CI process will most likely detect this and fail the automation process, notifying the development team.

Continuous Deployment

Continuous Deployment is the task of deploying software to development- or production environments, often hosted in the cloud. Automation allows fast repeatable deployments, and by deploying continuously, you gain the benefit of testing new features faster. This quickly leads towards automation of the testing effort itself.  Once release pipelines with automatic deployments and tests are in place, going to production suddenly becomes a simple task that can be performed several times a day, if needed. Failures during or after releases should allow for easy rollback to previous versions. If the development and deployment cycle is small enough, it can often be even better to use a roll forward strategy, where bugfixes are simply applied and deployed to production immediately. 

Combining CI and CD is the key tenet of DevOps automation. It is also the foundation for   separating the release of new features to end-users from deployments of code in production. Development teams can separate releases from deployments by  implementing feature flags in software products, that makes it possible to release new features on demand. This allows for better planning, rollouts and experimenting with new features, for a select userbase. 

Setting up CD automation has simplified greatly in recent years, with the combination of new DevOps tools, and the integration with cloud Platform as a Service (PaaS) offerings.

Feedback and monitoring

When software is running in production, it is important to get feedback and insights of system usage and health. It allows DevOps teams to handle issues proactively, possibly even before the end-users notices them. A feedback cycle must be deeply integrated in both the development- and operation process, providing both technical feedback in the forms of logs, telemetrics and diagnostics, as well as customer feedback.

When building solutions in Azure, the feedback cycle can be greatly improved by incorporating Azure Monitor, to get deep insights into products. Tricloud leverages Azure Application Insights to get this insight.

Tools

When an organization embarks on a DevOps journey, there are many tools to choose from. Azure DevOps is an Enterprise solution that has deep integration with Azure and other major public clouds. It supports all parts of the DevOps cycle;

  • Product planning: Product Backlogs, Scrum boards, Kanban boards and roadmaps
  • Version control: Code Reviews and collaboration on source code
  • Automation pipelines: builds, testing and deployments
  • Feedback cycles: integrate advanced feedback cycles and quality gates into workflows and automation pipelines.

Tricloud collaborates using tools such as Azure DevOps and GitHub on all types of projects and solutions with immediate results. This is done regardless of whether the software is running in public cloud, private cloud or hybrid cloud, no matter which technology stack is being used.

Cases 

Tricloud has helped customers on their DevOps journey, whether it is adapting principles and processes, or implementing complex automated release pipelines to improve productivity.

Here are some examples of how Tricloud has used Azure DevOps for implementing complex automated release pipelines.

  • Security Verification Tests and deployment of Azure infrastructure using Azure Resource Manager (ARM) templates
  • Deployment of Azure Data Factory pipelines
  • Build, Deployment and automated testing of Azure Databricks Python notebooks and jobs
  • Deployment of Snowflake Data Warehouse SQL artifacts
  • Build and Deployment of Azure IoT Edge solutions
  • Build and Deployment of Azure Functions solutions