Making the Cloud Safe, Reliable and Cost Effective
Security starts at the application layers. Services should provide fine grained security in order to support multiple client applications via a well defined and documented set of APIs to protect the application from other internal and external threats.
Web Clients / API consumers should provide client authentication interfaces to make the applications appear seamless to the consumer. Infrastructure security should provide high levels of protection from external forces and attacts from the outside.
A well Architected Solutions should be designed to maintain Business Continuity and Data Quality as priority one. Durability, through clustering, replication and archiving should be a seamless part of the infrastructure from the beginning of the project or early in the transision of the application.
Availability, High Availability and Dynamic Scaling require a thorough understanding of the load and pattern of the consumers use. Proper planning and implementation of availability requires a continuous review. Utilization metrics and estimates of Return On Investment are required in order to provide services at a profitable level.
Repeatlability is the cornerstone of DevOps. Infrastructure as Code, Platform as a Service, Business Continuity and Dynamic Scaling all require the ability to re-create an enviroment quickly and consistently with no human intervention. Developing and maintaining scripts, recipes, and launch configurations that can be stored and versioned like any other code in your application is critial to maintaining a highly available, highly repeatable and stable environment. This process should be developed at the integration testing stage in development and fully automated deployment should start at the system earliest testing stage of a deployment.
Efficiency is the driving force most companies use as the reason for moving to the cloud. However, the 'lift and shift' approach only provides a small portion of the potentional for efficient use of the cloud. The 'pay as you go' model has many benefits. Some of these models will require rethinking parts of your development process and re-engineering applications to be Dynamically Scalable.