<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-16501575</atom:id><lastBuildDate>Wed, 25 Jan 2012 05:34:19 +0000</lastBuildDate><category>Architect</category><category>IBM</category><category>Mobile</category><category>WPS</category><category>Performance</category><category>Portal</category><category>Web Services</category><category>Review</category><category>FB</category><category>Others</category><category>Migration</category><category>Capacity Planning</category><category>Search</category><category>Java</category><category>Web 2.0</category><category>SOA</category><category>WebSphere</category><category>Ajax</category><category>Programming</category><category>Open Source</category><category>Testing</category><category>IT Industry</category><category>Bigdata</category><category>Enterprise</category><category>Trends</category><category>Tip</category><category>Hadoop</category><category>CMS</category><category>Collaboration</category><category>DotNET</category><category>Proposals</category><category>Patterns</category><category>JEE</category><category>J2EE</category><category>WAS</category><category>Cloud</category><category>PortalFactory</category><title>Tech Spot</title><description /><link>http://www.techspot.co.in/</link><managingEditor>noreply@blogger.com (Munish K Gupta)</managingEditor><generator>Blogger</generator><openSearch:totalResults>327</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/blogspot/dTNY" /><feedburner:info uri="blogspot/dtny" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by/2.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><feedburner:emailServiceId>blogspot/dTNY</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item><guid isPermaLink="false">tag:blogger.com,1999:blog-16501575.post-3041815251663905709</guid><pubDate>Tue, 24 Jan 2012 07:30:00 +0000</pubDate><atom:updated>2012-01-25T11:04:19.254+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Trends</category><category domain="http://www.blogger.com/atom/ns#">Programming</category><category domain="http://www.blogger.com/atom/ns#">Cloud</category><category domain="http://www.blogger.com/atom/ns#">Architect</category><category domain="http://www.blogger.com/atom/ns#">Mobile</category><category domain="http://www.blogger.com/atom/ns#">IT Industry</category><category domain="http://www.blogger.com/atom/ns#">Enterprise</category><title>Consumerization of IT – what it means for the Architect</title><description>Consumerization is described as the trend for IT to first emerge in the Consumer space and subsequently makes its way into the enterprise world. But what exactly in the consumer world, that is making the users, demand the similar things from the enterprise IT. To understand the underlying need, we need to first examine the basic requirements of the user.
&lt;br /&gt;
&lt;br /&gt;
&lt;img border="0" height="253" src="http://1.bp.blogspot.com/-zbg0_ker18I/TxlqX4TcqqI/AAAAAAAACvI/FgcyQVuY2Yg/s320/user-hierarchy.png" style="background-color: white; border-bottom-style: solid; border-color: initial; border-image: initial; border-left-style: solid; border-right-style: solid; border-top-style: solid; border-width: initial; clear: left; display: block; float: left; margin-bottom: 1em; margin-right: 1em; padding-bottom: 8px; padding-left: 8px; padding-right: 8px; padding-top: 8px;" width="320" /&gt;
Kathy Sierra, co-creator of the Head First series of books and founder of javaranch.com, describes the &lt;a href="http://headrush.typepad.com/creating_passionate_users/2007/01/what_comes_afte.html"&gt;hierarchy of needs&lt;/a&gt; from the user(s) perspective. The needs are stacked in the order of increasing engagement from the user. Starting with the basic needs of a defined functionality and its correctness, moving on to the learnability, efficiency &amp;amp; usability and finally culminating in intuitiveness and enchantment. Merely provision of correctly working functionality is not guarantee of the success of the application(s). The idea is to hook the user; the application needs to do something extra. &lt;br /&gt;
&lt;br /&gt;
Using the hierarchy of needs as the background, we will see how the applications in the consumer and enterprise world stack up.
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;Now, in the consumer world, the advent of Consumerization started with the proliferation of the mobile devices.&amp;nbsp;In the connected world, the device (smartphone or tablet) imposed certain constraints&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Screen size is small and limited&lt;/li&gt;
&lt;li&gt;
Processing power of the device is limited&lt;/li&gt;
&lt;li&gt;
Interface is touch enabled&lt;/li&gt;
&lt;li&gt;
Connectivity is not constant (read patchy) and speed/data is limited (no unlimited data plans)&lt;/li&gt;
&lt;li&gt;
User audience demography not known&lt;/li&gt;
&lt;/ul&gt;
Now, the Apps needed to be designed keeping in mind the constraints, which meant that the Apps are
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;
Focused on providing only one functionality&lt;/li&gt;
&lt;li&gt;
Have simple and intuitive messages/steps in the absence of any help/guides &lt;/li&gt;
&lt;li&gt;
Providing simple interfaces (cater to worldwide audience)&lt;/li&gt;
&lt;li&gt;
Having uncluttered screens as real estate is limited&lt;/li&gt;
&lt;li&gt;
Using UI Controls that are big and usable (touch interface)&lt;/li&gt;
&lt;li&gt;
Having intuitive workflows &lt;/li&gt;
&lt;li&gt;
Engaging to stand apart among the millions of other Apps&lt;/li&gt;
&lt;/ul&gt;
This meant that the functionality does not require the user to be a geek. The average individual user can understand and use the App functionality without any external help. Majority of the Consumer Apps are heavily focused on the Efficiency and Usability part. Few of the Apps have been able to enchant and engage the user (e.g. Angry Birds). 
&lt;br /&gt;
&lt;br /&gt;
&lt;img border="0" height="252" src="http://4.bp.blogspot.com/-92Qd6az5Hqk/TxlnmUMgA8I/AAAAAAAACvA/5jq-V05qWBg/s320/enterprise-consumer.png" style="background-color: white; border-bottom-style: solid; border-color: initial; border-image: initial; border-left-style: solid; border-right-style: solid; border-top-style: solid; border-width: initial; clear: left; display: block; float: left; margin-bottom: 1em; margin-right: 1em; padding-bottom: 8px; padding-left: 8px; padding-right: 8px; padding-top: 8px;" width="320" /&gt;
In the enterprise world, the device is most likely to be powerful desktop/laptop with a large screen. The connectivity is via LAN or broadband. As a result the Enterprise Applications are more industrial with high focus on providing long list of functionality and ensuring the correctness of the same. Consumers facing business applications usually focused on usability, Specialized enterprise applications (e.g. Call Center Applications) focus on the overall workflow efficiency, but majority of the applications are resource intensive, lack efficiency and have high learnability curves.&lt;br /&gt;
&lt;br /&gt;
The enterprise user experiences the simple, intuitive consumer apps on their mobile devices. With the advent of BYOD (Bring Your Own Device), enterprise user’s started bringing their smart devices into the enterprise. Soon the users are comparing the experience of consumer apps with the enterprise business apps; they wonder why the enterprise apps can’t provide a similar experience. Why are the enterprise apps so low on learnability, efficiency, intuitiveness factors?&lt;br /&gt;
&lt;br /&gt;
The whole idea behind the Consumerization of IT is not just measures like BYOD but to&lt;i&gt; bring the missing &lt;u&gt;intuitiveness&lt;/u&gt;, &lt;u&gt;usability &lt;/u&gt;and &lt;u&gt;efficiency &lt;/u&gt;into the enterprise applications.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;So, what does Consumerization means for the Architect?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
When designing and architecting enterprise business applications, following considerations need to be kept in mind
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;
Connected users means the applications need to be &lt;b&gt;available 24 X 7&lt;/b&gt; ( Always On, Always Available), 24 X 7 availability requires application solution(s) to be elastic – expand or shrink based on the load &lt;/li&gt;
&lt;li&gt;&lt;b&gt;
Intuitiveness &lt;/b&gt;and &lt;b&gt;Usability &lt;/b&gt;have to be high on the agenda when designing the interface and workflows&lt;/li&gt;
&lt;li&gt;
Solution needs offer APIs for additional applications to be build&lt;/li&gt;
&lt;li&gt;
Integration with systems and other applications (including SaaS) need to be simple, straight forward and well documented&lt;/li&gt;
&lt;li&gt;&lt;b&gt;
User experience&lt;/b&gt; is the key to successful business application (it was always the key) but need to be (re)designed for the connected &amp;amp; mobile devices&lt;/li&gt;
&lt;li&gt;
Product evaluation(s) will now include&lt;b&gt; SaaS applications&lt;/b&gt; that can provide the functionality&lt;/li&gt;
&lt;li&gt;
Saas adoption will increase leading to newer challenges in integration, data security and privacy measures&lt;/li&gt;
&lt;li&gt;
Applications need to be designed/tested keeping in mind various devices/OS combinations (days of designing apps that worked on IE6 only are over)&lt;/li&gt;
&lt;/ul&gt;
&lt;i&gt;The impact of consumerization on the Enterprise IT will be felt in the years to comes, BYOD is just the harbinger of things to come.


&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;This post originally appeared at &lt;/i&gt;&lt;a href="http://www.techspot.co.in/"&gt;www.techspot.co.in&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-7748261127957446";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-08-03: J2EE, Portal, Web Services, Web 2.0, Ajax
google_ad_channel = "2060177799+6892783472+6327960836+9022209472+4184383655";
//--&gt;
&lt;/script&gt;
&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" 
 type="text/javascript"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16501575-3041815251663905709?l=www.techspot.co.in' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_ftBNig3hF4w-Jg3ZL4ofi77_cQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_ftBNig3hF4w-Jg3ZL4ofi77_cQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_ftBNig3hF4w-Jg3ZL4ofi77_cQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_ftBNig3hF4w-Jg3ZL4ofi77_cQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/dTNY?a=n3rSPWp6h7E:F-Wwg3H3dbc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/dTNY?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/dTNY/~4/n3rSPWp6h7E" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/dTNY/~3/n3rSPWp6h7E/consumerization-of-it-what-it-means-for.html</link><author>noreply@blogger.com (Munish K Gupta)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-zbg0_ker18I/TxlqX4TcqqI/AAAAAAAACvI/FgcyQVuY2Yg/s72-c/user-hierarchy.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.techspot.co.in/2012/01/consumerization-of-it-what-it-means-for.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-16501575.post-2979610797004140370</guid><pubDate>Tue, 17 Jan 2012 07:30:00 +0000</pubDate><atom:updated>2012-01-17T14:36:41.197+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Trends</category><category domain="http://www.blogger.com/atom/ns#">Bigdata</category><category domain="http://www.blogger.com/atom/ns#">Architect</category><category domain="http://www.blogger.com/atom/ns#">Open Source</category><category domain="http://www.blogger.com/atom/ns#">Enterprise</category><category domain="http://www.blogger.com/atom/ns#">Hadoop</category><title>Bigdata Trends in 2012</title><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/--GQeWPGo0-c/TxQNnNQBKBI/AAAAAAAACus/Vz476ZtZCAA/s1600/bigdata2012.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="195" src="http://4.bp.blogspot.com/--GQeWPGo0-c/TxQNnNQBKBI/AAAAAAAACus/Vz476ZtZCAA/s200/bigdata2012.png" style="border: 0;" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;
Bigdata has caught the fancy of each and everyone. Consumer and enterprise world is looking to adopt the Bigdata. Analysts are talking about it, proclaiming it to the next big thing! &lt;br /&gt;
&lt;br /&gt;
This is my take on how the Bigdata market space will evolve in 2012 and years to come.
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Data Analytics Service&lt;/b&gt; – We will start seeing SaaS vendors that will start offering data analytics as a service (e.g. &lt;a href="http://www.1010data.com/"&gt;1010data&lt;/a&gt;). These vendors will be able to pull in your unstructured data and provide you standardized reports and data services. This is very similar to the Web analytics (like Omniture) but access lot more data to provide patterns. 70-80% of the data analysis pattern will be similar across industries. These vendors will be able to provide these reports as off the shelf capabilities. For the other 20%, the web interface will allow the user to create patterns to analyze the data&lt;/li&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;
&lt;li&gt;&lt;b&gt;
Data Visualization Service&lt;/b&gt; – Analysis is only one part of the data, the other big thing will be able to visualize the data (more like infographics) that help make sense of the scale and data points. Business will need help to make sense of all this analysis and again 3rd party vendors (via products or Saas) will be fulfilling this space&lt;/li&gt;
&lt;br /&gt;
&lt;li&gt;&lt;b&gt;
Crowdsourcing Model&lt;/b&gt; – enterprise will start using the crowdsourcing model to help analyze and find patterns in the data. &lt;a href="http://innovationcasestudies.blogspot.com/2009/05/case-study-1-goldcorp.html"&gt;Goldcorp&lt;/a&gt; was one the original pioneers that used the crowdsourcing model to analyze the geological data. This model will be seen more when dealing large geospatial data in the areas of mining, drilling, oil ad gas&lt;/li&gt;
&lt;br /&gt;
&lt;li&gt;&lt;b&gt;
RDBMS vendors will make a comeback&lt;/b&gt; – Bigdata has been scoring high on account of their ability to analyze and process unstructured data. The NoSQL vendors and products are all claiming to be the holy grail of data storage, fast processing and analytics. I believe, the Big Vendors –Oracle, IBM and to some extent Microsoft will release their version of relational databases that can store (using automated data sharding) and process large amount of data (with a SQL MapReduce layer). The vendors will incorporate techniques from the NoSQL world coupled with in-memory storage (think Coherence, eXtreme Scale) to provide sub second read write response times. The market is too big for the existing vendors to not claim supremacy&lt;/li&gt;
&lt;br /&gt;
&lt;li&gt;&lt;b&gt;
NoSQL market will shake up&lt;/b&gt; – The current crop of NoSQL solutions has emerged as need to fulfill certain use cases. Their base features and functionality have been decided by the patronizing user client/project co-sponsors (e.g. Cassandra – Facebook, Hadoop-Yahoo, membase-Zynga). These NoSQL solutions work very well for the specific use case. Attempts to broad base the use case, mean a lot of effort needs to put in. Along the way, some products will merge, some will lose community support and other will get acquired by product vendor companies&lt;/li&gt;
&lt;br /&gt;
&lt;li&gt;&lt;b&gt;
Data Analysis Libraries &lt;/b&gt;- To help the developers analyze data, the common patterns and designs will be available as off the shelf libraries. This means, analyzing data for most common patterns will be easier and will become no-brainer. The projected need for Data scientists will not materialize to the same extent with the proliferation of these libraries. E.g. &lt;a href="http://www.microsoft.com/en-us/sqlazurelabs/labs/numerics.aspx"&gt;MS Cloud Numerics&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
Bigdata will follow the Consumerization model, where the core infrastructure either comes as a service or an appliance. The data analytics, data visualization will be provided as a standard set of services on top of the raw data with an ability to create your own model.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Do let me know, how do you see the Bigdata market moving forward and do you agree or disagree with my predictions?&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-7748261127957446";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-08-03: J2EE, Portal, Web Services, Web 2.0, Ajax
google_ad_channel = "2060177799+6892783472+6327960836+9022209472+4184383655";
//--&gt;
&lt;/script&gt;
&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" 
 type="text/javascript"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16501575-2979610797004140370?l=www.techspot.co.in' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gJTuhwe2uioKwXMaYvuIpQM0xv4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gJTuhwe2uioKwXMaYvuIpQM0xv4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gJTuhwe2uioKwXMaYvuIpQM0xv4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gJTuhwe2uioKwXMaYvuIpQM0xv4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/dTNY?a=5SOTr7Q1Q2Y:l7rcZw5Uoc0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/dTNY?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/dTNY/~4/5SOTr7Q1Q2Y" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/dTNY/~3/5SOTr7Q1Q2Y/bigdata-trends-in-2012.html</link><author>noreply@blogger.com (Munish K Gupta)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/--GQeWPGo0-c/TxQNnNQBKBI/AAAAAAAACus/Vz476ZtZCAA/s72-c/bigdata2012.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.techspot.co.in/2012/01/bigdata-trends-in-2012.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-16501575.post-2744983566666768012</guid><pubDate>Wed, 04 Jan 2012 13:35:00 +0000</pubDate><atom:updated>2012-01-17T14:36:03.101+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">JEE</category><category domain="http://www.blogger.com/atom/ns#">Programming</category><category domain="http://www.blogger.com/atom/ns#">Java</category><category domain="http://www.blogger.com/atom/ns#">Architect</category><category domain="http://www.blogger.com/atom/ns#">Web Services</category><category domain="http://www.blogger.com/atom/ns#">Performance</category><title>Application Performance and Antipatterns</title><description>&lt;a href="http://4.bp.blogspot.com/-v8d2SGJUDfY/TwUz6vG-C1I/AAAAAAAACug/Z-5NV8ap3RY/s1600/antipatterns.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="153" src="http://4.bp.blogspot.com/-v8d2SGJUDfY/TwUz6vG-C1I/AAAAAAAACug/Z-5NV8ap3RY/s320/antipatterns.png" style="border: 0;" width="320" /&gt;&lt;/a&gt;Any application you pick up, there are some issues – big or small. There will be copy-paste code, mistakes, algorithms which could have better thought through. But what distinguishes an antipattern from these normal errors is that like patterns these antipatterns are recurring throughout the code base. In my recent experience in dealing with performance issues, I had observed certain recurrent themes that are undermining the overall application performance. Most of these antipatterns are well documented but it seems we do not learn from others mistakes. We need to make our own mistakes. I am recounting some of the common patterns that I observed in the recent months.&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Excessive Layering&lt;/b&gt; - Most of the underlying performance starts with the excessive layering antipattern. The application design has grown over the usage of controllers, commands and facades. In order to decouple each layer, the designers are adding facades at each of the tiers. Now, for every request at the web tier, the request call goes through multiple layers just to fetch the results. Imagine doing this for thousands of requests coming in and the load the JVM need to handle to process these requests. The number of objects that get created and destroyed when making these calls add to the memory overhead. This further limits the amount of requests that can be handled by each server node.
