Friday, December 31, 2010

Microsoft's Interoperability Mantra!

"Our goal is to promote greater interoperability, opportunity and choice for customers and developers throughout the industry by making our products and by sharing even more information about our technologies" - Steve Ballmer, CEO, Microsoft.

 

 

I have written this post in a Question and Answer format so that one can quickly browse through the relevant details as per the requirement.  Click on the question to know the Answer!

  1. Why Interoperability?
  2. How is Microsoft supporting Interoperability?
  3. What is Windows Azure™ Platform?
  4. What are the various Windows Azure™ Platform Products?
  5. How does Windows Azure™ Platform support Interoperability?
  6. Does Windows Azure™ make Interoperability easier for developers?
  7. What are the various tools and SDKs offered by Windows Azure™ to support Interoperability?


Why Interoperability?

"Interoperability... that's what customers do, that's what customers want, that's what customers need" - Ray Ozzie, Chief Software Architect, Microsoft.
 
According to Microsoft the three driving reasons for Interoperability are:
  1. OPEN TO CHOICE: Government, developers, and citizens can choose the technologies that work best for them with interoperability.
  2. OPEN TO INNOVATION: Interoperability drives innovation within a thriving IT industry, creating technologies that improve citizen services and government efficiency.
  3. OPEN TO OPPORTUNITY: When the IT community collaborates and develops new technologies that work together, new opportunities are created.

How is Microsoft supporting Interoperability?

 "Microsoft's role as a key player in interoperability will help remove the main technical barriers to global-government administrative services, reducing cost and time to market" - Ignacio Alamillo, Research Director, Generalitat de Catalunya, Spain
 
Microsoft has established an Interoperability Bridges & Labs Center, which is dedicated to technical collaborative work, to improve interoperability between Microsoft and non-Microsoft technologies. The vast majority of the projects are Open Source. The Center is run by the Microsoft Interoperability Strategy Group working with the community at large.


What is Windows Azure™ Platform?

The Windows Azure platform is a set of cloud computing services that can be used together or independently that enable:
  • - Developers use existing skills and familiar tools to develop cloud applications
  • - ISVs and System Integrators rapidly reach market and pay as you go
  • - IT Managers gain access to a new set of resources without adding complexity
  • - Businesses of all sizes to quickly respond as business needs change

Windows Azure Platform products overview



What are the various Windows Azure™ Platform Products?

The three major Windows Azure™ platform products include Windows Azure™, Microsoft® SQL Azure™ and Windows Azure™ AppFabric. They are described below:
  1. Windows Azure™ is a cloud services operating system that serves as the development, service hosting and service management environment for the Windows Azure platform. Windows Azure provides developers with on-demand compute and storage to host, scale, and manage web applications on the internet through Microsoft® datacenters. Windows Azure is a flexible platform that supports multiple languages and integrates with your existing on-premises environment. To build applications and services on Windows Azure, developers can use their existing Microsoft Visual Studio® expertise. In addition, Windows Azure supports popular standards, protocols and languages including SOAP, REST, XML, Java, PHP and Ruby. Windows Azure is now commercially available in 40 countries.
  2. Microsoft® SQL Azure™ Database is the secure relational database based on familiar SQL Server technologies that you’ve come to rely on. The difference is that it’s a cloud database running in Microsoft datacenters around the globe. High-availability and fault tolerance are built in – giving you the ability to start small or serve a global customer base immediately.
  3. Windows Azure™ AppFabric helps developers connect applications and services in the cloud or on-premises. This includes applications running on Windows Azure, Windows Server and a number of other platforms including Java, Ruby, PHP and others. It provides a Service Bus for connectivity across network and organizational boundaries, and Access Control for federated authorization as a service.


How does Windows Azure™ Platform support Interoperability?

