With the growth of cloud computing, technical managers are looking for ways to leverage this emerging platform to improve performance, reduce costs, and better serve their users. Due to the complexity of enterprise applications and their dependence legacy systems, some managers have concluded that making use of the cloud to power these applications is impossible, or prohibitively difficult.
This webinar will focus on the concept of “Hybrid Applications”; applications that take advantage of the latest cloud technologies while still retaining on-premise legacy systems. Specific examples of hybrid applications will be presented and discussed in order to show how development and IT managers can begin migration to the cloud.
2. In 2014, many organizations will
look to move cloud computing
past the early phase and
constrained use cases and into
more widespread, production
adoption.
Gartner: 2014 Planning Guide for Cloud Computing
5. Key Points
The cloud can greatly improve the efficiency, agility,
and scalability of existing enterprise software
Production software must often be designed to
work well in the cloud
Businesses want to leverage and extend their
existing investments
6. Technology Adoption
New computing technologies almost
always augment, rather than replace,
existing technology
Mainframes
~1965
Client
Server
~1985
Service
Oriented
~1995
Cloud
Computing
~2005
7. 96 of the world’s top 100
banks
71% of global Fortune 500
companies
IBM’s most profitable business line
23 of the 25 top US retailers
Mainframes are still with us
Image source: http://www.websoftwareqa.com/2010/07/new-problems-for-agile-scrum/
10. Option 2: “Private Cloud”
Often just on-premises
virtualization. Provides value, but
the benefits are not a superset of
what the cloud provides.
11. Option 3: Hybrid Apps
A hybrid application spans multiple
infrastructure and cloud locations, making
use of resources and services from each.
Components of the application may run
on-premises or in the cloud.
12.
13. Candidates for migration
• Services or components that aren't meeting scaling needs
• Migrations with quick payback through reduced costs
• New opportunities: Things you can't do easily on your own infrastructure
• Services benefiting from global reach and reduced latency to end-users
• Non-production workloads such as development & test labs
14. Qualities to seek out
• Aligns with corporate security and compliance policies
• Self-contained and loosely coupled to other services
• Not sensitive to latency with remote services
• Idempotent protocols with other services (tolerant of network
hiccups)
• Already scale out and fault tolerant
15. Challenges you may face
• Need for federated authentication and authorization
• New deployment strategies
• Different monitoring and alerting strategies
• Various data placement decision (close to where it is used)
• Need for new IPC mechanisms between remote services
16. Most enterprise applications will evolve to the cloud
Cloud adoption within the enterprise should focus on the creation
of hybrid applications rather than hybrid infrastructure
This still isn’t easy, but purpose built services like Skytap are
emerging to help move specific workloads to the cloud
Summary
While cloud computing offers tremendous opportunities to improve the efficiency and scalability of enterprise applications , adoption **within** the enterprise has really just begun
This is a quote from Gartner that suggests we’ll see even broader cloud adoption in 2014
There are still a variety of obstacles however
One of the key obstacles is how people think about and plan for cloud adoption
The focused tends to be on either new greenfield applications or the creation of hybrid infrastructure
Greenfield applications are often designed from inception to run in the cloud
-> And while they do appear in the enterprise from time to time, they are certainly not what runs most businesses
Hybrid Infrastructure -- sometimes called a Hybrid Cloud -- focuses on connecting on-premise infrastructure with cloud resources
-> While hybrid infrastructure is often useful, it does not solve the harder problem of uplifting the apps that run on the infrastructure
When considering complex enterprise software, what we need… is a deeper focus on the applications
How can the **applications** themselves be extended to take advantage of the cloud
-> In this graphic, I show just one service of an existing application moving to the cloud
I am calling this a hybrid application. It is an **existing** application that has had one or more of its components optimized or rewritten to take advantage of cloud resources
--------------------
Before I get into more details about hybrid apps, I’m going to share a few reasons why I think this is a likely direction for enterprise software
The 1st point I’d like to make is that the cloud can improve the efficiency, agility, and scalability of existing enterprise software
I made this point zero because it is really the basis of my entire presentation
I won’t spend much time on this because I assume that most people attending this conference already buy off on this
The short version is that these benefits derive from well known qualities like: Metered usage, capacity on demand, global reach, and ready made application services in the cloud
The previous point leads directly to this one…. Which is that we have seen this before
New computing technologies almost always augment, rather than replace, existing technology
We’ve seen many examples of this over the years.
I am going to talk about a few of them briefly
While I wouldn’t really want to start a new mainframe business, they are still with us today 30ish years after workstations and client server architectures became common
This is 2013 data
Many bank, retailers and big companies still use mainframes, and it is IBMs most profitable business line
Let’s change gears, and do a little role playing. I’ll be the director of application development for this fabulous looking application.
(Based on the complexity, I’ll say that I work for Health and Human Services…. (there are probably 500 million lines of code in there))
Anyway, I have some barriers and some opportunities to start taking advantage of the cloud within my application
Let’s take a look at some specifics
-> This piece is running on a mainframe, and its too costly for me to rewrite from scratch in order to move it to the cloud
-> This is my data warehouse used for business intelligence
The problem is that it is under performing due to increasing load, and is becoming difficult to scale up
I’m also paying a lot in licensing fees for the data warehouse software
-> This service that holds sensitive medical record and has heightened security and COMPLIANCE needs. It could be moved, but the level of effort to maintain COMPLIANCE would be high.
-> Over here is my web tier. It is already a scale-out ASP.NET application, but scaling is manual. It could really benefit from auto scaling because the load is bursty, but I have no on-prem solution for this
-> And finally, I have an internal dev/test **lab** with some challenges
During the day there is a lot of contention for this environment, and at night it is under utilized
Because it is a single environment my team can not run tests in parallel
** Overall this lab has become a significant bottleneck in my SDLC
The rest of my application is working fine. The hardware is paid for, there aren’t many bugs or new features needed. (I don’t want to mess with it)
--------------------
*** So given these challenge, and the four points raised earlier, What are my options?
Option 1: Punt
This works in the short term, and some of companies are following this approach today
But eventually, disregarding the advantages of the cloud will benefit your competition
Your app may end up on the losing side of natural selection
Option 2: “Private Cloud” (which often amounts to just on-premise virtualization)
While on-premise virtualization does provide value, the benefits generally don’t overlap with what a the cloud can provides
On-premise solutions have High CAPEX requirements and low elasticity
They usually lack the scalable application building blocks provided by the cloud
And most importantly: Your IT shop needs to manage both the on-premise infrastructure along with the applications that are running on top of them
Option 3: Start creating Hybrid Applications
I described hybrid apps already briefly and I have a more complete definition on this slide
Basically, are applications that runs in multiple places. Often partially on-premise and partially in the cloud
The important point is that it is the **application** that is changed to take advantage of the cloud rather than the infrastructure
Let’s return my role as the owner of this complex application and convert it into a hybrid app
I’ve found three component that I can uplifted to take advantage of the cloud
-> I’ll start with the data warehouse system
If you recall, it was under performing and was going to be difficult for me to scale up
-> So lets port this service to Amazon Redshift.
This **will definitely** take development effort, but I’ll see dividends in reduced costs and better scaling, that should result in even more insights from my data.
This service was fairly easy to move because it is
Self contained
And not sensitive to latency with the rest of my system
-> Next I’ll look my application’s web tier
It is already a scale-out ASP.NET application. My main goal is to take advantage of auto scaling to handle bursty demand
One challenge is that the web tier’s connection to its database **is** latency sensitive, so I don’t want to separate those two components
-> To avoid problems, I’ll move the both web tier along with its DB to EC2 and RDS.
Communication with the rest of my system is over a message bus that is low volume and loosely coupled. So this is a good place to divide my app.
-> And finally, I’ll consider my problematic dev/test lab
Rather than have just a single dev/test environment, I want to be able to quickly deploy and copy multiple environments on demand
I want each environment to be fully isolated form all the others, but also easily sharable.
-> Since my night Job happens to be the CTO of Skytap, I have conveniently realized that I can get these qualities,,, and more,,, by moving my dev/test environments into Skytap
(I’ll demo a few of the features in a few minutes)
Since Skytap can use AWS or more traditional infrastructure under the covers my production deployments and my dev/test environments will be on similar infrastructure
So those are the only components I want to move for now
-> I’ve avoided touching the areas of my app that where difficult to move to the cloud like the mainframe and sensitive data
In fact, most of my application is left unchanged
To do this, you need to start looking for components to migrate
Here are a few ideas for finding good candidates to move
More elastic
Metered usage, low hourly rates, scaling down
Ready made app services
AWS has broader reach
The last point is relevant, because non-production workloads that are associated with your application often have fewer constraints and are easier for businesses to move to the cloud
In his keynote yesterday, Andy Jasey talked about the migration of dev/test workloads as one of key strategies for cloud adoption
When you find a candidate component of service for potential migration to the cloud, how do you qualify it?
This certainly isn’t an exhaustive list, but the easiest components to move will have one or more of these qualities
Since we’re being opportunistic
(read them)
Of course it will never be quite as easy as I’m making it sound
These are some challenges you may face while migrating components to the cloud
(skim points)
Need for data replication or caching
achieve qualities like guaranteed delivery
To summarize
I strong believe most enterprise applications will evolve to the cloud.
Cloud adoption within the enterprise focus on the creation of hybrid applications rather than hybrid infrastructure
*** Forklift upgrades are not desirable, shouldn’t be expected, and are not practical
This still isn’t easy, but purpose built services like Skytap are emerging to help move specific workloads to the cloud