Limitations and Challenges in Cloud Computing for Applications
April 14, 2009 at 2:00 pm | In Architecture - Design, Tips,Tricks and code, Trends-Predictions, Unsolved Problems | Leave a CommentI was supposed to be involved in a discussion about cloud computing at Cloudcamp Bangalore, but due to other commitments, I could not attend the event. I had a small writeup about the limitations and challenges in Application clouds. Here is the full text of it.
Cloud Computing is a way of providing dynamically scalable and available resources such as computation, storage etc as a service to users who can use it to deploy their applications and data. Cloud Computing can handle data in both the public and the private domain. But this seemingly harmless way of thinking about building applications has its own set of issues.I am primarily referring to application cloud providers, the kind where you deploy your applications. Not storage and service clouds. Google AppEngine would be a good example for the cloud that I am describing. I note some of them here :
From the Users perspective:
- New unstructured and non standard paradigm of programming: Each cloud has its own supported programming language and syntax requirements for programming, though most of these clouds expose the typical hashtable based cache and datastore interfaces. There is an urgent need for standardization of interfaces and methods of programming them. One of the reasons why shared hosting environments work great is because , as a programmer, I know that I can move my PHP/PERL code to another server and it will work without too much of a fuss. Moving from one of the dozen odd cloud providers to another requires considerable developmental efforts, not to forget time (for businesses, this could spell doom). A look back at history shows languages like SQL, C etc being standardized to stop exactly this sort of undesirable proliferation.
- Restrictions on the programming model : For cloud based applications to be highly available, they must be easy to dynamically mirror on multiple machines. Once these applications are mirrored, they can be served on demand by load balancing servers which makes them highly available and the user doesn’t face delays in being serviced. This is an old trick used by busy websites from the early days of web publishing but these solutions were custom built for websites. So, extending this concept to cloud based platforms, servicing thousands of applications, mandates the platform providers to automate this task of replication and mirroring. This job is easier said than done. This process can be made seamless when the program stores as little state information as possible. By state, I mean transactional variables, static variables, variables in the context of the entire application etc. These things are almost a given in traditional programming environments but are very hard to come by in cloud based environments. The unnatural way of dealing with this situation is using the datastore or the cache to store state of an application. There are a lot of restrictions like lack of privileges to install third party libraries, no access to file system to write files etc ( which forces you to use the datastore and pay for it)
- A good local debugging experience: A good local development environment, debugging experience is a must for programming on the cloud. Most cloud providers do not provide good local development environments. There is also a lack of good IDE’s that can help with programming and debugging programs written for the cloud. The providers that do provide a local debug experience, do not simulate real cloud like conditions. Both from my personal experience and from conversations with other developers, I have come to realize that most people face problems when moving code from their local development servers to the actual cloud. This is only due to inconsistencies in the behavior of the local dev env compared to the cloud.
- Appropriate metrics and documentation of programming best practices : On a cloud, since a user pays for almost every CPU cycle, appropriate metrics on usage of processing time and memory must be presented to the users. Typically a profile of the application with function names and their corresponding time taken, memory used, processing cycles used will definitely help the developer tune his/her code to optimize on usage of processing power. The best solution for this is for cloud providers to abstract common code patterns into optimal libraries so that the users can be assured that they are running the most optimal code for a certain operation. An example of this is Apache PIG, which gives a scripting like interface to Apache Hadoop’s HDFS for data analysis. Also, Most cloud providers do not provide enough statistics and also profiling capabilities.
From the providers perspective:
Here I look at challenges that cloud providers have to face:
- Ensuring availability of the cloud: This proves to be crucial as Clouds host critical business applications, for whom, downtime would mean monetary losses. Effective monitoring and load balancing solutions are to be built. Most clouds employ virtualization technology to get the most out of any resource. In such cases, tools should be written to figure out a resource hog early and move the application to a more powerful grid or a machine, so that the other users get their share of the cloud without delays.
- Ensuring Consistency: Both the data and code is replicated on the cloud and maintaining consistency of data is extremely crucial. This is the reason why most transactional updates are not allowed on the cloud. Example: sequence objects, which are almost a given in traditional databases are not provided, probably because maintaining state across machines for such statements is non trivial. Problems like distributed updates, locking, partitioning, sharding etc arise when dealing with data. Such constructs are to be provided to the users as most of it is given in the non cloud deployment space.
Most datastores provided by cloud vendors (except the ones that provide cloud based database services) do not support relational models. Which means all object relations have to be programmatically established. This could always lead to bad code, unnecessary joins, cascading problems and tons of other problems that developers faced before working with relational datastores. - Program verification : One of the biggest worries about deploying applications on the cloud is the correctness of the program in execution. Erroneous conditions, like infinite loops, can not only put the machine at the risk of being overloaded and unavailable, but also cost the user a significant amount of money. Tools like static analysis should be used to analyze code uploaded on the cloud and it should be checked for infinite loops, possible race conditions, null references, unreachable code etc. The code uploaded should also be optimized or suggestions should be provided to the users about how they could optimize code to best utilize the available resources.
Conclusion : The cloud should become a complete nonrestrictive platform for applications. There should be no restrictions on the constructs, functionality and privileges on the cloud. Also, it should be dead simple to move everyday applications onto the cloud without too much of rework. This could mean writing migration utilities, import/export options and other artifacts that make the transition to a cloud much easier. This will prove essential as most live applications, at least currently, do not run on a cloud and helping them migrate easily will mean more revenue and adoption.
More Y! – Search for the widescreen
August 6, 2008 at 2:43 pm | In Unsolved Problems | Leave a Comment
Don’t you hate it that your favorite search engine cannot realize that you are using a widescreen or a theatrical display and still shows you ten measly results ? Well, I do and I sat down yesterday to fix it. The result is More Y! – a widescreen optimized search. Wait, before you make any assumptions about it, its not a google killing revolutionary new search algorithm. Its just a differnt way of packaging Yahoo’s search results, thanks to BOSS api. And, No, its not a Cuil ripoff
Cuil is way cuiler. This is just an optimization on the traditional Yahoo search that I liked using.
If you are using a widescren display or a theatrical display with resolution sizes bigger than 1024 *768 then use More Y! . More Y! displays thirty results in three columns and looks legible on widescreen displays (no guarantees for normal displays though). Whats even more handy is that More Y! can be integrated into your favorite browser (Firefox 2+ or Internet Explorer 7+ ) by following the instruction provided on the More Y! page. Its a cinch.
Have fun with More Yahoo! and do reply back with comments and feedback.
Tags: boss, search, More Y!, yahoo, itsmeritesh
Web Sabbath – think most people need it
June 24, 2008 at 5:48 pm | In Unsolved Problems | Leave a CommentGoogle is giving us pond-skater minds | Andrew Sullivan – Times Online
Read this wonderful article and I realized, we are hooked to the internet!! Not a day goes by without us plugging in. The tools you work with clearly alter the way you do things and not necessarily in the right way. To give you an example, an electrician came to my place and couldn’t put a hole in a switch board because his drill bit was broken; an electrician from the pre-drill age would heat a sack needle to do the same. Did modern day tools spoil the electrician ? I would say, yes!
The same is the case with everyday programmers and web workers. I remember programming without search engines, an age where I peered through command lines and man pages to figure out why in gods name was the screen showing segmentation fault. Debugging was a very involved process, no modern day debuggers or code analyzers, just the program and console outputs. Though it sounds really painstaking ( and trust me, it was), it did make me a better programmer. I knew where not to screw up and also where things could fail. I see people start programming using IDE’s like Eclipse and Visual Studio and I really wonder whether they will ever have all the learnings that I had. Search engines and effective ones at that have paralyzed out ability to think, read and find information. Its affected us in adverse ways, so not comprehend able.
To become humans again, not impaled by search technology, I second the concept of a web sabbath. A day or two in a week, where we do not use modern day amenities like the mobile phone, Television , Internet or search. Such a day will help us to think, read, scour for knowledge the way we would have done ten years ago and hopefully that extra effort will make us think beyond technology and its limitations. I would like to hear from people who agree with me.
Towards Semantic Interoperability
December 5, 2007 at 12:22 pm | In Unsolved Problems, rant | 1 CommentIs it true? Is Indian IT industry surviving because of lack of Semantic Interoperability?
Incorrect Semantic Interoperability describes mismatch in the format and representation of data belonging to two parallel applications which prohibit them from interacting with each other or prohibits possible migration. Take the example of ERPs like SAP and Oracle Apps, they essentially perform the same computations and solve the same problems, but do they interoperate? No. The data representations for both these applications are bespoke, which makes it unique to one product or a line of products. It is reasonable considering the fact that market domination is obtained by developing custom formats and providing custom decoders, but there is a bigger concern. For large players, data is collated and there is usually a Business Intelligence solution in place and with different products being deployed at different centres, the additional overhead of conversion of the data is imminent. Also two separate applications cannot talk to each other though they are probably linked up sequentially, you have to bring in additional middleware for format conversion and make a common bus.
Efforts like RSS, SOAP and others have been successful only to a certain extent that the format is correct but semantics are still loose. It has to come together sometime, if not now then later, when the data is huge. And the answer is yes, the Indian IT industry survives because of such semantic interoperability. Most of the workforce is maintaining these enterprise bridges (that holds together these different applications) if not building them. A majority of the work involved in the service sector has to do with writing compatibility plugins or writing migration scripts and patch ups. If it was for SI , we wouldn’t have jobs.
The New Digital Divide – saga of the legacy lovers
November 25, 2007 at 3:23 pm | In Trends-Predictions, Unsolved Problems, rant | Leave a CommentGone are the days of the digital divide, there is a new kind of divide amongst many computer professionals now. Its the generation gap. Its hard to comprehend this statement, but anybody, whose is exposed to at least 5 years of industry dynamics, will know exactly what I am talking about. Call it Moore’s law affecting software or just plain old generation gap, there is a clear demarcation between people who appreciate new concepts and those who prefer things the 90s way.
There are a set of people that like the innovation happening on the web front and are adopting 2.0 technologies like there is no tomorrow. Everything from office automation to project management is now managed online on productivity service providers. Concepts like wiki, blogs, forums etc are fast appearing as mainstream applications in organizations. Surely as technology evolves and takes new shape, we will see a dramatic shift in adoption of these new tools .
In contrast , there are the other people who have been around for a long time and have seen a lot of productivity applications. To these people, technology is nothing more than a fast changing fad and prefer to stick to their old time favorites. Take people who have seen the main frame era, such folk just don’t appreciate concepts like distributed computing, virtual servers etc. Quotes like ” our mainframes never needed mirroring”, are common. People who still live reminiscing innovation of their times like spreadsheets and ERP’s.
It may be hard to believe but these form the majority of the so called power users of organizations and these legacy softwares( pun intended) , are maintained and supported just for their usage. Its distrubing to know that enterprise software lags open source software by at least 3 years , in terms of innovation. This lag can clearly be accounted to the legacy lovers who insist on using their accustomed softwares. Where does product development go in such a case. Office 2007 is seeing very slow adoption due to a change in the usability. Will this set of users be responsible for the sluggishness of product development? who will convince these users to adopt newer software? more importantly how? What will these users demand 20 years from now?
Its a strange question, but yes its an emerging market.
Personalization is one cookie away
November 25, 2007 at 3:18 pm | In Trends-Predictions, Unsolved Problems, Web News, rant | Leave a CommentI wrote about personalization some time back and about how we should actually be approaching this problem. Google has got their act into place and are making your own light weight personalization meter, but its for ads
Google is going to put a cookie in your browser that will record information everytime you read an ad served by Google. Continue reading Personalization is one cookie away…
Open World Computing
November 25, 2007 at 3:17 pm | In Unsolved Problems, gyaan, rant, web3.0 | 1 CommentThere was an interesting concept put forward to me by my professor – Open World Computing. A software that is not bound by any restrictions or constraints. A software that learns and adapts to its environment. Think of a person who is taken from a metro and put in a village. Does the person fail and give up like a computer program ? No. the adaptability of living beings is something so hard to understand that it can take probably another 1000 years to just simulate a living being, let alone learn its qualities.
Think of the same thing in software. A software that is programmed based on generic constraints and the software dynamically learns from its environment through input devices like sensors and then adapts to the changed environment. The classical shortest path problem can be taken as an example. If a crawler running through the shortest path is lifted from its path and put somewhere else, will it be ale to comprehend the change and then quickly adapt or will it be lost. What if the graph changes and produces a lot of cycles or what if the problem statement changes during the course of the program.
I know that a very few people are relating to what they are reading, but the belief that a machine can learn and adapt is what scientists are trying to prove everyday. Machine learning is taboo after movies like iRobot and Terminator, but trust me, we are far far away from something like that. If we can solve a subset of problems of adaptability through an expert system, that will be an achievement in itself.
But how do you go about designing software with such requirements. I would go one step ahead and call it no requirements or changing requirements with no defined thresholds. No current methodologies like OO or aspects can cater to such a requirement. Probably a new scheme of designing learning software has to be developed. Taking tips from AI and the Turing thesis, a perfect turing machine is what is required. Its a hard call but we will get there one day.
Community as a Service – implications of the facebook platform
July 20, 2007 at 4:38 pm | In Unsolved Problems, Web 2.0, rant, socionets | Leave a CommentNote : I blog on my personal space at riteshnayak.com/blog . This is a mirror of the content.
The recent opening up of the facebook platform has created a rage in the industry. Facebook themselves , after opening up to public signups, have had an increase of 80% in their monthly uniques. The facebook platform is just another icing in the cake.
There are innumerable number of apps that are being created on the facebook platform. Existing applications like wordpress are taking heed and porting their apps into the platform. Some of the initial apps have been taken over and VC’s are announcing seed fund for apps built on the facebook platform. Its like everyone wants a part of the 26 Million uniques visiting the site and want to cash in on the phenomenon. So what did facebook do right ?
Continue reading Community as a Service – implications of the facebook platform…
Social Design and the Opaque value problem
July 3, 2007 at 3:50 pm | In Architecture - Design, Suggested Reading, Unsolved Problems, socionets | Leave a CommentNote : I blog on my personal space at riteshnayak.com/blog . This is a mirror of the content.
I read this post by Joshua Porter about the value of social networks and the opaque value problem and it got me thinking. Why and for what do we actually use web based services.
The fact that we don’t understand what value others get from social web apps is part of the paradigm of social software. The key is that each person has their own social lives, their own social circle, and thus their own social values. What is important to their social life will almost certainly be unimportant to us because we have our own to worry about.
Think of it this way. Each person has their own social network. Chances are that social network overlaps very little with yours. If, say, that person wanted recommendations for watching a movie, they might turn to their social network, which is made up of their family, friends, and colleagues. They would ask these people, the people they know and trust, what movies they recommend.
Now, would you turn to the same social network for movie recommendations? Of course not. You trust the people you know…your social network, and so any of the chatter from their social network has no value for you. It’s meaningless chatter. Just like most people’s Tweets on Twitter. In a larger sense, this opaque value problem affects most social software. Twitter, MySpace, Facebook, most social software is built around providing personalized, socially-focused conversation. It’s person-centered and as a result is difficult for anybody but that person to really appreciate: the value becomes opaque in this way. Designing social software is going to be very difficult. The designers won’t be able to put themselves into a position of someone who wants to keep up to date with their social network, which is something that all of these sites are doing.
Social Design by Joshua Porter
What the excerpt from the original blog clearly states is that a person using a social software has his/her own reasons to do so. The fact that the others don’t know what value the other person sees in a social network is the entire basis behind social software. I may log into myspace to chat with my peer group, but I dont know what my friend X does in her network, so what do I do ? I snoop around their profiles and walls to get a glimpse of their world coz her value from the network is opaque to me .
The goal of social software is evolve from this paradigm to a more productive one. Efforts are on to make social software enter the productivity space and that too with good success. Based on all of these observations, how do you design for a social concept. How do we actually add value to the users ? Its not easy to please everyone, but at least if the majority is kept happy, you can be sure of winning product.
How do you define evolution of the internet ?
July 3, 2007 at 3:46 pm | In Unsolved Problems, rant, web3.0 | Leave a CommentNote : I blog on my personal space at riteshnayak.com/blog . This is a mirror of the content.
I suggest : Use the internet to make your international calls with VoIP calling service. You can download free VoIP software or get a VoIP phone to get started. You can even become a VoIP reseller selling VoIP service.
How do you define evolution on the internet ? When experts predict how the internet will evolve and what the future trends will be , what are the factors that are taken into account. 10 years back, no one could have predicted Social Networks and blogs , but look where we stand today. Evolution can mean a lot of things we could evolve with respect to …..
Technology. The core technologies can change. From HTML to web services to Flash , the technologies that make the foundation of the internet can change. The methods in which we access the internet can change , course, its the technological aspect. We have wireless internet, we have BPL – bandwidth through power lines. The means in which we access the internet can change. We access internet from PCs, laptops, mobile phones, handhelds, kiosks. Widgets were probably never even though of 10 years back.
How about usability ? the way people use the internet has changed dramatically. Tons of data being uploaded everyday. Almost all of information of a person can be found on the internet. Thats why any criminal is always looked up in myspace or other social networks. Also how people interact with internet applications is also a factor to consider. Today we have IM, telephony, music players, media libraries, wikis, photo sharing services, blogs, and many other ways to interact with the internet. Who knows? probably in three years time you can transfer money from one account to another by just sending an IM through your favorite client.
Its not just we who perceive the internet. The way the internet perceives users has also changed. Its not just X searching on google, its X who lives here, likes this, hates that, has searched for Y before and is more probable to buy Z. The future could hold machines that can identify with you, relate to you and even deliver specially tailored content to you. The web has also become extremely customizable with every site offering you the concept of skins and templates.
What bout user behavior and usage? ten years back double clicking on the browser wasn’t even a concept. Autofilling textboxes and combo boxes were a fantasy. and Drag Drop, well it wasn’t available for some the best desktop apps, forget the web. Today people use them like they have been around for ages.
what about user evolution ? I have gone on from becoming a mail checker -> sleeze surfer -> information hunter -> programmer -> webmaster -> blogger and I have missed out probably tens of roles. How do we account for user evolution and experience.
Its pretty fuzzy for me. How do you define evolution on the internet ?
Blog at WordPress.com. | Theme: Pool by Borja Fernandez.
Entries and comments feeds.