&lt;br /&gt;
&lt;br /&gt;
Based on the size of the application, deployment model, the number of user’s, appropriate decision need to be taken to reduce the number of layers. E.g. if the entire application gets deployed in the same container, there is no need to create multiple layers of process beans, service beans(business beans), data access objects etc. Similarly, when developing an internet scale application, large number of layers start adding overheads to the request processing.
&lt;br /&gt;&lt;br /&gt;
&lt;i&gt;Remember, large number of layers means large number of classes which effectively start impacting the overall application maintainability.
&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;b&gt;Round Tripping&lt;/b&gt;- With the advent of ORM mappings, Session/DAO objects, the programmer starts making calls to beans for every data. This leading to excessive calls between the layers. Another side issue is the number of method calls each layer start having to support this model. Worse case is, when the beans are web service based. Client tier making multiple web service calls within a single user request have a direct impact on the application performance. 
&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-fT0gNDDo4Yo/TwUynr0BMTI/AAAAAAAACuU/CgzrVWhoo5Q/s1600/antipattern.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="115" src="http://4.bp.blogspot.com/-fT0gNDDo4Yo/TwUynr0BMTI/AAAAAAAACuU/CgzrVWhoo5Q/s400/antipattern.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;i&gt;To reduce the round tripping, the application needs to handle or combine multiple requests at the business tier.&lt;/i&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;b&gt;Overstuffed Session&lt;/b&gt;- Session object is a feature provided by the JEE container to track user session during the web site visit. The application start with the promise of putting very minimal information in the session but over a period of time, the session object keeps on growing. Too much of data or wrong kind of data is stuffed into the session object. Large data objects will mean that the objects placed in the session will linger on till the session object is destroyed. This impacts the number of user’s that can be served by the application server node. Further, I have seen, application using session clustering to support availability requirements but adding significant overheads to the network traffic and ability of application to handle higher number of users.
&lt;br /&gt;&lt;br /&gt;
&lt;i&gt;To unstuff the session object, take an inventory of what all goes there, see what is necessary, what objects can be defaulted to request scope. For others, remove the objects from session when their usage is over.&lt;/i&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;b&gt;Golden Hammer (Everything is a Service)&lt;/b&gt; – With the advent of SOA, there is tendency to expose the business services, which can be orchestrated into process services. In the older applications, one can observe similar pattern being implemented with EJBs. This pattern coupled with the &lt;i&gt;bottom up design approach&lt;/i&gt; at times, means &lt;i&gt;exposing each and every data entity as a business service&lt;/i&gt;. This kind of design might be working correctly functionally, but from the performance and maintenance point of view, it soon becomes a night mare. Every web service call adds overhead in terms of data serialization and deserialization. At times, the data(XML) being passed with web service calls is also huge leading to performance issues. 
&lt;br /&gt;&lt;br /&gt;
&lt;i&gt;The usage of services or ejb’s should to be evaluated from application usage perspective. Attention needs to be paid on the contract design.&lt;/i&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;b&gt;Chatty Services&lt;/b&gt; – Another pattern observed is the way the service is implemented via multiple web service calls each of which is communicating a small piece of data. This results in explosion of web services and which leads to degradation of performance and unmaintainable code. Also, from the deployment perspective, the application starts running into problems. I have come across projects which have hundred plus services all getting crammed into a single deployment unit. When the application comes up, the base heap requirement is already in 2Gb range leaving not much space for application to run.&lt;br /&gt;&lt;br /&gt;
&lt;i&gt;If the application is having too many fine grained services, then it an indication towards the application of this antipattern.&lt;/i&gt;

&lt;/li&gt;
&lt;/ul&gt;
The above mentioned antipatterns are frequent causes of application performance issues. The teams usually start with the right intentions but over a period of time, things will start slipping. Some of the common reasons 
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Lack of design standards and reviews processes – even if these exists, the delivery pressure is leading to skipping these processes
&lt;/li&gt;
&lt;li&gt;Team members inexperience or narrow view leads to every programmer only looking at their module and nobody is looking at the overall application performance
&lt;/li&gt;
&lt;li&gt;Continuous Integration(CI) tools not integrated with compliance check tools like PMD, Checkstyle, FindBugs etc
&lt;/li&gt;
&lt;li&gt;No focus on profiling of the application on regular basis during the code construction phase
&lt;/li&gt;
&lt;li&gt;Not evaluating the results from the Load tests to decipher and fix the underlying issue (blaming the poor infrastructure setup)&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;i&gt;What are the other antipatterns you have observed that have contributed to the degradation in the application performance. Do share!&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-7748261127957446";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-08-03: J2EE, Portal, Web Services, Web 2.0, Ajax
google_ad_channel = "2060177799+6892783472+6327960836+9022209472+4184383655";
//--&gt;
&lt;/script&gt;
&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" 
 type="text/javascript"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16501575-2744983566666768012?l=www.techspot.co.in' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CAc5QKuZJLfaMhTtSkXQ3P3Nn4M/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CAc5QKuZJLfaMhTtSkXQ3P3Nn4M/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CAc5QKuZJLfaMhTtSkXQ3P3Nn4M/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CAc5QKuZJLfaMhTtSkXQ3P3Nn4M/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/dTNY?a=BL7QQ583t2M:vGVnjWs3Sao:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/dTNY?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/dTNY/~4/BL7QQ583t2M" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/dTNY/~3/BL7QQ583t2M/application-performance-and.html</link><author>noreply@blogger.com (Munish K Gupta)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-v8d2SGJUDfY/TwUz6vG-C1I/AAAAAAAACug/Z-5NV8ap3RY/s72-c/antipatterns.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.techspot.co.in/2012/01/application-performance-and.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-16501575.post-8366666269980742475</guid><pubDate>Mon, 19 Dec 2011 13:40:00 +0000</pubDate><atom:updated>2012-01-17T14:37:04.989+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Tip</category><category domain="http://www.blogger.com/atom/ns#">Testing</category><category domain="http://www.blogger.com/atom/ns#">Architect</category><category domain="http://www.blogger.com/atom/ns#">Patterns</category><category domain="http://www.blogger.com/atom/ns#">Performance</category><title>Deciphering an Outage</title><description>&lt;a href="http://4.bp.blogspot.com/-uLny0IAhxDs/Tu8-qBbfMvI/AAAAAAAACsA/-5x4Iu0vEjE/s1600/fire.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/-uLny0IAhxDs/Tu8-qBbfMvI/AAAAAAAACsA/-5x4Iu0vEjE/s200/fire.png" style="border: 0px;" width="196" /&gt;&lt;/a&gt;Recently, there was a major fire outage reported. The building maintenance team informed the fire brigade department. The fire brigade came in, helped douse the fire and tried to salvage whatever they could. The owner of the building demanded an independent assessment of the reasons behind the fire, what triggered it and how to make sure this does not happen again. The building maintenance team called in an independent assessment team and asked them to comb the carnage and find out what might have caused this!&lt;br /&gt;
&lt;br /&gt;
The independent assessment team went through the motions of accumulating the evidence, looking for telltale signs of what might have gone wrong and then eventually did an event reconstruction on how events would have unfolded on that day. Subsequently, the team came out with the recommendations that need to be implemented to make sure that such an outage does not happen again.&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Typical reasons for most of fire outages are –not conducting regular fire safety drills, violation of the building codes, not designing the fire exit paths, not keeping common area’s clean, storing hazards materials in the basement and building unauthorized extensions. This was the same case here and the recommendations were mostly in same line. Do regular fire safety drills, design fire exit paths, adhere to the building codes, demolish unauthorized extensions, stop storing hazards materials in the basement.&lt;br /&gt;
&lt;br /&gt;
Can you guess the reasons for?&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;why the building was built in violation of so many norms&lt;/li&gt;
&lt;li&gt;how did all the inspectors certified the building&lt;/li&gt;
&lt;li&gt;why did the client not got an independent assessment of the building done before possession&lt;/li&gt;
&lt;li&gt;why did the maintenance team accepted the building without looking into the cost of maintenance in the absence of basic safety&lt;/li&gt;
&lt;li&gt;why should the people using the building not lose confidence in the safety of the building&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
The above scenario is analogous to what I encountered recently.&lt;u&gt;&lt;b&gt; Only difference is that it was a customer facing web application that faced the outage&lt;/b&gt;&lt;/u&gt;.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-7748261127957446";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-08-03: J2EE, Portal, Web Services, Web 2.0, Ajax
google_ad_channel = "2060177799+6892783472+6327960836+9022209472+4184383655";
//--&gt;
&lt;/script&gt;
&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" 
 type="text/javascript"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16501575-8366666269980742475?l=www.techspot.co.in' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/K5eugbQmieJ71X7Wx5uM9VrBnu8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/K5eugbQmieJ71X7Wx5uM9VrBnu8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/K5eugbQmieJ71X7Wx5uM9VrBnu8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/K5eugbQmieJ71X7Wx5uM9VrBnu8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/dTNY?a=8EEdqcJbukg:a7fUCSi5ZuU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/dTNY?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/dTNY/~4/8EEdqcJbukg" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/dTNY/~3/8EEdqcJbukg/deciphering-outage.html</link><author>noreply@blogger.com (Munish K Gupta)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-uLny0IAhxDs/Tu8-qBbfMvI/AAAAAAAACsA/-5x4Iu0vEjE/s72-c/fire.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.techspot.co.in/2011/12/deciphering-outage.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-16501575.post-8831062374442409165</guid><pubDate>Mon, 07 Nov 2011 05:56:00 +0000</pubDate><atom:updated>2012-01-17T14:37:42.724+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Open Source</category><category domain="http://www.blogger.com/atom/ns#">Others</category><category domain="http://www.blogger.com/atom/ns#">Collaboration</category><category domain="http://www.blogger.com/atom/ns#">CMS</category><category domain="http://www.blogger.com/atom/ns#">Enterprise</category><title>Managing Enterprise Group Mail Content</title><description>&lt;a href="http://2.bp.blogspot.com/-iP5bg9APSlU/TrdrOgppG0I/AAAAAAAACbQ/PRQv9J2SmP0/s1600/enterprise-mails.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="144" src="http://2.bp.blogspot.com/-iP5bg9APSlU/TrdrOgppG0I/AAAAAAAACbQ/PRQv9J2SmP0/s320/enterprise-mails.png" style="border: 0px;" width="320" /&gt;&lt;/a&gt;How many times, we have seen that one of the easiest way of cleaning up your mail box is to delete all the enterprise announcements and group e-mails? Are we getting bombarded with too many policy change mails, group emails and announcements? After a few days of the email bombardment, are our brain gets conditioned to just ignore them ?
&lt;br /&gt;
&lt;br /&gt;
All this leads to a point where we start becoming clueless about
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Happenings in the Enterprise&lt;/li&gt;
&lt;li&gt;Policy/Process Changes that might be affecting us&lt;/li&gt;
&lt;/ul&gt;
which means we might be working harder and not smarter.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;
&lt;blockquote class="tr_bq"&gt;
Imagine, the enterprise announces some template for making presentations. The same is announced with enterprise wide email. We ignore the email contents and continuing using the older templates. One fine day, the boss looks at the presentation and says why are you using the older template and there is no body else to blame except self. &lt;/blockquote&gt;
Or&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
Imagine, you did saw the email and know about the new template. But you deleted the email. When a fort night later, there was a requirement to make a presentation, you are searching high and dry for the link from where you can download the template. There is no direct link available on your intranet that points to the template. There is no way to retrieve the email also.&lt;/blockquote&gt;
Why do enterprise not make available all those emails available on the intranet? Is there an easier way to manage this flood of important information? How can the individual employee choose to subscribe/unsubscribe to such emails? Is there a way the employee can refer to these emails later on - where the content is available tagged and ready to be searched?&lt;br /&gt;
&lt;br /&gt;
The answer to these question is simple tool - &lt;b&gt;Blogs&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Enterprise can start publishing all the announcements as blog entries. This simple tool alleviates all the pains and provide a fantastic way of organizing all&amp;nbsp; the content that is properly tagged and available to be searched, subscribed and even allow debates on some of those emails. How many times we wanted to comment on some policy change but could not do so because it is a group email and there is no way to provide feedback. &lt;br /&gt;
&lt;br /&gt;
Having a blog does not mean, the enterprise stops sending out emails but the blog can become the one stop content repository for all such announcements. Today, publishing an entry is as easy as sending an email.&lt;br /&gt;
&lt;br /&gt;
Modern Web Social Collaboration tools provide blog as a feature out of box. Enterprises can make use of the Blog as a means of storing enterprise group email content.&lt;br /&gt;
&lt;br /&gt;
Most of the internet based business already make use of the blogs to connect and disseminate information about their products and services. It is just a matter of picking up the same best practice within the enterprise.&lt;br /&gt;
&lt;ul&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-7748261127957446";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-08-03: J2EE, Portal, Web Services, Web 2.0, Ajax
google_ad_channel = "2060177799+6892783472+6327960836+9022209472+4184383655";
//--&gt;
&lt;/script&gt;
&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" 
 type="text/javascript"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16501575-8831062374442409165?l=www.techspot.co.in' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/XaFrWgSsSH9c3z71LaceyVoR5C8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XaFrWgSsSH9c3z71LaceyVoR5C8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/XaFrWgSsSH9c3z71LaceyVoR5C8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XaFrWgSsSH9c3z71LaceyVoR5C8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/dTNY?a=YhMnp3noyuE:te9nvU5LMNo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/dTNY?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/dTNY/~4/YhMnp3noyuE" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/dTNY/~3/YhMnp3noyuE/managing-enterprise-group-mail-content.html</link><author>noreply@blogger.com (Munish K Gupta)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-iP5bg9APSlU/TrdrOgppG0I/AAAAAAAACbQ/PRQv9J2SmP0/s72-c/enterprise-mails.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.techspot.co.in/2011/11/managing-enterprise-group-mail-content.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-16501575.post-1177535114676969419</guid><pubDate>Mon, 17 Oct 2011 11:04:00 +0000</pubDate><atom:updated>2012-01-17T14:38:08.777+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Architect</category><category domain="http://www.blogger.com/atom/ns#">Patterns</category><category domain="http://www.blogger.com/atom/ns#">Proposals</category><category domain="http://www.blogger.com/atom/ns#">Performance</category><title>Building Scalable Enterprise Systems</title><description>Successful enterprise are all about business agility and able to introduce new products and services in the market. All this business agility coupled with reduced IT overheads means, the enterprise need to find better ways to improve and transform  their enterprise systems.&lt;br /&gt;
