Everyone is talking about the cloud, but the term has a plethora of meanings. From a consumer’s point of view, the cloud is a Web service accessed by an app running on a smart phone or tablet. To a chief technology officer, it might be software-as-a-service (SaaS) or a way to run a horde of virtual machines.
To an embedded developer, the cloud is a target platform, a component within a cloud-based solution, and even a development platform. You might know how all these technologies work as well as their implications, but more likely some will remain a mystery.
Using the cloud
Anyone can use the cloud. Apple’s iCloud will not be the first service for storing a range of content, but its support for Apple’s iPhone and iPad instantly gives it a large audience. Dropbox is one of many services that work with any PC, tablet, or smart phone.
It’s even possible to implement cloud storage with your own network storage devices (see “Cloud Storage Delivers Reliability And Accessibility” at electronicdesign.com). Ctera provides a variety of network storage devices that use the cloud to tie them to myriad gadgets, from PCs to smart phones (Fig. 1).
SaaS is another way to use the cloud. It moves apps from running on a local platform onto the cloud. SaaS services can run on dedicated hardware, but typically utilize the cloud.
Running on the cloud
Cloud computing typically takes advantage of networking, virtualization, and iSCSI storage-area networks (SANs). Amazon’s Elastic Compute Cloud (EC2) and Google Cloud Services provide a very large and public collection of services distributed throughout the world and support everything from a single virtual machine (VM) to thousands of VMs.
The public cloud has a host of issues users need to consider, such as security and monitoring capabilities. Service level agreements (SLAs) are part of the mix, and high-availability support is optional. The advantage is that hardware purchases aren’t required.
Many users aren’t interested in tossing their server farms, though. The private cloud provides many of the advantages of the public cloud but with more control. Many companies are employing a mix of private and public services.
Developing on the cloud
Development tools are becoming more popular for SaaS applications. As with other SaaS solutions, they’re scalable, come ready to run, and cost only as needed. Some companies are providing their development tools exclusively through the cloud such as Tabula’s Stylus integrated development environment (IDE) for its ABAX FPGA (see “Web-based Development Tools Target FPGA” at electronicdesign.com). Developers can save the final design, but the tools are only online.
Vector Fabrics provides cloud-based development services for parallelizing C code. Its vfEmbedded system analyzes applications and makes recommendations for improving the performance of the code on a multicore platform using various multithreading techniques. Its visualization tools can be used remotely and target x86 and ARM platforms. Users subscribe to vfEmbedded on a per user monthly basis like many cloud-based services.
MoMinis put its gaming development platform and its deployment platform on the cloud (see “Smart-Phone Gaming Platform Includes Distribution” at electronicdesign.com). Developers can design and test smart-phone games using these tools and then have the games sold online through MoMinis, which takes a cut.
IBM looks to bring it in every way with products like Rational Rhapsody that run on a PC, on a public cloud, or on a private cloud, allowing them to coexist with an organization while exchanging data seamlessly. Rational Rhapsody is a collection of collaborative design and development for software and systems designers. It supports a range of languages like UML, SysML, AUTOSAR, DoDAF, MODAF, and UPDM.
According to Dave Locke, worldwide marketing manager for Rational, customers have a variety of needs. Many have Rational Rhapsody tools installed on workstations while others have server clusters suitable for a private cloud. The private cloud also addresses security and control issues. A mixed hybrid environment allows expansion without buying additional hardware.
Developing For the cloud
Cloud applications simply can be Web servers, but more advanced systems employ some level of communication between a client application and the server running on the cloud. This is no different than a conventional client/server environment, but this approach is now the norm rather than the exception since the client apps are often running on mobile devices.
A few companies streamline the development process by providing the necessary infrastructure. These platform-as-a-service (PAAS) vendors include Digi International and its iDigi Device Cloud and Eurotech and its Everyware (see “The Embedded Cloud Runs Java” at electronicdesign.com).
Developers can use iDigi’s cloud service. The iDigi Manager Pro provides services such as database support, backup support, remote management, and group control. These services are matched with Digi hardware that runs iDigi middleware to communicate with the cloud-based support.
Eurotech’s Everyware Software Framework (ESF) is built around the Java-based OSGi gateway and the lightweight MQTT (MQ Telemetry Transport) protocol (see “The Embedded Cloud Runs On Java” at electronicdesign.com). These tools can be used to connect to a custom cloud-based solution, but they are more likely to be part of Eurotech’s Isidorey Device Cloud. Eurotech’s Helios Programmable Edge Controller runs ESF (Fig. 2). Developers can write OSGi bundles that use MQTT to communicate with the Isidorey Device Cloud.
Embedded developers also can use platforms like Microsoft’s PAAS services that include Azure and SQL Azure. These platforms target enterprise Web solutions but work equally well for embedded clients. Microsoft’s AppFabric middleware works with a range of tools including .NET, Java, Ruby, and PHP.