What exactly is Cloud Computing?
Cloud Computing is, just like SOA (Service Oriented Architecture), a very overloaded word.
For some it is just that their servers are hosted outside the company walls by a local provider, Azure, Amazon, etc. For others it is also building their applications around Cloud service providers such as Azure (Service Bus, SQL, Caching, Hadoop, …), Amazon (RDS, EMR, Dynamo, ElastiCache, …) or Google App Engine.
Here are some of the common characteristics that surround cloud based computing:
- Elastic Scalability (if your application is designed for it)
- Common Networks
- Shared Infrastructure
- Metered Consumption
Is the cloud my salvation?
The Cloud can’t magically make a poorly designed application or an incoherent SOA landscape magically work and perform better. You should view the Cloud as a potentially cost effective way of scaling server resources. The cost effectiveness partly comes from the fact that a lot of cloud providers allow you to automate a lot of processes (such as start/stopping servers, adding/removing servers, deployment, etc.), something that you would have to build yourself if you provide your own hosting.
You can also chose to go all in with a specific Cloud provider and reap the benefit of their hard work in providing a high level Cloud Services/APIs for solving some really hard problems within distributed computing. For some this a natural choice as they need the competitive edge and availability this can provide.
Cloud providers such as Amazon or Microsoft Azure can give you a lot flexibility and potential for automation with regards to hosting your own servers. You can rent exactly the server size and the number of servers you need. In case you need more server power you can easily (from minute to minute) upgrade to a larger server, add more servers and when you don’t need the extra power you can remove servers or downgrade to smaller servers.
Where’s my data?
When you use cloud hosting a key question becomes, “where’s my data?”.
Each provider given different guarantees in regards to how you can access your data in case the provider goes bankrupt, where backups are located (ie. is it close to the production server, so a fire can take them all out, etc.). These are important questions.
Scaling out is a requirement
One thing to keep in mind is that Cloud server power typically is several factors slower than physical hardware. This means that you either need to rent larger cloud servers or add more cloud servers (scale up vs. scale out).
Even the largest cloud servers can bee too slow for your needs, which means that to scale your applications you will need to scale out (add more servers) sooner than you would with physical hardware. This is not necessarily a problem as long as you’ve designed your applications with this in mind. When you scale out you have the potential to guarantee a much higher availability (if the application is designed accordingly).
When you build your applications around Cloud services/APIs, e.g. Amazon (RDS, EMR, Dynamo, ElastiCache, …), your’re so to speak putting all your eggs in the same basket. This can be a really good bet, if the services they provide is a good fit for your needs; but it also means that you’re tied much hard to your provider. Cloud services are typically battle hardened, have better management and instrumentation tools plus a more stable API than if you had to build it yourself.
Cloud Principles for applications
When you decide to go for a cloud based solution you need to consider, design and build according to the following principles:
- Event Driven
SOA is a Prerequisite for Cloud
One of the reasons why Cloud is becoming a requirement for many organizations is because customers and employees demand more features on more devices which requires scalability and high availability. To support many different consumer channels we need to have services that can be composed to form new applications.
Contact us and let us help you find the best solution for you.