Thursday, 15 March 2012

Talk over coffee- Hybrid Cloud Intro series….

 

A walk into an organization IT department & we find a large number of applications which support the business of the organization and are critical by nature & the  not so critical ones, we often get into this debate with the customer I’m really not ready to move the complete stack into cloud I’d prefer a fair mix or private & public cloud. The customer may come back telling I only want to use the compute of the public cloud in certain peak situations. This discussion is acceptable as this is a real problem and so what we have as a solution the hybrid cloud. Hybrid cloud is a mix of both we yet have to get to clear boundaries of how much is the mix.

Getting Definition of Hybrid Cloud hopefully Correct….

So by definition what do I mean by hybrid cloud? As defined by NIST…

Hybrid cloud. The cloud infrastructure is a composition of two or more distinct cloud infrastructures (private, community, or public) that remain unique entities, but are bound together by standardized or proprietary technology that enables data and application portability (e.g., cloud bursting for load balancing between clouds).

Some real disruptive thinking………………………

Using two sets of criteria to define cloud deployment models roots inconsistency and ambiguity.

As defined in SP 800-145, a hybrid cloud is a composition of infrastructures, yet at the same time a private cloud and a public cloud are defined according to their intended audiences. The change of criteria in classifying a hybrid cloud roots inconsistency and ambiguity in the deployment models presented in SP 800-145. Forming a concept with two sets of criteria is simply a confusing way to describe an already very confusing subject like cloud computing.

"Hybrid cloud" is an ambiguous, confusing, and frequently misused term.

A hybrid cloud is a composition of two or more distinct cloud infrastructures (private, community, or public) as stated in SP 800-145. That is to say that a hybrid cloud can be a composition of private/private, private/community, private/public, etc. From a consumer’s point of view, they are in essence a private cloud, a private cloud, and a public or private cloud respectively. Regardless how a hybrid cloud is constructed, if it is intended for public consumption it is a public cloud, and if for a particular group of people it is then a private cloud according to SP 800-145. Essentially the composition of clouds is still a cloud and it is an either public or private cloud, and cannot be both at the same time.

For many enterprises IT professionals, a hybrid cloud means an on-premise private cloud connected with some off-premise resources. Notice these off-premise resources are not necessary in reality a cloud. In such case, it is simply a private cloud with some extended boundaries. A cloud is a set of capabilities and must be referenced in the context of the delivered application. Just placing a VM in the cloud or referencing a database placed in the cloud does not make the VM or the database itself a public cloud application.

The key is that a hybrid cloud is a derived concept of clouds. Namely, a hybrid can be integrations, modifications, extensions, or a combination of all of cloud infrastructures. A hybrid is nevertheless not a new concept or a different deployment model and should not be classified as a unique deployment model in addition to the two essential ones, i.e. the public and private cloud models. A cloud is either public or private and there isn’t a third kind of cloud deployment model based on the intended users.

“Hybrid cloud” is perhaps a great catchy marketing term. For many, a hybrid seems to suggest it is advanced, leading edge, and magical, and therefore better and preferred. The truth is "hybrid cloud" is an ambiguous, confusing, and frequently misused term. It confuses people, interjects noises into a conversation, and only to further confirm the state of confusion and inability to clearly understand what cloud computing is.

 

Hybrid Cloud 101….

Needed a basic 101 on hybrid , this a hybrid cloud video by VMWare , not that it mandates  VMWare knowledge the idea is get the concept clear

.

Cloud like any other IT trends needs a long term vision and short term adaptive strategy which changes based on the market requirements, not to mention the long term vision continues to guide the overall direction. The hybrid cloud is a reality and does fit into the long term vision however the short term strategy for the same is skewed with each using the hybrid space as a sales pitch example MSFT , Amazon & VMWare.

 

Understanding the Hybrid Cloud Play……

image

  Referring to the diagram above most organization start of there Private Cloud experiment with virtualization and first step is virtualized data center, next to come into the Private Cloud is the line of business application and finally data storage.

Community Cloud is sharing of private cloud within /between organizations.

The Public Cloud pretty much breathes the NIST guidelines wont get too much into that what we are trying to focus on the strategy of hybrid and the public cloud picture is drawn in retrospect to the same. The key element in the Public Cloud is the business strategy (in conjunction with hybrid cloud only).

Hybrid Cloud is the entire picture inclusive of the public & the private cloud.

 

Precision Questioning for the Hybrid Cloud…

Getting past the definition & 101 phase the next question pops up what and when to use Hybrid Cloud.  Precision questioning can help you navigate the Hybrid Cloud discussion better.

1. What are the New Non Mission Critical Functionality that are planned to be built in next 2 years:  This is a very good candidate for the cloud its new functionality required can be a candidate for PAAS or SAAS depending on the nature of the workload.This is typically a low risk low returns item can be tackled very easily. Driving the value proposition in this query is not difficult.

2. Can some applications directly benefits by virtualization? This can be a quick turn around for the question “maximizing the use of the resources”, However this does not bring down the overall cost of operation whether public or private. This typically is a low hanger.

3.. What are the New Mission Critical Functionality/Accessing Private Data that are planned to be built in next 2 years? ex: Payroll System. This conversation can be fragile and this will must probably be driven into the private cloud of the organization. This is high return and low risk if ported on private cloud as most of the phobic queries are directly addressed “we are in private cloud”.

4. Do you see any of your application which may need to scale on an event or some specific time period of the year? ex: tax filing applications.  The idea here is use the cloud to scale the existing workload.

5. Refactoring Existing Functionality , this is where the existing ESB is taken and made cloud ready. This is a difficult conversation to have with the customer it completely depends of ESB’s state of readiness to move to cloud.  Depending on how the discussion with customer goes this most probably will turn out to be a low priority.

6. They Final Key Question “How much of existing private data would want to be moved to the cloud”. This is high risk and very high return item. What is max which can work here is a private cloud.

