During a conference-rich week two weeks ago, Pivotal was invited to participate in a coding contest that was a part of the Intel Developer Forum (IDF) held at Moscone. The event hosted 15-20 college students, forming two teams that would compete against an Intel team; the task: build an innovative application for junior high math students. The main thing the applications would be judged on was cloud-readiness, and this is where Pivotal came in – the applications would be deployed to Cloud Foundry. I had the great pleasure of representing Pivotal, Pivotal Labs and Cloud Foundry at this event and it was a blast!
The team’s submissions would be judged on certain criteria including:
- Design for failure
- Stateless computing
- Scale out (not up)
- Event driven
- Web services
- Prefer eventual consistency
I’d like to share several reflections:
One of the main things that I learned from the experience is that thinking in terms of distributed systems not is immediate. Well, duh – of course it is not. It made me think back to my days in school where the initial classes were introductory programming, data structures and algorithms, and computer architecture. In chatting with these students, those are the same courses they have been taking. I think it’s inarguable that a course in distributed computing MUST be a part of any undergraduate computer science curriculum today (but I’m not sure that it is??). And it needs to come early. When I was in graduate school at IU I often TA’d the first course that computer science majors took, an Intro to Programming course taught in Scheme. This was brilliant because, in part due to the nature of the language, they are taught recursion in week 3 (as opposed to week 13 when I took it in my intro Pascal programming course) and it turns out not to be hard (in week 13 it was hard for a lot of my fellow students). Recursion became a foundation for them, not an add-on. I’d like to see distributed computing be a part of that foundation today.
In the bucket of “stateless computing” we detailed that state should not be stored within the compute node. While the game play ran entirely in the browser, things like user profiles and high scores would be stored in some database. Intel had stood up their private PaaS with several choices for persistence, including both relational and NoSQL databases. It probably won’t surprise you to hear that the Intel team stored in relational and the student teams both chose MongoDB. I wish I had been able to dig in a bit more on why they made this choice, but by the time the question came up we were singularly focused on get things working. (If you were on one of the student teams, please post a comment and tell us why you made that choice.)
In the end, neither student team was able to connect their browser-based application to cloud-based persistence (entirely our fault for not anticipating what would be needed here), though they did get the applications pushed into the cloud, which on it’s own is pretty cool. The first team to get their app pushed into Cloud Foundry, using the cf cli, was literally jumping up and down and whooping and hollering. They didn’t have to stand up a VM, load the OS, install an app server and then deploy their app – they just wrote their app and pushed it to the cloud. That is PaaS.
Finally, I want to extend congratulations to Cathy Spence and the whole Intel team for the event. While I was there I came to understand that Intel does these types of events quite regularly and while it’s probably a bit tricky to quantify the ROI, there is no question that Intel benefits in terms of positive PR and recruiting. And the benefit to these students is great! I’d really love to see my parent companies, EMC and VMWare, take a lesson here, and while Pivotal is much smaller and may lack some resources, I’m certain there are ways we can creatively engage in a similar manner.