Bio Chris Richardson is a developer, architect and mentor with over 20 years of experience and is the author of the recently published book "POJOs in Action". Chris has been a technical leader at a variety of companies including Insignia Solutions and BEA Systems. Chris has a computer science degree from the University of Cambridge in England. He lives in Oakland, CA with his wife and three children.
SpringOne 2GX is an annual event; it includes a technical exploration of the Spring ecosystem along with the latest developments in the Groovy/Grails space. As a participant, you will have the opportunity to attend two great events at one venue. Whether you're a Spring enthusiast, Tomcat user, Groovy/Grails fan, or just interested in open source development, you'll find valuable content in sessions presented here.
1. My name is Ryan Slobojan and I'm here with Chris Richardson, the head of Cloud Development at SpringSource. Chris, how has the Cloud computing landscape grown over the last few years and what sort of tools are now available to developers?
I think, to a large extent, cloud computing effectively came into existence within the past couple of years. My memory is a bit hazy, but I started playing around with Amazon EC2 back in... I think it was the middle of 2007, so just over 2 years ago. I'm not even sure how well-known the phrase "cloud computing" was back then. Certainly from my perspective, I started playing with Amazon EC2, created an open source project called Cloud Tools and then, all of a sudden I found that I was in the middle of this hot phenomenon known as cloud computing and I'd go to cloud camps and hundreds of people would show up. I had no idea! It's something that's just sort of exploded onto the scene and has seen a tremendous rate of adoption over the past couple of years now. In terms of... What is there in terms of offering, well there's various Infrastructure-as-a-Service clouds that are available. Obviously, Amazon Elastic Compute Cloud is the most well-known one, but then back at VMWorld VMware announced vCloud Express. In the same way that you can go to Amazon and sign up with your credit card, you can go to various vCloud Express service providers, give them your credit card number and start launching VMware-based cloud infrastructure VMs.
It's interesting. To a large extent they feel identical, in the sense that with Amazon you launch a virtual machine, 3 minutes later you can SSH into it and it behaves as if it was a Linux machine under your desk. You can configure all the usual software and so on, but there are a few differences. For example, one interesting characteristic of, say, Amazon is that local storage is ephemeral: as soon as the virtual machine ceases to exist, the contents of the disk do also. It's not like your machine under your desk where you can turn it off and turn it back on, and the disks are still there. But of course in Amazon there are ways... There are alternative, more traditional storage solutions, in particular Elastic Block Store, that gives you fully durable storage. At the end of the day, it pretty much behaves the same way, as far as storage is concerned, though one interesting feature that's not present on Amazon Elastic Compute Cloud is multicast. That's not supported there. That can impact how your various services discover one another, because popular technologies like JGroups tend to leverage multicast. So that's a challenge, but there are workarounds.
Cloud Foundry is a Platform-as-a-Service offering that makes it easy and simple, fast, etc. for Java developers to deploy their applications on Infrastructure-as-a-Service clouds such as Amazon EC2. In other words, what does that mean to a developer? In the absence of something like Cloud Foundry, if you want to deploy your Java application on EC2, you have to become extremely familiar with how EC2 works, the APIs, you have to have a good understanding of Linux scripting, how to configure MySQL, Apache, Tomcat, etc. So, there is a lot of low-level messing around that you have to be familiar with in order to correctly set up your Java environment. With Cloud Foundry, you don't have worry about that, you literally with just a few clicks of the mouse upload your WAR files and any SQL scripts that configure the database for your application and then click the "Deploy" button and Cloud Foundry just takes care of launching the instances, it configures the database server, configures Tomcat, deploys your application and it will also configure Apache as well: set up SSL, configure the serving of static content and so on. I think from logging into Cloud Foundry it's roughly 10 clicks of the mouse to have a Java web application up and running on Amazon Elastic Compute Cloud. What's more is that when the application is running, we actually monitor it and manage it. If a server fails, we start a new one. If a service core dumps, we restart that service. If the load goes up, we can auto-scale, we can add more instances on the fly; or conversely, if the load goes down and your servers are idle, we can start turning them off to save you money. It provides you, as the Java developer, a very quick and easy way to deploy your Java application on the cloud without detailed knowledge of Linux and the various software packages that you need to use.
I think the main differentiator between Cloud Foundry and other offerings is really the breadth and the depth of what we can offer. If you look at what SpringSource offers, and more generally what VMware offers, it's actually an incredible range of software. On the build side of things SpringSource offers Grails, Roo, STS. So, you've got these developer tools that you can... That will integrate with Cloud Foundry. In terms of the Runtime component, you got tc Server and dm Server. Today we deploy to tc Server, one day you could expect us to deploy to dm Server. Then, on the management side, there is Hyperic HQ. At that level, there is a broad range of tools that can just plug into Cloud Foundry along with, in terms of just the people who are onboard, deep expertise in all of those technologies – whether it's Tomcat committers for example. Then, of course, now we are part of VMware, we also have deep expertise in the underlying virtualization infrastructure, so you can imagine some really interesting synergies happening there.
In terms of new Cloud Foundry features? I actually preface this by saying it's of course somewhat speculative and so on, but there are various things, avenues we're pursuing. One is multi-cloud support. Today we run on EC2; back at VMWorld, we actually demoed Cloud Foundry running on top of vSphere, internal in-house infrastructure. At SpringOne, we're actually going to show Cloud Foundry deploying on vCloud Express, so stay tuned for that. You can imagine that we are just going to expand the range of clouds that we support. Then also, another thing that's really important is to expand the user experience to support the whole workflow of deploying and managing Java applications, providing much better support for that - plus, expand the stack. Today, we support the Apache tc Server/MySQL stack, but it's not hard to imagine expanding that to add in caching, for example, or text search. So just offer a richer range of services.
That's a very interesting question. Part of me, I'm very reluctant to predict the future, but I think it's safe to say that the future is definitely... Clouds are very much in the future, so developers are more often not going to deploy to either a public cloud or perhaps an in-house private cloud. We're just going to get more and more used to deploying to a "cloudy" environment, where you can access resources on demand, rather than having to wait months to get in-house the hardware that you need to deploy your application. I think the exciting thing is, that if you look at the tooling that's present today, whether it's Roo or Grails or just Spring STS, etc. that let you create an application very quickly, in the absence of cloud technology, you can still take a really long time to actually deploy it. So, by adding cloud technology into the mix, you can develop very quickly and deploy very quickly, as well. I think that's going to end up making enterprise IT a lot more agile, enabling it to much more effectively support the needs of the business.