7.  “Migration of Existing Functionality i.e existing line of business application to the cloud”.

image

Architecting Solutions that span Private & Public Clouds

  • On Premises IT with Off Premises Cloud.
  • On Premise IT with Multiple Off Premises Cloud
  • Cloud Striping
  • Distributing Community Cloud
  • Lift and Shift
  • Batch at Scale/ Bursting
  • Images in CDN
  • Adding Odata
  • Shopping Cart
  • Compliance
  • Partner + PaaS
  • Cloud + Optimized
  • Outsourcing
  • Synchronization
  • Scaling and Caching
  • Pull back
  • Big Data
  • Consumerization

Research Speak……

NIST & Gartner have come out with some models on the hybrid cloud. NIST seems to be well defined and easily understand in terms of what they mean Hybrid.

Below is the NIST definition represented.

image

The Gartner definition revolves around what they call is Hybrid IT which acts a broker and switches between internal and external cloud.

image

The Gartner Definition is very sketchy and no clear guidelines.  The IT organization acting as a broker is a very noble concept but putting into practice the actual implementation will call for a very different conversation as we look at the overall Hybrid IT strategy from an true implementation point of view.

The Gartner report can be found here https://skydrive.live.com/redir.aspx?cid=b4c4034e55e4a63f&resid=B4C4034E55E4A63F!598&parid=root.

 

Implementation excerpt from the Gartner Report…..

Hybrid IT is likely to rely on hybrid clouds. Hybrid clouds are a connection or integration between two clouds — usually between an internal private cloud and an external public cloud. Hybrid clouds are constructed by using software or hardware appliances that enable applications and data to more easily migrate among connected clouds. For example, many applications are dependent on identity management systems to authenticate users or to consume terabytes of data, or they have
deterministic input/output (I/O) latency requirements. These dependencies often prevent applications from migrating to the external cloud. Hybrid cloud solutions solve each of these dependencies in unique ways.
Essentially, two types of hybrid clouds exist:
■ Service interface-based: The service interface-based hybrid cloud utilizes an appliance to present a list of cloud services to the end user (i.e., the cloud consumer). When the user selects a cloud service, the appliance redirects the user to an internal or external cloud service based on the consumer's identity.
■ Infrastructure-based: The infrastructure-based hybrid cloud is essentially a software or appliance bridge designed to augment internal IT resources and integrate two clouds by connecting the back-end infrastructure of an internal cloud to one or more external cloud services.

Closing Comments…….

By definition no one has built a pure hybrid cloud component, taking an example of large multinational what they have an on premise and off premise kind of IT infrastructure which kind of complements the Gartner story revisiting the definition this what comes to my mind.

“An integrated infrastructure whose unique assets, although separated by well defined boundaries are connected via a standardized proprietary technology to broker data and application interoperability in order to optimize computing resources, increase shareholder values and reduce risks”. 

Hybrid Cloud More detailed post coming next …… Applying cloud attributes based on NIST for Hybrid Cloud is something what I plan to write next.

 

 

 

 

Saturday, 10 March 2012

Cloud Based Application Architecture–What is it really boiling down to….… CQRS!!!


My earlier post on Architecting the Private Cloud shed light on real life scenario based on some of the customers experiences on what to ask, what are the steps on moving into Private Cloud and an example on mapping the services to cloud attributes.  In the cloud we are governed by the cloud attributes to a large extent. In this post I want to take a dig into “what dwells into an average developer or architects mind on moving an on premise application on to the cloud”. The cloud can be private or public doesn’t matter , the assumption the private cloud architecture is in line with earlier post holds here.
What am addressing is post is “What are the software pattern & frameworks that are emerging in the cloud scenario” & What do customers do in practice.
As the new technologies come in they challenge some of the existing thinking, pattern way of writing of software. In the pre cloud world a standard distributed application breathed the following
  • Synchronous:  Does Request/ Response ring a bell, not far long ago in the web world this was a standard defacto and everyone just loved programming around this pattern.
  • Dependency
  • Tightly coupled architecture
There is effectively no absolute right or wrong “ its relatively right/wrong” What stood as good design practice a decade ago now probably is bad relatively speaking, in the cloud world what relatively make sense is
  • Asynchronous
  • Independent Layers
  • Loosely coupled architecture 
The above patterns is something we have seen in past couple of years and have used it in some form or the other, The SOA – ESB pretty much lives on these patterns. Frankly speaking what has been extended to the cloud is SOA – ESB Next Generation.
So what’s happening differently here is “Asynchronous nature” the programming paradigm is becoming a standard for Windows 8.
In the past we had the Presentation Layer which is tightly coupled to the Business Layer, a lot of the architecture guidance has been around moving this to a true n- tier architecture which involved decoupling the Presentation and the Business Layer by introducing a Services Layer & decoupling the Business/ Data Layers using something like ORM.  Essentially this is horizontal decoupling.  Most of our current day applications exists in this form.
The question really boils down “Is this architecture good enough for cloud?”
How can be this taken to a cloud deployment may amazon (aws) or windows azure so evidently this is what it looks like
image

Depending on the nature of technology you can choose any 1 of them, the above is an Amazon stack. At high level the amazon application architecture would look like something below. 
In Azure the presentation layer would be assigned to a web role and business/application tier would get into worker role. The database would be a standard sql azure or a blob. In case of amazon the presentation and application would be running on something what the call is the elastic bean stalk which is similar to web and worker role combined & database
  • RDS – Relational Storage Service
  • Simple DB
  • S3 – Blob
image
Above is a visual representation on Windows Azure Deployment
The above architecture can scale out with more web or worker role this currently works on the cloud but there is a reason as why do we have to relook at this architecture.

The Problem Statement Defined…

