Docker has extended its strategic collaboration with Microsoft to simplify code to cloud application development for developers and development teams by more closely integrating with Azure Container Instances (ACI).
While DevOps has been around for a decade and has proven effective in delivering applications faster and more reliably while saving money, many organizations have not embraced or implemented DevOps methods. In order to effectively implement DevOps throughout an organization, changes are required in its technology culture — beginning at the top.
Some organizations still use a manual-build process, don't create unit tests and only utilize manual QA testing or manual deployments. They must change their way of thinking, and spend the time to automate these tasks, if they are to implement DevOps methods effectively. For many people in technology, the benefits of automating these tasks are self-evident.
So, why are some organizations still performing many or all of these steps manually?
For these organizations, making the change requires a significant paradigm shift. The developers, QA and IT operations staff are used to doing things a certain way. Many are under so much pressure to deliver on time, they don't have a moment to consider, understand or implement a different approach. The misconception is that implementing technology or project management tools to automate these processes will take more time and cost more money.
Initially, it will take some time, and incur an additional financial cost, to learn and implement DevOps methods. However, in the long term, time expenditures and costs will be reduced. For example, once an automated build process has been created for an application, the effort to manually build the application is eliminated for all future builds.
Starting with CI/CD
DevOps is about more than just implementing a continuous integration and deployment ("CI/CD") process. However, if an organization does not have a DevOps practice, this is a good place to start.
Using a continuous integration tool, each build is run automatically to check its code against the version control. By adding continuous deployment, a web application may be automatically deployed to a web server, mobile application, distribution server or app store. Automating these processes also eliminates reliance on the availability of certain individuals, who may be the only ones that know how to manually perform the build or deployment.
Another benefit from an automated build process is that every step of the build is performed consistently each time it is run, ensuring that steps are not missed. This may include creating a deployable artifact, code linting, running the unit tests and running integrations tests. Deploying these tests consistently automatically improves the quality and reliability of the application. Bugs are detected earlier in the development process, which reduces the overall effort and cost to fix them.
By reducing the time and effort it takes to build and deploy an application, costs are reduced, and applications can be delivered more quickly, with higher quality. This reduction to ongoing costs offsets the initial investment to create the CI/CD process.
Organizations that are developing applications for themselves, over a longer timeframe, may be more willing to consider a change to using DevOps methods. Organizations developing applications for other businesses may not believe they will experience similar benefits — particularly, if it's for smaller projects that only take a few months to complete. However, even these organizations can benefit from using DevOps methods for short-term projects. Once the CI/CD systems have been set up, and processes have been created for a project type (NET, iOS, Android, etc.), a template for each project type can be created and used in similar, future projects.
Changing to a DevOps culture starts by helping management understand the benefits of a DevOps practice. It is not technology for technology's sake, but rather brings value to the business — reducing cost and time, while delivering an application and improving overall quality.