&lt;br /&gt;
The advent of Cloud, Social, Mobile and Consumerization of IT means enterprises applications need to be adapt to the changing environment. Today, every enterprise is looking to fulfill the following demands&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Adopt cloud for their enterprise applications (whether private / public / hybrid is a matter of enterprise priorities)&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Replace or retire in-house enterprise applications ( where applicable) in favor of the equivalent SaaS applications&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Expose enterprise data for third party consumption&lt;/li&gt;
&lt;li&gt;
Make the enterprise functionality available over variety of channels (web, mobile) - Consumerization&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Make the systems available 24X7 to meet the ever growing business demands&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
The Enterprise application patterns for creating applications – Portals, CMS, SOA, Centralized DB’s are not functionally capable or geared to meet the new business demands. The enterprise needs to adopt the newer application patterns that are coming out of the consumer web world. Some of the patterns emerging out of new generation consumer web applications that can be applied for enterprise applications
&lt;a name='more'&gt;&lt;/a&gt;
&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Partition by Function&lt;/b&gt; – Divide the functionality by usage patterns or resource consumption. The functionality can be exposed using RESTful or Web services. This functional grouping will help in achieving optimization at the resource level. This helps to scale individual functional groups based on their resource characteristics (High CPU, More RAM, High I/O). This pattern organizes the enterprise platform around services which in turn provides agility. Things can be done in parallel because the output is a service. This allows fast time to market. Helps create an infrastructure that allows services to be built very fast.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Segregate the providers and Consumers&lt;/b&gt; – Instead of building large monolithic applications, segregate the functionality providers versus consumers. The enterprise should have separate teams – one that deal with the functionality provider and other that consume the functionality. The functionality is exposed via simple API’s having standard versioned interfaces&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Public/private cloud integration &lt;/b&gt;– Enterprises need to have standardized integration strategy as the need on board multiple applications from multiple vendors start becoming common.
&lt;ul&gt;
&lt;li&gt;Enterprise need to start integrating with SaaS vendors that can provide the required apps for the consumption of the enterprise users. At times, the integration might need to be handled at the API levels specifically for authentication/authorization.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Enterprise applications specially that are consumer facing can also be hosted in public clouds. &lt;/li&gt;
&lt;/ul&gt;
Enterprise need to integrate services that handle data coming in or going out from public cloud / SaaS vendors to their data centers.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-ybO7JX8szhg/TpwKpto1dpI/AAAAAAAACR8/DBYj5SwpFqM/s1600/Ent-Sys.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://2.bp.blogspot.com/-ybO7JX8szhg/TpwKpto1dpI/AAAAAAAACR8/DBYj5SwpFqM/s400/Ent-Sys.png" style="border: 0px none;" width="500" alt="Click to see larger version of the image"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-7748261127957446";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-08-03: J2EE, Portal, Web Services, Web 2.0, Ajax
google_ad_channel = "2060177799+6892783472+6327960836+9022209472+4184383655";
//--&gt;
&lt;/script&gt;
&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" 
 type="text/javascript"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16501575-1177535114676969419?l=www.techspot.co.in' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wKJWhRDwH2aAlO6I7h0z9PKQW9k/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wKJWhRDwH2aAlO6I7h0z9PKQW9k/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wKJWhRDwH2aAlO6I7h0z9PKQW9k/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wKJWhRDwH2aAlO6I7h0z9PKQW9k/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/dTNY?a=eKxv4qkjJbc:SIBpZMEjWeg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/dTNY?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/dTNY/~4/eKxv4qkjJbc" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/dTNY/~3/eKxv4qkjJbc/building-scalable-enterprise-systems.html</link><author>noreply@blogger.com (Munish K Gupta)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-ybO7JX8szhg/TpwKpto1dpI/AAAAAAAACR8/DBYj5SwpFqM/s72-c/Ent-Sys.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.techspot.co.in/2011/10/building-scalable-enterprise-systems.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-16501575.post-1234701271442388886</guid><pubDate>Fri, 14 Oct 2011 10:55:00 +0000</pubDate><atom:updated>2012-01-17T14:38:56.209+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Programming</category><category domain="http://www.blogger.com/atom/ns#">Architect</category><category domain="http://www.blogger.com/atom/ns#">Capacity Planning</category><category domain="http://www.blogger.com/atom/ns#">Performance</category><title>Why focus on Performance Engineering ?</title><description>&lt;a href="http://2.bp.blogspot.com/-Qo76LUSe2ZA/TpgTV2lcHoI/AAAAAAAACR0/ismFFTPszhQ/s1600/APR.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="140" src="http://2.bp.blogspot.com/-Qo76LUSe2ZA/TpgTV2lcHoI/AAAAAAAACR0/ismFFTPszhQ/s400/APR.jpg" style="border: 0px;" width="400" /&gt;&lt;/a&gt;Time and again, we witness, when a program goes into acceptance testing phase, the client and teams suddenly realize that the application is not meeting the Non-Functional requirements. Usually the application is very slow, or it is frequently going down or not scaling up as expected. I am not even talking of requirements mismatch here.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;
&lt;br /&gt;
When client suddenly raises all these questions, all hell breaks loose within the development team. The team tries to find the hot spots and try to fix them. Invariably,  I have seen the teams end only fixing the symptoms of the problem but not able to correct the problem. E.g if the application is making too many calls to the database. The quick fix at times is to cache the data. But invariably, this leads to problem in the future of cache invalidations and cache synchronization if the application is clustered. Remember, when we are fixing the symptom of the problem, we are only postponing the problem to a future stage (&lt;a href="http://www.techspot.co.in/2011/09/grappling-with-requirement-complexities.html"&gt;Technical Debt&lt;/a&gt;). All this means, with gating criteria's not getting met, cost and schedule over run becomes a norm. This becomes the most crucial phase of the program as the chances of program getting&amp;nbsp;abandoned&amp;nbsp;starts increasing exponentially. All this forms the long tail, as the program just keeps dragging on.&lt;br /&gt;
&lt;br /&gt;
Focus on the Non-functional requirements right from day one is very important. Getting the architecture right at the beginning is very important, as the cost of fixing the problems keep on increasing exponentially as the application develops further and in the later stages it takes a heavy toll on every one. Techniques like Performance Driven Development is a good step in the direction. Other way to analyse each aspect of the requirement and design using the lens of non-functional requirement. At times, we as architects will be able to push requirements that do not meet the NFRs.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-7748261127957446";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-08-03: J2EE, Portal, Web Services, Web 2.0, Ajax
google_ad_channel = "2060177799+6892783472+6327960836+9022209472+4184383655";
//--&gt;
&lt;/script&gt;
&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" 
 type="text/javascript"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16501575-1234701271442388886?l=www.techspot.co.in' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PDTFKz9ZLwV9EOoVAaT22uqQvRI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PDTFKz9ZLwV9EOoVAaT22uqQvRI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PDTFKz9ZLwV9EOoVAaT22uqQvRI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PDTFKz9ZLwV9EOoVAaT22uqQvRI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/dTNY?a=eGd5hWA9NYY:Dyie8L4dcDA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/dTNY?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/dTNY/~4/eGd5hWA9NYY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/dTNY/~3/eGd5hWA9NYY/why-focus-on-performance-engineering.html</link><author>noreply@blogger.com (Munish K Gupta)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-Qo76LUSe2ZA/TpgTV2lcHoI/AAAAAAAACR0/ismFFTPszhQ/s72-c/APR.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://www.techspot.co.in/2011/10/why-focus-on-performance-engineering.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-16501575.post-9072891532544121773</guid><pubDate>Mon, 10 Oct 2011 07:01:00 +0000</pubDate><atom:updated>2011-10-10T12:31:27.542+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Trends</category><category domain="http://www.blogger.com/atom/ns#">Architect</category><category domain="http://www.blogger.com/atom/ns#">IT Industry</category><category domain="http://www.blogger.com/atom/ns#">Performance</category><category domain="http://www.blogger.com/atom/ns#">Hadoop</category><title>Why are Enterprises looking at BigData?</title><description>&lt;a href="http://2.bp.blogspot.com/-jIZh60lQmJY/TpKXQR6VPFI/AAAAAAAACRw/U7W_orHm8KA/s1600/bigdata.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="198" src="http://2.bp.blogspot.com/-jIZh60lQmJY/TpKXQR6VPFI/AAAAAAAACRw/U7W_orHm8KA/s200/bigdata.jpg" style="border: 0px;" width="200" /&gt;&lt;/a&gt;The advent of the Social Collaboration, Online Selling, Digital Goods, Mobile means every enterprise wants to process the transactional and analytical data, that is being collected at multiple customer touch points. All this data need to be processed so that the enterprise can better understand the customer, his social network, his buying patterns and other things. &lt;br /&gt;
&lt;br /&gt;
This has led to ever increasing amount of data, which is leading to the following issues within the enterprise&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;Business do not have access to the real time data feeds&lt;/li&gt;
&lt;li&gt; Queries are running in hrs and minutes and not in seconds&lt;/li&gt;
&lt;li&gt;The batch processes, ETL, data loads are taking too much of time&lt;/li&gt;
&lt;li&gt;Ability to construct new models based on the data is time consuming&lt;/li&gt;
&lt;li&gt;Scalability of systems with ever increasing data is becoming a problem&lt;/li&gt;
&lt;li&gt;Data Storage/Redundancy is another problem&lt;/li&gt;
&lt;li&gt;Increasing License cost of software/hardware is another issue &lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
When Business looks and reads about how Facebook, Yahoo, Google etc are managing large amounts of data (BigData) and are able to process the same at real time, they want to adopt some of their systems and techniques.&lt;br /&gt;
&lt;br /&gt;
The new systems/technologies that have been open sourced and are getting adopted rapidly by the enterprises are &lt;a href="http://hadoop.apache.org/"&gt;Hadoop &lt;/a&gt;and its various commercial versions (&lt;a href="http://www.cloudera.com/"&gt;Cloudera&lt;/a&gt;, &lt;a href="http://www.hortonworks.com/"&gt;Hortonworks&lt;/a&gt;, &lt;a href="http://www.greenplum.com/"&gt;GreenPlum&lt;/a&gt;). In addition, other commercial vendors have also jumped in with their specific BigData offerings - IBM has &lt;a href="http://www-01.ibm.com/software/data/infosphere/biginsights/"&gt;BigInsights&lt;/a&gt;, Oracle has&lt;a href="http://www.oracle.com/us/solutions/ent-performance-bi/business-intelligence/exalytics-bi-machine/overview/index.html"&gt; Exalytics In-memory machine&lt;/a&gt;. The commercial vendors are trying to sell big machines - with more RAM and more CPU to be able to process more data.&lt;br /&gt;
&lt;br /&gt;
But, the question is - are enterprises looking at to buy more hardware, software, acquire more licenses to process data or they want to solve the&amp;nbsp; issues.&lt;br /&gt;
&lt;br /&gt;
I believe, the fundamental problem is speed of access to the data (FastData) which is a paramount requirement for the enterprise. BigData only promises to help solve the problem of large amounts of data but it still has a long way to go before it can fulfill rest of the enterprise needs. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-7748261127957446";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-08-03: J2EE, Portal, Web Services, Web 2.0, Ajax
google_ad_channel = "2060177799+6892783472+6327960836+9022209472+4184383655";
//--&gt;
&lt;/script&gt;
&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" 
 type="text/javascript"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16501575-9072891532544121773?l=www.techspot.co.in' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9x64U5TRZY9FOYQ-PUSGIagOmlg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9x64U5TRZY9FOYQ-PUSGIagOmlg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/9x64U5TRZY9FOYQ-PUSGIagOmlg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9x64U5TRZY9FOYQ-PUSGIagOmlg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/dTNY?a=6-VsMPyxARs:Ut_xk0iqHRU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/dTNY?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/dTNY/~4/6-VsMPyxARs" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/dTNY/~3/6-VsMPyxARs/why-are-enterprises-looking-at-bigdata.html</link><author>noreply@blogger.com (Munish K Gupta)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-jIZh60lQmJY/TpKXQR6VPFI/AAAAAAAACRw/U7W_orHm8KA/s72-c/bigdata.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.techspot.co.in/2011/10/why-are-enterprises-looking-at-bigdata.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-16501575.post-979464732380600813</guid><pubDate>Fri, 30 Sep 2011 05:01:00 +0000</pubDate><atom:updated>2011-09-30T10:32:56.450+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Trends</category><category domain="http://www.blogger.com/atom/ns#">Programming</category><category domain="http://www.blogger.com/atom/ns#">Architect</category><category domain="http://www.blogger.com/atom/ns#">Proposals</category><title>Grappling with Requirement Complexities</title><description>&lt;a href="http://2.bp.blogspot.com/-9ffUI06Uwps/ToVNIl9CgTI/AAAAAAAACQg/QZ_yE-C1BsE/s1600/requirement-complexity.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="189" src="http://2.bp.blogspot.com/-9ffUI06Uwps/ToVNIl9CgTI/AAAAAAAACQg/QZ_yE-C1BsE/s320/requirement-complexity.jpg" style="border: 0;" width="320" /&gt;&lt;/a&gt;For an Architect, as if deciphering the requirements between Functional and Non-Functional requirements was not enough, DevOps and Technical Debt has opened another head for bunching requirements.&lt;br /&gt;
&lt;br /&gt;
For the uninitiated, DevOps is a movement that is meant to break down the silo approach between the Dev, QA and IT teams, where the code moved in a batch mode from Dev-&amp;gt;QA-&amp;gt;IT Operations teams. This silo'ed approach meant delay, disruption and duplication of efforts, which ultimately leads to delays in pushing out business functionality.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;
DevOps promote having a integrated team of application development, QA and operations people that shortens the delivery cycles and work within the 2-3 weeks sprint cycle. This means people with multiple skills (read polyglot programming) - either coders with sysadmin skills or vice-verse. Advent of cloud has accelerated this methodology as the team developing the feature is also responsible for its deployment.&lt;br /&gt;
&lt;br /&gt;
With clients insisting on shorted delivery cycles, multiple releases in a day at times means teams need be agile and staffed with appropriate skills to be able to deliver the business functionality.&lt;br /&gt;
&lt;br /&gt;
Damon Edwards explained DevOps very beautifully in a blog post last year:&lt;br /&gt;
&lt;blockquote&gt;
The most fundamental business process in any company is getting an idea from inception to where it is making you money … The whole point of DevOps is to enable your business to react to market forces as quickly, efficiently, and reliably as possible. &lt;/blockquote&gt;
Traditional models of SDLC like waterfall model can not cope with the newer demands of the business. Business wants to try out new features / functionality to guage the client reaction means more releases, more agility expected from the teams.&lt;br /&gt;
&lt;br /&gt;
All this agility, means the code going out is not optimal and can be messy at times. This means maintaining code or adding new features become harder and harder as we progress. All this slows down the sprint cycles.&lt;br /&gt;
&lt;br /&gt;
Technical Debt is a metaphor developed by Ward Cunningham, who drew the comparison between technical complexity and debt and said&lt;br /&gt;
&lt;blockquote&gt;
Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly with a rewrite... The danger occurs when the debt is not repaid. Every minute spent on not-quite-right code counts as interest on that debt. &lt;/blockquote&gt;
If the business insists on reduction of technical debt along with the new features being developed, it adds another layer of complexity to the whole engagements. &lt;br /&gt;
&lt;br /&gt;
Imagine, with every sprint, the team is adding new features ,&amp;nbsp; refactoring / rewriting the old code (to reduce/payback the Technical Debt) , ensure and account for any new Technical Debt getting added, the job of the architect to co-ordinate and co-relate all these varied requirements become lot more harder.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-7748261127957446";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-08-03: J2EE, Portal, Web Services, Web 2.0, Ajax
google_ad_channel = "2060177799+6892783472+6327960836+9022209472+4184383655";
//--&gt;
&lt;/script&gt;
&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" 
 type="text/javascript"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16501575-979464732380600813?l=www.techspot.co.in' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8pUpOxwiIxm34_tZ3M5k7nELqSY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8pUpOxwiIxm34_tZ3M5k7nELqSY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8pUpOxwiIxm34_tZ3M5k7nELqSY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8pUpOxwiIxm34_tZ3M5k7nELqSY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/dTNY?a=l6592kkzhec:RdetOnIu_YA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/dTNY?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/dTNY/~4/l6592kkzhec" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/dTNY/~3/l6592kkzhec/grappling-with-requirement-complexities.html</link><author>noreply@blogger.com (Munish K Gupta)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-9ffUI06Uwps/ToVNIl9CgTI/AAAAAAAACQg/QZ_yE-C1BsE/s72-c/requirement-complexity.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.techspot.co.in/2011/09/grappling-with-requirement-complexities.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-16501575.post-5853267041376552083</guid><pubDate>Thu, 29 Sep 2011 12:31:00 +0000</pubDate><atom:updated>2012-01-17T14:39:17.364+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Trends</category><category domain="http://www.blogger.com/atom/ns#">Tip</category><category domain="http://www.blogger.com/atom/ns#">Review</category><category domain="http://www.blogger.com/atom/ns#">Cloud</category><title>PaaS - is it right for me ?</title><description>&lt;a href="http://3.bp.blogspot.com/-2fyWSxOVogg/ToRg-EEsy7I/AAAAAAAACQQ/_V9b9ZDG9VI/s1600/cloud-paas.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="217" src="http://3.bp.blogspot.com/-2fyWSxOVogg/ToRg-EEsy7I/AAAAAAAACQQ/_V9b9ZDG9VI/s320/cloud-paas.jpg" style="border: 0;" width="320" /&gt;&lt;/a&gt; An organisation embarking on a cloud journey invariably ends up looking for PaaS solutions. PaaS sounds like something that will help me take away all my pains. Creating your application, using drag and drop controls in a browser and everything else taken care (from deployment to running to scalability to back up of data and what not) sounds something exciting and very hard to believe.&lt;br /&gt;
