InfoQ

News

Sun Cloud API: Is Simplicity Enough?

Posted by Boris Lublinsky on Mar 24, 2009

Community
SOA
Topics
Cloud Computing
Tags
Sun Microsystems

 

A new post by William Vambenepe discusses how much simplicity we really want in our datacenter automation mechanisms at the expense of flexibility. It is inspired by Sun’s announcement of the Sun Cloud initiative. William notes:

The Sun API is very simple and its authors are proud of that fact. Indeed they should be proud of avoiding unneeded complexity. They have probably also kept out (at least so far), some needed complexity

The foundation of the Sun Cloud is the resource model and the API for accessing/manipulating these resources. The resource model defined by Sun Cloud is based around a Cloud resource, a representation of a user's view of all accessible resources in the cloud and provides access to the cloud itself and its components. A cloud can contain one or more Virtual Data Centers (VDC) - a representation of a user's view of available resources in a single virtual data center. A VDC contains a set of public addresses - static, publicly accessible Internet Protocol (IP) addresses, which can be attached to a particular VM via an interface; clusters - groups of VM and VNet resources, segregated for purposes of grouping by common functionality and volumes - remote WebDAV volumes that may be accessed by the same credentials used to access this information. A point-in-time representation of the contents of a volume is defined by a snapshot. As we have defined above a cluster contains Virtual Machines (VM) - virtual computers associated with a cluster, with the state defined by a backup representing a snapshot that was taken of a specific VM and Virtual Network (VNet) - a virtual private network to which an interface associated with a VM may be attached. An interface represents a network interface card (NIC) associated with a specific VM, and documents an IP connection (from this VM) either to a VNet (virtual private network) or to a public address (a static public IP address accessible from the Internet).

According to Tim Bray’s post the APIs provided for a Sun cluster, represent:

... a unified view of the storage and compute and networking services. It’s built around the notion of a VDC, which contains networks and clusters of servers and public IP addresses and storage services. The idea is to give you the administrative and operational handles to build something really big and ambitious. The VDC notion is really slick and I think something like it is going to be required in any serious cloud API going forward.

At the bottom level, the interface is based on HTTP and tries hard to be RESTful. All the resources - servers, networks, virtual data centers - are represented in JSON.... This interface does more than just Resource CRUD; there are operations like "Start server" and "Snapshot storage". The kind of thing that classic REST design patterns don’t really give you a cookbook for. Here’s an example of how it works: the representation of a server includes a bunch of "controller" URIs; a POST to one of these constitutes a request to do something, say reboot the server.

On top of the low-level REST there’s a set of libraries for those who’d rather not deal with HTTP messaging; available off the top in Java, Ruby, and Python. On top of that there’s a command-line interface suitable for shell-scripting, except for it emits JSON instead of classic-Unix lines-of-text.

Finally, there’s a Web GUI so you can build your VDC by dragging and dropping things around. It’s nice demo-ware and I can see people using that for getting a quick ad-hoc server deployment on the air on short notice. But my bet is that for heavy lifting, you’re going to want to script your deployments, not drag-and-drop them.

William questions whether the APIs based on this simple hierarchical model can represent the complexity of real datacenters:

Look at a datacenter today. Make an inventory of all the networking equipment, storage, servers, hypervisors, operating systems and infrastructure services that it contains. Consider all the configuration settings of all these resources (as they would be represented in a complete, authoritative and consistent CMDB, that most elusive creature). Add to it all the controls and APIs they expose. That’s a lot of data, even if you don’t consider the applications layer. That’s a few orders of magnitude larger than what the model in the Sun Cloud API can describe. That gap (between our CMDB model and the Sun Cloud model) is what we should look at and analyze. Why are they so far apart? How big is the ideal datacenter automation and virtualization model?

He suggests that:

The right place to be, between the "omniscient CMDB model" and the "Sun Cloud model" is somewhere in the middle, with a couple of incrementally complex layers. Of course they are so far apart that saying "somewhere in the middle" is a cope-out.

Sun Cloud.provides a set of APIs that can be used by both cloud creators and users. Time will show whether this simple set of resources and API will prove to be sufficient for building and using clouds or a more complex API set is going to be required.

No comments

Watch Thread Reply

Educational Content

Brian Marick on 4 Challenges and 5 Guiding Values of Agile Software Development

Brian Marick takes us through a quick tour of the most important values and challenges to adopting Agile successfully (they aren't the typical challenges and values we hear in the community).

Are You a Software Architect?

The line between development and architecture is tricky. Does it exist at all? Is an ivory tower actually needed? There's a balance in the middle, but how do you move from developer to architect?

Agile – A Way of Life and Pragmatic Use of Authority

The word 'authority' sometimes produces an allergic response in hard-line agilists. Freedom and authority – both are bad if misused and both are good if used in right spirit for a noble cause.

Getting Started with Grails, Second Edition

"Getting Started with Grails" brings you up to speed on this modern web framework. Companies as varied as LinkedIn, Wired, and Taco Bell are all using Grails. Are you ready to get started as well?

Using ITIL V3 as a Foundation for SOA Governance

Those familiar with only ITIL V2 often scoff at the thought that ITIL could serve as a governance framework for SOA. With ITIL V3, the focus of the framework shifted towards service-orientation.

Adrian Colyer on AspectJ, tc Server and dm Server

SpringSource CTO Adrian Colyer discusses AspectJ, SpringSource's dm Server and tc Server products, OSGi and Scrum.

Adam Wiggins on Heroku

Heroku's Adam Wiggins talks about Rails, Background Jobs, Add-Ons, Ruby, and how Heroku manages to work around Ruby's inefficiencies using Erlang and other languages.

SOA as an Architectural Pattern: Best Practices in Software Architecture

For Grady Booch the foundation of a good architecture is patterns, SOA being just one of many patterns. In this Second Life presentation, Booch attempts to bring more clarity on what architecture is.