October 20, 2016 | Written by: Osai Osaigbovo
Categorized: Community | DevOps
Share this post:
Republished from Thoughts on Cloud
In my previous post “Six causes of application deployment failure“, I discussed causes of system failures and their resulting negative impacts for enterprises. How can one one avoid failure?
Build your DevOps practice
DevOps increases the feedback loop exchange from ideas to customer feedback. Automating the application release and deployment processes and using DevOps tools can drastically reduce the amount of manual intervention in the release pipeline, which leads to big gains in delivery such as faster resolution of problems, greatly reducing the complexity of problems to fix. For example, your team can use IBM Bluemix DevOps Services to develop, track, plan and deploy services in one place. This enables organizations to develop rapidly in an open, integrated environment that scales. It allows customer feedback to be easily incorporated into software delivery.
Implement shift left continuous testing
Continuous testing helps organizations focus on error prevention instead of detection. It allows testing to occur earlier in the development and release cycle. Shift left reduces the delays and code reworking that occurs when major defects are discovered late in the testing cycle. It also shortens the feedback loop and speeds up the learning process.
But beware: testing must be comprehensive. With more frequent release cycles and shorter development periods, it is important that security testing — such as application vulnerability scanning — and performance testing are built into the release cycle. Security teams should be included as part of the DevOps lifecycle.
Operational resilience is crucial
The trend of digital transformation has changed the way organizations operate. Many businesses are heavily dependent on their IT systems. Consequently, the scope of operational resilience spans people, process and IT.
Organizations should define reliable and practical steps to enhance their IT operational resilience to improve their IT organization’s ability to rapidly adapt and respond to dynamic changes, opportunities, demands, disruptions and threats that could trigger application failures.
In addition to the above, the following approaches can be adopted to avoid failure:
- Learning from failures is key to prevent future issues. DevOps supports continuous learning. It instills the attitudes and activities required to effectively detect and analyze failures.
- Automating code testing and the provisioning of environments will reduce time spent on those two tasks and ensure that environments are based on the same configurations. Going beyond automation, consider orchestration, which is critical in today’s cloud landscape. Orchestration pulls together automation, integration and best practices to ensure smooth and rapid delivery. Using IBM Cloud Orchestrator and Urban Code Deploy, for example, gives organizations access to ready-to-use patterns that help accelerate configuration, provisioning and deployment. It reduces IT administrator workloads and manual tasks that can lead to errors.
- Decomposing your monolithic applications into microservices simplifies the application as a whole and reduces the time it takes to find and fix failures. In addition, adopting a microservices architecture helps reduce the impact of failure in one microservice. It can be isolated from the other microservices in the system. Dependency will be less of a concern and rolling back changes is much easier than with monolithic designs.
Overcoming risk to avoid failure should be a priority. The ability to use patterns to define consistent environments eliminates the failures that occur through configuration inconsistencies. Operations and development must work together to create the provisioning process so developers create their test environments the same way they are created in production.
As the ADT study “Organizations Increasingly Look to Continuous Deployment to Recover” notes, fear of failure is real—causing not only loss of sleep, but loss of revenue. Technologies such as IBM UrbanCode Deploy can help transform the deployment process, while practices such as shift left and DevOps will increase the feedback loop and reduce failure.