Module 3 : Enterprise Architecture and The Cloud
With the advent of the cloud, there was an immediate worry about What happens to the existing Enterprise software and hardware? What happens to my existing apps? Do I need to re-architect everything for the cloud.
The truth is that most enterprises are taking only baby steps towards Cloud Computing. e.g. Email, Salesforce, Web apps/sites, Office apps etc. The main reason for this is the initial skepticism about a new buzzword as well as lack of enterprise-readiness to adopt the Cloud Strategy head on. The main reason for the slow acceptance is mainly that enterprises are just not aware of their business challenge they want to tacke with the Cloud. The most appropriate step is to first understand you problem and seek the question to which the answer is Cloud.
On the other hand, enterprises have already worked on modernization and rationalization of most of their legacy apps. Also they have already implemented a reusable modular architecture in their enterprise by the use of SOA (Service Oriented Architecture) principles. SOA Governance whose need is now being understood by many enterprises is an added winning advantage for their enterprise. Because we already have it, the SOA governance framework can be extended to govern cloud services.
So is Cloud the end of enterprise software? Do enterprises really not need to buy hardware any more?
The answer to this question is largely dependent of the business problem of the enterprise. If its a large telecom company or a bank , doing away with entire enterprise software or hardware makes little sense.
However, for college graduates who are looking at establishing their own startups, the need for spending a lot of money on the hardware is virtually eliminated. They can rent a PaaS solution (the most common is Amazon EC2 <Elastic Compute Cloud> instances) and get to work. In cases like startups or pilot projects, Cloud Solutions are actually a boon.
What are the big companies doing about cloud? Oracle, IBM and Microsoft?
Disclaimer: The following thoughts are my own analysis and most of it is from content of Jason Bloomberg's conference. They do not reflect the views or opinions of my company whatsover.
Oracle has launched a suite of products around IaaS, PaaS and SaaS. Oracle offers Sun hardware for their IaaS solutions and are essentially hosting Oracle middleware on the cloud. They call their SaaS solutions as Oracle Fusion Apps.
IBM's cloud strategy is not aimed at the end-consumers. Their target is the big enterprises and large telecom providers who actually provide enterprises with the infrastructure to host their cloud solutions. So these are more like the ISPs (Internet Service Providers). IBM's solutions are mainly around PaaS.
Microsoft basically brand their cloud solutions under the Windows Azure tagname. Windows Azure Platform and Windows Azure Platform Appliance is their PaaS offering whereas their major SaaS offering are the Office 360 apps.
So how do I get out of this mess? To use or not to use the Cloud?
The answer to this and the enormous Cloud solutions is two words - Architecture and Governance.
It is essential to identify the business problems the Cloud best addresses, and to see where the Cloud fits into the overall IT strategy of the enterprise. What are the pros and cons of Cloud versus any other alternatives, and how the Cloud fits in the overall governance framework.
The important thing to remember is not to grab any solution just because your favourite vendor has launched it, but you analyse objectively if your enterprise really fits into that readmade suit.
What can be a sample Cloud Computing roadmap?
Disclaimer: Directly from the docs
A simple Cloud Computing Roadmap can be enumerated as follows:
- Culture/support assesment - Are you an early adopter?
- Define Goals- Financial, Operational, Competitive, Service levels
- Quantify Benefits - OpEx v/s CapEx, Performace Targets, Top-line benefits
- Define role of Cloud for business & IT
- Mitigate risk - Governance, Security
- Choose Cloud models - public, private, hybrid
- Create migration plans and milestones.
What can be a phased strategy for migrating to the cloud?
This article elaborates the six main phases for Cloud Migration for Amazon Web Services (AWS)
Phase 1. Cloud Assesment Phase
Phase 2: Proof of Concept Phase
Phase 3: Data Migration Phase
Phase 4: Application Migration Phase
Phase 5: Leverage the Cloud Phase
Phase 6: Optimization Phase
I am a product developer? Do I have to redesign by products for the cloud?
The essential thing to understand is that unless the applications are re-architected to take advantage of Cloud benefits like Elasticity and Fault Tolerance, there is little sense in using a Cloud Solution at all. As the phased strategy to Cloud migration suggests, it is very important to take incremental steps to architect your solutions for the Cloud.
When you design with the aim of leveraging Elasticity and Fault Tolerance benefits of the cloud, you will end up with a better architected app. You don't know aheas of time how many Cloud instances your app will be running on, as such is makes perfect sense to spend a little time initially and design your app FOR the Cloud.
Can I ensure my ACID transactions in the Cloud?
We have grown up reading about databases and the magic word - ACID - Atomic Consistent Isolated Durable and as such we believe that all database transaction should necessarily be ACID for several reasons. However, with the advent of transactions in Cloud, it is no longer possible to have immediate consistency of data at all instances. What Cloud assures is Eventual Consistency - i.e. - Data will be consistent after a set amount of time passes since an update.
ACID is gradually giving way to BASE in the Cloud Context.
Basic Availability - Cloud supports parial failures without leading to a total system failure . (Cloud environments are inherently partition tolerant)
Soft State - Any change in state must be maintained through periodic refreshment.
Eventual Consistency - Its okay to stale some data some of the time
The BASE requirement for transactions in Cloud also suggests that companies where real time data and accuracy is of prime importance, Cloud might not be such a good solution. A clear example of where Cloud cannot be a good medicine for all ills. Examples may include, real time inventory management for product availability and banks.
(Banks may not want to adopt cloud for reasons other than BASE - security and government regulations may be major challenges).
The main takeaway for this module would be that the adoption of cloud depends on what is your unique problem. For Cloud, one size does not fit all. An enterprise needs to carefully weight its app's requirement for scalabilty and elasticity and then decide which Cloud deployment option is right for them.