Wayne Beekman, co-owner of software development firm, Information Concepts Inc., reveals how companies can lower their operational costs by leveraging large cloud computing offerings from Google, Amazon, and Microsoft to deploy and run instantly scalable web applications.
ďEmbracing cloud-based development may require us to begin to start architecting applications differently; however the return on this investment has great potential.Ē
-Wayne Beekman, Information Concepts
Developing applications that can be immediately deployed without upfront hardware or licensing costs and can scale on-demand is the promise of Cloud-based development. As IT professionals, we need to understand how to best architect solutions to take advantage of these cloud based resources.
Cloud computing changes everything - it changes the way we need to build applications and it makes it easier and less expensive to deploy and operate those applications for scalability. The competitive advantage of owning and maintaining your own data center may be diminished as Cloud-based resources provide agility and cost savings.
Ten years ago, I saw demonstrations of XML-Based web services; the ability to build loosely coupled systems with platform independent components. This changed the way we designed and deployed applications. Today, Cloud Computing represents the next major paradigm shift in software engineering.
It's extremely costly and time consuming for enterprises to roll out applications. Even with virtualization, data centers are full. Too many enterprises purchase more servers than they need to handle what they project will be an application's peak load. Then, once they roll the applications out, they continue to pay to license and maintain the web servers, whether they're hosted, virtualized, or co-located.
Many applications' user loads are spiky, with peak usage only at certain times of the day, month, or year. Enterprises traditionally stage systems to meet worst case peak load.
With traditional on-premise or hosted solutions, you need to procure and provision servers to meet your planned peak load. If you assume your peak load at N users and have N-1 users who are actually coming in, you've bought too much hardware and if you have N+1 users coming in, you're not serving everybody.
For example, if you're setting up a web application for 5,000 to 10,000 users, you're going to need at least three web servers, two application servers, and two database servers. Buying and running that equipment for three years will cost about $500,000. That cost does not take into account additional servers for development, testing, and backup configurations.
Cloud computing, however, eliminates those costs.
Cloud computing is about building new applications and deploying them quickly without having to invest in hardware or licensing. It's about lowering your operational costs by eliminating the need to buy and provision web servers to roll out new applications. Cloud computing lets you build applications with very rich user experiences and it also lets you scale up or down as needed; only paying for the resources you use.
There are those who discourage the use of cloud computing because of the inherent security risks involved.
According to a report by analyst firm Gartner Inc., before signing on with a cloud provider, customers should ask questions about security. And they should also think about having a neutral third party conduct a security assessment. Cloud computing has "unique attributes that require risk assessment in areas such as data integrity, recovery, and privacy, and an evaluation of legal issues in areas such as e-discovery, regulatory compliance, and auditing," Gartner said in its recent report, "Assessing the Security Risks of Cloud Computing."
That may be true, but the fact is that professional IT managers worry about these security issues everyday: Where is the data? Who has access to the data? What are the compliance issues?
These concerns about security are not new. As IT Professionals, we manage these risks today and we think about how we're going to manage them in the future. IT Operations need to learn how to harness the power of Cloud-based resources, manage the risks, and continue to provide value to the business.
Three Types of Cloud Resources
There is a lot of confusion today with the term Cloud Computing. To clarify the offerings, I have divided resources into three types: cloud-based development; cloud-based infrastructure; and cloud-based applications.
For cloud-based development, you don't worry about keeping track of the hardware, the operating system, the database and the web servers. You just write your application code using one of the languages offered by the provider. The service provider meets your business needs by creating an environment in which you can develop your application-an application that will scale instantly on demand. You will only pay when it does scale. So you can build an application without worrying whether your user traffic requires building a 12-lane highway or a dirt road.
This does require that you architect your application pretty much from scratch to take advantage of cloud computing, but the returns are tremendous. You can develop instantly scalable, custom applications using cloud development platforms such as Google App Engine (GAE) and Microsoft Azure Services Platform.
GAE lets you run your web applications on Google's infrastructure. GAE applications easily scale as your traffic and data storage needs grow. With GAE there are no servers to maintain: You just upload your application, and it's ready to serve your users.
With GAE you only pay for what you use. There aren't any set-up costs or recurring fees. You pay for the resources you use. GAE costs nothing to get started. An application can use up to 500 MB of storage and enough CPU and bandwidth to support an application serving around five million page views a month, absolutely free. And an additional five million views will only cost you about $50.
If you're a .Net shop, you have to look at Azure. Microsoft's Azure Services Platform, which is still in Beta, is a Cloud-based development platform that's hosted in Microsoft data centers. Azure provides a range of functionality to build applications and it includes a cloud operating system and a set of developer services. You use Visual Studio to build new applications or extend existing ones to be deployed in Azure.
In addition to running web applications, these platforms also provide services for data storage, message queues, and databases which are designed to scale out to support thousands of transactions per second. Taking advantage of these services allows you to build systems to grow on demand.
With cloud-based infrastructure, or infrastructure-as-a-service, the provider supplies the raw hardware environment, such as servers and storage, as an on-demand service and you provide the software stack. It gives you control of your computing resources. This is a great way to migrate legacy assets and existing workloads out of the data center and into Cloud-based resources.
Cloud-based infrastructure is outsourced virtualization on demand. You run your virtual images and you build your own application stack. However, although you're only paying by the hour for what you're using, you're paying for an instance to be running. So if you spin up a computer that's running, you're paying for it whether or not a user is using it. Once it's on, it's yours to manage. That means if there's a patch in Windows or in Linux, you're going to have to apply it.
Amazon's Elastic Compute Cloud, or EC2, is an example of a cloud-based infrastructure platform. Amazon EC2 is a web service that provides resizable computer capacity in the cloud. It's designed to make web-scale computing easier for developers. It reduces the time it takes to obtain and boot new server instances to minutes. That means it lets you quickly scale capacity, both up and down, as your computing requirements change. Amazon EC2 changes the economics of computing by allowing you to pay by the hour only for the capacity that you actually use. But with Amazon, unlike Google App Engine, you're scaling up by instance not by user session.
With cloud-based applications, or software-as-a-service (SaaS), the provider takes care of everything. The service provider offers a set of software programs that you can use and you just run your application. There's very little customization. Salesforce.com, for example, offers SaaS-based customer relationship management.
Information Concepts is a 27-year-old fixed price custom application development shop. We believe that as professional IT developers, it is our responsibility to begin to architect solutions to take advantage of Cloud-based offerings. The value proposition of migrating workloads to the cloud is too compelling to ignore.
We want to help our customers lower their operational costs by leveraging large computing resources from Google, Amazon and, Microsoft to deploy and run web applications-solutions that offer instant scalability to unlimited users with no upfront hardware or licensing costs. Our initial pilots have demonstrated that we can leverage existing business logic running in the data center and leverage the scalability and cost savings of the cloud-based providers.
Using cloud computing, our clients don't have to procure and provision web servers to roll out new applications, saving them thousands of dollars in hardware, licensing, and operational costs. Our baseline architecture maintains corporate data within the customers' data centers and uses XML-based web services to connect the cloud platform to the corporate databases.
Our cloud computing solutions eliminate most of the costs of rolling out web applications. That's because we've thought about how we can take advantage of these cloud computing resources to best serve our customers. And we do that by taking the best of breed components from the best providers and building composite applications. For example, Google App Engine provides a great service for instantly scalable web applications and Amazon provides a container to migrate existing applications.
Architecting applications for these environments requires an understanding of distributed transactions. Most of us are used to building applications which scale-up with larger, more powerful servers. Cloud-based applications scale-out by distributing the workload to many, small machines.
Here are some examples of workloads that work:
The lack of a public SLA is also a risk which needs to be mitigated. When you use Google App Engine, Amazon Web Services or Microsoft Azure, the providers don't offer any public guarantees about the reliability of their services. Because you want your customers' applications to be available when they need them, you might try and negotiate a service-level agreement (SLA) with your provider.
I have seen each of these providers negotiate SLAs on a case-by-case basis. As one of the providers told me recently, SLAs are business issues, not technical. Our systems are built to provide availability. They represent an insurance policy that we need to underwrite and stand behind with our platform.
Ultimately using cloud-based resources from Google, Amazon or Microsoft may require us to begin to start architecting applications differently; however the return on this investment has great potential.