Cloudmania: Developers Need A Personal Cloud

Mike_Gualtieri_Formal01 Cloud, Private Cloud,     fill in the blank   . Personal Cloud. Don't be surprised if you hear about the Personal Cloud. It is the next natural progression in Cloudmania. Don't get me wrong. I am a fan of Cloud computing as an exciting new deployment option for applications as I said in a previous post. But, this is a classic case where many cloud vendors are trying to make a case for why cloud is the uber solution to everything - including a subject that is near and dear to me - application development.

Can The Cloud Improve Application Development Effectiveness? No.

The case I have heard very recently about how the cloud can improve application development goes something like this. Developers have a need to spin up complex environments for development and the cloud makes it easy to do that. In addition, the cloud makes it easy to provision test environments. First of all, most developers are working on their own computer. For example, Java developers will have an IDE like Eclipse that is integrated with a Web Server, possibly a local database, and perhaps a connection or two to some outside "development" databases. As developers write code, they are constantly testing. Write a few lines. test. Write a few more lines. Test. Debug. Write a few more lines. Check in the code. Come back tomorrow. Every developer knows this develop-test cycle. They do it constantly throughout the day.

Cloud Or No Cloud, Application Developers Still Have To Write And Test Code.  

Every few days or perhaps every couple of weeks, a couple or JAR files or perhaps and EAR file will be deployed to a test or UAT machine that is configured for testing by QA or end-users. I can see an advantage to the cloud for provisioning test environments, but there is no advantage for developers because they are working locally. 

Obligatory Moore's Law reminder: Computers including PC are getting faster and faster.

So why would we want to reverse the trend of using all the computing power available on the desktop for developers? We would not. Because developers who write code are also constantly testing that code as they work, the best case is to keep the dev environment local and use application lifecycle management(ALM) tools for collaboration. That is just more efficient.

Developers Need A Personal Cloud

What developers could use is a Personal Cloud that would allow them to configure their local environment in multiple way and take it with them wherever they go. I know this sounds like virtualization and it is to some extent, but extend PC virtualization with cloud concepts and you get the Personal Cloud.

The Personal Cloud is not just for developers either. Everyone should have a Personal Cloud that follows them around (the mobile cloud is still the Personal Cloud) while at the same time making the most of the increasing amount compute power available on personal computers.

WIM: With all of these clouds floating around cloud interop standards will start to emerge making it even more confusing for customers to decide which way to go.

Categories:

Comments

re: Cloudmania: Developers Need A Personal Cloud

I disagree with your statements.Can The Cloud Improve Application Development Effectiveness? Of course yes. By using continuous integration on the cloud, and making developer test, deploy on the "image of the real environment" it make the software development much more easier. Most of the issues in Qa are related to configuration managements and finding false/positive bugs due to platform differences.It will provide an astonishing opportunity to better concentrate on real testing and not only unit test. You can also immediately make load testing on some services/functions.Cloud is a great opportunity. You can always misuse the great innovations.

re: Cloudmania: Developers Need A Personal Cloud

Hi William,I agree that Cloud has an advantage for spinning up test environments, but how will that make development more effective. But, I do not agree that "most issues in Qa are related to configuration management and finding false/positives bugs due to platform differences". Take a Java web app for example, you send a few hours or maybe a day configuring a server with and app server, connnection strings to database. You also create a database. That is less than a day of configuration for say a 3 month project. Once the envinroment is configured you will deploy a WAR or EAR file continously or on whatever your test cycle is. QA might run in to a few config issues but they will not recur.The main issue with development effectiveness still what it has always been: requirements, coding, and testing.

re: Cloudmania: Developers Need A Personal Cloud

Are you also looking at things like time involved when you look at effectiveness. While many developers are using just a single system, when it comes to really testing an environment won't they be using the complex environments you dismiss? For this it seems a cloud might improve the effectiveness, but it would improve the time something would take.Russ

re: Cloudmania: Developers Need A Personal Cloud

Hi Russell,It depends waht you mean by "complex envinronment". If by complex environment you mean complex configuration on a single app deployment stack, then the cloud can help spin those test environment up. But, if you mean a complex environment that involves multiple connections with disparate transaction systems such as CICS, JMS, etc... then the cloud will not help especially when the real challenge is simulating the test data.Another point, is that once you create a test environment it does not change as much as the code you are testing changes.If we are somewhat generous and say the cloud can improve development effectiveness, then how much can it improve it. Without data (e.g. guessing) I'd say a very small percentage if you look at the overall challenges such as requirements, coding, etc.. of app dev projects.Mike