Microsoft claims that the Windows Azure platform has been built from the ground up with interoperability in mind. It is an open platform, which allows them to use multiples languages (.NET, PHP, Ruby, Python or Java) and development tools (Visual Studio or Eclipse) to build applications which run on Windows Azure and/or consume any of the Windows Azure platform offerings from any other cloud or on premise platform. Windows Azure platform supports multiple Internet protocols including HTTP, XML, SOAP and REST —key pillars of data portability.
Interoperability

 



Does Windows Azure™ make Interoperability easier for developers?

 

From the developer’s standpoint, interoperability creates opportunities to combine new Azure cloud-based applications with other platforms. Developers can easily combine applications living on other clouds or on-premise using services offered by the Windows Azure platform. They can also build and enhance applications using their existing skills with the Microsoft Visual Studio development environment and the .NET Framework, or with other development environments like Eclipse. Developers have the choice of several languages for building their applications, including:
  • .NET (C# and Visual Basic), C++
  • PHP, Ruby, Python
  • Java,
In addition, interoperability with other platforms is made easier through community-based libraries:
  • Plug-in for Eclipse,
  • SDKs for Java, PHP, and Ruby.

What are the various tools and SDKs offered by Windows Azure™ to support Interoperability?

In 2009, Microsoft had collaborated with Soyatec, a France-based IT solutions provider, to develop three solutions:
Microsoft provided funding and architectural guidance for all the projects. As a result many tools and SDKs are now available to developers which support Interoperability. A few of them are:

The Windows Azure Command-line Tools for PHP enable developers to easily package and deploy PHP applications to Windows Azure using a simple command-line tool. The tools allow creating new applications or converting existing PHP applications to Windows Azure and by creating the deployment package (.cspkg) and Configuration file (.cscfg).

The Windows Azure Tools for Eclipse plug-in offers PHP developers a series of wizards and utilities allowing to write, debug, configure, and deploy PHP applications to Windows Azure. The plug-in bundles the existing Windows Azure SDK for PHP into the Eclipse PHP project. The plug-in includes a Window Azure storage explorer that allows developers to browse data contained into the Windows Azure tables, blobs, or queues.

The Windows Azure SDK for PHP enables PHP developers to take advantage of the Microsoft Cloud Services Platform -Windows Azure. This includes support for Manageability instrumentation, logging, PHP classes for Azure Blobs, tables and queries, as well as helper classes for HTTP transport, AuhN/AuthZ, REST, and error management.
http://blogs.msdn.com/blogfiles/interoperability/WindowsLiveWriter/AnnouncingPHPSDKforWindowsAzureandmuchmo_106DF/PHP-Vijay-AzureSDK1_2.png


The Windows Azure SDK for Java gives developers a speed dial to leverage Windows Azure Storage services. This SDK is used in the Windows Azure Tools for Eclipse project to develop the Windows Azure Explorer feature.
Project Architecture Image


The Java AppFabric SDK facilitates cross platform development between Java projects and the Windows Azure AppFabric using the service bus and access control. This SDK enables Java developers to easily leverage Windows Azure and demonstrates the Interoperable nature of the Windows Azure platform. The SDK includes a set of libraries, tools, prescriptive guidances, and sample applications that will enhance productivity for Java developers willing to use the service bus and access control to extend their applications.
High Level Architecture


The Ruby AppFabric SDK facilitates cross platform development between Ruby projects and the Windows Azure AppFabric using the service bus and access control. This SDK enables Ruby developers to easily leverage Windows Azure and demonstrates the Interoperable nature of the Windows Azure platform. The SDK includes a set of libraries, tools, prescriptive guidances, and sample applications that will enhance productivity for Ruby developers willing to use the service bus and access control to extend their applications.
Project Screenshot Image


The PHP AppFabric SDK for Developers is an open source software development kit (SDK) that helps PHP programs communicate with Windows Azure platform AppFabric using RESTful APIs.As part of the Windows Azure platform, the AppFabric includes the Service Bus and Access Control services. They are both web-based services that provide infrastructure in the cloud to connect applications. The Service Bus acts as an intermediary between applications and services. For example, developers can use it to bridge on-premise and off-premise applications or create composite applications. The Access Control service enables external users to connect to cloud resources using their external identities.
Project Architecture Image

Sunday, December 12, 2010

A few things to know about Cloud Computing.

There's certainly been a lot of news and buzz about Cloud Computing.Introduction of Cloud Computing is a Revolutionary Event in the IT Industry. It represents the next big platform change in the software industry and the most significant transformation since the introduction of the Internet in the mid-1990's.  Not that it's a perfect solution, but because there are so many advantages to cloud computing and so many hassles to what people are currently doing today.



What is Cloud Computing?
Wikipedia describes Cloud Computing as Cloud computing is Internet-based computing, whereby shared resources, software, and information are provided to computers and other devices on demand, as with the electricity grid. Cloud computing is a natural evolution of the widespread adoption of virtualization, Service-oriented architecture and utility computing. Details are abstracted from consumers, who no longer have need for expertise in, or control over, the technology infrastructure "in the cloud" that supports them.”

So we can say, Cloud computing is a technology that uses the internet and central remote servers to maintain data and applications. Cloud computing allows consumers and businesses to use applications without installation and access their personal files at any computer with internet access. This technology allows for much more efficient computing by centralizing storage, memory, processing and bandwidth.

A simple example of cloud computing is Yahoo email or Gmail etc. You don’t need a software or a server to use them. All a consumer would need is just an internet connection and you can start sending emails. The server and email management software is all on the cloud ( internet) and is totally managed by the cloud service provider Yahoo , Google etc. The consumer gets to use the software alone and enjoy the benefits. The analogy is , 'If you only need milk , would you buy a cow ?' All the users or consumers need is to get the benefits of using the software or hardware of the computer like sending emails etc. Just to get this benefit (milk) why should a consumer buy a (cow) software /hardware ?
 

Why do we need Cloud Computing?
Cloud computing comes into focus only when you think about what IT always needs: a way to increase capacity or add capabilities on the fly without investing in new infrastructure, training new personnel, or licensing new software. Cloud computing encompasses any subscription-based or pay-per-use service that, in real time over the Internet, extends IT's existing capabilities.

For information workers who create relatively small but important applications to improve productivity, cloud computing promises to offer a whole new way to deliver robust solutions with enterprise quality infrastructure. Most people and groups have never had the ability to use such resources at any price, but cloud computing offers it at a very economical cost. For example, you'll be able to create a Microsoft Access application with the queries, forms, and reports that you like and link your Microsoft Access database to data stored in SQL Azure on the cloud. Your database can be distributed to others who can link to the shared database in the cloud. Of course it's a bit more complicated than that but it's an option that didn't exist so easily before and will surely open up whole new solutions.

 

 

How Cloud Computing Differs from Hosting an Application at an Internet Service Provider (ISP)?

There are many definitions of cloud computing and some people think it's simply having a shared or dedicated machine at an ISP. Granted that machine is hosted in a data centre that's more secure with backup power and high-speed internet connections. And it's certainly better than a box sitting in the network room down the hall, but that's not what we think about when we discuss cloud computing. That's just an off-site hosting of your computer.

In cloud computing, the application resides on multiple machines automatically. This provides superior reliability and fault-tolerance compared to hosting in one server. It's designed to automatically adjust its resources as demand increases or decreases whether it's computing power, bandwidth or storage. Cloud providers also take advantage of edge networks to store/cache data closer to recipients to reduce congestion centrally. These are truly enterprise and multi-national features that are nearly impossible to replicate on your own or with local ISP hosting companies.
 
What are the benefits of Cloud Computing?
Organizations are wrestling with the implications of cloud computing, how it can be used, costs, scalability, security, control, etc. The immediate advantages are huge. Why purchase hardware and software licenses, find a place to store the machine, hook it up, monitor it, and maintain it over time? All ways to minimize those costs, hassles, downtime, and headaches are definitely worth considering. Being able to add capacity on demand, support large numbers of users, and only paying for usage is very appealing. After all, to build a robust system today means satisfying the highest potential load (plus a safety factor), which means the system is under-utilized most of the time.

With cloud computing, there's very nice support for creating a staging or testing instance versus your production build. Being able to test new versions and automatically switch to production mode is very valuable and appealing since minimizing downtime can save considerable money. That said, situations requiring structural changes to the SQL Server database, requires scripting those SQL changes which will require temporarily disabling the application for those changes.
 
What are the issues concerning Cloud Computing?
On the flip side, organizations are extremely worried about security when it comes to cloud computing. With the application and data in an unknown location or multiple locations, managed by unknown people, these concerns are definitely valid. For critical, sensitive data, we completely understand the need to control it internally. However, for most organizations, there are plenty of applications and needs that don't require such security where productivity, time to market, and decision making are the bottleneck. Cloud computing may offer solutions at a fraction of the time and effort versus alternatives.

 

 

Commoditizing Application Hosting:

Cloud computing will significantly change the way we create and deploy applications. It promises to commoditize the hardware, software, and storage of applications and data. Just like the early days of the light bulb required you to host your own power generators, today's standard process of buying, configuring, and hosting machines locally will likely be the exception rather than the rule. Cloud computing will convert application hosting into a utility like electricity or water.

I have no idea where my electricity or water comes from or how it's produced, it’s just always available at the switch of a button or faucet. I'm happy it's there when I want it, there seems to be an endless supply, and I am willing to pay for all that I use. It's something I really don't think about.

That's what I expect Cloud Computing will do for software hosting. Applications and data will reside in the cloud in multiple simultaneous, fault tolerant, and secure locations that will scale with demand. The utility companies, in this case Microsoft, Amazon, and Google, etc., will provide the services in a much more cost effective and reliable manner than any non-specialized organization can provide on their own.

 

 

What does a Shift Towards Cloud Computing Mean?

A paradigm shift to cloud computing will affect many different sub-categories in computer industry such as software companies, internet service providers and hardware manufacturers. While it is relatively easy to see how the main software and internet companies will be affected by such a shift, it is more difficult to predict how companies in the internet and hardware sectors will be affected.

 

 

Conclusions:

While there may be some limitations and cost issues around Cloud Computing, it's a revolutionary platform that will simply become more and more significant over time. The advantages are simply too significant and the trend is for lower costs and more features over time.

For the information worker who has always had limited options when it comes to robust, enterprise quality platforms, cloud computing opens a whole new opportunity to build better applications. For small organizations and entrepreneurs, cloud computing offers the ability to deliver enterprise quality solutions. By focusing on the application and less on the platform, we can expect many innovative solutions to appear on the cloud at very competitive prices.

Wednesday, December 1, 2010

Inspiration leads to Initiation of Innovation.

Inspired by the responses I received for my earlier blogs:
  1. Aasthik - A Believer by Choice
  2. Vishal World
  3. Vishal's Space
I have decided to start two more blogs:
  1. Discussing Science Engineering and Technology
  2. Discussing Conspiracies and Controversies

I felt the need to separate some posts from my main blog to cover different topics and keep people updated. Also, both my Live Space blogs have to be either moved to Wordpress or they'll have to be shut down.  The fate of Vishal World and Vishal's Space will be decided later. For the time being I am satisfied with Blogger. Tt has given me good interface and rich resources.

I have always believed that writing blog posts is a very good thing. You not only maintain a record of your experiences and things learnt but at the same time, you create a database, for people to refer to at some point in the future. Blogging for me is a tool to share the knowledge and info I have gained so far.

Aasthik - A Believer by Choice has produced some outstanding results. People who did not believe in GOD started believing, accepted the transformation from Naasthik to Aasthik publicly.  A few others learnt some yogic techniques, yet another bunch found the scientific explanation of religion and spirituality.

And so, I thought to  share my info with budding Scientists, Engineers and Technocrats. It took me a lot of time to design the interface for this blog, especially selecting the best possible background image. This is the image I am currently using (you can see why!):



Please let me know, if you think there can be a better background image :)