The Silicon Whisperer Necessary Business Technology Advice

9Jul/100

Taking the first step to Cloud Computing – Standardization

In my daily interactions with clients, I am often asked what the first step should be toward Cloud Computing. Invariably, my answer is 'Standardization.' Standardization has far more importance than just being the first step to cloud, but it also makes the transition much faster and more secure. I want to spend a little time talking about why standardization is so important, then delve into how it will ease your cloud migration.

Southwest Airlines was one of few airlines (if not the only one) to retain profitability during the recent financial downturn and major events that negatively impacted the industry as a whole. In my opinion, the largest reason for Southwest Airlines success is that they standardized on only one type of aircraft - the Boeing 737. Other airlines, who fly several different aircraft, have to stock parts, train mechanics and pilots for each type of aircraft they operate. What this situation creates is a massive overhead of parts, people, certifications, training and much more. Southwest only has to stock parts for one line of aircraft, train mechanics and pilots for one type of aircraft and worry about one size of aircraft at a terminal. The routine day to day problems that they encounter will be the same and there are processes and procedures to deal with them. This is a highly streamlined way to do business, and it all is a result of standardization.

I use the Southwest Airlines example almost religiously because it shows what a company can gain when they standardize internally. In IT, there are several areas to standardize, but you will get the most 'bang for your buck' in standardizing the operating system and application stack (to include programming language). Hardware has become a commodity and most operating systems in production today can install on just about any vendor's hardware (Oracle Sun, HP, Dell, IBM, etc.) so long as the processor architecture (Intel/AMD x86, SPARC, PPC) is supported. It is best to standardize on one (or at most two) hardware platforms so that training and support for your hardware is streamlined and efficient. The same applies to the operating system as you do not want to have to hire several different people with varying skill sets to accomplish the same tasks. At the application layer, having the same application server and programming language makes deploying and maintaining the applications much easier. If you are able to standardize to the point where you can get all of the above from a single vendor, you have the ability to leverage a single support infrastructure across all product lines. Yo do not have to worry about the hardware vendor pointing at the OS vendor while they in turn point to the application stack vendor.

As an example, I use Sun Microsystems (now part of Oracle) to illustrate how this all works. I'll start in reverse order with the programming language - Java. Java is a very powerful language in and of itself, but what is more important is that it was designed to be multi-platform from the beginning. The same code can be installed onto any server with a Java Run-time Environment or Java Application Server and it will run without issue. The code is not compiled to the operating system and thus not tied to only one OS. This is also huge in terms of avoiding vendor lock-in because if you no longer want to use a certain Java Application Server, you can simply choose another and migrate over without issue. There are many Java Application Servers on the market and they all accomplish the same thing (serving up Java applications), but they do differ in additional features (such as management) offered. Sun, of course, has their own Java Application Server, and it is optimized to run on the Solaris operating system (although it does also run on various Linux distributions as well). This brings me to the next layer, the operating system. Many businesses deal with the issue of having to maintain different operating systems (such as Linux, UNIX and Microsoft), and it is probably the single largest headache and inefficiency that exists in IT today. As a matter of fact, the primary reason that VMware (and other virtualization vendors) have been so successful is that they were able to put multiple operating systems on the same hardware. This does net you some efficiencies at the hardware layer, but you still have to individually manage the operating systems of the virtual machines.

So, we've talked about keeping your programming language, application server and operating system standardized, and I have previously stated that hardware is a commodity now a days, so why not buy the hardware from the same vendor if possible? Fortunately enough, Sun does make hardware as well. Again, this provides you with the ability to point to a single vendor for support issues as well as reap the efficiencies gained where the vendor optimizes pieces of the stack to work better with each other than they would spread across different vendors. This is Oracle's new claim to fame, and they will be leading with that marketing pitch going forward. Aside from price being a sticking point (if it happens to be one) there is no reason not to employ your entire technology stack from a single vendor.