&lt;br /&gt;
Anyway, who wants to deal with the IT folks and deal with all the tantrums they throw, what is possible and what is not.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;em&gt;Bernard Golden, &lt;/em&gt;in his article&lt;em&gt;&amp;nbsp;"What You Need to Know About PaaS" &lt;/em&gt;talks about the various issues that need to be looked at, when selecting your PaaS vendor.&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Lock-in&lt;/b&gt; - The productivity gains you get by using vendor API's also mean you get locked on to the platform and application migration becomes all the more difficult.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Complexity - &lt;/b&gt;Writing PaaS application is not the same as writing regular applications. Depending on the vendor, the complexity of writing application increases as you try to add more functionality&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Cloud Service Provider Differentiation&lt;/b&gt; - The whole premise of PaaS platform is to make the writing of applications easy. With all the abstraction the platform provide, you end up getting locked at operation level&lt;/li&gt;
&lt;li&gt;&lt;b&gt;New Skills&lt;/b&gt; - PaaS platforms require new set of skills which means either re-train your existing employee or hire new people&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Mapping existing practices to new frameworks - &lt;/b&gt;Every enterprise will have standard processes, tools and methodologies of working and developing applications. All these need to be re-looked based on the PaaS platform&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
All in all, PaaS platforms need to be evaluated based on your requirements and fitment as per your organisation needs.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Read the complete article &lt;a href="http://www.cio.com/article/689345/Cloud_Computing_What_You_Need_to_Know_About_PaaS"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-7748261127957446";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-08-03: J2EE, Portal, Web Services, Web 2.0, Ajax
google_ad_channel = "2060177799+6892783472+6327960836+9022209472+4184383655";
//--&gt;
&lt;/script&gt;
&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" 
 type="text/javascript"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16501575-5853267041376552083?l=www.techspot.co.in' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YPgipGDwL7NTPg4aoZbG0s-w63g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YPgipGDwL7NTPg4aoZbG0s-w63g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YPgipGDwL7NTPg4aoZbG0s-w63g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YPgipGDwL7NTPg4aoZbG0s-w63g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/dTNY?a=lBHXP6SFrAs:0Y4gqKj_IPQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/dTNY?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/dTNY/~4/lBHXP6SFrAs" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/dTNY/~3/lBHXP6SFrAs/paas-is-it-right-for-me.html</link><author>noreply@blogger.com (Munish K Gupta)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-2fyWSxOVogg/ToRg-EEsy7I/AAAAAAAACQQ/_V9b9ZDG9VI/s72-c/cloud-paas.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://www.techspot.co.in/2011/09/paas-is-it-right-for-me.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-16501575.post-1593022277774601930</guid><pubDate>Wed, 28 Sep 2011 06:03:00 +0000</pubDate><atom:updated>2011-09-29T18:10:11.843+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Tip</category><category domain="http://www.blogger.com/atom/ns#">Capacity Planning</category><category domain="http://www.blogger.com/atom/ns#">Performance</category><title>Practical approach to Capacity Planning</title><description>&lt;a href="http://1.bp.blogspot.com/-d_VHQyrXRmU/ToRml3B48bI/AAAAAAAACQc/3aoGnI354AA/s1600/capacity-planning.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="170" src="http://1.bp.blogspot.com/-d_VHQyrXRmU/ToRml3B48bI/AAAAAAAACQc/3aoGnI354AA/s320/capacity-planning.jpg" width="320" style="border:0" /&gt;&lt;/a&gt;Capacity Planning is all about managing you resources better. Resources are finite, resources need to be procured, resources come at a cost, resources get consumed, as a result you need to do some capacity planning.&lt;br /&gt;
&lt;br /&gt;
Capacity planning is an exercise undertaken in all the industries. There are plenty of models on how to perform capacity planning. But somehow application of these models in the software industry is too cumbersome, tedious and at times completely useless. These models work best when you have a standardized product and process. In software, every release changes the dynamics of the software product. The code base changes, the code performance changes, the usage pattern might change leading to the failure of the previous capacity planning exercises.&lt;br /&gt;
&lt;blockquote&gt;
&lt;i&gt;Amazon.com released a one
day promotion- Lady Gaga album for 99 cents and the site went down. Lots of
customers could not buy the offered album songs. Leaving lot of customers angry
and loosing potential business&lt;/i&gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;div&gt;
Looking at the problem, following question comes to mind, when to do capacity planning :&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Should I wait for disaster to stuck?&lt;/li&gt;
&lt;li&gt;Should I start capacity planning from day one?&lt;/li&gt;
&lt;/ul&gt;
Next question comes&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;How to go about doing capacity planning?&lt;/li&gt;
&lt;/ul&gt;
There is a simple process for doing capacity planning. It is not different from any other planning process. There are primarily four steps in the process.&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt; &lt;b&gt;Determine your capacity planning goals - &lt;/b&gt;For any capacity planning exercise, it is very important to determine the goals in mind. e.g. for an internet application, managing the ever increasing number of users might be a goal. Similarly, for an intranet application, the number of users might be constant, availability and response time might be the drivers for the capacity planning. Once we understand the nature of the application, and what is the end objective, we can plan the goals. These goals will determine what the measuring points that are required from application. More the measuring points, better will the forecasts.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Collect data and metrics that map to those goals - &lt;/b&gt;Once the goals and the measuring points are determined, we need to collect data that maps to the state goals. e.g. if 99.9% availability of the application is the goal, we need to be able to track the application up-time. We need to track and measure all the links in the applications (be it load balancers, application servers, web servers, data base servers, network, storage, routers, switches, power supply). We need to keep track of the various application usage patterns that can affect the application availability.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Plot that data and make forecasts - &lt;/b&gt;Once we collect the data, we need to plot that data and create trend curves. We will need to extrapolate and do curve fitting on the time series data. This will give us data in terms of application usage changes and help us in product planning. This is an on-going iterative exercise. Every new data brings in more perspective and helps make the forecast better.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Use those forecasts to enhance the capacity - &lt;/b&gt;Based on the forecasts, we need to enhance the capacity to tackle the new growth and achieve our goals. &lt;/li&gt;
&lt;/ol&gt;
Any changes in the application (bug fixing or functionality enhancement) will render the old data invalid. We will need to account for these new changes and map into the measuring points. This will help in accounting for the changes in the forecasts.&lt;br /&gt;
&lt;br /&gt;
Remember, capacity planning is something that starts, when you conceive the application and it continues till the application is sun set.&lt;br /&gt;
&lt;br /&gt;
Capacity planning is not an end in itself but a journey.&lt;br /&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-7748261127957446";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-08-03: J2EE, Portal, Web Services, Web 2.0, Ajax
google_ad_channel = "2060177799+6892783472+6327960836+9022209472+4184383655";
//--&gt;
&lt;/script&gt;
&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" 
 type="text/javascript"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16501575-1593022277774601930?l=www.techspot.co.in' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/FR4b_89KSpLW3SO8W4vSM4QWK1w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FR4b_89KSpLW3SO8W4vSM4QWK1w/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/FR4b_89KSpLW3SO8W4vSM4QWK1w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FR4b_89KSpLW3SO8W4vSM4QWK1w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/dTNY?a=1xdOz2lYghk:PEQ38pa32Ig:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/dTNY?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/dTNY/~4/1xdOz2lYghk" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/dTNY/~3/1xdOz2lYghk/practical-approach-to-capacity-planning.html</link><author>noreply@blogger.com (Munish K Gupta)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-d_VHQyrXRmU/ToRml3B48bI/AAAAAAAACQc/3aoGnI354AA/s72-c/capacity-planning.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.techspot.co.in/2011/09/practical-approach-to-capacity-planning.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-16501575.post-6760160599724586489</guid><pubDate>Wed, 03 Aug 2011 06:11:00 +0000</pubDate><atom:updated>2012-01-17T14:39:51.957+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Trends</category><category domain="http://www.blogger.com/atom/ns#">Cloud</category><category domain="http://www.blogger.com/atom/ns#">Architect</category><category domain="http://www.blogger.com/atom/ns#">Mobile</category><category domain="http://www.blogger.com/atom/ns#">Open Source</category><category domain="http://www.blogger.com/atom/ns#">Others</category><title>Enterprise Mobile Web Strategy</title><description>&lt;a href="http://4.bp.blogspot.com/-aiL7igSbR_Y/Tjjl6QKuANI/AAAAAAAACPc/U4GpQ3Es-GQ/s1600/MobileApps.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/-aiL7igSbR_Y/Tjjl6QKuANI/AAAAAAAACPc/U4GpQ3Es-GQ/s200/MobileApps.jpg" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px;" width="134" /&gt;&lt;/a&gt;With the proliferation of devices in various screen sizes and running different OS, having a coherent mobile web strategy has become somewhat of a nightmare for the enterprise. Gone are the days, when the enterprise would just optimize the existing web site for mobile and let the content be served. Today’s consumer with the ever powerful device and increasing bandwidth is looking for experience that is equal to or at times better than the web.&lt;br /&gt;
&lt;br /&gt;
When trying to create an mobile strategy, enterprise need to ponder over this&lt;br /&gt;
&lt;ul style="margin-left: 150px;"&gt;
&lt;li&gt;Should I build a native  application for the mobile device&lt;/li&gt;
&lt;li&gt;Should I build a mobile optimized web site&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;
To be able to answer these questions, you need to study the consumer usage patterns and ask&lt;br /&gt;
&lt;ul style="margin-left: 20px;"&gt;
&lt;li&gt;What is the value the information provides to the consumer?&lt;/li&gt;
&lt;li&gt;What is the frequency of access of information by the consumer?&lt;/li&gt;
&lt;li&gt;What is the experience I want to provide to the consumer?&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
What is my business all about? E.g. If the enterprise is in the business of movie screenings. The consumer is interested in the information with regards to the nearest theatre location, what movies are playing, their timings and how can I buy the tickets. The user will be accessing the application multiple times during the month. In this kind of scenario, having a dedicated application is must.&lt;br /&gt;
&lt;br /&gt;
But there will other consumers who have not yet installed the application. For such user’s your web site should be optimized for mobile access and provide the same information and features. In the end, you can ask him to install the application to make the future search and transaction a lot easier.&lt;br /&gt;
&lt;br /&gt;
Having an application also allows you to tap into the features of the mobile device to provide an enriching experience to the consumer. E.g usage of accelerometer, camera, GPS, compass can greatly enhance the consumer experience.&lt;br /&gt;
&lt;br /&gt;
But, if your enterprise is not direct consumer market, having a mobile optimized web site might will do and you need not create a native mobile application.&lt;/blockquote&gt;
&lt;br /&gt;
So, overall your mobile strategy needs to keep in mind these &lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;You definitely need a mobile web strategy, meaning a mobile optimized web site. Whether you need a dedicated mobile app or not depends upon your answers in the earlier section.&lt;/li&gt;
&lt;li&gt;Make sure you optimize the web site across all major mobile platforms (Android, iOS, Windows Phone 7, Blackberry) and across the common device screen sizes&lt;/li&gt;
&lt;li&gt;Make sure you try to leverage mobile device features - accelerometer, camera, GPS, compass etc to enhance the experience&lt;/li&gt;
&lt;li&gt;Make use of the technologies that allows to build and deploy a common code base with little variations across devices. HTML5, CSS3, webfonts should be used when building your mobile applications&lt;/li&gt;
&lt;li&gt;Keep the mobile application design simple. Single column layouts work the best with vertical hierarchy menus. Go easy on the data consumption, today’s devices are faster but consumers do not like application that just hog their bandwidth. Try to keep images to the bare minimum&lt;/li&gt;
&lt;li&gt;When building mobile applications, keep the usability aspects of mobile devices in mind. Taps vs clicks – means larger buttons are required, instant feedback  (e.g. change the button colors to indicate that the action has been registered), typing is usually difficult – having a tap based options help.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Next step comes to the tools that can be used to build the native mobile applications&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.adobe.com/products/flash-builder.html"&gt;Adobe Flash Builder 4.5&lt;/a&gt; offers developers one tool, one development framework and one codebase to build mobile applications on Android, BlackBerry Tablet OS and iOS. It is one integrated development platform that allows you to create mobile application for multiple platforms. You can build very rich UI that make use of device features like accelerometer, camera, GPS, compass etc. You can make use of your enterprise assets - java libraries when building solutions&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.phonegap.com/"&gt;PhoneGap &lt;/a&gt; is an open source development framework for building cross-platform mobile apps using HTML, CSS and JavaScript. The tool enables developers to utilize the core features of the iPhone, Android, Palm, Symbian and Blackberry smartphones, including geolocation, accelerometer, contacts, sound and vibration to build applications&lt;/li&gt;
&lt;li&gt;&lt;a href="http://rhomobile.com/"&gt;RhoMobile &lt;/a&gt;offers Rhodes, an open source, Ruby-based framework that allows for development of native apps for a wide range of smartphone devices and operating systems(iPhone, Android, Windows Mobile, RIM and Symbian)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.appcelerator.com/"&gt;Appcelerator&lt;/a&gt;&amp;nbsp;provides the Titanium Development Platform which allows for the development of native mobile, tablet and desktop applications through typical web dev languages such as JavaScript, PHP, Python, Ruby and HTML&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
In addition, if you are looking for just the mobile optimization of your web sites and functionality then look for offerings from -&amp;nbsp;netbiscuits, mBlox, iLoop Mobile, Crisp Media, Quattro Wireless, 3Cinteractive.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-7748261127957446";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-08-03: J2EE, Portal, Web Services, Web 2.0, Ajax
google_ad_channel = "2060177799+6892783472+6327960836+9022209472+4184383655";
//--&gt;
&lt;/script&gt;
&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" 
 type="text/javascript"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16501575-6760160599724586489?l=www.techspot.co.in' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EbZMD653f_LXSGx8c4uK2HKMink/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EbZMD653f_LXSGx8c4uK2HKMink/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EbZMD653f_LXSGx8c4uK2HKMink/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EbZMD653f_LXSGx8c4uK2HKMink/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/dTNY?a=JG77FnSL1AQ:n4sZnyUKuvc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/dTNY?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/dTNY/~4/JG77FnSL1AQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/dTNY/~3/JG77FnSL1AQ/enterprise-mobile-web-strategy.html</link><author>noreply@blogger.com (Munish K Gupta)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-aiL7igSbR_Y/Tjjl6QKuANI/AAAAAAAACPc/U4GpQ3Es-GQ/s72-c/MobileApps.jpg" height="72" width="72" /><thr:total>2</thr:total><georss:featurename>Bengaluru, Karnataka, India</georss:featurename><georss:point>12.9715987 77.5945627</georss:point><georss:box>12.724026199999999 77.2787057 13.2191712 77.91041969999999</georss:box><feedburner:origLink>http://www.techspot.co.in/2011/08/enterprise-mobile-web-strategy.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-16501575.post-6632579079411639054</guid><pubDate>Mon, 11 Jul 2011 13:28:00 +0000</pubDate><atom:updated>2011-10-18T10:21:40.415+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Review</category><category domain="http://www.blogger.com/atom/ns#">Programming</category><category domain="http://www.blogger.com/atom/ns#">Cloud</category><category domain="http://www.blogger.com/atom/ns#">Open Source</category><category domain="http://www.blogger.com/atom/ns#">Others</category><category domain="http://www.blogger.com/atom/ns#">Hadoop</category><title>MapReduce for dummies</title><description>Continuing the coverage on Hadoop component, we will go through the MapReduce component. MapReduce is a concept that has been programming model of LISP. But before we jump into MapReduce, lets start with an example to understand how MapReduce works.&lt;br /&gt;
