The Rise of DevOps
The technology stack and monolithic architecture of business applications and legacy systems have changed immensely since the late 90s. In recent years, distributed cloud architecture and Service Oriented Architecture models have risen in favor to support exponential growth. We are now seeing a shift in adoption towards DevOps and continuous deployment models.
DevOps with continuous deployment go a long way in achieving a fully automated deployment process. Continuous and automated deployment ensures considerable reduction in errors while improving the predictability and repeatability of the overall deployment process. With DevOps and automated deployment in place, the key resources in the engineering team can focus on development as the deployment can be done by almost anyone in the team. Through an optimal DevOps implementation, organizations get a highly stable operating environment and improved collaboration resulting in shortened release cycles and less time spent on bug remediation.
The increased DevOps adoption, coupled with growth in microservices and cloud deployment has enabled architects to deploy various microservices with different application configurations on numerous deployment environments.
For organizations that have built their application architecture around microservices and service-oriented architecture, the role of DevOps is critical. Developers must ensure deployment of the right microservice in the right environment with an appropriate configuration. For example, there is a potential for error in setting values in the application configuration related to the application/database server, port number etc., which leads to an incorrect version of the application/service being deployed, This leads to additional effort required from the DevOps and QA team and developer for verification and re-deployment of the application across environments.
To reduce the risk associated with the vast volume of potential variables for error, an automated deployment tool which can be integrated with numerous build processes is vital.
In this blog post, we will focus on an automated application deployment tool called Octopus Deploy.
What is Octopus Deploy?
Octopus Deploy is an automated deployment tool which can integrate with most code build process for application deployment and configuration. This helps the DevOps team achieve maximum efficiency by removing the repeatable manual work and the frequent changes in application configuration while pushing an application from one environment to other.
Octopus Deploy is divided into two parts. First is the Octopus Server where the application or service to be deployed is added and configured. The second is Octopus Tentacles, which is installed on the set of machines where the applications configured on Octopus Server should be deployed. Both the Octopus server and tentacles are installed as a service. Octopus can be installed on various platforms including Windows, Mac and Linux. It can also be integrated with most version control tools including VSTS and GIT.
Octopus supports a wide range of deployment of applications from web applications to mobile apps. It also enables automated application deployment on cloud platform including AWS and Azure.
Reference*: https://octopus.com/blog/automated-deployment-with-tfspreview-octopack-myget
How to install Octopus?
Implementing Octopus is relatively simple for DevOps as it only requires a one-time set up and configuration of an application for deployment. Here are the steps that the DevOps team should take to install Octopus:
- Environment: In this step, DevOps carries out the configuration of the application deployment environment and machines. The configuration of different environments namely Test, Staging and Production and then adding machines or cloud locations within those respective environments is completed. Octopus server is then connected to tentacles on these machines via Thumbprints which make the connection secure and break-free.
- Feeds: DevOps configures external feeds from where Octopus pulls project deployment packages for deployment. These feeds are deployment packages and can be picked from an internal FTP server to a cloud storage location. The connection is verified by an API key to secure against unauthorized connections.
- User: Octopus deploy is very user-friendly. DevOps can setup users at this stage who have the necessary authorization to add a new deployment project, configuration and feeds. This allows authorized developers to make changes in application deployment configurations without assistance from the DevOps team.
To complete the setup, Octopus has following application deployment steps:
- Setup application deployment project: DevOps creates a project for various applications or services that need to be deployed using Octopus in different environments. Octopus server can deploy these applications or services simultaneously without waiting for one to complete. This leads to faster deployment.
- Adding deployment process: After creating a project and depending on the type of application, DevOps can then select the appropriate application step and add required configurations. For example, for the deployment of a web application, DevOps can:
- Configure the port number
- Virtual directory name
- User authentication mechanism for connection to the application and the database under which the application will be hosted and the respective database server for the application
Please note the application deployment steps and configurations will differ from app to app based on various set of requirements. Octopus gives us wide range of deployment processes for web app, mobile app and database deployments.
- Adding Variables: This is the most important part of the deployment process. Since Octopus manages deployment in various environments, DevOps can configure environment specific variables here. For example, if application A1 needs to be deployed on environment E1 connecting to database D1 and then on another environment E2 that needs to connect to database D2 —the configuration can be done here. Octopus, while deploying the application on these environment, checks for the config file within the artifacts and replaces them if it finds the matching variable in the variable set for the current deploying environment.
- Adding Channel: This indicates the levels in which the application needs to be deployed. Once the code is checked by the developer and is built successfully, it can then be deployed on a developer testing environment. Then, if all integration test cases pass it will be promoted to a QA testing environment and so on … i.e. passed to staging and production after successful verification of the application functionality. In the stage phase, if the integration test fails the process can be stopped from moving forward.
- Release Logs: Upon every deployment, Octopus provides logs at every level to ensure the DevOps team has complete control of the application deployment lifecycle and can check at ant time during the process for any deployment errors or warnings.
Conclusion
Octopus is a toolset that can drastically streamline any DevOps process for Continuous Testing and deployment of numerous microservices or applications via cloud or virtual machines. It provides complete control during every step of the application development lifecycle, driving significant efficiencies during continuous deployment and minimizing manual intervention and human error.
It is a tool that should be considered when looking to increase the productivity for both the development and deployment processes as developers are empowered to drive deployments on numerous different environments without having to depend on DevOps.
For more information on Emtec’s continuous testing services or to speak to one of our testing experts, please contact us.