In the above architecture when it comes to presenting or distributing information the multiple viewers its not easy to scale that read portion of the solution without affecting the write portion of the solution so you have the inserts, updates & reads this is an overhead there is a need to isolate the read from writes”. There’s needs to be a segregated IO channel for both reads & writes. Typically in write there will be record locking.
image
This is not new we have seen architectural solution something like ORM which introduces a cache which kind reducing the read latency for the overall application at the cost of memory. The caching mechanism in most scenarios is an after thought.
As always there will be new ways to solve the issue they new term here is CQRS (Command Query Response Segregation)

Command Query Response Segregation to your Rescue….

CQRS first surfaced by Greg Young a complete post is available by Martin Fowler.
Getting the Basics on CQRS
The problem statement from an architectural stand point of view is to segregate the the Reads from the Writes , so at a very simplistic level a notion that you can use a different model to update information than the model you use to read information.
We are used to the idea of thinking of CRUD as a single datastore for interaction purpose.. By this I mean that we have mental model of some record structure where we can create new records, read records, update existing records, and delete records when we're done with them. In the simplest case, our interactions are all about storing and retrieving these records.
The needs to todays are more sophisticated the need to look at the information in a different way to the record store, perhaps collapsing multiple records into one, or forming virtual records by combining information for different places. On the update side we may find validation rules that only allow certain combinations of data to be stored, or may even infer data to be stored that's different from that we provide.

Since the information request is so varied there is need to have multiple representation of the same information, When users interact with the information they use various presentations of this information, each of which is a different representation. Developers typically build their own conceptual model which they use to manipulate the core elements of the model. If you're using a Domain Model, then this is usually the conceptual representation of the domain. You typically also make the persistent storage as close to the conceptual model as you can.
This structure of multiple layers of representation can get quite complicated, but when people do this they still resolve it down to a single conceptual representation which acts as a conceptual integration point between all the presentations.
The change that CQRS introduces is to split that conceptual model into separate models for update and display, which it refers to as Command and Query respectively following the vocabulary of CommandQuerySeparation. The rationale is that for many problems, particularly in more complicated domains, having the same conceptual model for commands and queries leads to a more complex model that does neither well.

By separate models we most commonly mean different object models, probably running in different logical processes, perhaps on separate hardware. A web example would see a user looking at a web page that's rendered using the query model. If they initiate a change that change is routed to the separate command model for processing, the resulting change is communicated to the query model to render the updated state.
Write Operations become Commands are put in a queue , Read Operations are essentially queries.
CQRS as a concept is a set of principles, a way of thinking about software architecture
As a Pattern it is a way of designing & developing scalable , robust enterprise solutions where reads are independent from the writes.
Benefits of CQRS
  • Scalability: Ability to increase or reduce the number of resources without affecting the end user experience.
  • Speed: Faster delivery of information is crucial
  • Reduced Complexity: Improved Maintainability.
My opinion on benefits on CQRS in addition to above is segregated pricing of cloud in terms of reads and writes could be also a key driving factor.

CQRS & the data stores story…

With the read and write separation the data store implementation can be many
  • Can have separate data store for read (on cloud) & write on premises and replicate back to the on cloud read data store.
  • Can have the same data store with 2 different object models.
  • Can have the same data store with same object models implementing the query & command interfaces 

How Does CQRS really solve our Big Problem Statement..

Coming back the architecture n tier architecture in cloud and how does CQRS address it
image
The CQRS implementation has below is a conceptual understanding
  • When users ends up doing some operation that operation becomes a command, that command is stored in the command queue,
  • There some kind of background process typically a worker role & the command handler is running in that process the command handler is looking in queue of commands and individually processing them when its finished processing them it will take them and raise an event that typically ends up in an event queue.
  • At the very same moment there may be a dispatcher running. The dispatcher is also known as an event processor and its looking at the events queue and processing them and dispatching them as a bunch of readable data stores and the readers have the data in the format
Commands are used for writes ,Events are used to Read operations. The command handler and the dispatcher can be in different worker processes or the same .
From a CQRS there are some other patterns which are required to support the overall construct below are the same.

Domain Driven Design (DDD)

The Command and Query end up functioning on a Object Model. From an implementation stand point of view they can have different object models or same doesn’t really matter, the intend has to be the object model very similar to the persistent model.
The model can be based on a complex domain design.  The focus of any model has be on the domain and domain logic and be technology agnostic to a large extent.

Event Sourcing

Cloud Application have to follow the asynchronous pattern. Given that we are in a disconnected , stateless world we need to use some mechanism to communicate between components event sourcing becomes an alternate for the same. Event sourcing is a simple concept its like storing all the user actions and storing it as a time sequential list.
  • Captures all changes to an application state as a sequence of events.
  • Allows developers to determine how much much a given state has reached
  • Also allows developers to reconstruct past states
Event Sourcing - Capture all changes to an application state as a sequence of events.
We can query an application's state to find out the current state of the world, and this answers many questions. However there are times when we don't just want to see where we are, we also want to know how we got there.
Event Sourcing ensures that all changes to application state are stored as a sequence of events. Not just can we query these events, we can also use the event log to reconstruct past states, and as a foundation to automatically adjust the state to cope with retroactive changes.
The key to Event Sourcing is that we guarantee that all changes to the domain objects are initiated by the event objects. This leads to a number of facilities that can be built on top of the event log:
  • Complete Rebuild: We can discard the application state completely and rebuild it by re-running the events from the event log on an empty application.
  • Temporal Query: We can determine the application state at any point in time. Notionally we do this by starting with a blank state and rerunning the events up to a particular time or event. We can take this further by considering multiple time-lines (analogous to branching in a version control system).
  • Event Replay: If we find a past event was incorrect, we can compute the consequences by reversing it and later events and then replaying the new event and later events. (Or indeed by throwing away the application state and replaying all events with the correct event in sequence.) The same technique can handle events received in the wrong sequence - a common problem with systems that communicate with asynchronous messaging