&lt;br /&gt;
Given a couple of sentences, write a program that counts the number of words.&lt;a href="http://1.bp.blogspot.com/-LUpaJdJhHXE/Thr3SCwU_7I/AAAAAAAACOE/N53Asbw80Vs/s1600/MP1.png" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="232" src="http://1.bp.blogspot.com/-LUpaJdJhHXE/Thr3SCwU_7I/AAAAAAAACOE/N53Asbw80Vs/s400/MP1.png" style="border: 0;" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;Now, the traditional thinking when solving this problem is read a word, check whether the word is one of the stop words, if not , add the word in a HashMap with key as the word and set the value to number of occurrences. If the word is not found in HashMap, then add the word and set the value to 1. If the word is found, then increment the value and word the same in HashMap.&lt;br /&gt;
&lt;br /&gt;
Now, in this scenario, the program is processing the sentence in a serial fashion. Now, imagine if instead of a sentence, we need to count the number of words in encylopedia. Serial processing of this amount of data is time consuming. So, question is is there another algorithm we can use to speed up the processing. &lt;br /&gt;
&lt;br /&gt;
Lets take the same problem and divide the same into 2 steps. In the first step, we take each sentence each and map the number of words in that sentence.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-mlHQj9q_Qlw/Thr3ri04QWI/AAAAAAAACOI/5eNqYW6gpII/s1600/MP2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="195" src="http://3.bp.blogspot.com/-mlHQj9q_Qlw/Thr3ri04QWI/AAAAAAAACOI/5eNqYW6gpII/s400/MP2.png" style="border: 0;" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once, the words have been mapped, lets move to the next step. In this step, we combine (reduce) the maps from two sentences into a single map.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-T3X3U8fAf4E/Thr3sG_8j7I/AAAAAAAACOM/gASj_nsDmxc/s1600/MP3.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="262" src="http://2.bp.blogspot.com/-T3X3U8fAf4E/Thr3sG_8j7I/AAAAAAAACOM/gASj_nsDmxc/s400/MP3.png" style="border: 0;" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That’s it, we have just seen how, individual sentences can be mapped individually and then once mapped, can  be reduced to a single resulting map.&amp;nbsp;Advantage of the MapReduce approach is&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;The whole process got distributed in small tasks that will help &amp;nbsp;in faster completion of the job&lt;/li&gt;
&lt;li&gt;Both the steps can be broken down into tasks. In the first, instance, run multiple map tasks, once the mapping is done, run multiple reduce tasks to combine the results and finally aggregate the results&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-3UJ18ZTrAdg/Thr3sok-t2I/AAAAAAAACOQ/WAm6of-ar70/s1600/MP4.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="321" src="http://3.bp.blogspot.com/-3UJ18ZTrAdg/Thr3sok-t2I/AAAAAAAACOQ/WAm6of-ar70/s400/MP4.png" style="border: 0;" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now, imagine this MapReduce paradigm working on the HDFS. HDFS has data nodes that splits and store the files in blocks. Now, if map the tasks on each of the data nodes, then we can easily leverage the compute power of those data node machines.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-XyXAyd4SUjE/Thr3tNMIdkI/AAAAAAAACOU/lK_s2IcoVu8/s1600/MP5.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="267" src="http://2.bp.blogspot.com/-XyXAyd4SUjE/Thr3tNMIdkI/AAAAAAAACOU/lK_s2IcoVu8/s400/MP5.png" style="border: 0;" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, each of the data nodes, can run tasks (map or reduce) which are the essence of the MapReduce. As each data nodes stores data for multiple files, multiple tasks might be running at the same time for different data blocks.&lt;br /&gt;
&lt;br /&gt;
To control the MapReduce tasks, there are 2 processes that need to be understood&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;JobTracker&lt;/b&gt; - The JobTracker is the service within Hadoop that farms out MapReduce tasks to specific nodes in the cluster, ideally the nodes that have the data, or at least are in the same rack.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;TaskTracker&lt;/b&gt; - TaskTracker is a process that starts and tracks MapReduce Tasks in a cluster. It contacts the JobTracker for Task assignments and reporting results.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
These Trackers are part of the Hadoop itself and can be tracked easily via&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;http://&amp;lt;host-name&amp;gt;:50030/ - web UI for MapReduce job tracker(s)&lt;/li&gt;
&lt;li&gt;http://&amp;lt;host-name&amp;gt;:50060/ - web UI for task tracker(s)&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-7748261127957446";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-08-03: J2EE, Portal, Web Services, Web 2.0, Ajax
google_ad_channel = "2060177799+6892783472+6327960836+9022209472+4184383655";
//--&gt;
&lt;/script&gt;
&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" 
 type="text/javascript"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16501575-6632579079411639054?l=www.techspot.co.in' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Uv1-6nHe3UlbrvxLvsCL2NossdM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Uv1-6nHe3UlbrvxLvsCL2NossdM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Uv1-6nHe3UlbrvxLvsCL2NossdM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Uv1-6nHe3UlbrvxLvsCL2NossdM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/dTNY?a=KpAedzhBJxA:ESocdCT20Ms:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/dTNY?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/dTNY/~4/KpAedzhBJxA" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/dTNY/~3/KpAedzhBJxA/mapreduce-for-dummies.html</link><author>noreply@blogger.com (Munish K Gupta)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-LUpaJdJhHXE/Thr3SCwU_7I/AAAAAAAACOE/N53Asbw80Vs/s72-c/MP1.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.techspot.co.in/2011/07/mapreduce-for-dummies.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-16501575.post-5772174863597735850</guid><pubDate>Fri, 08 Jul 2011 04:30:00 +0000</pubDate><atom:updated>2011-10-18T10:21:53.095+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Review</category><category domain="http://www.blogger.com/atom/ns#">Programming</category><category domain="http://www.blogger.com/atom/ns#">Open Source</category><category domain="http://www.blogger.com/atom/ns#">Hadoop</category><title>HDFS for dummies</title><description>&lt;br /&gt;
Whenever a newbie wants to start learning the Hadoop, the number of elements in a Hadoop stack are mind bogling and at times difficult to comprehend. I am trying to de-crypt the whole stack and help explain the basic pieces in my own way. Before we start talking about the Hadoop Stack, let us take a step back and try to understand what led to the origins to the Hadoop.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Problem&lt;/b&gt; – With the prolification of the internet, the amount of data stored growing up. Lets take an example of a search engine (like Google), that needs to index the large of amount of data that is being generated. The search engine crawls and indexes the data. The index data is stored and retrieval from a single storage device. As the data generated grows, the search index data will keep on increasing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;As the number of queries to access data increase, the current file system I/O becomes inadequate to retrieve large amounts of data simuntaneously. Further, the model of one large single storage starts becoming a bottleneck. To overcome the problem, we move the file system from a single disk storage to a clustered file system. But as the amount of data keeps growing the underlying data that can go one one machine starts to become a bottleneck.&lt;br /&gt;
&lt;br /&gt;
As data reaches TB’s, existing file system based solutions starts faltering. Data access, multiple writers, large file sizes soon become a problem in scaling up the system.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Solution&lt;/b&gt; – To overcome the problems, an distributed file system was concieved that provided solution to the above problems. The solution tackled the problem as&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;When dealing with large files, I/O becomes a big bottleneck. So, we divide the files into small blocks and store in multiple machines. &lt;b&gt;[Block Storage]&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;When we need to read the file, the client sends a request to multiple machines, each machine sends a block of file which is then combined together to pierce the whole file.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;With the advent of block storage, the data access becomes distributed and leads to a faster retrieval/write&amp;nbsp;&lt;/li&gt;
&lt;li&gt;As the data blocks are stored on multiple machines, it helps in removing single point of failure by having the same block on multiple machines. Meaning, if one machine goes, the client can request the block from another machine.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Now, any solution that implements file storage as blocks needs to have the following characteristics&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Manage the meta data information – Since the file gets broken into multiple blocks, somebody needs to keep track of no of blocks and storage of these blocks on different machines &lt;b&gt;[NameNode]&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Manage the stored blocks of data and fulfill the read/write requests &lt;b&gt;[DataNodes]&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
So, in the context of Hadoop –The &lt;b&gt;NameNode&lt;/b&gt; is the arbitrator and repository for all metadata. The NameNode executes file system namespace operations like opening, closing, and renaming files and directories. It also determines the mapping of blocks to DataNodes. &lt;b&gt;DataNodes&lt;/b&gt; are responsible for serving read and write requests from the file system’s clients. The DataNodes also perform block creation, deletion, and replication upon instruction from the NameNode. All these component together form the Distributed File System &amp;nbsp;called as &lt;b&gt;HDFS&lt;/b&gt; (Hadoop Distributed File System).&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-EioR4G_JLRU/ThaG9ZVuYII/AAAAAAAACNs/NFEsAH5M6gg/s1600/HDFS.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="221" src="http://4.bp.blogspot.com/-EioR4G_JLRU/ThaG9ZVuYII/AAAAAAAACNs/NFEsAH5M6gg/s320/HDFS.gif" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class="MsoNormal"&gt;
Reference - &lt;a href="http://hadoop.apache.org/common/docs/current/hdfs_design.html"&gt;http://hadoop.apache.org/common/docs/current/hdfs_design.html&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
HDFS has an inbuild redundancy and replication feature that makes sure that any failure of the machine can be dealt without any loss of data. The HDFS balances itself whenever a new data node is added to the cluster or any of the existing datanode fails.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
In addition to the distributed file system called HDFS (Hadoop Distributed File System), there are 2 other core components &amp;nbsp; &amp;nbsp;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Hadoop Common&lt;/b&gt; – are set of utilities that support the Hadoop subprojects. Hadoop Common includes FileSystem, RPC, and serialization libraries.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Hadoop MapReduce&lt;/b&gt; - is a programming model and software framework for writing applications that rapidly process vast amounts of data in parallel on large clusters of compute nodes&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
So, effectively, when you start working with Hadoop, HDFS and Hadoop MapReduce are the first 2 things you encounter. I will cover MapReduce in subsequent posts.&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-7748261127957446";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-08-03: J2EE, Portal, Web Services, Web 2.0, Ajax
google_ad_channel = "2060177799+6892783472+6327960836+9022209472+4184383655";
//--&gt;
&lt;/script&gt;
&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" 
 type="text/javascript"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16501575-5772174863597735850?l=www.techspot.co.in' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/K-ZfRNf6dBSy467QwGXPDM04L4g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/K-ZfRNf6dBSy467QwGXPDM04L4g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/K-ZfRNf6dBSy467QwGXPDM04L4g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/K-ZfRNf6dBSy467QwGXPDM04L4g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/dTNY?a=YjVh_gWjJic:japIXhWImcc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/dTNY?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/dTNY/~4/YjVh_gWjJic" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/dTNY/~3/YjVh_gWjJic/hdfs-for-dummies.html</link><author>noreply@blogger.com (Munish K Gupta)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-EioR4G_JLRU/ThaG9ZVuYII/AAAAAAAACNs/NFEsAH5M6gg/s72-c/HDFS.gif" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.techspot.co.in/2011/07/hdfs-for-dummies.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-16501575.post-1785717996507886945</guid><pubDate>Sun, 12 Jun 2011 15:24:00 +0000</pubDate><atom:updated>2012-01-05T10:57:19.479+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Architect</category><category domain="http://www.blogger.com/atom/ns#">Patterns</category><category domain="http://www.blogger.com/atom/ns#">Performance</category><title>Building High Performance Applications</title><description>&lt;a href="http://4.bp.blogspot.com/-X-j1n223g08/TfBb0OK9abI/AAAAAAAACIs/_LL8DQfPk3o/s1600/application.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="169" src="http://4.bp.blogspot.com/-X-j1n223g08/TfBb0OK9abI/AAAAAAAACIs/_LL8DQfPk3o/s200/application.png" style="border: 0px;" width="200" /&gt;&lt;/a&gt;Performance is one word which is used to describe multiple scenarios’ when talking about the application performance. When someone says, I need a High Performance Application; it might mean any/all of the following&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Low Web latency Application ( meaning  low Page Loading times)&lt;/li&gt;
