Cloud-First methodology offers a model by which a company can feel safe in choosing cloud services as its first choice for the development of web applications.
Development of web applications using cloud infrastructure has far greater benefits in terms of scalability, enhanced robustness and faster development time compared with dedicated infrastructure.
Working with customers on complex web application development over the years, has led us to identify the major obstacle for the complete adoption of cloud services, resources and infrastructure. This obstacle is a fear of being locked to a specific cloud vendor and the belief that moving from this vendor can take an unpredictable length of time and may result in unpredictable costs.
The Cloud-First methodology key concepts are:
Nowadays, cloud infrastructure providers offer the richest set of managed development infrastructure services for web application developers. These include web servers, database servers, queue systems, repositories and more.
It is well known that achieving high availability performance is hard and costly, in terms of hardware, administration and development costs. Hence, it is extremely difficult to match the infrastructure performance, uptime, robustness and scalability offered by the cloud infrastructure services.
Therefore, the cornerstone of Cloud-First methodology is to always prefer using cloud infrastructure services over dedicated resources.
- Always look for a cloud managed service, preferably one offered by the cloud provider you already use;
- Prefer using infrastructure services based on well-known and common protocols over vendor proprietary protocols;
- In case your cloud infrastructure provider does not offer the required service, look for managed web services providing the required service;
- Immediately plan on going off-the-cloud – plan on when and how you should go off-the-cloud to your own dedicated infrastructure for the same service. Having a concrete porting plan in place, accompanied by performance and cost indicators ensures that you will be triggered to go off-the-cloud when you need to do so;
When it comes to web application development, cloud infrastructure should be the first choice. However, there are situations where it is not the right solution.
The situations in which you should consider using an alternative managed service or even your own dedicated resources may vary:
Mission and business critical infrastructure services may require performance levels which are not supported by your cloud provider; due to service peaks, cloud services may suffer from unstable and unaccepted performance levels during the day; less important services may cost significantly more than managing your own infrastructure.
- For each cloud infrastructure service you use, prepare a porting plan to go off-the-cloud to your own dedicated infrastructure deployment. The plan should include porting and maintenance costs accompanied by timetables;
- Keep your porting plans as updated as possible with both dedicated infrastructure deployment alternatives and other managed web service and cloud alternatives;
- Set key performance and cost indicators (KPIs) to signal when you should port your infrastructure to another managed alternative or dedicated infrastructure;
- Plan for ongoing and continuous performance and cost indicator collection and analysis;
It is not the case of either using cloud resources or using dedicated infrastructure, but of both.
At the end of the day, a solid web application architecture is examined by its performance, availability, scalability and total cost.
Therefore, web applications should consider running their minimum (or average) computational processing resources over dedicated servers and manage the web application scale, peaks and disaster recovery over the cloud.
- For infrastructure services, such as databases, repositories, messaging and queue services, use managed cloud infrastructure services as your first choice;
- For computational background processing requirements, identify your minimum and average load and consider managing it on dedicated servers – which usually provide better performance at lower prices;
- Prepare cloud virtual servers clones for your background processing requirements and activate them in case of service peaks or when disaster recovery is required;
Cloud infrastructure services and resources are your best choice for disaster recovery and contingency plans. Cloud resources, compared with dedicated servers, are usually available in a very short period of time and in a significant quantity, and therefore are very good candidates for contingency plans in case your infrastructure goes down.
Even if your architecture does not reside on cloud infrastructure services, you should consider planning and arranging a contingency plan for your web application to run over cloud infrastructure.
- Prepare cloud virtual server images for your different servers and have them updated regularly, to be ready for immediate use in case of disaster;
- Wherever possible, prepare hot swaps for your infrastructure services and databases over the cloud, to be used immediately in times of disaster;
- Backup your data to cloud repositories to prevent data loss and for fast recovery;
The Cloud-First development process is a continuous process of utilizing cloud infrastructure services and monitoring them. In case a key performance or cost indicator for a managed cloud service is triggered, a porting plan to a dedicated infrastructure deployment is executed.
* Oracle, Java, J2EE, J2ME and MySQL are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.
* Amazon Web Services, the "Powered by Amazon Web Services" logo, AWS, Amazon Elastic Beanstalk, Amazon Route53, Amazon CloudFront, Amazon S3, Amazon RDS, Amazon SWF, Amazon SimpleDB, Amazon SQS, Amazon SNS, Amazon Elasticache, Amazon EC2, are trademarks of Amazon.com, Inc. or its affiliates in the United States and/or other countries.
* Youtube, Google App Engine and Google Drive are trademarks or distinctive brand features of Google Inc.
* Apache ActiveMQ, ActiveMQ, Apache, Tomcat, Apache Tomcat are trademarks of The Apache Software Foundation.
* IBM and WebSphere are trademarks of International Business Machines Corporation, registered in many jurisdictions worldwide.
* SpringSource, Cloud Foundry, RabbitMQ are registered trademarks and/or trademarks of VMware, Inc. in the United States and/or other jurisdictions.
* Hibernate is a registered trademark of Red Hat, Inc.
* Adobe, the Adobe logo, Adobe Flash, Adobe Flex, Adobe Flash Builder, Adobe Flash, Adobe Flash Professional, Adobe AIR, Adobe Media Server are either registered trademarks or trademarks of Adobe Systems Incorporated in the United States and/or other countries.
* Zend, Zend Technologies, Zend Framework, Zend.com, Zend Server, and Zend Studio, and associated logos and icons, are trademarks of Zend Technologies, Inc. and may be registered in certain jurisdictions.
* Microsoft, Windows, Visual C#, and Visual C++, DirectShow, Microsoft .NET, MFC, ActiveX, COM, ATL, Direct3D, DirectX, Win32, Internet Explorer, IIS, MSSQL, ASP, ASP.Net, GDI, GDI+, WMV and ActiveDirectory are either registered trademarks or trademarks of Microsoft Corporation in the U.S.A. and/or other countries/regions.
* All trademarks and registered trademarks appearing on wisemansoftware.com are the property of their respective owners.