Cloud Scenario #1 – Important concepts of the Cloud are Scalable & Elasticity, the requirement really boils down to application built in terms of components and baked into a service unit. These service unit have a SLA,  service units can be a conceptual lines business application or functional module which has to be stateless. A hypothetical situation could be the fabric controller is running an optimization algorithm and decides to shoot down your running applications and rebuild it on another instance Event Sourcing is something which is much needed here to do a complete rebuild.
Structuring the Event Handler Logic
There are a number of choices about where to put the logic for handling events. The primary choice is whether to put the logic in Transaction Scripts or Domain Model. As usual Transaction Scripts are better for simple logic and a Domain Model is better when things get more complicated.
In general I have noticed a tendency to use Transaction Scripts with applications that drive changes through events or commands. Indeed some people believe that this is a necessary way of structuring systems that are driven this way. This is, however, an illusion.
A good way to think of this is that there are two responsibilities involved. Processing domain logic is the business logic that manipulates the application. Processing selection logic is the logic that chooses which chunk of processing domain logic should run depending on the incoming event. You can combine these together, essentially this is the Transaction Script approach, but you can also separate them by putting the processing selection logic in the event processing system, and it calls a method in the domain model that contains the processing domain logic.
Once you've made that decision, the next is whether to put the processing selection logic in the event object itself, or have a separate event processor object. The problem with the processor is that it necessarily runs different logic depending on the type of event, which is the kind of type switch that is abhorrent to any good OOer. All things being equal you want the processing selection logic in the event itself, since that's the thing that varies with the type of event.
Of course all things aren't always equal. One case where having a separate processor can make sense is when the event object is a DTO which is serialized and de-serialized by some automatic means that prohibits putting code into the event. In this case you need to find selection logic for the event. My inclination would be to avoid this if at all possible, if you can't then treat the DTO as an hidden data holder for the event and still treat the event as a regular polymorphic object. In this case it's worth doing something moderately clever to match the serialized event DTOs to the actual events using configuration files or (better) naming conventions.

Challenges with CQRS

  • Separating Reads from Writes introduce challenges
  • Data Staleness need special handling
    • CQRS doesn’t consider staleness as an exceptional cases, its expected
    • CQRS does not use record locking mechanism
* The SLA of having data staleness down near zero is something which will drive a lot of design decisions ex: banking applications.
Eventual Synchronization of any primary data repository and any caching mechanism must be guaranteed.
Probable Solutions for Data Staleness in CQRS
  • Processing of command changes to the primary data storage mechanism and events publishing should be performed transactionally together.
  • If using a message bus this can be achieved by using transactional queues.

Some the frameworks on CQRS…

Lockad.CQRS – Get the binaries here - https://github.com/lokad/lokad-cqrs/ based on .NET meant for Windows Azure
  • Managing of message contracts, serialization formats, and transport envelopes
  • Sending messages to supported queues: In memory and Azure queues
  • Message scheduling for the delayed delivery of messages to the recipients
  • Message routing for implementing load balancing and partitioning
This is a good place to start.
Ncqrs – Main features find the binaries here - http://ncqrs.org/
  • Command handling, including servicing & execution
  • Event Sourcing support
  • Domain modeling support
  • Additional support for
    • NServiceBus
    • SQLite
    • StructureMap
    • RavenDB
What's happening in the CQRS community?

CQRS is still evolving it is an important pattern and involves many supplemental pattern for supporting cloud based application architectures. 

Saturday, 3 March 2012

Architecting the Private Cloud

 

Private Cloud is next most abused term in current times after SOA. When we get into a conversation with CIO “ lets move onto private cloud” the prompt response comes in lets have a hypervisor and orchestrator and we are done, be it Cisco, VMware, MSFT they all talk the same jargon. I’d like to differ from the standard jargon take a step back. I have written this post based on actual customer interaction I have followed this process. The flow of the article goes from questioning your customer,  the steps involved in architecting private cloud, putting your learnt knowledge to use an example. This article is simple to read chill on…..

Gaining Clarity by Precision Questioning

First and foremost I would ask some questions to the customer just to understand the context correct & get the conversation going in the right direction

1. What do expect to obtain from a private cloud? Some responses that are typical I need resiliency, the current disaster recovery data center is dysfunctional. From this conversation one gets to understand which key attributes have decided to push the conversation of a private cloud & at the same you get to understand there is an indeed business problem.

2.What happens to your IT organization when you deploy a private cloud? Obviously the response is “ haven’t thought about that”. Dwelling deeper into this one would probably get an idea what kind of skepticism is one going to be met with,and what are probable impediments at an early stage and a later stage from an organizational dynamics stand point.

3.Does Investment = Efficiency “What are the steps to IT efficiency” This question is not intended to be around Quality of Services it more around efficiency of IT once it moves to private cloud , some typical  responses are “ does it mean buying new piece of software or getting additional trained resources on private cloud”.

4. Do you think Virtualization = Private Cloud? This is one question where most responses are Yes and we get an idea how much of real education on cloud has the customer had or some marketing pitch from MSFT  or VMware has been there.

5. Does Automation = Efficiency? Define services first or automate first?  This is a tricky question there is no straightforward answer to this some customer may end saying automate first test and some may say I want to build the catalog of services first then automate then either of the approaches are fine

6. When a user selects one more .. what happens? Typical example is I need one more SAP connection in your private cloud what happens is it expected that private cloud will auto provision and hand over the service request in matter of minutes or well it take longer “like I may need order more hardware for every 10 additional SAP connection”. In short we need to get a definition of the service unit what is this one more. There is equal responsibility on the end-user requesting and and the data center sufficing this request, the user is aware there is a cost attached to in terms of compute, storage & network.

7.Does a central console give your application depth end to end monitoring?

Understanding & Drafting The Private Cloud Strategy

 

image

