Folks,
this post will be a long one...
This week I spend a lot of time on this topic with several
clients and I sense that our client have a notion around positioning Mobile
application and services in cloud context. I have always believed that for us
to success we ought to have an adaptive and multi prong cloud strategy when it
comes to mobile. So this week I will attempt to discuss the evolution of
mobile-cloud landscape.
I will start with
cloud discussion to set the stage. So what is a cloud-computing platform? Is it
simply automated provisioning systems coupled with a resource virtualization,
where the workload is policy driven, and resources over committed and any
resource contention handled by policy driven resolution? As it turns out
technologies that provide provisioning, virtualization and policy enforcement
form the building blocks of a true cloud computing platform, but not any one
technology is a cloud offering in and of it self. The efficiency goals of cloud
are not only towards costs savings but also are defined by the business
requirement usually driven by external market forces and availability of
various enabling technologies.
Cloud computing as a
platform is amalgamation of such enabling technologies. While the concept of
cloud computing is not new, efforts such as net (work) computing and various hardware
and software virtualization technologies in the past have attempted to address
the need for ‘unlimited' resource pool capable of handling varying workloads. Let's explore what this
means. A true cloud platform provides an illusion of infinite computing
resources available on demand. The notion of on demand infinite computing
resources requires a systemic approach that includes sense and response
subsystems, with a tie into a system level monitoring subsystems which is front
ended by a rich user interface and all tied together by a robust governance sub
system. These sub systems can be further classified as a complete and
inseparable components of a cloud computing platform. Cloud computing is a new
consumption and delivery model nudged by consumer demand and continual growth
in internet services.
Cloud computing exhibits the
following 6 key characteristics:
a.
Elastic Environment
b.
Provisioning Automation
c.
Extreme Scalability
d.
Advanced Virtualization
e.
Standards based delivery
f.
Usage based equitable chargeback
The terms described below have evolved to provide a
structure and concept consumption around Cloud paradigms:
IaaS – Infrastructure as a Service
(Essentially HW + OS + Other Network services)
PaaS – Platform as a Service
(IaaS + Platform technologies such as Middleware/Directory services etc)
SaaS – Software as a Service
(Bring your Mouse and yes.. your brains.… and provision and configure/consume
services)
Now let us surface the Mobile computing driven
trends that may tip the scale in driving the cloud patterns to new heights. But
before we discuss these trends and technologies we need to understand drivers
responsible for the resurgence in cloud consumption… all driven by Mobile computing and it’s derivatives.
a.
Software
and Data Ownership –There is a complex relationship between the data ownership and
software ownership. Clients want to own the data and not the software ( due to
licensing costs and maintenance). This leads to interesting conversation around
traditional hosting/resource provisioning and ability of an enterprise to just
create Mobile application services and provide an integration point to the
enterprise. This model allows the enterprise
to control data access and ownership and yet keep up with the modern trends in
the industry at relative low costs without extensive capital investments into
software ownership. Think of this more like a “Software rental”, a concept
that lends itself to Hoteling or multi-tenancy.
b.
Burden of System
Management – With IT systems and managers driving for efficient
consolidation adding another tier
of system management to address Mobility can be a daunting task, besides monitoring
and analysis of critical business objectives gets the time share. So the notion
of provisioning, managing and monitoring system like Mobile device management,
MBaaS services ( Mobile Backend as a
service) is preferred to be managed and maintained in cloud.
c.
Continually
evolving Mobile Eco-system – Our clients have, in the past, spend
time and money to harden the
infrastructure and handle the evolution in middleware Infrastructure and platforms. There is little
or no appetite to deal with a much rapid force of changes with in Mobile Eco
system that has direct impact on the existing infrastructure. The assumption
here is that the cloud based services will keep up with eco system evolution
such as notification systems, MobileOSs, and new and emerging mobile-social integration
points ( such as OpenAuth, Social updates and notification and API economy) and
enterprise get to use and keep up wit the changes by association. Thought to
ponder upon here is how do Mobile
Infrastructure Cloud service provide keep up with this rapid change? What are
their challenges?
d.
Ephemeral
nature of Mobile Application landscape – As discussed
earlier rapid shift in the mobile landscape driven primarily by the MobileOS
vendors and Mobile services ( NFC, Payment, Notifications etc), many client
hesitate in locking in an on premise platform as many question the ability of
these vendor provided platforms to keep up with the changes in marketplace.
e.
Changing
mindset around investment and consumerization of Mobile platforms
– As our clients are still in process of
defining their ROI expectations and as business evolve to adapt to
Mobile way of doing business, there is clear lack of leadership and the idea of
disengaging or switching providers not only makes business sense but also
addresses the long term capital justification concerns. Mobility in cloud seems
a more palatable and economically viable option. Unless there is a defined business value or a ROI around
ownership of mobile platforms, this will be a “rent vs. buy” discussion.
f.
Social
’ization’ of Mobile APIs – With emergence of Mobile API services
offered by the social media eco system, and other vendors like Twillio, Google
etc clients have eased into “service virtualization’ concepts and are more
comfortable with cloud based models. After all many B2C application rely on
this emerging and burgeoning API economy.
Now that we discussed
the drivers, I would like to take this
discussion in understanding the Technical landscape that surrounds Mobile Cloud
discussions. To grasp this concept I’d like to device a classification system so we can
understand the technical landscape.
Broadly speaking there are 3
models of Cloud engagement in Mobile context:
1. Traditional Cloud - This goes back to our IaaS,PaaS and SaaS model where our clients
are thinking :
a. on premise and off premise or even
Co-location
b.
Provisioning Automation
c.
Configuration Automation
e.
HA (High availability) and DR ( Disaster Recovery)
f.
Consumerization of IT and enterprise resource reuse
Imperatives:
This goes towards our
traditional model of cloud based provisioning and consumption of services. The ROI models are similar
to that of previously used Middleware ROI models where “consolidation” and “
time to market” are primary drivers of cost efficiency. This also applies to
clients and typically large enterprise clients which is either due to
regulation or choice or business decision choice to maintain and control their
own infrastructure – on or off premise or CoLo.
Some Terms, concepts to be familiar with:
1.OpenStack
2. CloudStack
3. Chef and Puppet
4. Cloud IDE
Some notable Companies to be aware of:
1.
IBM Smart Cloud
2.
Amazon Cloud Services
3.
Rackspace
4.
Heroku
5.
Cloud Foundry
6.
Red Hat’s Open Shift
7.
Cloud9 IDE
Inference:
Focus here from a
Mobile middleware, infrastructure and components is on provisioning, configuration
automation and management of the various Mobile components. Platform ought to
have the ability to be developed, deployed, and managed with full automation
tooling integration with an ability to monitor all the components that are
deployed.
2. MBaas
and API Management -- I tend
to classify these together. There is a
reason for this. MBaaS which is “Mobile Back end as a Service” is a emerging model to provide the app developers to interface
the back end service such as a storage, data access, services access and other
mobile specific services such as Push, social network services and SMS. API
Management on the other hand is a mechanism to publish, share and meter the
usage of yet another layer of service interface. In the Mobile API economy
these go hand in hand. Think of these as not only an integration layer but also
a tier to manage Mobile interaction with the enterprise.
Imperatives:
This is becoming
increasingly common concept in
mobile parlance. We often use the term Mobile Middleware, and I think the term
MBaaS will take prime seat in Enterprise Mobile discussion as a service integration layer. The
primary drivers behind this is the rapid rate of evolution, and crowding of competing
and complimenting client technologies in marketplace is driving our clients
toward a decision model that separates the client architecture from the server
architecture and yet induce mobile specific interoperability. This
interoperability relies on not only the understanding of the client technology
but also the data structure. JavaScript is not only accessible but also easy to
use which contributes to its ubiquitous use in mobile application. This allows
for Mobile device to connect and fetch data. This data ( or service) can exists
in cloud or on premise. As long the server architecture provides a Mobile
friendly interface (JavaScript) and data structure (JSON). Use of JavaScript on
server enables an enterprise to exploit and repurpose current web development
skills to develop, deploy and manage the mobile middleware or MBaaS. Some
notable companies as LinkedIn, PayPal,
Intuit, yahoo and eBay etc, are already validating the use and growth of MBaaS
on Node.js. The possibilities are immense ranging from use of Node.js in the
heart of the enterprise to the edge and periphery of the enterprise. The model
is bound to grow in popularity due to the decoupled model that has a direct
cost implication on the development and maintenance of the Mobile application infrastructure.
Inference:
The notion of
decoupling the client ( application on the device) and server gaining momentum.
This idea of decoupling implies that regardless of client technology ( Android,
iOS-Xcode, MS – visual studio or JavaScript framework like jquery, Dojo Mobile,
and sencha etc and other framework like HTML5 Cordova and Appcelerator etc) the
server side technology should be independent and unaware of client and provide
client a Mobile specific middleware services such as a Push, SMS, data and
storage integration and access to other enterprise specific APIs.
Some examples and framework to Know are:
•Data Binding:
Backbone, AngularJS, Node js. Dojo Observable
•Routing:
dojo/router, Backbone, Node
•App Controllers:
Backbone, AuraJS
•Sync: component/model,
AngularJS services, Backbone Sync
Some companies to be aware of:
1.
Rackspace
2.
Strongloop (Loopback)
3.
StackMob
4.
Parse
5.
CloudMine
6.
ScottyApp
3. Emerging Mobile API Economy –These are services
that provide services to Mobile application. Services such as sending messages
to users, payment processing, track analytics, cloud data storage, and cloud based governance etc. Some
examples include- Twilio, Google
Digital wallets, Stripe, square, Uber, TaskRabbit, AdMob ( Google), box, etc.
Imperatives:
These technologies and
services allow application to delegate a task such as a storage , authentication
, payments etc and minimize the need for an expensive infrastructure and design
work to accomplish the same. These service invocation can be a pay per use
model or a “All you can eat” model.
The idea here is to
increase time to market, enhance developer productivity and reduce costs on
specialized services with virtually zero cost of maintenance.
Inference:
Gartner predicts the
revenue of these application service providers to rise to $25 Billion this
year. This is a growing economy and an eco system and we will need to pay
attention to this. While this may not fall under traditional sense of Cloud,
this is a cloud based service delivery and consumption model.
Some notable Companies to be aware of:
1.
IBM API Management
2.
Mashery
3.
Apigee
4.
Google API
5.
Twilio
Conclusion:
So obviously there is
a lot to consume and understand around Cloud and mobility. In conclusion, I would say this -
it is absolutely futile the working against these trends, instead we will need
to understand where do we play and what is our place in this growing and
changing eco system. We need to provide
“Design” thinking to our
clients from a business perspectives and lay the technical foundation needed to
absorb the eco system changes and drive the business imperatives. What we need
to address from a technical design perspective is the around data – it’s
storage and retrieval – surrounded by enterprise quality of services such as
security, scalability etc. From a Business perspective we ought to understand
the drivers. The obvious business drivers are costs and time to market, but
other drivers may include ( but not limited to) availability of skills,
lifespan of the mobile initiative, legacy data and processing systems and
current mobile and social presence, and so on. Mobile is a natural extension of cloud, in the evolutionary
computing paradigm cloud computing is not only essential for growth of Mobile
computing but together they set the stage for the next era.
The question to ponder
upon is – what is that next era? and how technology integrates wit the way we
live?
Reference
readings:
6.
Rackspace Cloud Mobile Stack
-http://www.rackspace.com/cloud/mobile-stacks/
8.
Forrester MBaaS -
http://blogs.forrester.com/michael_facemire/12-04-25-mobile_backend_as_a_service_the_new_lightweight_middleware