&lt;li&gt;Application that can serve ever increasing number of users (scalability)&lt;/li&gt;
&lt;li&gt;Application that does not go down (either highly available or continuously available)&lt;/li&gt;
&lt;/ul&gt;
For each of the above, as an Architect you need to dig deeper to find out what the user is asking for. With the advent of cloud, every CIO is looking to build applications that meet all of the above scenarios. With the advent of elastic compute, one tends to think that by throwing hardware to the application, we may be able to achieve all of the above objectives.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;The techniques employed to achieve the above scenarios at times are different and it is important to find the right approach to the solution that meets the above objectives. We will examine some of the common techniques that can help us achieve the objectives&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Latency Contributors&lt;/b&gt;&lt;/li&gt;
&lt;ul style="margin-left: 20px;"&gt;
&lt;li&gt;&lt;b&gt;Application Tier ing&lt;/b&gt; – One of the biggest contributors to the latency is the application tier ing. The hops from WebServer -&amp;gt; Application Server -&amp;gt; Database and back, data serialization/deserialization are some of the biggest contributor to the overall latency. Having Web and Application tier within the same box or even within same JVM can help reduce the network latency factor. One can have logical separation in the application code between Web Tier and Application Tier but need not have physical separation. Using Spring Container that has Web/App tier can help achieve the same.&amp;nbsp;If the application is making use of SOA and making multiple web services or JMS message calls, network latency and serialization of data once again adds to the latency. Solutions like IBM Datapower XML Accelerators can be used to reduce the XML overheads. Similarly, the application can use Solace Message Router’s to speed up the messaging.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Bring Data closer to Application&lt;/b&gt; – Data needs to be close to the application so that making all those Database connection calls and getting data from DB can be reduced. Application can cache data to reduce the calls to DB. One can also use cache servers like memcached / ehCache to cache data at the Web/application Tier. Web Tier can cache data like static HTML fragments/images/javascript/CSS files. Application Tier can cache non-transactional data (like lookup maps). OR Mapping tools like Hibernate also support data caching. If it is an Internet Web Application, one can also make use of CDN (content delivery networks)/ Edge Networks (like Akamai) to speed up the delivery of static content.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Disk I/O&lt;/b&gt; – Another weak link in the application performance chain is Disk I/O. One way to overcome the limitations with regards to the Disk I/O is too keep data in memory. In Memory databases (like Volt DB or Solid DB or Oracle TimesTen), XTP solutions (like Oracle coherence, IBM eXtreme Scale, GigaSpaces eXtreme Application Platform) can used to speed up the application performance.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Optimized Hardware&lt;/b&gt; – The hardware on which application is hosted can also be tuned to reduce latency.&amp;nbsp;Optimization s&amp;nbsp;like 10G/20G network, fiber channels, low latency switches, SSD (Solid State Drives), not using virtualization can make sure the application latency is reduced.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Transport Mechanism&lt;/b&gt; – At times, the transport mechanism can also add to the application latency. E.g. secure communication (like https) can add to the latency with the additional overhead of deciphering the data at the receiving end.  One way is to offload the SSL at the Load Balancer/Firewall.&lt;/li&gt;
&lt;br /&gt;
In the end, you need to measure anything and everything to address the bottlenecks. Once the obvious bottlenecks have been addressed, one can start looking at things like – cache thrashing, poor algorithms, data bloating, wrong dimensioning etc to squeeze out that ounce of performance. All the techniques mentioned may not be applicable in all scenarios’, the architect needs to take a call based on the latency requirements.
&lt;/ul&gt;
&lt;li&gt;&lt;b&gt;Application Scalability&lt;/b&gt; – Scalability means ability of an application to handle growing amount of data and concurrency in an efficient manner without impacting performance. Important thing to notice is scalability should not be at the cost of application performance. Some of the techniques that can help scale the application&lt;/li&gt;
&lt;ul style="margin-left: 20px;"&gt;
&lt;li&gt;&lt;b&gt;Stateless Application/Service&lt;/b&gt; – The application should store its state in some centralized repository, but the application itself should be stateless. It means no storing of data or state on local file systems. Stateless application allows one to add any number of application instances to accommodate the increasing growth. But soon, the centralized repository starts becoming the bottleneck. With ever increasing data, repositories like (RDBMS) may start buckling down. One approach to this issue is to minimize mutable state in the database. To handle such scenarios, techniques like data sharding need to be applied. Another approach to managing write contention in the database is to look at the possibility of using NoSQL data stores for some or all of the application data.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Load Balancing&lt;/b&gt; – As the traffic starts going up, the application can handle the additional load by adding additional server instances to service the requests. The load balancer will make sure none of the servers are working beyond their stated load and new instance should be automatically added as and when the load goes up (auto scaling). One can also add load balance to database with techniques like Master-Master topology or Master-Slave(with partitioning read and write data) to handle the additional load. But if the data is going in Petabytes ranges, data sharding with data replication techniques need to be used. The in-memory data grid architecture can also be utilized to scale the data.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Fault Tolerance / Dynamic Discoverable Elements&lt;/b&gt; – When dealing with application that is running in large clusters, it is very important to avoid manual interventions. E.g. when the application load reaches a defined load, the application monitoring should be able to add a new instance and load balancer should be able to recognize the same to utilize it. Similarly, when data gets shard, the applications should be able to recognize and look up the new IP to connect. Similarly, if the application is not able to connect to particular resource, the application should be intelligent enough to recognize the fault and try accessing the alternate resource availability. The application will need to have a central meta data repository for all such fault tolerance scenarios that can be tapped by the application.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;b&gt;Application availability&lt;/b&gt; – Availability of an application is very much a function of scalability. Following factors have an impact on the application availability&lt;/li&gt;
&lt;ul style="margin-left: 20px;"&gt;
&lt;li&gt;&lt;b&gt;Redundancy&lt;/b&gt; – The application needs to be scalable to be able to compensate for the loss of any instance (whether hardware or software). The redundancy needs to be build at all layers, Software, Hardware, Power and even at data center levels. Even if the data center goes, the user should be able to access the application. Many at times, the level of redundancy and down time is a factor of how money is being thrown at the solution. Remember some problems have no solutions within the context of today’s technology. E.g. real time data mirroring or data sync across data centers that are located geographically apart.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Fault Tolerance&lt;/b&gt; – The application needs to be fault tolerant (e.g. retry mechanism) to make sure it can take advantage of dynamically allocated resources to keep functioning.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Monitoring/Testing&lt;/b&gt; – Another overlooked factor of application availability is application monitoring. If application is not properly monitored, outages can go undetected leading to application unavailability. Ability to monitor the entire application stack and take corrective actions is very important. This capability is build over a period of time.  Once the application has monitoring, auto-scaling features, testing to make sure they work is also important. Something like Chaos Monkey used by Netflix is very helpful.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Configuration Data&lt;/b&gt; – Any application that needs to be continuously available needs to be able to run using configuration. E.g. if the application introduces the new service interface, the application should have the ability to either make use of the new interface or keep using the old one. This factor becomes very important when rolling out new features/services and all of them cannot be rolled out at once.&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
Let me know, if you have used some other techniques to achieve the 3 factors of availability, scalability and low latency.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-7748261127957446";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-08-03: J2EE, Portal, Web Services, Web 2.0, Ajax
google_ad_channel = "2060177799+6892783472+6327960836+9022209472+4184383655";
//--&gt;
&lt;/script&gt;
&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" 
 type="text/javascript"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16501575-1785717996507886945?l=www.techspot.co.in' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1mj3gelZZHTJsiSMY0ostJOOjLE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1mj3gelZZHTJsiSMY0ostJOOjLE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/1mj3gelZZHTJsiSMY0ostJOOjLE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1mj3gelZZHTJsiSMY0ostJOOjLE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/dTNY?a=oDGjpk0Lovg:1VRT_LIO4g8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/dTNY?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/dTNY/~4/oDGjpk0Lovg" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/dTNY/~3/oDGjpk0Lovg/building-high-performance-applications.html</link><author>noreply@blogger.com (Munish K Gupta)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-X-j1n223g08/TfBb0OK9abI/AAAAAAAACIs/_LL8DQfPk3o/s72-c/application.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://www.techspot.co.in/2011/06/building-high-performance-applications.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-16501575.post-2053753125664637060</guid><pubDate>Tue, 26 Apr 2011 11:38:00 +0000</pubDate><atom:updated>2011-09-19T14:51:58.338+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Programming</category><category domain="http://www.blogger.com/atom/ns#">Java</category><category domain="http://www.blogger.com/atom/ns#">Architect</category><category domain="http://www.blogger.com/atom/ns#">J2EE</category><title>Maladies of Large scale Software Design</title><description>When designing and maintaining large scale software architecture, certain rules need to be adhered religiously. In the absence of which the software starts degrading, maintenance becomes difficult, adding features becomes a nightmare and soon everything comes crashing down as a house of cards.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Tiering/Layering your logical architecture – a clear logical separation between different layers lead to simplified code navigation and comprehension. The layers should also follow a strict and clear naming convention for all packages and types. One can make of tools to make sure the code follows the logical architecture and all dependencies are in order.&lt;/li&gt;
&lt;li&gt;Cyclical dependency – Adhere to the principle of well defined and cycle free application. Cyclic dependencies can soon lead to bloating of code. Even package should be validated for any cyclical dependencies&lt;/li&gt;
&lt;li&gt;NCCD (Normalized cumulative component dependency) is another factor that needs to be adhered. NCCD of compilation units must not be bigger than 7. If this value grows over the threshold, one should isolate layers and subsystem by only letting them have interfaces as entry points. Breaking cyclic dependencies can also shrink this metric considerably.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
In addition to the above rules, one can also gauge the health of the software using additional metrics like&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Code Coverage– describes the degree to which the source code of a program has been (unit) tested. Popular tools to measure code coverage in Java are Emma.&lt;/li&gt;
&lt;li&gt;Code Complexity - is another measure that can used to identify and quantify the code maintainability. Factors like Cylometric Complexity, Halstead's software science metrics and Lines of code metrics are some of the factors. In fact, there is a measure called Maintainability Index that can be calculated by using the factors.&lt;/li&gt;
&lt;li&gt;Documentation - is another factor that be used to quantify code maintainability. Documentation can be your normal JavaDocs or the inline source code commenting. You have tools like JavaNCSS where NCSS ( non commenting source statements) that can be applied at class, method/function level&lt;/li&gt;
&lt;li&gt;Code Format - is not really a measure but is an indicator of the readability of the code. Tools like CheckStyle can help identify the code formatting problems (from non standard class headers, indentation issues to spacing, variable naming convention and so on). Any issues reported by the tool can be used an indicator of the maintainability of the code&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
From a programmer’s perspective, the following rules should be followed, that will help in building and maintaining a robust and lively system&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Use a consistent formatting and naming scheme&lt;/li&gt;
&lt;li&gt;Limit the access to types and methods&lt;/li&gt;
&lt;li&gt;Number of types in a package must not exceed 50&lt;/li&gt;
&lt;li&gt;Lines of code (compilation unit) must not exceed 700&lt;/li&gt;
&lt;li&gt;Number of method parameters must not exceed 7&lt;/li&gt;
&lt;li&gt;Cyclomatic Complexity must not exceed 20&lt;/li&gt;
&lt;li&gt;Use assertions to ensure pre-conditions and post conditions&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Do share your best practices that you followed or came across when build or maintaining large scale software architectures.&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-7748261127957446";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-08-03: J2EE, Portal, Web Services, Web 2.0, Ajax
google_ad_channel = "2060177799+6892783472+6327960836+9022209472+4184383655";
//--&gt;
&lt;/script&gt;
&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" 
 type="text/javascript"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16501575-2053753125664637060?l=www.techspot.co.in' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/v4K2PTxTclDY1Dmz3ic5pE6y6v8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/v4K2PTxTclDY1Dmz3ic5pE6y6v8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/v4K2PTxTclDY1Dmz3ic5pE6y6v8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/v4K2PTxTclDY1Dmz3ic5pE6y6v8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/dTNY?a=1k4y_Xnkn2Y:Gs37YW4E_d0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/dTNY?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/dTNY/~4/1k4y_Xnkn2Y" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/dTNY/~3/1k4y_Xnkn2Y/maladies-of-software-design.html</link><author>noreply@blogger.com (Munish K Gupta)</author><thr:total>0</thr:total><feedburner:origLink>http://www.techspot.co.in/2011/04/maladies-of-software-design.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-16501575.post-6219074415131094104</guid><pubDate>Wed, 20 Apr 2011 08:42:00 +0000</pubDate><atom:updated>2011-11-03T13:25:23.364+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Trends</category><category domain="http://www.blogger.com/atom/ns#">Search</category><category domain="http://www.blogger.com/atom/ns#">Collaboration</category><title>Is Google the new Knowledge Manager?</title><description>&lt;a href="http://4.bp.blogspot.com/-APDJQpy_FrM/Ta6cGCzlyyI/AAAAAAAACIc/YG26x8AiH7c/s1600/5131639557436176969.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="79" src="http://4.bp.blogspot.com/-APDJQpy_FrM/Ta6cGCzlyyI/AAAAAAAACIc/YG26x8AiH7c/s200/5131639557436176969.gif" style="border: 0;" width="200" /&gt;&lt;/a&gt;In today’s world, whenever you are facing a problem, the first impulse is to open Google and see if other people had already faced the similar problem and how they did they resolved the same. The good part is you are most likely to find the solution to the problem also. Does that mean, Google is the new Knowledge Manager for your enterprise?&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Why do the employees tend to search on Google/Bing for solutions and not look at the KM systems?&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Some of the factors that might be pushing your employees to search on external search engines might be&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Disparate Systems&lt;/b&gt; – In a typical enterprise, the traditional KM systems have evolved over a period of time. The sum total of KM is usually a combination of SharePoint repositories, Discussion groups, Emails groups, Blogs or even file system dumps. Now when is looking for information, he needs to search through multiple repositories to mine the information. Instead of trying to search through this myriad of information pile, he gives up. After a few tries, he is most likely to form an opinion that these systems are not helping, so either they do not have information or are too difficult to mine.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Usability&lt;/b&gt; – Another issue with enterprise KM systems is lack of usability. Since the disparate systems have been built over a period of time, they have multiple interfaces and at times multiple logins to access. So, if the user has to log into multiple systems to search or access information, he is most likely to get pissed off. Another usability factor is the speed of access. Since, KM systems are not really on high end servers with Gbs of bandwidth, these systems tend to be slow, which when compared to Google proves to be another sore point for users.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Education&lt;/b&gt; – When the user’s of your KM systems were studying, the colleges they studied at, are not really very great proponents of KM. Most colleges hardly have KM systems with latest information and some of them which do have, suffer from the same problems of disparate systems and usability. The students in the end start relying on Google for solutions to all their problems. The same experience continues when they join the industry.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Today, the challenge of Knowledge managers is not really building a knowledge repository but better the kind of access, speed and accuracy of helping provide solutions to the employee problems.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.onlineuniversitydegree.org/"&gt;&lt;/a&gt;&lt;br /&gt;
.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-7748261127957446";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-08-03: J2EE, Portal, Web Services, Web 2.0, Ajax
google_ad_channel = "2060177799+6892783472+6327960836+9022209472+4184383655";
//--&gt;
&lt;/script&gt;
&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" 
 type="text/javascript"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16501575-6219074415131094104?l=www.techspot.co.in' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gPXlfPe-mYApsqExYhfn-I9XO1k/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gPXlfPe-mYApsqExYhfn-I9XO1k/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gPXlfPe-mYApsqExYhfn-I9XO1k/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gPXlfPe-mYApsqExYhfn-I9XO1k/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/dTNY?a=ZE_A3w7wzC8:V2-Ni2WJpPU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/dTNY?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/dTNY/~4/ZE_A3w7wzC8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/dTNY/~3/ZE_A3w7wzC8/is-google-new-knowledge-manager.html</link><author>noreply@blogger.com (Munish K Gupta)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-APDJQpy_FrM/Ta6cGCzlyyI/AAAAAAAACIc/YG26x8AiH7c/s72-c/5131639557436176969.gif" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://www.techspot.co.in/2011/04/is-google-new-knowledge-manager.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-16501575.post-3754245084778258996</guid><pubDate>Wed, 06 Apr 2011 08:21:00 +0000</pubDate><atom:updated>2011-09-19T14:52:23.520+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Trends</category><category domain="http://www.blogger.com/atom/ns#">Cloud</category><title>Business ideas waiting in the Healthcare Sector</title><description>&lt;a href="http://1.bp.blogspot.com/-CKFE_DTzjKc/TZwiJzjIZcI/AAAAAAAACIY/ezyhQQxmEtw/s1600/153860tkpzrjejs.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://1.bp.blogspot.com/-CKFE_DTzjKc/TZwiJzjIZcI/AAAAAAAACIY/ezyhQQxmEtw/s200/153860tkpzrjejs.jpg" style="border: 0;" width="200" /&gt;&lt;/a&gt;Healthcare Sector in India is poised to grow to $280 Billion USD by 2020. The investment required in the next 10 years is to the tune of $86 Billion USD, majority of which will be contributed by the private sector. All this investment will need require lot of people that need to be integrated in this sector and IT backbone will be needed to be able to service the ever-growing Indian population.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Some of the opportunities I see that are up for grabs in the healthcare sector&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Training&lt;/b&gt; – There will be requirement to train people to handle emergencies, health care, education services. What better way than to have 3D virtual areas to train people across regions. Players like http://play2train.us/ are already available in the US market. We will need similar business models in India, that can take into account multiple languages and varied cultures&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Communities&lt;/b&gt; – Another big aspect is building communities (online/mobile) that can form a symbiotic relationship with other stakeholders and make sure that the remote corners of India can avail healthcare.  These communities can be around following&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Patients&lt;/b&gt; – people with similar problems being able to talk and discuss their problems and potential treatments with each other.  We make use of multiple medicine streams – Allopathic, Ayurveda, Homeopathy, Naturopathy, Yoga and what not. At times, when we discuss our medical problems, cure in one stream might be better than the other. These patient communities can help people connect with each other. The community can create wiki’s (user generated content) around their problem that can become important sources of knowledge and information for others.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Physicians&lt;/b&gt; – Another community can be around physicians and some of their experiences when treating different problems. The physician community can also contribute towards a knowledge wiki (from physician perspective) that can be useful for physician in far flung area’s and even disseminate knowledge among tier 2 physicians.  Physicians can blog/podcast to discuss case studies.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Donors communities&lt;/b&gt; – Unlike US, we do not have donor list or communities which can be accessed and available online. There are privacy concerns but I do not think those are insurmountable.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Pharma Companies&lt;/b&gt; – The Pharma companies can come together to create communities with their patients (their clients) to discuss the usage of the various drugs and their administration mechanism. People can share their experiences. E.g. Biocon can lead a community around Diabetes, where you promote healthy lifestyle. The Pharma companies can also tap into the various medical insurance firms, because it is in their interest to have a healthy community.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Clinical Trial Companies&lt;/b&gt; – Another great community can be around clinical trial patients, where the potential patients or existing patients can tap into each other, bringing a lot more transparency in the working of these companies.&lt;/li&gt;
&lt;/ul&gt;
So, overall I believe a great number of ideas/sub ideas can arise from building these communities. The whole user generated content from these communities can be precursor to a great knowledge base that can be tapped from all over the world.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Location based services&lt;/b&gt; – currently, the existing location based services help you find friends or restaurants or places of interest. Another use of such service can be in case of emergencies. E.g.  a physician can opt to register on a location based service. In case of emergency, the people raise an alert online. The online service automatically scans the vicinity for a physician who has opted for such thing and he can be notified immediately. The physician can then tell the service, whether he can attend the emergency or not, leading the online service scanning for next available physician. With the kind of traffic we have, such a service can be of immense potential. Further, such a service can SMS based.&lt;/li&gt;
&lt;/ul&gt;
We are seeing more and more adoption of mobiles phones in India, any service that allows access to such communities and knowledge base over SMS will be of immense help. The cloud computing will enable the implementation and scalability of such idea's.&lt;br /&gt;
&lt;br /&gt;
Let me know, how do you find these idea’s and what else you think might be useful in the context of the Indian healthcare sector.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.freedigitalphotos.net/images/view_photog.php?photogid=1152"&gt;Image: jscreationzs / FreeDigitalPhotos.net&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-7748261127957446";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-08-03: J2EE, Portal, Web Services, Web 2.0, Ajax
google_ad_channel = "2060177799+6892783472+6327960836+9022209472+4184383655";
//--&gt;
&lt;/script&gt;
&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" 
 type="text/javascript"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16501575-3754245084778258996?l=www.techspot.co.in' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OtDxIMHR-uVPilz5XqsRa7qf2os/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OtDxIMHR-uVPilz5XqsRa7qf2os/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OtDxIMHR-uVPilz5XqsRa7qf2os/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OtDxIMHR-uVPilz5XqsRa7qf2os/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/dTNY?a=Ez_FnzVgJIE:GWRmDn8YTbo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/dTNY?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/dTNY/~4/Ez_FnzVgJIE" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/dTNY/~3/Ez_FnzVgJIE/business-ideas-waiting-in-healthcare.html</link><author>noreply@blogger.com (Munish K Gupta)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-CKFE_DTzjKc/TZwiJzjIZcI/AAAAAAAACIY/ezyhQQxmEtw/s72-c/153860tkpzrjejs.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.techspot.co.in/2011/04/business-ideas-waiting-in-healthcare.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-16501575.post-7629852907912146387</guid><pubDate>Tue, 15 Mar 2011 05:49:00 +0000</pubDate><atom:updated>2011-11-03T13:29:30.270+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Programming</category><category domain="http://www.blogger.com/atom/ns#">Cloud</category><category domain="http://www.blogger.com/atom/ns#">Migration</category><title>Challenges of Developing Applications for hosting in cloud</title><description>Recently, I was asked this simple question; do I need to do anything differently when developing applications that will get hosted in cloud?&lt;br /&gt;
&lt;br /&gt;
Before answering the question, my though process went something like this –&lt;br /&gt;
&lt;br /&gt;
Well, cloud uses lots of commodity boxes; and failure is almost given. The application needs to take care of resource failures, meaning build fault tolerance. Besides, you may want to make use of additional cloud features (like if you are using AWS, then besides the EC2, S3, RDS, CloudFront, CloudWatch, Load Balancing, auto scaling etc) but if you are migrating an existing application then you need not do so in the first phase.&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Besides this one reason, I could not fathom another good solid reason. Anything you will do additional in the application, that you would not had done when deploying to given hardware spec. I could think of many things as an application developer that you need to take care, but then you should had done this in any cases.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Application State &lt;/b&gt;– Any application that needs to be scaled up, cannot store application state in the local machine. The state either needs to be stored in a centralized DB or file system.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Resource Independence&lt;/b&gt; – When developing applications, the application should the agnostic to the resource location. The resources needs to be looked up at run time and should not be hard coded into application code. Common application programming guideline. Patterns like ResourceLocator are meant for the same. Application servers also provide mechanism to the similar effect.&lt;/li&gt;
&lt;/ul&gt;
If one does not adhere to these common programming practices, development and deployment will become difficult in any case.&lt;br /&gt;
&lt;br /&gt;
So, have you faced or come across patterns that need to be handled specifically when developing applications that get deployed in cloud (private or public), do share them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-7748261127957446";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-08-03: J2EE, Portal, Web Services, Web 2.0, Ajax
google_ad_channel = "2060177799+6892783472+6327960836+9022209472+4184383655";
//--&gt;
&lt;/script&gt;
&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" 
 type="text/javascript"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16501575-7629852907912146387?l=www.techspot.co.in' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/r7doyXzJcbUjOoTAUbEhHd-kO7I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/r7doyXzJcbUjOoTAUbEhHd-kO7I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/r7doyXzJcbUjOoTAUbEhHd-kO7I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/r7doyXzJcbUjOoTAUbEhHd-kO7I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/dTNY?a=qVEBRKl3m2Y:MkF8QwtYzqM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/dTNY?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/dTNY/~4/qVEBRKl3m2Y" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/dTNY/~3/qVEBRKl3m2Y/challenges-of-developing-applications.html</link><author>noreply@blogger.com (Munish K Gupta)</author><thr:total>0</thr:total><feedburner:origLink>http://www.techspot.co.in/2011/03/challenges-of-developing-applications.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-16501575.post-560034705860976989</guid><pubDate>Sun, 27 Feb 2011 06:24:00 +0000</pubDate><atom:updated>2011-09-19T14:52:55.396+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">WebSphere</category><category domain="http://www.blogger.com/atom/ns#">Portal</category><category domain="http://www.blogger.com/atom/ns#">WPS</category><title>Creating Web 2.0 sites with Enterprise Portal Software</title><description>The whole premise behind the Enterprise Portals was to consolidate and bring together the various silo’ webs sites in an organization. The Enterprise Portal provides tools to the same effect like User Management, Credential Vault, Personalization and Collaboration to name a few. But in recent times, the Enterprise Portal is being used outside of organization (Intranets) to create corporate/transactional sites for your end customers. The rigors of Internet sites demanded are very different from Intranet sites and at times, Enterprise Portal are not able to meet their demands. We will some of the functionality expected from Web2.0 internet sites that need to be factored when making that all important decision of using an Enterprise Portal Software.&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Web Analytics&lt;/b&gt; – For an internet site, web analytics is very important. The simple tracking of user can be easily achieved by adding the required code in the theme part of the portal software. If you need to track the user activity at more granular level like button clicked, banners served/clicked, time spend on page etc, the required tracking code needs to be added to each Portlet. When these Portlets are added to the page, their behavior might not be what you expected. Reasons may be tracking code contradicting each other, methods with same name, and similar names to the tracking events and so on. Only way out is to have a very elaborate strategy that needs to be followed diligently.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;SEO&lt;/b&gt; – Another important aspect is the SEO for the internet site. The Portal page need not correspond to a single page on the internet. Based on the input, the content shown might be different. As part of the SEO, things like Title, page metadata like keywords, description is very important. Changing these to conform to the SEO can be nightmarish and not something achieved without a deployment cycle.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Advertising/Cross Sell/Up Sell Banners&lt;/b&gt; – Any internet site, you may want to show advertising banners to cross sell/up sell your products. Now, you might want to integrate the banner serving through a 3rd party site or software. Whether the banner should be a Portlet or JavaScript driven starts impacting your design. E.g. if you decide to use portlets to serve banners, and want to show 2-3 banners on a page, the page load starts suffering because as the number of portlets starts going beyond 5, the page performance started suffering. If you intend to use JavaScript, then the same needs to be added to the theme. Theme means deployment cycle and also you may not loose flexibility in changing the banner positions on the fly.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;A/B and Multivariate Testing&lt;/b&gt; - Another tool used by the business managers to fine tune their web pages is A/B and Multivariate testing. Now, using multiple versions of the same page within a Portal is not something easy to accomplish. If you are using an external authentication provider, running multivariate’s for the landing page becomes even more challenging.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;3rd party Integrations (like Facebook, Twitter)&lt;/b&gt;- At times, you want to integrate the customer experience with 3rd party sites like Facebook and Twitter. Without an effective SEO, the FB/Twitter can be big failure. The copy paste approach promoted by FB/Twitter is not something very applicable in the Portal world. You will require a deployment cycle just to add a Like button.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
So, if you are planning to use an Enterprise Portal Software to build your internet side, ask you vendor to demonstrate how effectively and easily the above points are achieved.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-7748261127957446";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-08-03: J2EE, Portal, Web Services, Web 2.0, Ajax
google_ad_channel = "2060177799+6892783472+6327960836+9022209472+4184383655";
//--&gt;
&lt;/script&gt;
&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" 
 type="text/javascript"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16501575-560034705860976989?l=www.techspot.co.in' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Snxrq1xOJOQiqKGnnXkAtPFna4k/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Snxrq1xOJOQiqKGnnXkAtPFna4k/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Snxrq1xOJOQiqKGnnXkAtPFna4k/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Snxrq1xOJOQiqKGnnXkAtPFna4k/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/dTNY?a=lhnt3ykno4Y:FNLp0x0arPQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/dTNY?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/dTNY/~4/lhnt3ykno4Y" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/dTNY/~3/lhnt3ykno4Y/creating-web-20-sites-with-enterprise.html</link><author>noreply@blogger.com (Munish K Gupta)</author><thr:total>2</thr:total><feedburner:origLink>http://www.techspot.co.in/2011/02/creating-web-20-sites-with-enterprise.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-16501575.post-6490928349972555150</guid><pubDate>Mon, 14 Feb 2011 07:11:00 +0000</pubDate><atom:updated>2011-09-19T14:53:51.827+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Programming</category><category domain="http://www.blogger.com/atom/ns#">IBM</category><title>IBM Tuesday – Packt Publishes Four New IBM Books</title><description>&lt;div class="Standard"&gt;
On Tuesday 22&lt;sup&gt;nd&lt;/sup&gt; January 2011 Packt Publishing released four brand new IBM books on a range of different subject matters:&lt;/div&gt;
&lt;div class="Standard"&gt;
&lt;span style="font-family: Symbol;"&gt;·&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.packtpub.com/ibm-lotus-quickr-85-domino-administration/book?utm_source=packtpub.com&amp;amp;utm_medium=press&amp;amp;utm_content=other&amp;amp;utm_campaign=mdb_006500"&gt;&lt;span class="Internetlink"&gt;&lt;span style="font-size: 10pt;"&gt;IBM Lotus Quickr 8.5 for Domino Administration&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="MsoListParagraph"&gt;
&lt;span style="font-family: Symbol;"&gt;·&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.packtpub.com/getting-started-with-ibm-filenet-p8-content-manager/book?utm_source=packtpub.com&amp;amp;utm_medium=press&amp;amp;utm_content=other&amp;amp;utm_campaign=mdb_006501"&gt;&lt;span class="Internetlink"&gt;&lt;span style="font-size: 10pt;"&gt;Getting Started with IBM FileNet P8 Content Manager&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="MsoListParagraph"&gt;
&lt;span style="font-family: Symbol;"&gt;·&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.packtpub.com/ibm-websphere-application-server-v7-0-security/book?utm_source=packtpub.com&amp;amp;utm_medium=press&amp;amp;utm_content=other&amp;amp;utm_campaign=mdb_006502"&gt;&lt;span class="Internetlink"&gt;&lt;span style="font-size: 10pt;"&gt;IBM WebSphere Application Server v7.0 Security&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="MsoListParagraph"&gt;
&lt;span style="font-family: Symbol;"&gt;·&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.packtpub.com/ibm-rational-team-concert-2-essentials/book?utm_source=packtpub.com&amp;amp;utm_medium=press&amp;amp;utm_content=other&amp;amp;utm_campaign=mdb_006503"&gt;&lt;span class="Internetlink"&gt;&lt;span style="font-size: 10pt;"&gt;IBM Rational Team Concert 2 Essentials&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="MsoListParagraph"&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="Standard"&gt;
This follows the success of Packt’s 2010 IBM range, which includes bestselling titles the&lt;b style="mso-bidi-font-weight: normal;"&gt; &lt;/b&gt;&lt;a href="http://www.packtpub.com/ibm-lotus-notes-8-5-user-guide/book?utm_source=packtpub.com&amp;amp;utm_medium=press&amp;amp;utm_content=other&amp;amp;utm_campaign=mdb_006504"&gt;&lt;span class="Internetlink"&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;IBM Lotus Notes 8.5 User Guide&lt;/i&gt;&lt;/span&gt;&lt;/a&gt; and &lt;a href="http://www.packtpub.com/ibm-cognos-8-report-studio-cookbook/book?utm_source=packtpub.com&amp;amp;utm_medium=press&amp;amp;utm_content=other&amp;amp;utm_campaign=mdb_006505"&gt;&lt;span class="Internetlink"&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;IBM Cognos 8 Report Studio Cookbook&lt;/i&gt;&lt;/span&gt;&lt;/a&gt;.&lt;/div&gt;
&lt;div class="Standard"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="Standard"&gt;
James Lumsden, the Packt Enterprise publisher, states “&lt;i&gt;IBM books represent a vitally important and significant part of Packt’s publishing strategy.&amp;nbsp;&amp;nbsp; 2010 was a good year, whilst 2011 and beyond will see more books across more technologies being published.&amp;nbsp; IBM Tuesday represents just the beginning.&lt;/i&gt;”&amp;nbsp;IBM Tuesday also emphasizes Packt’s commitment to providing top quality books for a range of IBM software users.&lt;/div&gt;
&lt;div class="Standard"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="Standard"&gt;
To mark this special occasion Packt is offering a &lt;b style="mso-bidi-font-weight: normal;"&gt;20% discount&lt;/b&gt; off all Packt IBM books throughout February.&amp;nbsp; There is also a chance to win a PacktLib subscription, worth $220, every Tuesday in February with the &lt;a href="http://www.packtpub.com/article/ibm-tuesday-competition"&gt;&lt;span class="Internetlink"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;IBM Tuesday Competition&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;.&lt;/div&gt;
&lt;div class="Standard"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="Standard"&gt;
For further information on this, and other books published by Packt Publishing, please visit &lt;a href="http://www.packtpub.com/"&gt;&lt;span class="Internetlink"&gt;www.&lt;/span&gt;&lt;/a&gt;&lt;a href="http://www.packtpub.com/"&gt;&lt;span class="Internetlink"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;Packt&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Internetlink"&gt;&lt;a href="http://www.packtpub.com/"&gt;Pub.com&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
PS : This is a paid post.&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-7748261127957446";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-08-03: J2EE, Portal, Web Services, Web 2.0, Ajax
google_ad_channel = "2060177799+6892783472+6327960836+9022209472+4184383655";
//--&gt;
&lt;/script&gt;
&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" 
 type="text/javascript"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16501575-6490928349972555150?l=www.techspot.co.in' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_g_wP00b3UnXTpRKOB8p13uOmDk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_g_wP00b3UnXTpRKOB8p13uOmDk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_g_wP00b3UnXTpRKOB8p13uOmDk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_g_wP00b3UnXTpRKOB8p13uOmDk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/dTNY?a=6Vk9FPwYhWA:qK6W1rPeF5w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/dTNY?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/dTNY/~4/6Vk9FPwYhWA" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/dTNY/~3/6Vk9FPwYhWA/ibm-tuesday-packt-publishes-four-new.html</link><author>noreply@blogger.com (Munish K Gupta)</author><thr:total>0</thr:total><feedburner:origLink>http://www.techspot.co.in/2011/02/ibm-tuesday-packt-publishes-four-new.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-16501575.post-2799687852236184113</guid><pubDate>Thu, 10 Feb 2011 14:36:00 +0000</pubDate><atom:updated>2011-09-19T14:53:21.589+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Trends</category><category domain="http://www.blogger.com/atom/ns#">Cloud</category><title>Cloud computing fueling new generation of companies</title><description>&lt;a href="http://2.bp.blogspot.com/-xz9t9wdhUJc/TVPypGV3zlI/AAAAAAAACE8/9QZsVwz0geE/s1600/cloud.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-xz9t9wdhUJc/TVPypGV3zlI/AAAAAAAACE8/9QZsVwz0geE/s320/cloud.JPG" width="253" /&gt;&lt;/a&gt;Cloud computing has become a kind of buzz word. The availability of cheap computing power allows organizations to start with out a heavy capital cost in the infrastructure. But the fundamental change it has bought is terms of the business models of the new organization starting up.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Massive Computing - &lt;/b&gt;Gaming companies require massive computing and generate lot of data.Cheap computing power means, companies starting can scale overnight when the demand starts going up. Firms like Zynga ( remember Farmville) are products of this cheap computing power. Companies moving to Facebook encountered massive traffic overnight. It was the availability of cheap computing power from vendors like AWS that allowed them to scale overnight. And today, the valuations these facebook app companies are commanding is mind boggling.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Cloud Infrastructure Management - &lt;/b&gt;Another area spawned by cloud providers is service providers for the cloud infrastructure. Companies like &lt;a href="http://www.rightscale.com/"&gt;RightScale&lt;/a&gt;, &lt;a href="http://www.elastra.com/"&gt;Elastra&lt;/a&gt;, &lt;a href="https://scalr.net/"&gt;Scalr&lt;/a&gt;&amp;nbsp;and othere are there to help manage your infrastructure in the cloud. Numerous companies in the area of server monitoring have come up to manage the increasing demand of cloud resources&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Business Intelligence/Data Mining Services - &lt;/b&gt;Another business area that has flourished are the companies providing data mining facilities. Some of the allied services on twitter are possible because of cheap computing. Ability to index and maintain huge data allows companies to start providing Business Intelligence and Data mining functionality to their customers.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Data Storage/Back up Apps - &lt;/b&gt;Another area is the number of data storage application that have come up in the recent past. Apps like &lt;a href="http://www.dropbox.com/"&gt;DropBox&lt;/a&gt;, &lt;a href="https://www.jungledisk.com/"&gt;JungleDisk&lt;/a&gt;&amp;nbsp;are offering free storage&amp;nbsp;courtesy&amp;nbsp;of cheap storage available.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Do you think, any other business that have been fueled by advent of cheap computing/storage? Do leave your comment!&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-7748261127957446";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-08-03: J2EE, Portal, Web Services, Web 2.0, Ajax