In the green we have a stack of cloud attributes a simplified one from NIST. At the end is link to the NIST guidelines. In the current scenario as it exists today the virtualized instance is provided by hypervisor however the entities that are provide self service portal, service mapping,automatic provisioning, automation resiliency  kind of services are a collection of the application stack and the management stack, This more importantly is a total mess.  They are not segmented properly as one  might expect, In practice at some levels there is no concurrence example the application stack cannot provide for automated provisioning as the components in the underlying architecture are not quite there. And some cases there may  have service mapping but it can be too complicated. The utopian ask will be that we hope to application unit of deployment that could be deployed as is and get to use all the entities as is this is what we call a mature private cloud.  We hope that since we would be at mature private cloud state we would be in a position to move to public cloud more easily.

So what is really the strategy today it’s a purchasing strategy where I buy the technologies with probable entities support and in the near future it will be deployment strategy assuming we have figured out which type unit is deployed on which kind of stack. Azure should eventually be an application strategy.

Purely talking from entities stand point it may not be correct to tell the IT staff to go ahead buy the stack need to go through some discovery process as in some case I will have to rewrite the application stack in some cases the entities fit the bill from feature supportability stand point of view.

Steps to Build a Private Cloud

image

The 3 key benefits of a private cloud are Automation, Virtualization & Integration.

First Step – Standardization

It’s a requirement to standardize the unit of deployment at a component level. Components essentially become the configuration unit a collection of configuration unit become a service unit.  The service unit is defined by the end user example for IT staff a service unit could be bare metal services on the contrary if the end user is a business user it may mean a full blown user with applications or a single application. The service unit is what we finally offer , which gets metered and has a SLA. Example in the below figure.

image

Define clear configuration units that can aggregate and create service unit

image

Second Step – Baseline it.

Baseline essentially means understanding the health of each individual service unit this essentially means do statistical analysis on why did the individual service unit break and number of times too.  Therefore we understand what are the methods where the failure occurred inclusive monitoring and health management. This is adding a procedure of Statistical Analysis to the datacenter monitoring.  The Benefits of Deep application monitoring and end to end heterogeneous application management,

image

How does one achieve Deep Application Monitoring?  Firstly there is a requirement of tool which deeply understand the architecture & dependency of the different layers of the application this would discover the application dependencies which in turn would enable monitoring end user and application components. In case of an alert the information produced at a micro component level will help in isolating the root cause which will help in remediation.

image

Third Step – Service Management

This step is drafting SLA for the services based on step 1 what services are required , step 2 defines how the services are going to remain healthy

image

SLA Management and processes are very similar. But it is all about the service templates that you apply this is where your grab the configuration units and put them together in service units.image

Fourth Step – Process Engineering & Pre-Production

Quality Assurance for Pre-production. Every single process in the environment has to understood unto the last level of detail & documented. Themes for this steps are necessarily are quality assurance & pre-production practices. Pre-production practices make sure everything that gets into production goes through an exhaustive pre-production.

image

Fifth Step – Automation & Orchestration

This steps what service units are to be automated and orchestrated. The Benefits of process automation and orchestration

image

The first question that comes up who orchestrates should be the developers or datacenter  system administrators. In other words the central console of monitoring will need developers to script as well as will be required to the statistical analysis as well do the automation. In the process we move refining the automation process to finally writing the playbook.

 Sixth Step  – Service Lifecycle

ISO 9000, MOF ITIL pretty much comes in here.

image

Seventh Step Self Service

Self Service entity to be enabled and access given over to the end user. Self service should also be in a position to manage capacity.

 

Services Layer in Standard IT Organization – Putting Principles to Practice……

The Services Layer is important wanted to take an example of standard IT organization and see how it maps into the services layer.

Starting with doing on layers of a Private Cloud the figure indicates what it looks like , this may not be 100% complete but its good for a starters conversation. If I grab the layers from a NIST model we start pretty much at physical/ hardware resources which include Real Estate, Power, Cooling , Bandwidth, Server, Storage, Network & Fabric.

The next layer is the Virtualization Extraction which is virtualization layer which virtualization and networking. The next one is Management which goes from Monitoring all the way to security.

Infrastructure as a Service / Service Delivery which is self explanatory. The last is the access layer.

image

Sample of an IT organizational chart

Referring to the org chart below the extreme left “Distributed Systems Management” is the area which takes care the Desktop and other devices in terms tablets, phone etc.. and in addition to it the call center & desktop support. The next vertical is the Application Management (Development & Support) for the business applications which could developers as well. The next is the Data Center Management which include a whole lot of things, the interesting aspects to be noted are business support, financials & chargebacks, Portfolio Management, Process & Compliance, SLA Mgmt & Business Continuity and Disaster Management.

The next vertical is Security which consists the identity management, security & access management & process and compliance. The next is Architecture/ Engineering which includes standards, research & configuration management.

The last but not least is the Business Relationship Management which includes business architect, portfolio management & business architecture. Below is a depiction of Standard IT Organization.

image

What can really be outsourced in above diagram.

  • Distributed System – Outsourced
  • Application Development & Support – Generally Kept in House
  • Data Centre- pretty much everything Outsourced except Business Support in kept in House.
  • Security- Outsourced
  • Architecture/Engineering – Kept in House
  • Business Relationship Management – Kept in House

So basic question which comes up “How does private cloud fit here? Which process/roles are added which change” or “How is going to effect my operation”?

So going back the Cloud attributes the cross referencing of attributes vs. Service Layers.

Access Anywhere impacts the top 2 layers Access & Infrastructure Service / Service Delivery. Scalable, Control, Elastic it impacts the bottom layers.

image

Self Services touches upon Management layer all the way to access. Multi tenancy & customizable is affecting all the layers that’s the basic simple concept of outsourcing.

Failure Resistant can mean many thing it can mean at the application level, it can mean at the data center level or it can be a cloud strategy, by the way it touches upon all the layers. At the end of the day this impacts the complete stack and by and the large the most expensive attribute of the over all cloud strategy. Most of the time this doesn’t really work. This is one which is key decider factor for the cloud strategy.

