VMWare announced Cloud Foundry (TM) support for Scala in June at Scaladays 2011. During a recent interview Ramnivas Laddad, Senior Software Engineer at VMWare said "Scala reduces the barrier between idea and application. Cloud Foundry reduces the barrier between application and scalable deployment." You can learn more about this exciting open source project in this interview with Ramnivas and Dekel Tankel, Cloud Foundry Product Marketing at VMWare.
So what exactly is Cloud Foundry?
Cloud Foundry is an open source project . It provide a technology that allows you to deploy applications with very little friction. The developer can focus on the application, the business logic and then just push it to the cloud.
Cloud Foundry is the industry’s first open platform as a service, providing a choice of developer frameworks, application services and deployment clouds.
All the middle-ware components will be set up for you. Cloud Foundry provides a wide selection of development frameworks, application services and the cloud platforms that you can deploy on. Being open you can use multiple frameworks or add one of your own. For example, Spring, Ruby on Rails, Ruby on Sinatra, Node.JS and of course Scala are all provided. Many popular services are available too, MySQL, MongoDB, Redis and others. Even Multiple-clouds are allowed, VSphere for example.
In general, today’s PaaS solutions do not permit local deployments, and in many respects seem to represent a significant step backwards from things developers currently take for granted. Cloud Foundry provides a PaaS solution for developers that embodies the vital principles of simplicity, openness and portability.
We put a lot of effort into Cloud Foundry to simplify application development, makes it faster, easier to build, test, deploy and scale applications. We see Scala as a critical component to making that happen. Scala is exciting and we are really happy to support it.
Why is Scala important?
If you are creating web applications you should have the freedom to use the things that make you most productive. Therefore our goal has been to support the most productive languages and many frameworks. Scala is a very innovative language, concise, statically typed, object oriented and functional. Things like Parallel computing, Parallel Collections are all very exciting. Then you have things like the Actor model and Akka all fueling lots of growth in developer mind share.
We expect a lot more people to be using Scala and we wanted to make sure Cloud Foundry would be right there to support them. There is more connections with Scala. I am still a Spring Framework committer and I find it nice that if you want to develop a Scala application using the Spring Framework it is a pretty easy thing to do.
For those millions of people who know the Spring Framework, they can now feel really comfortable using Scala. They now have a simply excellent implementation platform in Cloud Foundry. For VMWare Scala is a very natural language to support, it is really easy to get into. Having worked with other languages I found Scala is much simpler for beginners and you soon get to do real work.
Who uses Scala at VMWare?
At VMware we have a whole bunch of people using Scala, from production developers to passionate hobbyists. We all like to work on cutting edge technologies and our Spring background helps us a lot. We have not gone a 100% over to Scala. Java is still a large part of the work we have to do. It's been around a long time and there is a lot of code written in Java. But we are steadily doing more Scala and the integration with Java has been key. The Java eco-system is so huge that you can often find a solution to any problem there. For example the Spring is a popular framework available in the Java world. Spring Integration, Spring Data, Spring ORM or Spring Batch are all easy to use from Scala. You can choose the best support that exists in the Java world and use it to speed up your application development. That's really neat.
We are now looking to support Spring Applications with Scala DSLs, specifically in Spring Integration, things like routers and configuration. It will make the whole thing a lot easier to understand.
What was it like learning Scala?
I started liking Scala about 3 years ago and using just a simple editor and the error messages were tough to understand. Now the IDE's are a lot better and provide much more help. Learning Scala is interesting, it's a scalable language. There is a part that is really easy to learn and you can soon be productive. However, there are many facets to Scala and I still don't understand them all. But that's OK. I can get most things done and over time I have got to understand it more and more, usually when I tackle something new.
For a lot of us at VMWare O-O is the inbuilt way of thinking. The new concepts around Functional programming are a culture change. It takes a while to get the mind working that way. Once you do then things like Pattern Matching and Higher Order Functions are a joy to use. Much more expressive.
I found learning Scala fun, but it can be a very humbling experience too. You keep realizing how much you don't know, not just Scala but computer science in general. It's been a real stimulus to go read the original academic papers so I could understand more.
What do your customers think about Scala on Cloud Foundry?
We see a lot of interest in our customer base. It is too early talk about adoption rates for Scala on Cloud Foundry. We only announced the capability in June. However, there are 10's of thousands of users on cloudfoundry.com and we have seen a lot of interest from the Spring and Java developers around having Scala available. Now with the announcement of Scala on Cloud Foundry the interest will grow and lead to lots of interesting applications.
We believe giving developers the ability to develop in Scala, leverage services inside Cloud Foundry like MongoDB or MySQL and then simply deploy is a killer combination. It's really easy to develop a Scala app bind it to a data base, deploy it and have a ready to access web site.
That's great for a Scala developer. Just focus on the business code and no need to deal with all the rest. This is the promise of the platform as a service, but at the same time it should not lock you into one paradigm, one kind of service or one kind of cloud. That's the power of the open source path. It's a compelling proposition for Scala developers. We will see more traction, and the blog comments support this.
In general, Scala developers tend to be more advanced in terms of understanding and adopting new technologies. They understand the advantages of using Mongo, RabbitMQ or Redis but they do not want to be in the operations business. They may not have operations expertise. They may not understand or have time to understand what it takes to take a Mongo application into Operations, understand managing backups or deployment on nodes.
Micro Cloud Foundry, available soon, is a single developer instance of Cloud Foundry. It provides developers with a personal PaaS that runs on their desktop. You have all the pieces you need in one easy to install and manage package. Scala is a scalable language Cloud Foundry is a scalable platform. You can start small, one system and simple services or scale up to use a many systems and an extensive range of services.
So you can build and deploy a Scala application on your desktop and know it will scale. Scala and Cloud Foundry make a really productive combination. And there are no operations problems to worry about.
A nice thing is that applications can be started in one language, for example Ruby or Groovy, and at some point a part of the application can be changed to Scala. All the languages use the same platform services so the moving between languages is greatly simplified. The developer can choose the language that is best for their needs.
The language decision is nicely decoupled from the services decision.
Cloud Foundry adds deployment productivity to Scala productivity.
It is an ideal environment for a Java shop to move part or all of their application to get the productivity and performance benefits of Scala. The same services are available and the operations aspects are taken care of by Cloud Foundry. The development team can decide the best mix and migration strategy. They can go for the best payoff areas and easily manage the risk. For web applications Cloud Foundry supports Lift too.
Cloud Foundry was launched on April 12th 2011 by VMware. Both as the CloudFoundry.com service and as an open source project via CloudFoundry.org. Now Scala support too.
Scala is a trigger for innovation. Cloud Foundry is a fast way to get those innovations into production.