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...
Security is a very important aspect of application development. Tonight I learned a new security framework called Apache Shiro, the successor to the JSecurity project.
It’s a great talk given by the founder and lead of the project, Les Hazlewood, who relocated to Bay area not long ago for starting his company katasoft. The presentation ran over for one hour but still got most people seated. Read more...
I am probably one of a few persons who read the VMware vSphere API reference extensively because of my book. When I read it, I normally quickly click the Managed Object Types link in navigation pane on the left side, and then choose one type for the details on the right side. Read more...