Metered by usage – If you architecture is not built along lines componentization & service oriented then metering is an impossible attribute to meet. This impacts Access, Infrastructure as a Service & Management & Security.

Highly Automated & On Demand impact all.

So what happens when we apply the cloud attributes to a sample IT organizational chart

Access Management – the one’s green are directly impacted. This one impacts the edges of the service layer.

image

 

Scalable is highly thought about inside of the core architecture of the services, this more of the design of service.

image

Control

Control has to be ingrained in every single service of the architecture.

image

Elastic is purely a data center play. It depends on how does central IT architect the services.

Self Service – it is combination which spans across the whole organization where the control is given to the application. The delegation is something which needs to given a thought.

 

image

Multi tenancy & Customization: are pure outsourcing thoughts.

Failure Resistant this one should be thought from application recovery point pretty much decided at an architectural level.

image

Metered by use is again at a component level.

Highly Automation is at every level. 

Coming Next Post…Architecting The Hybrid  Cloud ……

Monday, 27 February 2012

An Insight into the Next Gen Application

 

Windows Petzold , VB , COM , .NET  the technology shift of Microsoft has been evolved or should I say innovative ways to adapt to industry trend. Now we are at a yet another paradigm shift we call it a Cloud.

This post is more oriented towards next gen application on public cloud.

The Cloud is adding an element into the DNA of the App Development. With this new paradigm the App Dev has be relooked into on various aspect, Below is a compilation of the some of the areas.

1)  There is more to  Cloud: The cloud is here most of the people think about cloud as Windows Azure or Office 365 or Amazon AWS there is not reason I cannot see why a customer in 5 years from now buy a customized data center with pre loaded application . The story for cloud is vast.

2) BI (Business Intelligence)

The developer is the key in Windows 8 but we need to concentrate on the back end applications. BI is an important game changer here.  The next wave of smart apps are insightful, inside fueled applications. We need to get the fundamentals in place for the same.

  • Data is happening

Data is again a big area and its happening “Google ingest 10Petabyte / month”, so is bing so much of data to analyze and give better search results. There is so much of Data all over the place, Big Data is happening (Big Data will be covered in a different post.

3) Latency

In the cloud world latency has a totally paradoxical definition for example: A web application which runs on cloud is not necessarily going to have the database tier in the same cluster as app for all practical purpose the application can be hosted on a different fabric & database tier be it Sql Azure or Amazon RDS could and expectation of a millisecond response from the app to the database tier is irrational. So in principle applications have to be rewired with the asynchronous paradigm to really get going in cloud.  On an alternative note “Australian Stock Exchange on cloud has a requirement of have trade placement done in 7 micro seconds. Latency on one side is becoming shorter on one side and other side it can be really long.

image

3) Application Life Cycle Management (ALM)

This is a big theme within App Dev. Application Lifecycle Management for cloud based application changes and need to look into some very specific areas.

 

  • User Experience

User Experience has never mandated to be more innovative easy to use “a classic example is Apple I Pad 55% of users of IPad in US are senior citizens. So this gives a sense the Apple has set some very high standards.  UX in collaboration with mobility can really may a key difference. Mobility bring real time knowledge in terms intelligence of Location. Applications are no more isolated they are more of connected entities which learn from information provided by other application and help in making the end user experience more richer and innovative. Its time that UX is proactively thoughts.

  • Identity

For Identity Management in Cloud the mantra is to use the defacto standard LDAP, Active Directory.

  • SDL

Security Development Lifecycle, the important aspect here is the concept of privacy. In public cloud application need to have a strategy in terms of how to deal with PII (Personal Identifiable Information). Its mandate to declare to users what is the information which is stored about them on the cloud. Another important aspect in case of an security breach how does the messaging go over to the end user.

  • Testing

Testing Strategy for cloud application needs to be rethought. Debugging in cloud is a lot different especially in a case of 24X7 systems.

  • Manageability & Operation

Very much based on ITIL. All cloud providers datacenters use ITIL or enhanced form of ITIL to manage. From an application developer stand point what does manageability mean to his/her application, “Application have to be build some manageability to function properly in a cloud based environment.

Cloud based application architecture mandate the theme of reusability to a high degree we live in asynchronous world (cloud) & we require a certain degree of standardization of applications being component & service oriented compliant. The drive to build reusable components in cloud can help faster deployment of applications into cloud. Doing it right is really what matters now unless companies don’t wont go down the path of rewriting cloud application in next 3 years time frame.

4) Fabric Based Computing

Azure is an SOA based infrastructure what we have done in last 10 years is what we see packaged all in Azure.  Lets take azure with a pinch of salt what we have on premise application lets not oversell telling the customers that on cloud we are going to great benefits.

“Fabric-based computing is the next-generation architecture for enterprise servers. It combines powerful server capabilities with advanced networking features into a single virtual server configuration. In fabric-based computing, resources are no longer tied to a specific physical machine. They can be reconfigured on the fly without adding software layers. Everything is done at the hardware level (CPU memory, network I/O, etc.). Reconfiguration doesn’t happen at the individual machine level but at the ‘fabric’ level,”. What does this mean to application placed on the public cloud?   We are typically talking about PAAS.  Fabric is computing is essentially where it is required to manage 1 to n servers, we should able re purpose virtual machines or workload resources at any point time and use the same for something different without having to think about it.

5) Architecting For Cloud: As we move into a stateless world and asynchronous modalities across all layers, the architectural discussion on cloud re-opened up for big debate what would a starting point be for an architect really be when he/she is migrating an existing application to a cloud. The slide gives a flavor on what would an architect really start pondering on.  Where does the Architect start?

image

 

Decompose application by Functions: First Principle “Decompose application by Functions example : Order Management.”

The requirement here is to build flexible components that understand how to work on multiple resources, essentially cloud is one big pool of resource, we call it the fabric.

We start with Infrastructure which is the fabric. Going back to Fabric which is a pool of resources where the cloud application is deployed.

