Cloud computing hasn’t changed the nature of computing – it just changed provisioning and management. That’s important to remember because workloads in the cloud are very much similar to what we see in traditional computing infrastructures. To get the most out of your investment in cloud services or in your own physical IT infrastructure, you need to understand how to optimize workloads.
Typical computing workloads involve four basic parts: computation, memory, networking, and storage. Almost all applications have these four parts but mostly not balanced.
Now let’s quickly review the essential categories of application workloads: Read more...
The following tables list all the managed object types in VI 3.5, vSphere 4 and 4.1. A short description is provided for each type explaining its major responsibilities.
Note that the managed object types are added in an incremental way. The types in older versions are still supported in newer versions. The complete types in a verion include ones in the correpsonding table plus all the ones in all older version tables.
Hope this post gives you a high level overview of functionalities of the vSphere APIs. Check out other blogs such as best practices (1-5, 6-10) on how to use them in general. And don’t forget my book which introduces them extensively with many read to use samples.
Table 1 Managed Object Types in VI 3.5 Read more...
Following the vSphere 4.1 release, I am pleased to announce the release of the vSphere(VI) Java API 2.1 beta that fully supports the vSphere 4.1. The 2.1 beta has been ready for limited access for months by VMware internal teams, and partners/customers who participated vSphere 4.1 beta program. Read more...
VMware announced GA of vSphere 4.1 product this Tuesday. Here is the official what’s new in vSphere 4.1. Many bloggers already covered different aspects of the product itself: VMware vSphere 4.1: Advancing the Platform for Cloud Computing, Useful vSphere 4.1 knowledgebase articles, vSphere 4.1 released, Release: VMware vSphere 4.1, etc. I don’t repeat these here, but focus on the new APIs in 4.1 release.
In general, the APIs are the programatic “view” of features. Understanding the features helps a lot on understanding the APIs. So I strongly encourage you to read new features of the product itself. Note that not all the new features especially the performance and scalability features are explicitly reflected in API signatures.
vSphere API 4.1 introduces 7 new managed object types:
vSphere 4.1 adds 23 new methods to 10 existing managed object types: Read more...
In my last post, I discussed when not to use cloud services. Basically you should avoid the cloud for your organization’s core competency IT systems. Remember, cloud computing is not a silver bullet for everything.
Today I want to share the stories from the other side: when you should use cloud services. As a rule of thumb, you use cloud services for your non-core competency IT systems. But, what are the typical non-core competency systems?
There could be many cases in which you can use cloud services. Let me go through some of them by sharing customer experiences:
Outsourcing projects. If something is outsourced, most likely you don’t think it’s a core competency to your business. You can then leverage the full benefit that public cloud services bring to you. You can easily have workspace that is accessible by both your employees and contractors, and it’s more secure than opening up your own infrastructure to your contractors. Read more...
During the July 4th long weekend, I got the chance to read the book “Delivering Happiness” by Tony Hsieh. It’s a great book with many great ideas and lessons he learned from LinkExchange and Zappos.
So, how does this relate to cloud computing?
Here’s what Tony wrote…
“It was a valuable lesson. We learned that we should never outsource our core competency. As an e-commerce company, we should have considered warehousing to be our core competency from the beginning. Outsourcing that to a third party and trusting that they would care about our customers as much as we would was one of our biggest mistakes. If we hadn’t reacted quickly, it would have eventually destroyed Zappos.”
In this paragraph Tony summarized the lesson from contracting eLogistics for inventory services in Kentucky, which turned out to be a mess and almost killed Zappos when cash flow became a big issue.
From a business perspective, cloud services are not much different from the inventory services. Both are all about outsourcing. The high tech nature of cloud doesn’t change the business nature of cloud services. What happened to Zappos could potentially happen to any cloud customers. Read more...
VMware launches an official survey on the open source vSphere(VI) Java API. Please let the company know your take on the open source project, and what you want, for example, formal developer support, etc.
The survey includes 16 simple questions and should take no more than 3 minutes to finish. All the collected information is confidential.
Note that the survey result decides what to come next. Please make sure your voice heard by taking the survey here.
With the right system configuration in place, it’s time to install the applications. So why not use the same tools we used for the OS and middleware? Do we need yet another set of tools?”
It depends. You can use the same set of tools for middleware to install some applications. The middleware appears like an application to the OS as well. The difference is whether your application is stable enough and whether you need to customize per node. The tools like Puppet can be good for stable applications that can be deployed the same way across all nodes. If your application is still a work in progress and you need flexibility to tweak it, you need more specialized application provisioning tools.
The big technical difference between application and middleware provisioning tools is that application tools push the application to the nodes and remotely change anything as needed. The process is procedural.
The middleware provisioning tools normally have agents on the nodes to pull the software based on the prescribed configuration files. The process is declarative.
Beyond the “push” and “pull” difference, the application provisioning tools can also manage the lifecycles of applications (sometimes called services) distributed on different nodes with a single line of command or code. Given the nature of remote command dispatching framework, the application provisioning tool can do almost anything. If there has to be a limitation, it’s your imagination.
So if you develop applications by yourself, you most likely need application provisioning tools.
Let’s see what tools are there. Read more...
Cloud computing is an evolutionary technology because it doesn’t change the computing stack at all. It simply distributes the stacks between the service providers and the users. In some sense, it is not as impactful as virtualization technology which introduced a new hypervisor layer in the computing stack and fundamentally changed people’s perception about computing with virtual machines.
But if you look closely at the latest IaaS clouds, they do leverage virtualization as a way to effectively and efficiently deploy systems. Inside one virtual machine, the computing stacks remain the same as before: from OS to middleware to application.
Keep in mind that the application is the end while the OS and middleware are the means. Customers care about applications more than the underlying infrastructure. As long as the infrastructure can support the applications, whatever the infrastructure might be is fine technically. Then the question would shift to the economic side: whatever is the most cost effective wins in infrastructure. That’s why Linux gains more shares in the cloud than in traditional IT shops.
To get to the end, you have to take a mean. In the IaaS cloud, you have to install the underlying OS and middleware before you can run your application. For the PaaS cloud, you can get away from that by focusing on application provisioning.
Remember, the software stack inside a virtual machine doesn’t change. It needs OS, middleware and application installed and configured before the application can work. Read more...
I have finished vSphere(VI) Java API 2.1 beta last week. The major feature is to support next version of vSphere. The company legal also approved the contribution to the open source project after product release.
Because VMware hasn’t released the next version of product yet, I cannot release the code to general public for the moment. API and product are much like the view and model in MVC: from the new APIs you can guess what new features are in the coming product. Read more...
Designing standards is like playing stocks. Timing is critical if not all. If too early, it may stifle innovation; if too late, it may never win over de facto standards.
With the popularity of cloud computing, many standard organizations have started to work on open standards from different layers and different aspects. How to find these standards or work in progress?
In his talk at SDForum Cloud SIG on June 22nd, DMTF president Winston Bumpus (@wjbumpus) shared a web site http://cloud-standards.org. It lists the cloud related standard organization and their works.
The organizations include: Read more...
ComputerWorld just released its 17th annual report Best Places to Work in IT 2010. The criteria used for the selection include diversity, career development, retention, benefits and training. It does not include cutting edge technology though. I think that is pretty important but hard to measure and compare at the same time.
The top 100 companies come from different industries ranging from technology vendors like SAS, salesforce.com, to the customers. The list does not cover companies from other parts of the world. I am sure many companies from Europe, Canada, etc. would have made the list otherwise.
Ready for the list? Read more...
A recent article from Dr. Dobb’s introduced Fundamental Concepts of Parallel Programming. Richard Gerber and Andrew Binstock, authors of Programming with Hyper-Threading Technology, discussed three different forms of de-compositions for multi-threading:
- Functional decomposition. It’s one of the most common ways to achieve parallel execution. Using this approach, individual tasks are catalogued. If two of them can run concurrently, they are scheduled to do so by the developer.
- Producer/Consumer. It’s a form of functional decomposition in which one thread’s output is the input to a second. Can be hard to avoid, but frequently detrimental to performance.
- Data decomposition, a.k.a. “data level parallelism.” It breaks down tasks by the data they work on, rather than by nature of the task. Programs that are broken down via data decomposition generally have many threads performing the same work, just on different data items.
To make the three forms easy to understand, the authors used gardening as analogy where the threads map to gardners. For exmaple, the fuctional decomposition in gardening is to have one gardner to move the lawn and the other to weed. I find this analogy very intuitive and easy to follow. Even you don’t know multh-threading, you can guess it out from the gardening analogy.
The challenges while working with multi-threading are: Read more...
I got a request a while back for extending the vSphere Java API. The idea is that the API itself is pretty basic and not high level enough for some applications. For example, if you want to add a virtual NIC to a virtual machine, there is no explicit method for doing this. Fair enough.
Now, how to achieve this?
Three possible approaches Read more...
- Change the structure of the API. For every managed object type, we have two types: one with implementation, and the other inheriting the first one but really empty. The user can replace the first second one with extra methods as extensions. This approach is smart, but will cause confusion in the future. For instance, we will have many different implementations for the sample types.
- Use composition. You can create a new type that contains an instance of a managed object. How to expose the methods of the managed object? You can either manually add them to the containing type, or expose the instance of the managed object so that others can call its methods.
- Use inheritance. You can create a new type that inherits a managed object type. Once you get an instance of a normal managed object, you can pass into the constructor of extended managed object type. You can use the extended type anywhere a normal type is expected. Let’s pick VirtualMachine as an example,
While reading Who Says Elephants Can’t Dance by Lou Gerstner, the following paragraph caught my attention and made me think about it in the context of software development.
We started with a statement of principals. Why principals? Because I believe all high-performance companies are led and managed by principles, not by process. Decisions need to be made by leaders who understand the key drivers of success in the enterprise and then apply those principles to a given situation with practical wisdom, skill, and a sense of relevancy to the current environment.
Although managing a company and managing a software project are two different things, I believe above paragraph is perfectly true for software development as well. Let’s paraphrase it:
We started with a statement of principals. Why principals? Because I believe all high-performance software development teams are led and managed by principles, not by process. Decisions need to be made by leaders who understand the key drivers of success in the software development and then apply those principles to a given situation with practical wisdom, skill, and a sense of relevancy to the current project.
Sounds true? For your curiosity, the principles Mr. Gerstner wrote for IBM in 1993 were: Read more...
As system administrators, you may have used the feature that sends a message to all users. It’s very helpful when you want to change something that might affect others, or ask for particular attention from new users who log in later.
It’s simply 3 steps as described vSphere Client Help:
- From the Home page of the vSphere Client, click Sessions.
- Type the message in the Message of the day box.
- Click Change.
The message is sent to all the currently login users, and until the message is changed, any new users see the message upon logining to the vCenter.
Now, how to do with the API? Read more...
Most of us are familiar with MOB, the Web based managed object browser.I’ve discussed the little known secret of it, and built a tiny yet powerful API on top of it.
There is yet another useful tool in vSphere you can leverage: Web based datastore browser. This tool allows you to use a standard Web browser to browse the datastores. You can access it using the following URL: Read more...
I read the book Who Says Elephants Can’t Dance by former IBM CEO Lou Gerstner several years ago. For people don’t know the author, Lou Gerstner became IBM CEO in 1993 when the company was on its way to losing $16 billion. The book is about his insider story of IBM’s historic turn around. Unlike other books by top executives, the book was really written by the author himself.
The book is just great with insightful observations and thoughts. So when I saw it in library weeks ago, I borrowed it back home again. This time I found something new or something that I didn’t pay enough attention the first time. Lou actually had the buzzword “cloud” in his book of 2002. Let’s see what he had to say about the cloud:
It had to be in one of these early discussions with Dennie that I was introduced to “the cloud” – a graphic much loved and used on IBM charts showing how networks were going to change computing, communications, and all manner of business and human interaction. The cloud would be shown in the middle. To one side there would be little icons representing people using PCs, cell phones, and other kinds of network-connected devices. On the other side of the cloud were businesses, governments, universities, and institutions also connected to the network. The idea was that the cloud – the network – would enable and support incredible amounts of communications and transactions among people and businesses and institutions.
Comment: The meaning of the cloud seems limited to networking, and quite different from what’s known today. Networking is still important today in the new cloud because the connectivity is a must for accessing cloud services. Read more...
Web based applications become more and more popular. Not only normal Web sites but also enterprise management systems are adopting this to deliver the functionalities due to the benefit of zero installation on the user’s side.
There are a lot of Web Frameworks today, probably more than anyone can grasp. For each programming language, there is one or more Web frameworks that help you to create Web based applications. Choices are definitely good but may give you a hard time to decide which one is best for your project. More often than not, there is no single best one that suits all your need. In other words, you have to decide the best in the context of your problem.
What should be in the thought process to a decision? Read more...
- Programming language. You have to decide what programming language to use for your Web applications. With the preferred language in place, you can only use the frameworks supported by the language. This usually limits much fewer options to your list. The most popular programming languages for Web applications are PHP, Java, C#.
The choice of your programming language is not a choice sometimes. The most rational choice is to use a programming language you and your team are already familiar with. If that happens to be C, you then want to go down your list. Learning a new programming language and a new framework can be daunting. Not long ago, I tried to learn the Lift framework based on Scala language, and found it’s not that easy at all.
If it’s a team project, you have to find one language that all or most people are comfortable with and at least one person are good at.
In the May 3rd issue of InformationWeek, Bob Evans wrote an article “Oracle’s Phillips: Standardizing On Oracle Is IT Cure.” I am sure most IT companies won’t agree with it even though Oracle is now a full stack company after grabbing Sun MicroSystem not long ago. The big players probably want to claim the same for themselves, for example, standardizing on IBM is the IT Cure.
Digging further into the article, we can find some interesting arguments by Phillips:
What CIOs are struggling with right now is trying to find a way to get the opportunity and ability to manage the entire stack with a single management tool that’s predictive about that stack’s going to behave, how the change management around it is more prescriptive and planned, and where they really know how to upgrade and patch the entire stack.
All the dependencies between these layers – the middleware, database, storage, software, systems — they’re all related but unpredictable. And that’s the cycle they’re trying to get out of it — all that need to constantly provision and manage — it’s a huge cost, and it’s kinda boring and takes lots of people to do it, and it’s risky. Read more...