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