Now, how is this the first step into the cloud? The cloud as it exists today is a melding of various open source technologies that provide a platform or framework on which you can deploy your applications. The major cloud computing vendors have already optimized their stacks and offer you several areas in which to enter the cloud. You can buy infrastructure as a service and deploy your own application servers and code on top of the IaaS or you can buy the platform as a service, where the application server is already decided, and you just deploy your code on top of the platform. Lastly, you can also buy into a SaaS application and hook into an API, if provided, to leverage the software more to the needs of your business. No matter which path you take, it will be significantly easier to step into the cloud if you have standardized internally and know exactly which components you need to migrate and how those components interact with other parts of the stack. The standardization process gives you these insights as well as the ability to highly optimize your infrastructure moving forward. These same principles apply to building internal private clouds or hooking into public clouds. There are so many other things that are gained with standardization, and I will cover those in future articles, but the scope of this article was to articulate how standardization is the first step toward a successful cloud migration.

Feel free to ask any questions in the comments section or email me via the address in the "Contact Me" section.

10May/100

Why VMware bought Spring Source and now Gemstone

You've probably heard by now that VMware has acquired GemStone via another recent acquisition SpringSource. Although the SpringSource acquisition was a while back and there have been numerous attempts at explaining the acquisition, it may still remain vague to some in the IT community. The GemStone acquisition is a little more obvious in that the company builds cloud computing applications. You also know that I usually dive pretty deep into cloud computing topics on this blog, so I will try to paint my perception as to why VMware has made these acquisitions.

For a while now, I have said that VMware has enjoyed the success (and purpose) it has for so long because of Microsoft. There are a few reasons for this. First of all, many businesses have a mixed platform environment where Microsoft servers and Linux or Unix servers work in monolithic application silos. In the Microsoft world, it is not usually recommended to run multiple applications on the same server. This resulted in many disparate servers running all sorts of applications from domain controllers to .NET application servers to SharePoint servers. If your business had an environment like this and you wanted to consolidate onto less hardware with better overall resource utilization, VMware was the only game in town. This is especially true in the beginning when there was no Hyper-V server from Microsoft and to this day, Hyper-V does a poor job virtualizing Linux and Unix workloads. Those enterprises who had migrated to an all Linux or Unix platform did not need VMware as Linux has had virtualization built in for years and Unix has had virtualization built in since the 1960s. While these types of virtualization were a little different than VMware's version, they were around none the less. Now you see why Microsoft has been the reason for the purpose and success of VMware for businesses that want to consolidate and increase efficiency. This is not to take away anything from the great things VMware has done nor belittle the platform. VMware has an excellent line of products whose management applications are second to none. In a world without Microsoft (or diverse operating system landscapes at the very least), there would be no need for VMware.

Looking at today's landscape in the IT sector, some major acquisitions have forced VMware to take a look at their relevance going forward. When Oracle bought Sun Microsystems, many reasons flew around the media blogs, but the core reason for the purchase was the Solaris, Java and Java Application Server platform. Here's why. Solaris has a nifty virtualization feature called Zones. Zones are like little virtual machines running atop the Solaris OS. Each zone is also running Solaris and functions as an independent 'system' on the network. There are network interfaces, application stacks and users within each zone. Each zone operates independently of other zones and can not impact other zones' performance. If a zone crashes, only that zone is affected. You can cluster Solaris and Zones as well to ensure high availability. You can also 'migrate' zones 'live' from one box to another. So what you essentially have is an all Solaris stack representing what VMware accomplishes with different OS virtual machines. The Solaris zones will also run faster than most VMs will run on VMware.

Now as I said earlier, each zone is a container with full application stacks residing within. Inside, you can run a full blown java application server, web server, etc. This allows a business to write all of their applications in Java, which is a multi-platform language, and then install the applications on a java application server inside a zone. Create several of these zone containers and cluster them across different servers and you have a fully redundant, highly available virtualized application server farm. With a little more logic and code, you can turn this architecture into a cloud computing  platform. Sun Microsystems has always had the technology, they just never had the sales and marketing staff to do anything with it. Oracle saw this and snatched them when the valuation of Sun was at its lowest. Now Oracle owns the stack from the hardware (Sun Server) up through the OS (Solaris) the application server (Java Application Server) to the programming language (Java.) Integrate this with a solid storage platform (Sun StorageTek) and enterprise database (Oracle) and you've got an unstoppable force in the market.

