April 18, 2011 § Leave a comment
Cloud Services: Making Sense of IaaS, PaaS, and SaaS
The Cloud Computing industry is starting to settle on some common terminology that is making it easier for customers to understand the products and services available, and how they might fit into their company’s portfolio and needs.
What are the Types of Cloud Services?
Three types of services have gained popularity, and I have found that almost anywhere you go these are now the common terms. Each of them addresses the standard definitions of cloud computing in their own way.
Note that what we are describing are the different types of services, and not the types of clouds. The difference is that services define what they do, and how they operate. A type of cloud defines how the cloud service is managed and hosted on the backend.
A Spectrum of Choice
You can think of the types of cloud services on a spectrum. The left side of this spectrum represents total control and enjoys the least economies of scale (or cost savings). The right side of this spectrum represents the least amount of control and the greatest economies of scale.
Running Your Application On-Premises
You are likely using an on-premises hosting model today. In doing so you are determining which hardware and software to buy, and exactly how it is housed and managed. You decide when patches are deployed, how much you spend on air conditioning and salaries, and just how you manage backup, high availability and disaster recovery. You are managing the complete stack that you need in place to run the applications important to your business. Parts of this stack include:Networking, storage, physical servers, virtualization software, operating systems, any middleware, the runtime (Java, .NET, etc.), housing of your data, and the application itself.
This gives you the most control possible, but in so doing you are bearing the complete cost of the infrastructure yourself. There aren’t any economies of scale where you can share the burden of management with other people, or leverage the cost savings a really large company might enjoy.
Using a Hosting Provider
Using a hosting provider is also quite common today. With hosting you have selected a vendor with a specific set of tasks and goals. When signing the hosting contract with them you determined exactly what hardware would be used (sometimes moving your own hardware to their facility) and how it will be patched and managed.
In this scenario you have effectively outsourced the ‘doing’ of your IT infrastructure, but have kept a modicum of control over what is happening and how.
This model usually does represent some costs savings, and it does mean you have given up some control. You are usually locked into a vendor with a specific contract over a period of years.
IaaS – Infrastructure as a Service
The concept of Infrastructure as a Service is to provide the infrastructure your application needs, as a service. You will usually pay an hourly or monthly fee for the infrastructure you choose to consume. This is the first step of cloud computing.
IaaS typical manages networking, storage, physical servers, and the virtualization software. You generally need to still maintain the operating system, any middleware, the runtime (Java, .NET, etc.), housing of your data, and the application itself.
This frees you from worrying about hardware at all, and the infrastructure to create virtual servers. When you say you need ten servers, you get ten servers. You can then remote desktop into them and manage them like you would any normal virtual server. The servers will be hosted and maintained against whateverSLA your vendor has agreed to. As a shortcut you can think of IaaS as very sophisticated virtual server hosting. You are giving up a little more control in that you have no idea what hardware is being used, or how it is maintained, but you are also saving by not having to buy all that hardware, especially when you don’t need it.
While there are many, many vendors in this space, Amazon is the most well-known.
PaaS – Platform as a Service
Platform as a Service is the next stop as we cross the spectrum of choices. PaaS is the next step up from IaaS. With PaaS the vendor is providing everything you need to run your application. All you need to worry about is the application itself and the model you describe that tells the vendor how the application should be run.
This model will determine how big the servers should be, how many servers with which standard image to use, what networking and firewall configuration should be used, and a host of other knobs that can be controlled. You can usually determine which datacenter your application will run in.
I think this is as close to cloud computing as you can get when you are running your own code. The burden of the infrastructure has been offloaded to someone else, leaving you with the control points you care about. In a true PaaS environment you have no direct control over each server, and you really don’t care. You only care about saying ‘I need ten servers to run this code, with this configuration. Make is so.’
With PaaS you have given up even more control compared to IaaS, freeing you up to focus on the management and code of the application itself. Along with this comes even more cost savings. Your staff can focus on the application tier (the code, the health and performance, etc.), and not worry anymore about deploying or configuring operating system and middleware patches.
Microsoft Windows Azure is the most popular PaaS platform right now. They do offer a way to directly control each server (via Remote Desktop). Even with this feature, you should embrace what PaaS is, and learn to let the details go, and focus on your application.
SaaS – Software as a Service
Software as a Service is the oldest and most mature part of the cloud. This has been part of the IT industry for decades. It’s most recent permutation was the ASP craze during the dot-com boom. ASP stood for Application Service Provider, and is exactly what SaaS is today, just a little more grown up.
SaaS is when you rent or license an application through the cloud. All of the other types of services let you run your own code or an application you bought yourself. With SaaS you are engaging a vendor to use their software. You don’t know where they run it, how they manage it, or any other detail. All you have is a price and an SLA.
There are many, many examples of this. With Microsoft’s Business Productivity Online Suite (soon re-launching with the name Office 365) you could get Exchange, SharePoint, CRM, and Live Meeting in any combination you wanted. They currently have 40 million users. Other examples include online project management software, time keeping software, and payroll and billing.
The advantages of SaaS are that you no longer need to deal with any of the infrastructure demands an off-the-shelve package may place on you. You can usually also adjust up or down the number of users that can use the product. With a normal on-premises package you would have to buy licenses for users, and manage who was using each license. In the cloud you simply add or remove users as needed, usually paying a monthly fee per user.
While SaaS gives you the least amount of control, you usually get the most cost saving from economies of scale that are possible.
How to Choose
With all of these options, and all of the daily advancements in cloud computing, it can be hard to pick which type of service you should select. In general, you should try to be as far right on the spectrum as you can. For example, if you are replacing your email infrastructure, it is far better to use a SaaS email service (such as Exchange mentioned above) rather than any of the other options. This will save you the most money, in licensing, hardware, and staff costs.
If you are looking to migrate an application to the cloud, or build one for the cloud, this still holds true. The only reason you would move to the left on the spectrum is to meet some limitation the application might have. For example, most applications will work in a PaaS environment, but maybe the old application you are trying to migrate just can’t work in that environment because of some server customization that is not available. This would be a good time to move from PaaS to IaaS. Remember that as you move from right to left you will lose some savings and gain some manual work and you want to avoid that if you can.
And then last but not least, sometimes the application just cannot be run in the cloud (this is usually more to do with an organizations comfort with risk than anything else). In this case it is ok to determine that a particular application is too complicated to move to the cloud and should stay put.
The cloud isn’t about moving everything to the cloud, despite what some vendors try to tell you. It is about giving you more options on how you run your applications. There are simply more options out there now that can help you save money. In an economy where every IT department is being asked to shave 5%-10% off of their budget, using the cloud can mean the difference between maintaining your current service level and laying someone off. Think of the hero you would be if you achieved the savings needed before you were told to.
(- by Brian Prince (codeguru.com))
April 12, 2011 § Leave a comment
Microsoft and Toyota Partner in Azure
Cloud computing has been promoted by tech vendors as today’s hottest emerging trend. Toyota’s partnership with Microsoft on the software giant’s Azure cloud platform demonstrates that companies outside the tech sector are getting on board. Stuart Johnston reports.
The heads of Toyota and Microsoft announced Wednesday that they are pooling a billion yen — roughly $12 million — to invest in using the software giant’s Windows Azure cloud computing platform to provide information to the car maker’s next generation electric and pluggable hybrid vehicles.
The target date for the first fruits of the collaboration showing up on showroom floors in the U.S. and Japan is sometime in 2012. However, the development is not directly related to the in-car technologies that Microsoft (NASDAQ: MSFT) already provides to Ford Motor Co. (NYSE: F), for one, as Microsoft Sync.
Instead, whereas Sync provides a selection of features, from control of the entertainment system to GPS directions, provided within the car, Microsoft characterizes the use of Windows Azure as a platform move — something beyond its existing deals with other auto makers.
The two companies webcast the news of the deal from Microsoft’s Redmond, Wash. campus, and featured Microsoft CEO Steve Ballmer and Akio Toyoda, president of Toyota Motor Corp (NYSE: TM).
Toyota’s goal is to establish a complete global cloud platform by 2015 that will provide affordable and advanced telematics services to Toyota automotive customers around the world, Toyoda said in the webcast.
Read the rest about Microsoft, Toyota and Azure at InternetNews.
April 7, 2011 § Leave a comment
Windows 8 roadmap: A picture is worth a thousand build numbers
Given the very few (and occasionally confusing) leaks around Windows 8, an update as to how things are progressing is always welcome. Here’s a slide from a source of mine that is allegedly a snippet from the Microsoft internal Win 8 Milestone build timeline.
Given the very few (and occasionally confusing) leaks around Windows 8, an update as to how things are progressing is always welcome.
In early 2011, a source of mine passed on to me what he claimed was a snapshot of the internal Windows 8 roadmap. On that roadmap snippet are a lot of alleged internal dates for Windows 8 Milestone 2, the second of what are expected to be three major internal builds of Windows 8. I showed off this roadmap during a ZDNet Webcast I did recently on Windows 8 and slates (which is available for listening as a free, on-demand file).
Here is the Windows 8 roadmap slide I showed off, for those who missed it:
(click on image above to enlarge)
What’s interesting to me is how closely this roadmap snippet seems to be mirroring the timelines and build information from a few sites and sources claiming access to leaked Win 8 builds. On February 21, there were reports that Microsoft was just about done with Win 8 Milestone 2. On the roadmap above, final M2 build candidate is slated to arrive on February 23. And according to the roadmap above, the coding for Milestone 3 (M3) is due to start a week from today, on February 28.
Milestone 2, according to the roadmap, took the Windows client team five months. If M3 takes another five months — which it might if it has to go through all the same coding/integration/fixing/lockdown steps as M2 did — that would put its completion date around the end of July. Factor in a month or so for any kind of private Community Technology Preview (CTP) testing, and a beta around the time of this year’s Professional Developers Conference — which I’m still hearing is slated for September 2011 — looks downright doable.
The Windows client team, as you might expect, isn’t commenting on any timetables, build numbers, roadmaps or anything else pertaining to Windows 8 or Windows Next. (I tried using the Microsoft-favored “Win Next” just to see if I could muster a comment. No go.)
Microsoft execs also are not commenting on an alleged Dell roadmap leak from last week, which made it appear as if Dell will have a Windows 8 tablet ready in time for January 2012. While I wondered aloud last week (as did at least one Wall Street analyst) whether that meant Microsoft might be further along with Win 8 for systems-on-a-chip (SoC) processors than many of us previously believed, I’ve heard since that probably isn’t the case. That would mean the Dell “Peju” Win 8 tablet could be nothing but a demo machine for select developers … and maybe a debut at a Consumer Electronics Show (CES) keynote (?)…
In any case, if Microsoft does follow history and deliver a Win 8 Beta 1, Beta 2 and Release Candidate before RTMing, Windows 8 is looking like a mid-2012 RTM. The Windows 8 train seems to be running on time —just like the Win 7 one did.
April 7, 2011 § Leave a comment
C# Coding Standards and Practices
Hi Guys, I have seen when working with team How Programming can be a big mess when each one writes the name with their own convention, Its a Horror when it comes to do code review, So I decided that I’m going to cover coding standards and practices, a topic that is often overlooked.
With lot of googling and digging, here is what the Best reputed Organization practices the Naming Convention
Define and Publish your C# Coding Standards and Practices
C# coding standards and practices can quickly become hotly debated among developers when they are discussed. I’ve seen folks go into such a conversation thinking it is a waste of time and getting hotly involved in debate over a particular convention. It is an area where there is rarely a right or wrong, but plenty of opinion. The best advice that I can offer is to make sure you define and document the practices. No matter what they are, identifying what you want to follow is imperative. Once defined, they must be made accessible and communicated to others. This is a great use for a wiki so that others within the organization can contribute.
The following list contains common areas that should be defined within your standards and practices:
- Source code structure, layout, and formatting
- Variable naming standards and conventions
- Rules around commenting your code
- Exception handling pattern and process
- Version control and compilation rules
- Expectations around flow control
- Programming patterns that should be applied (or avoided)
- Database related practices
You should document your rules in a clear and concise manner. It is valuable to include a concise coding example that supports the rule, as well as an example that violates a particular rule.
You may also find it useful to break your standards into a series of documents as not all standards and practices apply to all languages. You will likely have some standards and practices specific to the environment if you are an Azure developer, ASP.net developer, C# developer, Visual Basic developer, Windows Mobile developer,WCF developer, ASP.net MVC, Silverlight developer, orprogramming in C or doing C++ programming. For example, I have standards and practices around use of Session State and View State for ASP.NET applications that would not apply to other types of development.
Enforce Coding Standards and Practices
Coding standards and practices lose their value if not everyone on the team is following them. I’ve been involved with organizations that do formal code reviews that involve going before a review board of sorts. Those meetings can be very time consuming and tedious. I’ve also seen a high number of organizations that ignore them altogether as there may be a single developer assigned to a particular project and they are left to their own devices. I employ a mixture of manual as well as automated code reviews. There are great tools like FxCop, which integrates with Visual Studio, and is included in certain versions of Visual Studio. It has rules that can be customized and tailored to your standards. It quickly analyzes your code and reports on findings. This is a great starting point for analyzing code and looking for hotspots. It is also valuable in Visual Studio Team System to use code check-in rules to force developers to run tools on their own code prior to check-in.
The following links point to a couple of sources where you can find some examples of coding standards and practices that I consider to be worthwhile as a starting point: