Hey all you Shifters (and soon to be Shifters), it has been a very busy summer of shows, tutorials, workshops, and meetups. I had a 3 week break but now the season is starting to ramp up again. This last week I did a 4 hour workshop for CodeChix at the VC firms of Andreessen Horowitz and then I did a workshop, a lightning talk, and worked the booth at MongoDB Seattle. I would like to use these two shows to bring up some of my thoughts and experiences from talking to people about PaaS and NoSQL - two very new and "hot" topics for developers.
First message - they are a comin' and you better get ready
If you are a developer or a sys admin these two technologies are eventually going to be part of your tool belt or maintenance portfolio. They are not really common place today. Even when I go to a MongoDB or a Cloud for developers conference, most developers or sys admins have not dealt with these beasts in the wild. They have heard stories, read blog posts, or seen inappropriate (NSFW) yet hilarious videos on youtube.
Well my friends, the time has come, all of you should be trying some of these technologies out NOW. You may ask why now? The reason is because these technologies are becoming more and more mainstream and not being able to intelligently talk about them will leave you out of key conversations. They will be the tools that the young whipper snappers will be using and talking about. They will, when used appropriately, save you time, frustration, money, and help you create better applications.
How to get started
As per usual, the answer is JUST DO IT. Don't get bogged in a pit of reading or the swamp of contemplation. Choose a PaaS and start to play. I, of course, would recommend OpenShift (an 11 out of 10 on the independently verified Steve Awesomeness index), but there are several other Platforms you should try using. Really I think you should use more than 1 so you get a feel for different ways this technology works. I think using a hosted version is a good way to get going quickly but there are also benefits of having one you host yourself.
If you start with a PaaS then you will probably get at least one NoSQL data store to start with. For example with OpenShift you get MongoDB, an excellent document based NoSQL option. But either way, using a PaaS allows you to skip the download and start playing in minutes. Once you get your head around some of the basic concepts and you have found a NoSQL technology you want to really use, you might want to install it on your local machine.
The important part to remember is that different NoSQL technologies are good for different use cases, with some of the broad categories being: document stores, key-value stores, and network/graph stores. Each one fits a different use case and is more appropriate for some data sets than others. Again, I think you should play with a couple of different types, even within the same categories. The key here is to start playing and getting your head around them, even for small dummy data sets. They eventually will become another part of your application architectures, which may or may not include a relational database in that picture.
Sys admins, you should start playing with these now because their tuning and operation is not the same as your RDBMs. For example MongoDB does replica sets and auto-sharding in a different way than MySQL or PostgreSQL. Play with it now so you can have that experience without someone breathing down your neck to get it going.
You should also play with PaaS because it will actually make your life easier. You can set up a PaaS on some spare servers (or virtual machines) and then let the developers self-provision. You don't have to keep getting the phone calls that say "where is my node.js server with riak that I NEEEEEEDDDDDDDD". Just set up the PaaS and let them provision and the nice part is they will all provision the same architecture so the migration to production is much smoother.
Second message - this is going to be a long game but the direction is set
Subversion is done and you will eventually be using git. People can argue about this all they want but the flow of technology seems pretty clear to me now that we will all be using git within the next couple of years. So, as a developer, you are faced with two choices - start getting on board with git or ride subversion into the sunset.
The reason I want you to start on PaaS and NoSQL now is because there is no doubt in my mind that these technologies are here to stay. Be aware though, we are in the early stages of these technologies with years until widespread acceptance and use. Of course they are being used now, but in my experience it is only the Alpha developers and innovative companies that are using it. I am only seeing some of the fast followers coming on board now - though NoSQL is farther along than PaaS.
One other thing to consider is that the ramp for PaaS and NoSQL will be faster than it has been for other technologies. I actually think "cloud" providers and PaaS will be helping this to happen. First, PaaS really does make life for developers so much easier. It is easy for me to evangelize for this area because I know the pain of being a dev and wasting my time spinning up servers, configuring, and keeping it up to date. No, a PaaS isn't right in all situations, but it certainly is going to make the lives of devs (and sys admins) better. Once you add the PaaS then it becomes so much easier to try out different NoSQL technologies. Even if you don't use a PaaS - it is so much easier to spin up an AMI with one of the NoSQL technologies on it than it was to find a hosting provider or installing a server yourself. The quick feedback of building things and then having people see them just motivates people that much more.
By being one of the Alpha or fast followers you can:
* Exploit technology gaps to help you or your company gain an advantage
* Position your resume and skill set to be worth much more
* Help your company do more with less resources - there are real efficiency gains here
* Be able to cut through the hype as we reach the peak of inflated expectations
* Gain access to technology and ways of working that will help you to grow as a developer or a sys admin
Final note - there is no one true way
If you want, I can end here with some polemic that will act as Hacker News Bait (flame on!) but it wouldn't be how I really feel. Other than the obvious superiority of OpenShift there is no "right way" to do this. There are really great projects out there changing the way developers provision and build their apps. Get involved with multiple projects if you have the time, play with them, contribute to the communities (most are open sourced), and most of all have fun.
I would love to hear other people's feedback on how they see things evolving or where we are on the hype curve. Do you not see it as a done deal that these technologies are here to stay? What do you see as some of the biggest barriers to this technology moving forward? Leave me comments here or give us a pingback from your own blog.