So if you look at what Oracle purchased with the Sun acquisition (and what it means in the virtualization and cloud computing space) and you also take into account that Microsoft has been hard on the heels of VMware with the Hyper-V product, VMware had to make a move or face an almost certain collapse. Cloud computing was becoming a major threat to VMware as companies have been looking to offload many projects to the cloud and not purchase any more hardware (and accompanying VMware licenses.) In addition, most if not all of the cloud computing virtualization cores are built on open source hypervisor technologies like xen and kvm. This boxes VMware out from the cloud computing space as they have no play down at the hardware, hypervisor or OS level. While their virtualization technology could be leveraged, the question is why? The open source technologies used today are plenty robust and allow for automation and orchestration. There is no need to put an expensive product like VMware in production in these environments. Couple this with the fact that most of the applications being developed in the cloud today are being written in languages like Ruby (on Rails) and Java, and these reside on Linux or Unix instances. There is absolutely no need for VMware in this space.

So if you are VMware looking at the landscape, which doesn't look promising at all, how do you make a play at the cloud computing market? About the only value you can deliver is a complete stack that is tightly integrated and easy to deploy. The easiest way for VMware to do this is to drop a java application server into a VM 'appliance' and provide a framework for developers to write Java applications that can run on and interact with the platform. This, in my opinion, is why they purchased SpringSource and now GemStone. They wanted the Java and Cloud Computing application pieces of the complete stack in order to deliver an integrated product to customers. Now the have everything they need to deliver this. They can deliver the SpringSource tc Server as an 'appliance' running on their VMware platform which developers can develop applications for using the Spring framework. Integrate this with the Hyperic management platform, vCenter management platform and the GemStone management platform, and you have a combination that is pretty hard to beat. The only thing that can hold VMware back as far as adoption and success in the cloud computing arena is price. They are competing with excellent open source technologies that have very low TCO, so if VMware can keep the costs down while delivering excellent value, they will succeed in this market as they did in the virtualization market for so long. I am eager to see what they end up with as a packaged product, what it costs, and how it will impact the industry.

31Oct/090

Why becoming a cloud software developer can be a good idea.

Everyone knows that the longevity and ultimate success of a platform lies in the developers willing to create on that platform. Creating a healthy developer ecosystem in which both the developer and the platform vendor can grow and prosper is very important. No one knows this better than Microsoft. It has long been their mantra that "developers, developers, developers" are the key to success. With most of the new large scale websites and platforms being launched on open source platforms and now the cloud, this is becoming even more important.

If you just do some casual research, it is easy to see that the largest and most heavily trafficked sites on the web are written in languages such as PHP, Ruby on Rails or even Java, and these are all deployed on open source platforms. Which version of Unix or Linux they reside on isn't important. What is important is that developers are migrating in droves to these languages and frameworks, and new developers are learning these languages and frameworks instead of the typical Microsoft .NET stuff. So how does this relate to cloud computing?

Well, whether it was by virtue of luck or actual planning, most of the cloud computing vendors (if not all but Microsoft shops) chose to deploy their infrastructures on open source platforms. Google's App Engine, long the bastion of true could computing is mainly a Python development platform. The underpinnings are all open source, and Google does contribute significantly back to the cause. Amazon's Web Services are also built upon solid open source foundations, and the majority of platforms that can be deployed in EC2 instances are Linux distributions. These open source platforms were chosen when language/framework pairs were developed and launched, such as Ruby on Rails, Python on Django, and even Groovy on Grails. These frameworks have provided a solid base upon which to build cloud computing applications and services.

So why can it be a good idea to become a cloud software developer? I would say that there are several reasons to do so, not the least of which is marketability. The hype around cloud computing is at fever pitch, and there are many reasons for it. The root cause is the promise of increased efficiency at a lower price point. One often downplayed benefit that I feel is the most important benefit is flexibility. With cloud computing, the promise of true flexibility and scalability has finally been reached, and the multiple layers of abstraction from the hardware and operating system have granted developers the freedom to focus on their code, not the underlying stuff. By understanding the concepts of developing in the cloud, you have opened yourself up to a new market that is akin to a dam about to burst.

Businesses are moving to the cloud (whether private, public or hybrid) at a break-neck pace, and positioning yourself as a competent developer in this space can only pay off. It may even pay off huge. Just remember that tying yourself to a particular vendor or platform is not the best way to approach. You should focus on a language and framework that is common to most or all cloud infrastructures and leverage your knowledge of development as a whole to pitch your skills as wide as possible. Understanding the benefits and limitations of the cloud will allow you to avoid costly mistakes, and your superiors will see you as the 'go to person' for the next wave of IT.