In the traditional application development lifecycle, your development team and server infrastructure team tend to be two distinct entities. Developers write code in their environment, then provide application and database files to the deployment team to push to staging and production servers. The two teams work together to define application requirements for the server infrastructure, which is then built to those specifications. The ability for a developer to quickly and easily provision hardware resources for testing application deployment and usage scenarios can be difficult and cumbersome. Iterating through design and runtime requirements can be a tricky process, and changes can be difficult to implement.
Planning for real world use of your application, and building your app to scale easily, requires planning from the beginning of development to ensure you can take advantage of scaling web servers, database servers, and the various other resources that make your app run.
Enter cloud computing resources and tailored cloud development environments. In recent years, a number of services that allow quick provisioning of compute resources have become available. These services provide an abstracted layer that allows application code to be quickly and easily deployed to managed platforms without worrying about underlying server structure. They are removing a layer of complexity that allows developers to quickly prototype and deploy their applications with immediate results.
For the purpose of this article, I will explore a few well-known cloud development platforms, including Amazon Web Services, Windows Azure, Google Cloud Platform, and Google App Engine. Each service provides various functionality that you can utilize to quickly prototype your application and shorten time to market.
Amazon Web Services is now a well-known platform with many different uses. Some of the biggest names in online services, such as Netflix, run their services on the Amazon cloud. For application development, AWS allows a developer to spin up server resources in minutes, or deploy pre-defined application environments to cover scalable web, storage and database needs. AWS also includes a free usage tier for new subscribers. If you have an Amazon account (or even if you don't), you can head over to http://aws.amazon.com and sign up for AWS. After sign up, you can create a new micro instance web server that you can run free for a year.
If you would like further abstraction on your Amazon cloud environment, you can deploy a preconfigured cloud setup with AWS Elastic Beanstalk and deploy your application code through GIT, or using tools in your development environment, such as Eclipse or Visual Studio. This allows you to concentrate more on your code and less on a server environment. Elastic Beanstalk supports applications written in Java, .NET, Node.js and more.
Windows Azure is still a new platform to some, but has been around long enough that getting started is a simple process and integrates well with your development environment. Visual Studio includes a number of integrations to allow rapid deployment to Azure, and you can opt for preconfigured scalable environments, or simple server instance configurations that you can manage on your own. Azure should be a consideration if you are developing a .NET or similar Windows server-based application.
Google has only recently made its Compute Engine service available that is built on the same infrastructure that powers Google's services. It is not as feature-rich as Amazon, but provides excellent API resources and competitive pricing. It’s a cloud platform to watch.
Far more interesting from Google's offerings is Google App Engine. The App Engine does the best job of abstracting hardware and compute resources from the developer, allowing application code to be quickly deployed to the App Engine environment, and taking care of all application, storage and database scaling in a completely transparent manner. In addition to scaling compute resources, App Engine pricing scales with the number of uses on your app, making it ideal for startups wanting quick and cost-effective options for getting their app to market. Snapchat and Rovio (Angry Birds) are just two examples of well-known startups that are taking advantage of Google App Engine to power their apps.
Getting started with Google App Engine is also quite painless. You can test drive the service at the Cloud Playground in a number of languages, and can test your app for free, as long as you stay under daily quota limits. Google provides plugins to popular development environments, such as Eclipse, to assist in deployment and utilizing App Engine APIs. This makes building Google Web Toolkit and Android applications even easier, as these features are part of those platforms' toolsets.
There are certainly many options available to today's developer, and more arriving every day, but evaluating a few and determining if they are a good fit for your team should be at the top of your to-do list for 2014. If you're a startup and looking to get your app out to market, then this will likely be the path you choose. Contact NetWork Center, Inc. if you have any questions.