google_ad_channel = "2060177799+6892783472+6327960836+9022209472+4184383655";
//--&gt;
&lt;/script&gt;
&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" 
 type="text/javascript"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16501575-2799687852236184113?l=www.techspot.co.in' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wPm-2mDctK8aOq87up3-GN2PN-A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wPm-2mDctK8aOq87up3-GN2PN-A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wPm-2mDctK8aOq87up3-GN2PN-A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wPm-2mDctK8aOq87up3-GN2PN-A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/dTNY?a=oge4G0d2wYM:rtw9UcCT5F4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/dTNY?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/dTNY/~4/oge4G0d2wYM" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/dTNY/~3/oge4G0d2wYM/cloud-computing-fueling-new-generation.html</link><author>noreply@blogger.com (Munish K Gupta)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-xz9t9wdhUJc/TVPypGV3zlI/AAAAAAAACE8/9QZsVwz0geE/s72-c/cloud.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.techspot.co.in/2011/02/cloud-computing-fueling-new-generation.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-16501575.post-4094357246294951177</guid><pubDate>Wed, 09 Feb 2011 13:02:00 +0000</pubDate><atom:updated>2011-02-09T18:32:31.632+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Programming</category><category domain="http://www.blogger.com/atom/ns#">Cloud</category><category domain="http://www.blogger.com/atom/ns#">Collaboration</category><category domain="http://www.blogger.com/atom/ns#">Web 2.0</category><category domain="http://www.blogger.com/atom/ns#">FB</category><title>Create Facebook (FB) Applications in a ziffy</title><description>Social Media presence has become the de-facto standard for all the companies. Companies trying to create FB applications have multiple choices available to create and integrate applications in FB. Facebook provides a rich set of &lt;a href="http://developers.facebook.com/"&gt;API's&lt;/a&gt; to allow developer's to integrate FB functionality.&lt;br /&gt;
&lt;br /&gt;
Recently, I came across from &lt;a href="http://www.embarcadero.com/products/radphp"&gt;embarcadro&amp;nbsp;RadPHP XE&lt;/a&gt; that allows you to create PHP based application including Facebook apps in a easy and intuitive style. One need not break head on the FB developer site to understand the API's, as the&amp;nbsp;RadPHP XE provides facebook libraries that wrap the whole functionality.&lt;br /&gt;
&lt;br /&gt;
Check out the tutorials&lt;br /&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen="" frameborder="0" height="345" src="http://www.youtube.com/embed/mB8SW9E23YU" title="YouTube video player" width="560"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen="" frameborder="0" height="345" src="http://www.youtube.com/embed/5c5ByWCAw48" title="YouTube video player" width="560"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-7748261127957446";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-08-03: J2EE, Portal, Web Services, Web 2.0, Ajax
google_ad_channel = "2060177799+6892783472+6327960836+9022209472+4184383655";
//--&gt;
&lt;/script&gt;
&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" 
 type="text/javascript"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16501575-4094357246294951177?l=www.techspot.co.in' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gTSBsD8N0Gu3Yntgve0it2j2nDk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gTSBsD8N0Gu3Yntgve0it2j2nDk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gTSBsD8N0Gu3Yntgve0it2j2nDk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gTSBsD8N0Gu3Yntgve0it2j2nDk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/dTNY?a=KAV5GfUBYaY:OkHulMWCZc8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/dTNY?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/dTNY/~4/KAV5GfUBYaY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/dTNY/~3/KAV5GfUBYaY/create-facebook-fb-applications-in.html</link><author>noreply@blogger.com (Munish K Gupta)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/mB8SW9E23YU/default.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.techspot.co.in/2011/02/create-facebook-fb-applications-in.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-16501575.post-8535332871580901615</guid><pubDate>Wed, 24 Nov 2010 07:10:00 +0000</pubDate><atom:updated>2010-11-24T12:40:28.379+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Tip</category><category domain="http://www.blogger.com/atom/ns#">Programming</category><category domain="http://www.blogger.com/atom/ns#">IBM</category><title>Some useful links on IBM products</title><description>&lt;a href="http://3.bp.blogspot.com/_a14iDI_zNe4/TOy5loRAg_I/AAAAAAAACBI/I2Z4x26f508/s1600/images.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_a14iDI_zNe4/TOy5loRAg_I/AAAAAAAACBI/I2Z4x26f508/s1600/images.jpg" /&gt;&lt;/a&gt;&lt;b&gt;IBM Lotus Sametime 8 Essentials: A User's Guide&lt;/b&gt;&lt;br /&gt;
&lt;div&gt;&lt;a href="http://www.packtpub.com/article/inotes-sametime-chatting-web"&gt;iNotes and Sametime—Chatting from the Web&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.packtpub.com/article/installing-and-using-sametime-connect"&gt;Installing and Using Sametime Connect&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;IBM Cognos 8 Report Studio Cookbook&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.packtpub.com/article/tips-tricks-report-page-ibm-cognos8-report-studio"&gt;Tips and Tricks: Report Page in IBM Cognos 8 Report Studio&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.packtpub.com/article/use-macros-ibm-cognos-report-studio"&gt;Use of macros in IBM Cognos 8 Report Studio&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;IBM Lotus Notes and Domino 8.5.1&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.packtpub.com/article/integrating-lotus-quickplace-quickr-ibm-notes-domino-8.5.1"&gt;Integrating Lotus QuickPlace/Quickr with IBM Lotus Notes and Domino 8.5.1&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;IBM WebSphere eXtreme Scale 6&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.packtpub.com/article/data-modeling-naming-standards-ibm-infosphere-data-architect"&gt;Data Modeling Naming Standards with IBM InfoSphere Data Architect&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;Application Development for IBM WebSphere Process Server 7 and Enterprise Service Bus 7&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.packtpub.com/article/building-your-hello-mediation-project-ibm-websphere-process-server-7-enterprise-service-bus-7"&gt;Building Your Hello Mediation Project using IBM WebSphere Process Server 7 and Enterprise Service Bus 7&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;IBM Cognos 8 Planning&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.packtpub.com/article/reporting-planning-data-ibm-cognos8-publish-bi-integration"&gt;Reporting Planning Data in IBM Cognos 8: Publish and BI Integration&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.packtpub.com/article/understanding-model-development-process-ibm-cognos-8"&gt;Understanding the Model Development Process in IBM Cognos 8&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;IBM InfoSphere Replication Server and Data Event Publisher&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.packtpub.com/article/ibm-websphere-mq-commands"&gt;IBM WebSphere MQ commands&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.packtpub.com/article/q-replication-components-ibm-replication-server"&gt;Q Replication Components in IBM Replication Server&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.packtpub.com/article/mq-listener-channel-queue-management"&gt;MQ Listener, Channel and Queue Management&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.packtpub.com/article/websphere-mq-sample-programs"&gt;WebSphere MQ Sample Programs&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;IBM Lotus Notes 8.5&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.packtpub.com/article/feeds-ibm-lotus-notes-85"&gt;Feeds in IBM Lotus Notes 8.5&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.packtpub.com/article/mail-basics-ibm-lotus-notes-85"&gt;Mail Basics in IBM Lotus Notes 8.5&lt;/a&gt;&lt;/div&gt;&lt;a href="http://www.packtpub.com/article/enterprise-instant-messaging-using-sametime-ibm-lotus-notes-85"&gt;Enterprise Instant Messaging using Sametime in IBM Lotus Notes 8.5&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
These links are courtesy of PacktPub, received as part of IBM Month.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-7748261127957446";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-08-03: J2EE, Portal, Web Services, Web 2.0, Ajax
google_ad_channel = "2060177799+6892783472+6327960836+9022209472+4184383655";
//--&gt;
&lt;/script&gt;
&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" 
 type="text/javascript"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16501575-8535332871580901615?l=www.techspot.co.in' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/eHmFi5mGgoYLoyZm5g6hEupeX2E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eHmFi5mGgoYLoyZm5g6hEupeX2E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/eHmFi5mGgoYLoyZm5g6hEupeX2E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eHmFi5mGgoYLoyZm5g6hEupeX2E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/dTNY?a=tEtvsM0sWEw:VHz5IbgGoVc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/dTNY?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/dTNY/~4/tEtvsM0sWEw" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/dTNY/~3/tEtvsM0sWEw/some-useful-links-on-ibm-products.html</link><author>noreply@blogger.com (Munish K Gupta)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_a14iDI_zNe4/TOy5loRAg_I/AAAAAAAACBI/I2Z4x26f508/s72-c/images.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.techspot.co.in/2010/11/some-useful-links-on-ibm-products.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-16501575.post-3497232073660251060</guid><pubDate>Wed, 10 Nov 2010 14:31:00 +0000</pubDate><atom:updated>2012-01-17T14:40:41.204+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Trends</category><category domain="http://www.blogger.com/atom/ns#">Others</category><category domain="http://www.blogger.com/atom/ns#">IT Industry</category><title>Why India has a long way to go before producing a Google or Microsoft?</title><description>&lt;a href="http://3.bp.blogspot.com/_a14iDI_zNe4/TNqr7jfJZHI/AAAAAAAACA0/Ph6r7W7xfvw/s1600/product.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_a14iDI_zNe4/TNqr7jfJZHI/AAAAAAAACA0/Ph6r7W7xfvw/s1600/product.gif" /&gt;&lt;/a&gt;There have been talks about how CXO’s from American companies see India producing a la Google or Microsoft. The huge IT capabilities lead them to believe that a world class product company is just around the corner. But, in my opinion, a product company in the league of Google/Microsoft/Apple is a long way to go and my reasons for the same&lt;br /&gt;
&lt;br /&gt;
•&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;b&gt;Lack of Local Market&lt;/b&gt; – the biggest problem is lack of big enough local market in India. Any product company cannot become big unless they have a large enough local market to prove and refine themselves. Look at Google, Microsoft, Facebook, Twitter and one big reason for their early success is the large enough local market for them to grab. They ventured out of US only after they have established themselves in their local market. In India, barring a few domains like online gaming, no other domain provides a big enough market for any product company.&lt;br /&gt;
&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;
•&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;b&gt;Purchasing power of Indian consumer&lt;/b&gt; – The purchasing power of your customer decides how fast you can become big. If you sell a product for Rs2 to 100,000 customers, you make 200000 rupees, if you sell the similar product in US - $2 product to 100,000 customers you make 200,000 USD (~90 lakh rupees). The difference is to the ratio of the exchange rate (~45). &amp;nbsp;In terms of infrastructure cost of building and marketing a product is not in the same ratio (~45). As a result, Indian companies either need to sell to more customers or charge more. Both cases not so easy. All said and done, 200,000 USD will lot more compared to 200,000 rupees.&lt;br /&gt;
&lt;br /&gt;
•&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;b&gt;Lack of Internet/PC penetration&lt;/b&gt; - Lack of penetration of internet/PC is another grouse for establishing any large product company in the IT product space. Mobile is the market where Indian companies can score. 600 million+ mobiles phones give you a readymade market for mobile applications. And we already see lots of product companies in this space selling doing everything to cater to the vast Indian consumer.&lt;br /&gt;
&lt;br /&gt;
•&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;b&gt;Risk averse nature of Indian Companies&lt;/b&gt; – Indian companies are by and large risk averse. They are not willing to put their neck on line and go with a startup. They will still prefer to buy from a large known name instead of relying on a newbie. Like they say, nobody gets fired for choosing a IBM/Microsoft product.&lt;br /&gt;
&lt;br /&gt;
•&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;b&gt;Lack of original ideas &lt;/b&gt;- most of the product companies getting started are replica’s of their successful US counterparts. But then, the Indian VC community is also responsible for this, as they tend to invest in those copycats. Copycat idea cannot create great companies although they can be good acquisition targets.&lt;br /&gt;
&lt;br /&gt;
Given all the challenges, saying that Indian product companies have no future, will be wrong. It is just that they need look out of India to market their products. iPhone/iPad applications are being made in hundreds in India and these apps have led to some successful companies. Online gaming, we see already some successful companies.&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-7748261127957446";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-08-03: J2EE, Portal, Web Services, Web 2.0, Ajax
google_ad_channel = "2060177799+6892783472+6327960836+9022209472+4184383655";
//--&gt;
&lt;/script&gt;
&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" 
 type="text/javascript"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16501575-3497232073660251060?l=www.techspot.co.in' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/t_pEEwQymd4xpt2KyWuykJHyzek/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/t_pEEwQymd4xpt2KyWuykJHyzek/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/t_pEEwQymd4xpt2KyWuykJHyzek/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/t_pEEwQymd4xpt2KyWuykJHyzek/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/dTNY?a=LhZvG2QkJUs:spJH9M29YN0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/dTNY?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/dTNY/~4/LhZvG2QkJUs" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/dTNY/~3/LhZvG2QkJUs/why-india-has-long-way-to-go-before.html</link><author>noreply@blogger.com (Munish K Gupta)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_a14iDI_zNe4/TNqr7jfJZHI/AAAAAAAACA0/Ph6r7W7xfvw/s72-c/product.gif" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://www.techspot.co.in/2010/11/why-india-has-long-way-to-go-before.html</feedburner:origLink></item></channel></rss>

