This vendor-written piece has been edited by Executive Networks Media to eliminate product promotion, but readers should note it will likely favour the submitter's approach.
DevOps is the software development approach that focuses on fostering collaboration between the teams that create and test applications (Dev) and those that maintain them in production environments (Ops). Today, organisations in Asia Pacific are turning to DevOps to address the increasing pressure to deliver higher quality apps within a shorter period of time. Its ultimate goal is adding increased value to the customer and enabling organisations to react faster to change in the business.
Follow these principles and practices and you will be much closer to achieving a DevOps-focused mindset in your organisation.
- Define expected impact upfront: Define the expected impact of developing an application or feature upfront. Consider how this will affect areas such as network configuration, security, and architecture. For instance, accounting for the growth of the number of concurrent users or transaction count ensures that your infrastructure capacity is fit and ready for the workload increase.
- Immediate provisioning: Automating your infrastructure provisioning activities will definitely boost your development and testing speed. Technologies such as Infrastructure as Code on top of virtualised servers or cloud providers can be a huge help.
- Anticipate failure: Having a disaster recovery plan is not enough to avoid disaster. It is also important to practice failure scenarios on top of a self-healing infrastructure. Plan for simulations during development cycles, as well as in production during off-peak hours, to guarantee the effectiveness of your disaster recovery plan.
Develop and test
- Develop based on production: Mimic production as closely as possible. Validate your apps against production-specific constraints early in development rather than dealing with them after the rollout. Bootstrap production data, simulate integrations, and test on target user devices.
- Continuously integrate your code: Regularly enforce a continuous integration approach and enforce the consistency of ongoing developments over the existing codebase. Run automated test scripts to pinpoint any breaking changes for developers to act upon them earlier in the development process.
- Trace all changes: Use a tool to manage the full lifecycle of anything that impacts your applications, from defects up to business requirements. Tracking every action performed along the way lets you have full traceability from origin, all the way down to the application version that implemented it.
- Register your configuration: Register all development configuration activities in a centralised shared repository. This ensures they are later applied in the deployment process to subsequent environments. Don't let these changes be forgotten only to be recalled when operational errors start piling up.
- Orchestrate deployment process: Create a deployment script where you define all steps of the deployment process for each application, including rollback procedures. Apply it in pre-production environments and validate the deployment process to ensure reliability and consistent behaviour when your application reaches production. Automate your script execution to increase your efficiency even further.
- Compress delivery cycles: The sooner you reach production, the sooner you can start adding value to the business. Compressing delivery cycles through process automation and scope minimisation will help you increase the speed of delivery of new features with reduced risk.
Sign up for CIO Asia eNewsletters.