Most large enterprises are reluctant to adopt Cloud based service, but few realize that one of the easiest ways to introduce the Cloud for your enterprise is to start using it for development. Today’s Cloud offerings, such as Amazon’s AWS EC2 and Rackspace Cloud Hosting, provide low-cost, self-managed services. By using one of these cloud hosted solutions, your development and testing teams can reap the following benefits immediately:
- Rapid Deployment – Your team will be able to startup an environment within minutes versus the weeks (or even months) that it typically takes to procure and setup a traditional hardware infrastructure within your enterprise. The sooner you can start building your product, the sooner you can get it out to market.
- Significantly Reduce Hardware Costs – The pay as you use model for most offerings gives you the flexibility to make efficient use and control of your budget. In addition, you are not locked into the capital expenditure of buying dedicated servers that will likely be antiquated before you can fully depreciate them.
- Heavy Duty Hardware for Short Bursts – In the past when you needed to execute performance testing, you had to allocate a mirrored copy of the production environment for testing (normally this would be a staging environment). With Cloud servers you can bring up your clustered high-performance performance/stress test environment when you need it \ and shut it down when you’re done so that you only pay for what you use.
- Reduce Software Licensing Costs – Amazon’s RDS offering allows you to create Oracle database servers with the license included in the pay as you use model.
- Fast and Flexible Configuration – Define what kind of hardware you need and let you decide when/what you need: need a bigger server or a new disk? Allocate and mount it in just minutes.
- Security – Both Amazon’s and Rackspace’s underlying technology infrastructure is secure, with both having PCI validation status and, if used as a web server, has most of the standard security protections built in (such as protection against DDoS, Port Scanning, etc).
Despite the ease and flexibility cloud hosted development provides, there are several considerations to keep in mind when you do move to the cloud:
- Create a Configuration Plan – There are a lot of features that come with Amazon or Rackspace, but you still need to have proper configuration management processes. Identify and document items such as: Where should my source code repository be? What’s my backup strategy? What ports should be open and which IPs should be allowed to access it?Â Who has access to the root keys?
- Plan for Movement – Create virtual disk volumes separate from the virtual server’s “root disk” and you get the flexibility to move your files easily when you switch to a different/larger capacity machine when you need it.
- Secure Your Virtual Environments – Leveraging the Cloud obviously means that you are outside your company’s firewall, so you must implement common security measures to protect your environment and your company: Keep your server locked down and only open ports that you need; use SSH and secure your applications; and apply your company’s IT policies where applicable.
- Use Internal IPs Whenever Possible – If your applications are communicating to other applications within EC2, use the internal IPs. This gives you better network latency and reduces the cost of your bandwidth (since you also pay by the number of bytes go in/out of your server).
- Databases May Need To Be Always On – Having a dedicated database server also means that you’re best keeping it at 24×7. Because Amazon changes your internal IP every time you turn off the server, you will need to set it up again when you restart (and if you use internal IPs, your applications need to be reconfigured as well). We recommended keeping your DB server up, unless you have a long lull in your development cycles.
- Monitor Your Usage – Keep tabs on your account and manage your usage effectively. Understanding your usage will help you determine if you can downsize your server instances or if you need to upgrade to a larger instance.
- Plan for Outages- Amazon’s regional cloud outage in April 2011 emphasizes your responsibility to have a business continuity plan. By creating snapshots you’re able to move to an unaffected region and continue your development. Note: even if you are not using the Cloud you should have a business continuity plan.
The Cloud’s flexibility and low-cost makes it a great opportunity to help reduce your development and testing costs. In addition, by using it in a lower-risk environment you can begin to introduce Cloud concepts into your company and shift your organization’s thinking about IT environments.
End Note: At BlueFletch, we typically use Amazon EC2, Microsoft Azure, and Google App Engine for our projects.Â If you have specific questions around our experiences with any of those technologies, feel free to reach out to us at: email@example.com