Integration Corner: Cloud Computing
March 1, 2011
My company regularly develops integrated vision and motion control software for a wide variety of applications in factory automation and transportation inspection. Many of these applications require a fairly complex but clean, easy-to-maintain graphical user interface (GUI).
There are many technologies for implementing GUIs, and different companies have various favorites at different times. Certainly, Microsoft Visual Studio.NET, Microsoft VisualBasic, Java and National Instruments LabView leap immediately to mind.
For us, as with many integrators, a primary area of concern is code portability. We deploy our machine vision libraries on Windows, Linux and embedded OS platforms with relative ease by sticking to standard C and C++ constructs and by using as little assembly language as possible. This is fairly straightforward and results in better code anyway. However, the transportability of GUI code is much more difficult to achieve.
We often use Microsoft.NET or VB, but this results in a very Windows-centric architecture. We have tried Qt-a cross platform windowing system from Nokia-as well as gtkWidgets, another X-windows/Windows cross-platform GUI builder that has many adherents. Each of these approaches, however, requires the adoption of a single-vendor solution that is by no means future-proof. The risks of developing applications that get orphaned and are hard to maintain or upgrade in the future are large.
The answer came to me in December. Like many companies, we have a heterogenous mix of Windows PCs, Linux PCs, Macs, iPhones, Blackberries, Droids-a bit of an Inferno-esque networking challenge. We were lost in the weeds of Mail, Entourage, Outlook, Thunderbird and Gmail, and I asked our IT consultant to help pick the best mail client. And the answer was too simple.
The only good mail client is no client. Make it all work in your browser, which is best done by Google with its GoogleApps and GoogleDocs systems. Everything is out there, including the applications, and one can access them equally easily from anywhere as long as one has something with a CPU, a keyboard, a screen and a browser.
Within a week, we had migrated the whole company to GoogleApps and GoogleDocs, and we have been more and more productive, and not discussing IT issues, ever since.
What does this have to do with system integration software? Well, here’s the Eureka moment: Just as the only good mail client application is none, the only good any-kind of client application is often none. And cloud computing makes this possible.
How? Well, cloud computing works like this: All of the data lives on servers in professionally managed server farms, and Web apps, which are designed to run in your browser, are transferred to your browser as needed.
Now, the capabilities of those browser-based apps are formidable. Explore the GoogleApps document editors, for text, spreadsheet and presentation applications, for example. These apps are beginning to rival the PC-based apps available in Office, and require no code on a client machine other than a browser.
How far can we push the browser-driven app? They go all the way. The key is the emerging HTML5 standard, a description of what capabilities browsers provide and how they are told to do different things. It turns out that in HTML5 one can design a program as complex as a word processor or a spreadsheet program, and the HTML5 code that is sent to the browser fully specifies the application.
The amazing thing is that this same HTML5 works just fine on a Windows PC in Explorer, or on a Mac in Safari, or on any machine in Firefox, or on an iPad, or in mobile Safari on an iPhone, or on an Android-automatically. In addition, the new generation of programmers are usually more than a little adept at creating these Web applications-a key portion of their training and experience is in this area.
What about performance? My company writes image processing applications. We regularly crank through three-million-pixel images at 10 frames per second and are reading characters, counting objects or measuring features. However, HTML5 and browsers are powerful enough to run video games now, and video games are basically machine vision in reverse-they place most of the same kinds of burdens on CPUs as do image processing or intense motion control applications.
Therefore, if you can make a three-dimensional (3-D) game run on it, you can pretty much do anything on it. In fact, if you want to hire a programmer who knows tons about optimization, matrix math and high-speed number crunching, you should probably be interviewing game developers. I do.
What about data transfer volume? A cloud-computing, Web-centric model often is discarded by companies based on an uninformed analysis of the data transfer requirements. In image processing applications such as the ones my company creates, we may be transferring dozens of megabytes per second each from five or 10 cameras. The notion of passing all of this data up to a central server in the sky for analysis is indeed impractical. However, this also is not required.
Remember, the HTML5 code and scripts are running locally on the client machine. They can access the image or other application data directly without transferring it over the network. The pixels, or any other real-time data, never need to leave the browser, and any hardcore number crunching libraries will be downloaded to the client PC browser, too.
What about security and reliability? These are other common concerns based on the misplaced idea that all of the data will have to be transferred over a public network, or that multiple computers need to be functioning to make the application work.
In fact, the entire “server” need not actually be many states away out in the real cloud. It can be a machine residing within the walls of the customer, or can even be on the exact same machine that is running all of the data analysis in the browser app. In this latter architecture, we still have a single PC solution, but have architected it in a cloud-computing fashion and with cloud-computing tools so that it is consistent, portable, general purpose and automatically improving as computers and browsers advance.
So watch for cloud-centric apps in factory automation and integration over the next few years.
In portability, general performance, and the availability of strong programming talent, this is the way to design new systems. While this idea is pretty new for factory automation and machine vision applications, the trend is inescapable and the capability is there.