For example the Inventory Application the Inventory System(App Fabric) is a fabric which is drawn on by structuring the components in line of stateless app , process and database. The first level optimized is done at application fabric level.

The Inventory System Fabric in turn talks to the Infrastructure Fabric for resources.

Fabric is a pattern of computing architects have to start thinking about & that’s what the cloud is all about.

Windows Server is doing a lot of work around the same.

As application developer we need to starting thinking about virtual machines, resilience, elasticity & homogenize resources as key concepts.

Azure is elastic in itself for its resource if your application is written in a monolithic manner God Save you, you as the developer needs to design & code for elasticity. The important message is to learn the principles.

Decompose function by roles:  example web role, worker role , database role , integration  … cont’d in next section.

6) Asynchronous Paradigm

  Azure is designed for load balanced, stateless in the middle tier and state tier, we assume that components can be killed at any moment assuming the fabric controller is doing an optimization algorithm and considering you have more then one instance, so  a lot of out design points like putting things into registry,  settings, color schemes, file system in a the new bad design principle in cloud.

image

Azure doesn’t do squat for you on elasticity if your applications are not composable and cannot put the application on top of multiple tiers it’s a bad design.

That’s why we come to composition by function and then roles.  Functional Decomposition is not by functions and then roles.

You can scale the tier individually. There is whole bunch of things which is abstracted based on roles for example web role will have IIS and worker role has TCP/IP as the base communication standard.

Asynchronous paradigm brings a new problem to the database example “ you are doing a ticket reservation on an application on the cloud you commit the transaction so how do you write to the database non relational does it wait all the memory or write back immediately another design change. There have to buffers put in the system to protect the database.  No Sql is the new mantra for the database for cloud. While this may sound exciting but a lot of discussions needs to understand what does it mean to an application developer, this will be covered in a separate post.

7) Management of Cloud Applications

image

Cloud applications are automated application and so is the monitoring and management needs zero human intervention that’s where we are getting to.Landscape of Monitoring and Management is really large now…..

8) Insightful & Adaptive Applications

People ready Application is something on the lines of Windows 8 Metro or iPad. There is need to design for different form factors with different environment.  HTML 5 can solve some problem but conditional aspect like speed , bandwidth need to paid attention.  Know your users better and give them what they are looking or will look at a future date or will be productive to the user.

 

The Last word on this Post Private Cloud is nothing but a Mainframe………..

Next Post on Big Data…….

Saturday, 18 February 2012

Platforms in the Cloud

Where will your next Application run.

 

I usually keep track on some cloud celebrities “what are they talking about”. I caught the excerpts on David Chappel “Platform in the Cloud”

This is old conference held sometime June 2k11, theme is around resetting for applications. 

The application platform is at default reset. In the history of our industry we have had many different hardware platform have seen in business computing the mainframe , minicomputers, pc client, pc based server, mobile, 5 platform types. The cloud platform is the 6 platform type. We are poised at resetting our default.  This is not a silver bullet to solve all our current problems

 

Currently how does an on premise look like

image

 

Today when we talk about cloud computing this is what we mean

image

The definition are pretty much well understood by most folks.

So how does the world look like with cloud computing

image

Its unlikely in our lifetime we may see the complete organization ecosystem will be in cloud

Roughly below is what is going to transpire

1) Private Cloud

2) Public Cloud Platform

Public Cloud Platforms:

Framework for Comparison

What is cloud Platform?

  • It’s a platform developers build, run & use application.
  • It lets you/developer which allows them to have self service access to a pool of resource
  • With those resources you can ask them in a granular way example a vm for a  days. Cloud Platform you get resources in a granular way.
  • The resource allocation is elastic “What I get I give back”
  • Typically you pay how much you use.

To Distinguish b/w Private & Public

Public Cloud : A cloud platform run by a service provider made available to many end user organization “shared public resources”

Private Cloud : A cloud platform run solely for single end user organization, such as bank or retailer. The technology for both public & private cloud are similar but the economics are very different.

The economics of private cloud platform are very different from public cloud.

Hybrid cloud is the most common theme we see.

Cloud Platform Technologies

  • Computing
  • Infrastructure as a Service (IaaS)
  • Platform as a Service (PaaS)

Storage

  • Relational Storage
  • Scale out storage
  • Blobs

Many more things

  • Messaging, identity , caching.

Computing – Infrastructure as a Service (IaaS)

IaaS

image

IaaS is a virtual machine on the cloud with the desired operating system, can control can install application. The end user will have manage the VM and will need administrative skills.

Contrasting IaaS with Paas Iin conjunction with computing

As developer one would just give the application and let PaaS define when and where to run you application, there is no requirement of administrative knowledge.  You cannot control.

Which is better? It depends.

If I want to move from existing application from on premise to the cloud one may end up using IaaS.

IaaS is more widely use then PaaS ( 10 times more revenue then IaaS). The reason is IaaS is the closed to an on premise. In the long term its PaaS will win, for new application. Considering one would want to caught down on the last mile administration cost.

 

Storage

Relational very similar to SQL. On cloud the relational storage may not be always be good in cases where I have huge amount of data.

Most public platform provides today scale out storage. No support fo Sql

It’s a large name value store.  Scale out will not displace Sql in the short term.

The downside of scale out is unknown technologes, few tools, significant data lock in.

Blobs – Binary Large Objects.Good for storage of videos and backups

Summary

image

Basic distinction is public & private. Above the summarization.

Lets walk through for 5 major providers.

  • Microsoft
  • VMWare
  • Amazon
  • Google
  • Sales Force

 

Important Scenario where a Public Cloud Platforms

  • App development : VM based dev/ test environment -  Currently been offered by Amazon.
  • Apps with variable load- classic case tax filing- use a public cloud platform pay only for what you use, pay for the spike.
  • Apps that do parallel processing – financial modeling
  • Apps that need massive scale – next face book.
  • Apps that need high reliability
  • Apps with a short or unpredictable lifetime
  • Apps that must fail fast or scale fast
  • Apps that don’t fit well in an organizations data center
  • Example – a business unit that wishes to avoids its IT department
  • Apps that can benefit from external storage

