Cloud-based deployments enable extremely rapid deployment of software that can be scaled elastically to meet demand. This can be a game-changer if done correctly. However the constraints placed on the architecture and design of software often run counter to this new flexibility. It is therefore necessary for new, more flexible design principles to also be created and put in place to aid in managing this process.
To counter the challenges often experienced in Cloud-deployment, developers involved in a DevOps team have created the ‘Cloud DHARMA development principles’ which can be used in a similar way to the ‘SOLID’ software development principles.
The Cloud DHARMA Principles lay out the following set of Cloud development guidelines:
- Documented (just enough): lightweight documentation is essential in order to communicate design and intentions, especially when combined with the current trend to split large code bases into smaller micro services. Providing a map of the application and deployment territory should be the key purpose of documentation in a Cloud-based project.
- Highly cohesive/loosely coupled (all the way down): it is essential to have good appropriate architecture ‘all the way down’, that supports the functioning and evolution of a software application.
- Automated from commit to Cloud (the pipeline to production): it is especially important when developing applications for the Cloud to build a pipeline that supports continuous delivery.
- Resource aware: when the vast majority of communication occurs over a network it creates a volatile space. It is therefore important to cultivate a ‘mechanical sympathy’ by developing an understanding of the hardware fabric onto which you are deploying applications.
- Monitored thoroughly: when moving an application into the Cloud, a new monitoring infrastructure is required.
- Antifragile: the post-Web 2.0 generation of users expect applications to be constantly available and highly responsive. The elastic nature of compute resources truly allows anti-fragile behaviour. Software can be designed to take advantage of this elasticity by rapidly scaling compute power to meet increased demand or reduce costs.
It is important to remember that the Cloud environment is completely different to that of a traditional datacentre. These Cloud ‘DHARMA principles’ have therefore been designed to act as a checklist when designing and implementing software that will be deployed onto a Cloud environment. Although there are many challenges encountered by a DevOps team when developing applications for the Cloud, when done right the benefits still make it an attractive environment for many software applications.
We would love to hear your tips or suggestions for streamlining Cloud development – tweet to us on @RSAWEB using #CloudDevelopment #DHARMA #DevOps