re: Cloudmania: Developers Need A Personal Cloud

Mike,In my view you are right on. I do not know professional developers who entertain the idea of their development baby being hooked with an umbilical cord to another mother (such as a hosted PaaS). But they certainly want the ability to test it whenever they want in the target environment.One thing that probably contributes to the confusion is the too rare distinction in relevant publications between situational applications and core applications. You have evoked in the past the emergence of “enlightened developers”, who produce situational apps with highly abstracting Platform as a Service environments. But what is being discussed here are not those type of apps and developers but the more professional breed, that develops Enterprise Applications.I am still perplex at the reasons that made the Application Development community regress from the productive 4GL platforms that emerged in the early 90’s back to 3GL environments such as C and Java. The increasing technical complexity of the Cloud finally halted this and is a fertile ground for the revival and emergence of Metadata Driven Application Platforms, which abstract the technical constraints by pre-programming optimized engines, which feed on Metadata based business logic. And we have to distinguish here very clearly between platforms designed for situational applications, with coarse grained widgets and services, and platforms designed for enterprise applications, that offer the entire granularity spectrum from application and process templates down to embedding code snippets.Salesforce.com showed the way with Force.com, but it is still Cloud only and pretty much tied to the basic CRM environment. uniPaaS from Magic Software (http://tinyurl.com/5u4m3r) is leveraging its past 4GL experience to provide probably the first Application Platform that corresponds to what you describe as “a Personal Cloud that would allow them to configure their local environment in multiple way and take it with them wherever they go”. My recent interactions at industry events such as RIA World and with many enterprises and ISV’s confirm the growing interest and adoption of these platforms. That’s good news for us all.

re: Cloudmania: Developers Need A Personal Cloud

Your comments are quite thought provoking. While developers crave immediacy and control over their coding, sometimes the limits of Moore's Law means that they need more resources for what was traditionally deemed a local function.A few months back I researched the topic for my day job at a rival analyst firm and blogged about it.http://www.onstrategies.com/blog/?p=363My conclusions were that code-centric activities (e.g., coding, unit testing, debugging) were best suited for on premise (between a developer and his machine). By contrast, collaborative activities (e.g., planning, defect tracking, requirements, issue tracking) and activities requiring highly dynamic resource consumption (e.g., regression and load testing for shops that don't do daily releases) were best suited for the cloud.

re: Cloudmania: Developers Need A Personal Cloud

I lead a team of developers using the Force.com Platform and we are able to both collaborate and work within our 'personal' clouds. Not in the context that you're talking about though.We have a collaborative code base that deploys to our UAT environment and personal clouds that exist online. In a world that is moving towards cheaper, faster internet access I don't really see the need to use local resources. Sure my dev machine is quick, but the servers hosting the code seem to keep up quite well too.I've dug into Google's cloud computing platform too and there you have the ability to work totally offline(in a personal cloud) and so far I've found no immediate benefit. I have internet everywhere I might work and it is quick and cheap.Personally I think that the cloud has massively improved our app dev effectiveness. As an example my team of 3 developers has produced a high quality, complex application within 4 months, and will be going live next week. Not only this but Force.com will not let you publish software that does not have 75% test code coverage and does not pass their security checks.Good post:) This is the first time I've seen your blog, are you implementing any solutions in the cloud currently?

re: Cloudmania: Developers Need A Personal Cloud

Hi Mike, we had a couple partners pass us this link at the same time and I really think you are onto something - so I had to blog on it:http://blog.itko.com/2009/07/gualtieri-who-needs-a-personal-cloud.htmlAs much as pundits may want to put a box around Cloud definitions it is very worthwhile to apply it conceptually this way for the SDLC rather than just a Private or Public environment for deploying servers and software. Even if the "Personal Cloud" term doesn't stick, that is exactly what we need to talk about, as we are overlooking huge cost and agility benefits to getting development and testing teams away from dependency so they can be productive throughout their day.This personal cloud idea would probably also save some Cloud usage costs, which is important as you don't want to have access fees getting in the way of incenting development teams to thoroughly test.Even if it gets called "local virtualization" etc. this practice will likely become a part of the mix, as developers are increasingly leveraging distributed services, SaaS, cloud-based components, and that represents a lot of potential dependencies and volatility to shield yourself against as a developer.