The major discussion today on cloud is security

 

Private Clouds – From Server Virtualization to Private Clouds. – Its VM’s on demand in your enterprise.

Microsoft does this with hyper V in the organization datacenter. Its after all for IaaS in public the same technology is used in public cloud – IaaS. For a pure public cloud Windows Azure is the PaaS technology.

Windows Azure Platform

image

 

Windows Azure MSFT PAAS offering has different roles the web role, worker role & coming vm role. It has a load balancer

Pricing on Windows Azure

Compute $0.05/ hour to – $0.96 for each instance a wall clock.

Storage

Blobs and tables

  • Data : $ 0.15 /GB per month
  • Access: $0.01 / 10k operations

Relational

  • $ 9.99 / GB per month

Bandwidth: $0.10 /GB in ,$ 0.15 / GB out

VMWare

VMWare does the same vCloud in private cloud and the same offering i.e vCloud in public.

Cloud Foundry is a PaaS technology for compute and storage option its an open source PaaS platform

Designed to support diverse technologies

  • Frameworks: Spring, Rail etc..
  • Storage : Mysql, MongoDB

Not yet available as a service

  • VMWare provides a public/ dev test service
  • Partner will provide commercial public platform

VM ware is looking for hosters to run there PaaS offering.

Amazon

Public Cloud Offering

EC2 is IaaS service

Paas Service – Elastic Beanstalk

Storage

  • RDS – Relational Storage Service
  • Simple DB
  • S3 – Blob

Broader View of IaaS/ PaaS

More than cloud compute can be viewed through the IaaS/ PaaS lens

Example Cloud options for relations storage

Runs a database server in AWS EC2 VM

An IaaS storage service

Use a managed database server with AWS RDS

Use a managed database service with Sql Azure

  • A Paas Service

Amazon pricing

Compute : $0.02/ hour to $3.68/ hour for each VM ( depending on size and OS)

Storage ( blobs)

  • Data: $0.14 / GB per month to $ 0.037 / GB per month ( depending on the data size and redundancy.
  • Access: $0.01/ 1000 PUT, COPY , POST , LIST operations, $ 0.01/ 10000 GET operations

Bandwidth: $ 0.10 /GB in , $ 0.15/ GB to $0.08 / GB out (depending on the volume)

Amazon private cloud – Eucalyptus company has EC2 and S3 on private cloud offering.

Comment

Commodization of IaaS

Public IaaS compute service is widely available today

Providers include

  • GoGrid Cloud Hosting
  • Telemark vCloud Express
  • IBM Smart Cloud Enterprise
  • Rackspace Cloud Servers : Leader in creating OpenStack , open source IaaS private/ public cloud platform software with NASA.

Google

Totally public cloud

AppEngine is Paas , no Datastore , Blob Store no relational storage.

image

 

The bottom line for Google whom are they targeting with no relational storage.

Pricing is very different

Compute: $0.10 / CPU hour – compute time

Storage

  • Datastore: $0.15 GB/ GB per month
  • Blobstore: $0.15 / GB per month

Bandwidth: $0.10/ GB in , $ 0.12 / GB out

App Engine allows some free usage every day

Google has realized the need to a relational storage and now begun to revamp . Very tiny market share.

Sales force.com

App Force, VMForce: some what of a PaaS offering, Sales force has been made for a very different problem set. Database.com not truly relational more like object database.

Pricing of Sales Force

image

 

 

The complete video is at http://www.davidchappell.com/video/index.php

Friday, 17 February 2012

Microsoft 2k12 Technical Roadmap

 

Kind of put these slides together Microsoft 2k12 products roadmap. The not so good ones are for Windows 8 client & some clarity on Windows 8 server. Overall very sluggish on cloud Azure improvement. No clear dates on Visual Studio 2k11. This is Microsoft after all.

Find the attached slide show which will help in knowing what’s planned for 2K12

Tuesday, 14 February 2012

PPL in Windows 8

 

Asynchronous architectures may sound to be a good thing. This certainly changes the way we write traditional code in the earlier platform. A lot of argument may be focused on Windows 8 Metro UI build more around the cloud strategy so I guess the async architectures does make perfect sense out there.

If I were to look into the tons millions of dollars done by companies in the earlier platforms Win 7 etc.. Async overdrive may end causing a large enough disruption from a programming model. With Async Architectures comes a new set of challenges

1. API changes.

2. The Testing would be a very different conversation

3. Ability of the application to handle multiple call backs, the load scenarios will run into various permutation.

If  I look at a web application it would easier to support the async architecture to a large extent as they are already there.

Latency tolerance can only be achieved by introducing asynchronous interactions to your architecture. The challenge becomes determining the components that can be decoupled and integrated via asynchronous interactions. An asynchronous architecture is far more than simply changing the request/response from a call to a series of messages though. The client is still expecting a response in a deterministic time. Asynchronous architectures shift from deterministic response time to probabilistic response time. Removing the determinism is uncomfortable for users and probably for your business units, but is critical to achieving true asynchronous interactions.

 

Any aspect of your architecture that is ignored will become a problem. This is a simple rule of doing design. As discussed in this article, latency is one aspect that must be considered. Decompose your architecture, taking systemic qualities into consideration. Decompose data, and give up on ACID levels of consistency. Assume that you will have highly latent connections between your components. If you take this approach, the result will be an architecture that is not only tolerant of broad geographic deployments, but is more responsive to your customers and more resilient to disasters.

References- http://msdn.microsoft.com/en-us/library/windows/apps/hh464924(v=VS.85).aspx

http://tirania.org/blog/archive/2011/Sep-15.html

 

A very good read is http://msdn.microsoft.com/en-us/magazine/hh781020.aspx