<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Software Technology Blog</title>
	<atom:link href="http://blog.harbinger-systems.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.harbinger-systems.com</link>
	<description>Technology trends, design, delivery and Harbinger Systems</description>
	<lastBuildDate>Tue, 08 May 2012 08:07:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0-beta1</generator>
		<item>
		<title>High Availability and Cloud</title>
		<link>http://blog.harbinger-systems.com/2012/05/high-availability-and-cloud/</link>
		<comments>http://blog.harbinger-systems.com/2012/05/high-availability-and-cloud/#comments</comments>
		<pubDate>Mon, 07 May 2012 10:20:08 +0000</pubDate>
		<dc:creator>Prachi Kulkarni</dc:creator>
				<category><![CDATA[Cloud]]></category>

		<guid isPermaLink="false">http://blog.harbinger-systems.com/?p=839</guid>
		<description><![CDATA[High Availability is synonymous with Cloud. The entire application developer community believed so, till the Amazon incident in 2011. After that day, there are multiple ways and opinions that the application developer can choose to follow while ensuring high availability. Lets’ start by looking at what the providers offer today: Packages: There are multiple models\packages [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float:right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.harbinger-systems.com%2F2012%2F05%2Fhigh-availability-and-cloud%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.harbinger-systems.com%2F2012%2F05%2Fhigh-availability-and-cloud%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>High Availability is synonymous with Cloud. The entire application developer community believed so, till the <a title="Amazon Server Outage Incident" href="http://money.cnn.com/2011/04/21/technology/amazon_server_outage/index.htm" target="_blank">Amazon incident</a> in 2011. After that day, there are multiple ways and opinions that the application developer can choose to follow while ensuring high availability.</p>
<p>Lets’ start by looking at what the providers offer today: <span id="more-839"></span></p>
<ul>
<li><strong>Packages:</strong> There are multiple models\packages offered by the cloud providers that advertise varying percentage of availability. Of course in many cases, your application can survive with less than 6 nines availability, if it is not a critical application and you don’t want to spend a lot of money!</li>
<li><strong>Availability Zones: </strong>Providers<strong> </strong>also offer availability zones. These zones are insulated from failures in other zones, as they do not share infrastructure with other zones. As a result, by choosing machines in separate zones, you can add to the availability of your application.</li>
<li><strong>Deployment Configuration:</strong> There are various choices in deployment configurations. This is more based on what type of deployment you are comfortable with.
<ul>
<li>There can be a single powerful machine hosting everything – web\app server, databases etc.   The advantage here is in case of failure, the entire machine can easily failover to the replicated mirror site. Obvious disadvantage is the performance bottleneck.</li>
<li>There can be the standard configuration with web\app servers as well as databases on separate machines. In fact, as cloud is advocating distribution, this type of typical deployment is in favor now-a-days. Here, in case of failure, there is a possibility, that your machines may end up in geographically dispersed areas, giving rise to network latency. To counteract this possibility, the providers have a feature where you can group your machines, so that on failure, the entire group does a failover to replicated mirror site.</li>
<li><strong>Geographical Locations:</strong> The providers also let you have control over geographical locations of the purchased instances. This way, in addition to avoiding the network latency, you can also achieve higher redundancy.</li>
<li><strong>One Stop Shop: </strong>The providers offer everything that the application may need in one place.  Eg. In addition to EC2 servers, Amazon also offers EBS \ S3 databases. They also provide services like Elastic Load Balancing as well as Cloud Watch and Auto Scaling. Opting for such setup will enhance the availability of your application multi folds.</li>
</ul>
</li>
</ul>
<p>However, in case the Amazon incident is a trust breaker for you, there is always the way where you can take care of the high availability on your own. There are various configurations suggested, where people have diversified their deployment configuration to involve multiple cloud providers. The idea is, you make a machine from one cloud provider a hot standby for your server currently residing with another cloud provider. This is a costly proposition, and the synchronizations, monitoring and failovers need to be managed by you.</p>
<p>In spite of the Amazon failure, I would anytime recommend trusting the cloud providers’ high availability claims. This is because of the huge infrastructure as well as sophisticated algorithms and strategies that the providers have in place for ensuring the high availability.  Afterall, nothing is perfect &#8211; even 6 nines of availability does result in a possible downtime of 30 seconds per year <img src='http://blog.harbinger-systems.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<g:plusone href="http://blog.harbinger-systems.com/2012/05/high-availability-and-cloud/"  size="standard"   ></g:plusone></script>
<span style=''><g:plusone count="true" size="tall"></g:plusone></span><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.harbinger-systems.com%2F2012%2F05%2Fhigh-availability-and-cloud%2F&amp;title=High%20Availability%20and%20Cloud" id="wpa2a_2"><img src="http://blog.harbinger-systems.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.harbinger-systems.com/2012/05/high-availability-and-cloud/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Guidelines for Selecting Cloud Provider and Determining Cloud Type</title>
		<link>http://blog.harbinger-systems.com/2012/02/guidelines-for-selecting-cloud-provider-and-determining-cloud-type/</link>
		<comments>http://blog.harbinger-systems.com/2012/02/guidelines-for-selecting-cloud-provider-and-determining-cloud-type/#comments</comments>
		<pubDate>Tue, 28 Feb 2012 14:53:15 +0000</pubDate>
		<dc:creator>Prachi Kulkarni</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[cloud security]]></category>
		<category><![CDATA[Hybrid Cloud]]></category>
		<category><![CDATA[Integration with Private Cloud]]></category>
		<category><![CDATA[Language of Application Development]]></category>
		<category><![CDATA[Portability]]></category>
		<category><![CDATA[Private Cloud]]></category>
		<category><![CDATA[Public Cloud]]></category>
		<category><![CDATA[Use of Framework]]></category>

		<guid isPermaLink="false">http://blog.harbinger-systems.com/?p=832</guid>
		<description><![CDATA[Earlier we saw useful design techniques for a cloud enabled application. In this blog, we are going to look at various guidelines that help in the selection of Cloud Provider and Cloud Type for an organization. Provider Selection Typically, an organization’s Technical as well as Business needs drive this selection. Here is a list of [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float:right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.harbinger-systems.com%2F2012%2F02%2Fguidelines-for-selecting-cloud-provider-and-determining-cloud-type%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.harbinger-systems.com%2F2012%2F02%2Fguidelines-for-selecting-cloud-provider-and-determining-cloud-type%2F&amp;style=normal&amp;hashtags=cloud+security,Hybrid+Cloud,Integration+with+Private+Cloud,Language+of+Application+Development,Portability,Private+Cloud,Public+Cloud,Use+of+Framework&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Earlier we saw useful <a href="http://blog.harbinger-systems.com/2012/02/design-considerations-while-migrating-the-application-to-cloud/#more-810" target="_blank">design techniques for a cloud enabled application</a>. In this blog, we are going to look at various guidelines that help in the selection of Cloud Provider and Cloud Type for an organization.<span id="more-832"></span></p>
<h2>Provider Selection</h2>
<p>Typically, an organization’s Technical as well as Business needs drive this selection. Here is a list of few such aspects.</p>
<p><strong>Technical Considerations</strong></p>
<p>The organizations technology choices as well as criticality of information, user load etc. will play a role in provider selection as follows:</p>
<ul>
<li><strong>Use of Framework / API</strong>: The application can be cloud enabled by using API available from the provider (e.g. AWS ) or by using frameworks like AppHarbor or Heroku. These API as well frameworks many times support specific cloud providers.</li>
<li><strong>Language of Application Development</strong>: Currently, the providers and frameworks favor specific development languages. E.g. Azure platform typically favors .Net based applications. Or Heroku framework currently supports Ruby and Java based development. So the choice of development language will in turn determine the provider.</li>
<li><strong>Security: </strong>Security Vulnerability is a major consideration especially in case of Hybrid and Public clouds. Focus on Access control and Authentication/ Authorization is essential for a successful provider. Most of the<strong> </strong>providers<strong> </strong>follow various security practices, and support techniques like identity management. They also offer multiple security certifications. The choice of right provider may depend on presence or absence of any of these.<strong><br />
</strong></li>
<li><strong>Portability</strong>: The choice of cloud platform may change over the period of time. So the ease of getting out as well as availability of tools supporting such porting can be an important consideration.</li>
<li><strong>Integration with Private Cloud: </strong>Many times<strong> </strong>the enterprises start with small Private Clouds. With time, there may be a need to expand the infrastructure. A common scenario here is formation of Hybrid Cloud. As a result, the ability to integrate Private Cloud with the public solution can also be a deciding factor.<strong> </strong><strong><br />
</strong></li>
<li><strong>Easy access to other cloud features and tools: </strong>The cloud providers as well as frameworks provide access to many types of databases. They also support a wide range of tools for gauging cloud performance, finding memory leaks etc. They may come with easy deployment options as well as best practices like test driven development. All of this may influence the final selection.</li>
</ul>
<p><strong>Business Considerations</strong></p>
<p>First and foremost of the business consideration is overall cost of the solution. This cost will depend on the architecture, cloud type as well as provider. Almost all providers offer a wide choice of solutions offering a range of costs.</p>
<p>Various other administrative criteria that apply while selecting the provider are:</p>
<ul>
<li><strong>SLA: </strong>The<strong> </strong>service level agreement should be carefully studied and negotiated before deploying the application to the cloud.<br />
<strong> </strong></li>
<li><strong>Support: </strong>The quality of technical support can be a deciding factor for ongoing relationship.<strong><br />
</strong></li>
<li><strong>Billing Models and Accuracy: </strong>As the major benefit of cloud deployment is pay per use billing, the provider selection can depend on various payment options as well as claimed accuracy in the billing.<strong> </strong></li>
</ul>
<h2>Cloud Type Selection</h2>
<p>Selecting a Cloud Type suitable for your business need is very critical, as it determines the overall architecture and in-turn the cost of the solution. Possible options for cloud types are Public Cloud, Private cloud and Hybrid cloud.</p>
<p><strong>Public Cloud</strong></p>
<p>On one hand where Public Clouds are cost effective, easy and efficient in sharing resources, they also provide lesser control over operations and storage and can be more vulnerable to security threats. In this case, no infrastructure is owned by the enterprise. Understandably, typical clientele for this option is applications with less sensitive data, less budget and higher user loads. They are also preferred for projects having a lot of collaboration work.</p>
<p><strong>Private Cloud</strong></p>
<p>Other end of the spectrum is the Private Cloud. As the name suggests, it provides maximum security and better control as enterprises own their infrastructure. Both services and infrastructure is maintained on a private network. Obviously, this is a costly preposition, usually favored by large enterprises.</p>
<p><strong>Hybrid Cloud</strong></p>
<p>Hybrid Cloud presents the ‘in between’ approach, and tries to provide the user with best of both worlds. A portion of the infrastructure is owned by the enterprise and public cloud space is used for the remaining. This spreading allows each business aspect to be in most effective environment. The challenge here is the communication between private and public cloud, without introducing security loop holes. The Hybrid cloud also needs to have its virtualization policies defined. There can be a high risk, if public infrastructure is used for sensitive data during virtualization.</p>
<p>In the next blog-post, we will look at <a title="High Availability and Cloud" href="http://blog.harbinger-systems.com/2012/05/high-availability-and-cloud/" target="_self">High Availability and Cloud</a>.</p>
<g:plusone href="http://blog.harbinger-systems.com/2012/02/guidelines-for-selecting-cloud-provider-and-determining-cloud-type/"  size="standard"   ></g:plusone></script>
<span style=''><g:plusone count="true" size="tall"></g:plusone></span><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.harbinger-systems.com%2F2012%2F02%2Fguidelines-for-selecting-cloud-provider-and-determining-cloud-type%2F&amp;title=Guidelines%20for%20Selecting%20Cloud%20Provider%20and%20Determining%20Cloud%20Type" id="wpa2a_4"><img src="http://blog.harbinger-systems.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.harbinger-systems.com/2012/02/guidelines-for-selecting-cloud-provider-and-determining-cloud-type/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cloud Security – A Major Concern for Enterprises</title>
		<link>http://blog.harbinger-systems.com/2012/02/cloud-security-%e2%80%93-a-major-concern-for-enterprises/</link>
		<comments>http://blog.harbinger-systems.com/2012/02/cloud-security-%e2%80%93-a-major-concern-for-enterprises/#comments</comments>
		<pubDate>Fri, 24 Feb 2012 10:28:07 +0000</pubDate>
		<dc:creator>Nassif Malouf</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Cloud Networking]]></category>
		<category><![CDATA[cloud security]]></category>
		<category><![CDATA[Cryptographic Key Management]]></category>
		<category><![CDATA[Data Leakage Prevention]]></category>
		<category><![CDATA[Data Sanitization]]></category>
		<category><![CDATA[Federated Identity Management]]></category>
		<category><![CDATA[Security Incident & event Management]]></category>

		<guid isPermaLink="false">http://blog.harbinger-systems.com/?p=826</guid>
		<description><![CDATA[I recently got an opportunity to attend a TiE event “TiE Cloud: Breakthroughs in Cloud Security” in Silicon Valley on 2nd Feb. This conference was hosted by Mr. Allwyn Sequeira, CTO &#38; VP, Cloud Networking &#38; Security, VMware and Mr. Pradip Shankar, Vice-President, Ericsson. In many of the presentations and discussion forums in this event, [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float:right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.harbinger-systems.com%2F2012%2F02%2Fcloud-security-%25e2%2580%2593-a-major-concern-for-enterprises%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.harbinger-systems.com%2F2012%2F02%2Fcloud-security-%25e2%2580%2593-a-major-concern-for-enterprises%2F&amp;style=normal&amp;hashtags=Cloud+Networking,cloud+security,Cryptographic+Key+Management,Data+Leakage+Prevention,Data+Sanitization,Federated+Identity+Management,Security+Incident+%26amp%3B+event+Management&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>I recently got an opportunity to attend a TiE event “<strong><a href="http://sv.tie.org/event/tie-cloud-breakthroughs-cloud-security" target="_blank">TiE Cloud: Breakthroughs in Cloud Security</a></strong>” in Silicon Valley on 2<sup>nd</sup> Feb. This conference was hosted by Mr. Allwyn Sequeira, CTO &amp; VP, Cloud Networking &amp; Security, VMware and Mr. Pradip Shankar, Vice-President, Ericsson.<span id="more-826"></span></p>
<p>In many of the presentations and discussion forums in this event, looking at the questions and interest from the attendees, many of them emphasized on how to best set-up their cloud infrastructure securely. Cloud security continues to be a major concern for enterprises, in fact many of the CIOs expressed that they have no immediate plans to migrate to private cloud concerned by its complexity, security issues and fear of losing control over their data and privacy.</p>
<p>In one of the interesting presentation by Mr. Tim Mather who is an advisory director at KPMG, he focused on ‘The existing top security technologies that are broken by the cloud’:</p>
<p> -         Cryptographic Key Management<br />
-          Data Leakage Prevention (DLP)<br />
-          Data Sanitization<br />
-          Federated Identity Management (FIM)<br />
-          Security Incident &amp; event Management (SIEM)</p>
<p>According to him the Virtual Private SaaS companies such as <a href="http://www.ciphercloud.com/" target="_blank">CypherCloud</a>, <a href="http://www.navajosystems.com/" target="_blank">Navajo Systems</a> (recently acquired by Salesforce.com) and Big Data platforms such as <a href="https://www.redlambda.com/" target="_blank">Red Lambda</a> and <a href="http://www.splunk.com/" target="_blank">Splunk</a> will do fair in the cloud security race and ‘SIEM’ may have to consider its multiple vendor policy in the long term.</p>
<p>Currently, the need for increased cloud security is a huge challenge and slowing down the enterprise adoption of the private cloud, also the mobile virtualization has increased the attacks on cloud servers. Public clouds like Amazon services are a prime target of hackers and proved to be easy to hack as evidenced with the recent issue with Sony Corporation.</p>
<p>Nowadays, many of the telecommunication companies are turning out to be the cloud service providers (CSPs), The Cloud Security Alliance (CSA) in the standard body with 29,000 members and 120 corporate members working hard on securing the cloud services. As mentioned in one of the blog post (<a href="http://blog.harbinger-systems.com/2012/01/is-your-application-a-candidate-for-cloud-migration/" target="_blank">Is your application a candidate for cloud migration?</a>) by one of my colleague, the multiple efforts by the cloud infrastructure providers are putting as well as the advance security techniques are now available at application level itself, it is reducing the threat level significantly. Let’s hope the future of the cloud will be more secure and many enterprises will follow the best practices and will adopt the secure cloud.<strong></strong></p>
<g:plusone href="http://blog.harbinger-systems.com/2012/02/cloud-security-%e2%80%93-a-major-concern-for-enterprises/"  size="standard"   ></g:plusone></script>
<span style=''><g:plusone count="true" size="tall"></g:plusone></span><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.harbinger-systems.com%2F2012%2F02%2Fcloud-security-%25e2%2580%2593-a-major-concern-for-enterprises%2F&amp;title=Cloud%20Security%20%E2%80%93%20A%20Major%20Concern%20for%20Enterprises" id="wpa2a_6"><img src="http://blog.harbinger-systems.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.harbinger-systems.com/2012/02/cloud-security-%e2%80%93-a-major-concern-for-enterprises/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Design considerations while migrating the application to cloud</title>
		<link>http://blog.harbinger-systems.com/2012/02/design-considerations-while-migrating-the-application-to-cloud/</link>
		<comments>http://blog.harbinger-systems.com/2012/02/design-considerations-while-migrating-the-application-to-cloud/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 07:35:13 +0000</pubDate>
		<dc:creator>Prachi Kulkarni</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Agile Testing]]></category>
		<category><![CDATA[Asynchronous Communication]]></category>
		<category><![CDATA[Automatic Configuration Processes]]></category>
		<category><![CDATA[Choice of Database]]></category>
		<category><![CDATA[Cloud Application Framework]]></category>
		<category><![CDATA[Data Storage Strategy]]></category>
		<category><![CDATA[Decoupled Components]]></category>
		<category><![CDATA[Design considerations for cloud]]></category>
		<category><![CDATA[Guidelines for data and application deployment]]></category>
		<category><![CDATA[Shorter Deployment Cycles]]></category>
		<category><![CDATA[Stateless Application Design]]></category>

		<guid isPermaLink="false">http://blog.harbinger-systems.com/?p=810</guid>
		<description><![CDATA[As outlined in earlier blog (Is your application a candidate for cloud migration), any application can be deployed on cloud, using right cloud application framework. However, in order to take maximum advantage of cloud features like dynamic scaling and high availability, it is advisable to make some design changes in the application. Here is a [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float:right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.harbinger-systems.com%2F2012%2F02%2Fdesign-considerations-while-migrating-the-application-to-cloud%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.harbinger-systems.com%2F2012%2F02%2Fdesign-considerations-while-migrating-the-application-to-cloud%2F&amp;style=normal&amp;hashtags=Agile+Testing,Asynchronous+Communication,Automatic+Configuration+Processes,Choice+of+Database,Cloud+Application+Framework,Data+Storage+Strategy,Decoupled+Components,Design+considerations+for+cloud,Guidelines+for+data+and+application+deployment,Shorter+Deployment+Cycles,Stateless+Application+Design&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>As outlined in earlier blog (<a title="Is your application a candidate for cloud migration" href="http://blog.harbinger-systems.com/2012/01/is-your-application-a-candidate-for-cloud-migration/" target="_blank">Is your application a candidate for cloud migration</a>), any application can be deployed on cloud, using right cloud application framework. However, in order to take maximum advantage of cloud features like dynamic scaling and high availability, it is advisable to make some design changes in the application. Here is a list of a few such design considerations:</p>
<ul>
<li>Use of Decoupled Components</li>
<li>Asynchronous Communication</li>
<li>Stateless Application Design</li>
<li>Choice of Database</li>
<li>Data Storage Strategy</li>
</ul>
<p>I plan to discuss these design considerations in some detail, in the coming sections.<span id="more-810"></span></p>
<p><strong>Decoupled Components</strong></p>
<p>As in case of traditional designs, more modular the application design, more will be the scalability of the application in the cloud. The trick here is to make independent application modules in order to make distribution and in turn dynamic scaling of application easy. Some of the techniques used for such decoupling are as follows:<strong></strong></p>
<ul>
<li>Use of API interfaces or Web Service Interfaces for module integration and interaction<strong></strong></li>
<li>Use of atomic transactions within the modules<strong></strong></li>
<li>Avoiding direct data exchange between modules as far as possible. All module data should be derived from the database.<strong></strong></li>
</ul>
<p>All the steps described further in this article also contribute in decoupling the modules.</p>
<p><strong>Asynchronous Communication</strong></p>
<p>In addition to use of API/web services, the application can have Message Based communication between its modules instead of procedure based tight coupling. This will function something similar to the asynchronous communication in standard workflow modules.</p>
<p><strong>Stateless Application Design</strong></p>
<p>Stateless application design enables distribution. As a part of this, session state needs to be stored outside the application or component, in the database.</p>
<p><strong>Choice of Database</strong></p>
<p>Almost all the available cloud platforms support a variety of databases. Various extensions offered by cloud application frameworks make using these databases easier. Now-a-days in addition to traditional RDBMS like SQL Server and MYSQL, there is support for NOSQL database like MongoDB. Distributed database are offered as a service in the cloud application frameworks. The application design may want to evaluate use of any such databases, to further support distribution.</p>
<p><strong>Data Storage Strategy</strong></p>
<p>As a strategy, consider keeping dynamic data closer to the compute and static data closer to the end-user. This translates to storing the data generated in the cloud, within the cloud and storing the static data on CDN, near the end user.</p>
<p><strong>Further Guidelines for data and application deployment</strong></p>
<ul>
<li><strong>Use of Cloud Application Framework:</strong> There are various cloud application platforms that provide faster deployment as they work directly off the source code repository like GitHub. Development using the cloud application framework may also be easier and faster compared to that using Cloud Platform API</li>
<li><strong>Automatic Configuration Processes:</strong> Automated configuration of new machines to be added in the deployment environment is vital in order to enable dynamic scaling. Machine images as well as various scripts can be used for this.</li>
<li><strong>Shorter Deployment Cycles:</strong> This will keep the cloud version latest, offering new features often</li>
<li><strong>Agile Testing:</strong> The testing needs to be faster and modular for the cloud setup. This will save time in the functional and regression testing. Most cloud application frameworks offer choice of test driven development, which can be very helpful here.</li>
<li><strong>Decision about which part of the application to be moved on cloud:</strong> This decision can be critical for big enterprise applications, where moving everything to the Hybrid / Public cloud may not be possible due to various security policies as well as need of complete control on the module deployment and workflow. Following guidelines can be used here:
<ul>
<li>Modules which are compute intensive and are needed for short bursts of time can be moved to the cloud</li>
<li>Peripheral modules can be moved to the cloud</li>
<li>Modules that may experience varying user load can be moved to the cloud</li>
<li>Use of private cloud or deployment restricted to the private portion of hybrid cloud can be considered for critical modules</li>
</ul>
</li>
</ul>
<p>Other than this, there are various design considerations related to security and cloud type. We will look at these in detail in subsequent blogs.</p>
<p>Any application can go on cloud, even without any design changes. However, following these guidelines, it is possible to design horizontally scaling application and reap all the benefits of cloud deployment. We will look at the guidelines for selecting cloud provider in the next blog.</p>
<div id="_mcePaste" style="position: absolute; width: 1px; height: 1px; overflow: hidden; top: 114px; left: -10000px;">http://blog.harbinger-systems.com/</div>
<g:plusone href="http://blog.harbinger-systems.com/2012/02/design-considerations-while-migrating-the-application-to-cloud/"  size="standard"   ></g:plusone></script>
<span style=''><g:plusone count="true" size="tall"></g:plusone></span><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.harbinger-systems.com%2F2012%2F02%2Fdesign-considerations-while-migrating-the-application-to-cloud%2F&amp;title=Design%20considerations%20while%20migrating%20the%20application%20to%20cloud" id="wpa2a_8"><img src="http://blog.harbinger-systems.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.harbinger-systems.com/2012/02/design-considerations-while-migrating-the-application-to-cloud/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Is your application a candidate for cloud migration?</title>
		<link>http://blog.harbinger-systems.com/2012/01/is-your-application-a-candidate-for-cloud-migration/</link>
		<comments>http://blog.harbinger-systems.com/2012/01/is-your-application-a-candidate-for-cloud-migration/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 08:54:16 +0000</pubDate>
		<dc:creator>Prachi Kulkarni</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Cloud application]]></category>
		<category><![CDATA[Cloud Application Frameworks]]></category>
		<category><![CDATA[cloud infrastructure]]></category>
		<category><![CDATA[cloud migration]]></category>
		<category><![CDATA[cloud platforms]]></category>
		<category><![CDATA[Cloud provisioning]]></category>
		<category><![CDATA[deployment security]]></category>

		<guid isPermaLink="false">http://blog.harbinger-systems.com/?p=802</guid>
		<description><![CDATA[It is now safe to say that the future of Software Application Space is ‘”Cloudy”, and for once, it is a very good thing! The Cloud platforms have been around for a while, but now more and more applications from Enterprise as well as Consumer space are seen to take advantage of them. So the [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float:right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.harbinger-systems.com%2F2012%2F01%2Fis-your-application-a-candidate-for-cloud-migration%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.harbinger-systems.com%2F2012%2F01%2Fis-your-application-a-candidate-for-cloud-migration%2F&amp;style=normal&amp;hashtags=Cloud+application,Cloud+Application+Frameworks,cloud+infrastructure,cloud+migration,cloud+platforms,Cloud+provisioning,deployment+security&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>It is now safe to say that the future of Software Application Space is ‘”Cloudy”, and for once, it is a very good thing! The Cloud platforms have been around for a while, but now more and more applications from Enterprise as well as Consumer space are seen to take advantage of them.</p>
<p>So the question is, which applications can migrate to cloud? Short answer: all applications.</p>
<p>For a descriptive answer, we should go into details of what the Cloud can provide us. <span id="more-802"></span> </p>
<p>Cloud is basically offering Infrastructure (Platform) as a service. Once I migrate my application to the Cloud, I transfer the headache of setting up proper infrastructure to the cloud provider. This translates into various benefits for the application:</p>
<p>• High Availability<br />
• Scalability<br />
• Distribution<br />
• Pay-Per-Use for infrastructure<br />
• Easy ability to integrate with Social and other collaboration portals*</p>
<p>The scalability and pay per use architecture is vastly important for many applications. In the application lifecycle, there are times, when for a specific duration, scaled up infrastructure is required. Some examples can be &#8211; the holiday seasons for an eCommerce Retail Application, the benefits enrollment period for a Healthcare Application, tournament seasons for Sports Application etc.</p>
<p>This is a period where the user load can increase multifold, and the application provider needs multiple servers to handle that load, without affecting performance. However, outside this specific period, the infrastructure needs are pretty regular. As a result, hardware investment becomes a tough decision.</p>
<p>Cloud provisioning can be a perfect answer for such dilemmas. The cloud providers can make multiple servers available for short duration for any application. This scaling can happen transparent to the end users. The providers will charge only for the time the infrastructure is used.</p>
<p>In addition, the cloud providers will also take care to make the application Highly Available. To support this, Virtualization, Replication and Distribution are taken care at the provider level. As scaled up infrastructure is used, application performance is also no longer a headache.</p>
<p>Security has been a critical aspect of cloud deployment. However, multiple efforts by the cloud infrastructure providers as well as advance security techniques available at application level have reduced the threat level significantly.</p>
<p>There are multiple cloud providers like <a href="http://aws.amazon.com/ec2/" target="_blank">Amazon</a>, <a href="http://www.windowsazure.com/en-us/" target="_blank">Azure</a>, <a href="http://www.rackspace.com/" target="_blank">Rackspace</a> in the market. However, the application to be migrated need not directly interface with the cloud providers. There are multiple Cloud Application Frameworks like <a href="http://www.heroku.com/" target="_blank">Heroku</a> and <a href="https://appharbor.com/" target="_blank">AppHarbor</a> that provide easy integration interfaces to make the cloud deployment possible at the click of the mouse. These Application Frameworks also work with multiple development platforms including .Net, Java, Ruby and PHP. In addition, they follow test driven development pattern, to make application development / migration easy.</p>
<p>Cloud supports SAAS whole-heartedly; however, it is not necessary for your application to follow the SAAS model in order to take advantage of cloud.</p>
<p>As per a survey published by <a href="http://www.cloud-council.org/" target="_blank">Cloud Standards Customer Council </a>(CSCC), cloud and the corresponding architecture changes also lets the application developers integrate easily with available social and other collaboration portals.<br />
In short, any application irrespective of domain, technology and architecture can be migrated to the cloud.</p>
<p>In next article, we will take a look at the design considerations for an application migrated to Cloud.</p>
<p><em>* As per survey published by CSCC</em></p>
<g:plusone href="http://blog.harbinger-systems.com/2012/01/is-your-application-a-candidate-for-cloud-migration/"  size="standard"   ></g:plusone></script>
<span style=''><g:plusone count="true" size="tall"></g:plusone></span><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.harbinger-systems.com%2F2012%2F01%2Fis-your-application-a-candidate-for-cloud-migration%2F&amp;title=Is%20your%20application%20a%20candidate%20for%20cloud%20migration%3F" id="wpa2a_10"><img src="http://blog.harbinger-systems.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.harbinger-systems.com/2012/01/is-your-application-a-candidate-for-cloud-migration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Workspace – Better way of organizing your XCode projects</title>
		<link>http://blog.harbinger-systems.com/2011/11/workspace-%e2%80%93-better-way-of-organizing-your-xcode-projects/</link>
		<comments>http://blog.harbinger-systems.com/2011/11/workspace-%e2%80%93-better-way-of-organizing-your-xcode-projects/#comments</comments>
		<pubDate>Thu, 24 Nov 2011 08:50:21 +0000</pubDate>
		<dc:creator>Johnson</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.harbinger-systems.com/?p=796</guid>
		<description><![CDATA[Working with XCode IDE, I had always felt the need for a top-level entity that could support and organize my multiple XCode projects.  It wasn’t easy to access the files of one project from another in XCode 3.2, even if you had cross project references between them. Code sharing was always an issue if two [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float:right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.harbinger-systems.com%2F2011%2F11%2Fworkspace-%25e2%2580%2593-better-way-of-organizing-your-xcode-projects%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.harbinger-systems.com%2F2011%2F11%2Fworkspace-%25e2%2580%2593-better-way-of-organizing-your-xcode-projects%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Working with XCode IDE, I had always felt the need for a top-level entity that could support and organize my multiple XCode projects.  It wasn’t easy to access the files of one project from another in XCode 3.2, even if you had cross project references between them. Code sharing was always an issue if two or more projects used the same libraries and we had to copy them into each project folder separately.</p>
<p>Introduction of “Workspaces” brings in one of the new bits of &#8220;magic&#8221; that XCode 4 does for you: <em>Multiple-Project Support</em>. A workspace is basically a container meta-file that groups together multiple projects and other documents. It also provides implicit and explicit relationships among the included projects and their respective targets.<span id="more-796"></span>  </p>
<p> Concept of workspace also allows us to create and use third party libraries in iOS projects in a much simpler way. However, the procedure is still more complex than it needs to be. Apple documentation suggests that it should automatically detect dependencies and other index classes across workspace.</p>
<p><strong> </strong>There are few key behaviors of workspace on how to share code across different projects in XCode:</p>
<ul>
<li>All the projects in a workspace are built in the same directory, referred to as the workspace build directory.</li>
<li>XCode inspects the files in the build directory to discover implicit dependencies between them.</li>
</ul>
<ul>
<li>Each project in a workspace continues to have its own independent distinctiveness.</li>
</ul>
<p><strong> </strong><strong>Steps that worked for me:</strong></p>
<ol>
<li>Create a new workspace and add the shared library project.</li>
<li> Add the application project that would use the above shared library.  </li>
<li>Open Build Phase of shared library and make sure when copying headers it is grouped to public .</li>
<li>Open Build settings of application and in the Header Search Paths type in &#8220;BUILD_PRODUCTS_DIR&#8221;\usr\local\include .</li>
<li>And in Build Phase of target, include a link to static library (shared library) .</li>
<li>Now, clean and build and everything should build successfully.</li>
</ol>
<p> Incase you are having linking errors while setting up the workspace in XCode, you can refer this article <a href="http://stackoverflow.com/questions/5427396/whats-the-correct-way-to-configure-xcode-4-workspaces-to-build-dependencies-whe" target="_blank">whats-the-correct-way-to-configure-xcode-4-workspaces-to-build-dependencies</a></p>
<p> All said and done, this worked like a charm for me. The workspace concept benefited me by sharing the code and build folders across multiple projects. Now, with the use of XCode 4 workspace we don’t have to copy the library files in every project and this saves lot of development time and effort.</p>
<p> <strong>How is it better than eclipse workspace?</strong></p>
<p>There are two main aspects in which I found XCode workspace to be better than Eclipse workspace:</p>
<ol>
<li>In XCode 4.0, file indexing is done across the whole workspace so, code completion and refactoring operations act across all the content of the workspace. You can refactor the API in a framework project and in several application projects that use that framework all in one operation. This feature is missing in the current version of Eclipse.</li>
<li>All the XCode projects in a workspace are built in the same directory, which is referred to as the “workspace build directory”. As all of the files in all of the projects in a workspace are in the same build directory, all of these files are visible to each project. Hence, if two or more projects use the same libraries, you don’t need to include them into each project folder separately.</li>
</ol>
<p> <strong>How it improved my development process?</strong></p>
<p>This article might give you an impression that setting up the workspace is a lot of work; but fortunately it’s not, especially if you do it more than once (considering that the aim here is to share code across <em>multiple</em> projects). I have been using this workspace approach for about four months with several projects and it’s definitely saved me a lot of time especially when the application projects used the same static libraries again and again.</p>
<p> Instead of copying the source code from the “shared libraries” into every project (which used to take me an hour or so for every project), I just keep the shared library code in a separate XCode project and use it to build static libraries along with the application project. It is just a 5-minutes job now!</p>
<g:plusone href="http://blog.harbinger-systems.com/2011/11/workspace-%e2%80%93-better-way-of-organizing-your-xcode-projects/"  size="standard"   ></g:plusone></script>
<span style=''><g:plusone count="true" size="tall"></g:plusone></span><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.harbinger-systems.com%2F2011%2F11%2Fworkspace-%25e2%2580%2593-better-way-of-organizing-your-xcode-projects%2F&amp;title=Workspace%20%E2%80%93%20Better%20way%20of%20organizing%20your%20XCode%20projects" id="wpa2a_12"><img src="http://blog.harbinger-systems.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.harbinger-systems.com/2011/11/workspace-%e2%80%93-better-way-of-organizing-your-xcode-projects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automation Using Coded UI Test</title>
		<link>http://blog.harbinger-systems.com/2011/10/automation-using-coded-ui-test/</link>
		<comments>http://blog.harbinger-systems.com/2011/10/automation-using-coded-ui-test/#comments</comments>
		<pubDate>Thu, 20 Oct 2011 08:56:12 +0000</pubDate>
		<dc:creator>Pramod</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.harbinger-systems.com/?p=760</guid>
		<description><![CDATA[Coded UI Test (CUIT) is a new feature introduced by Microsoft for UI Automation. The automated tests created by CUIT are used for the functionality testing of an application. To know about this tool, we started exploring its ‘Record and Playback’ feature. A very simple test case that we initiated this effort with had the [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float:right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.harbinger-systems.com%2F2011%2F10%2Fautomation-using-coded-ui-test%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.harbinger-systems.com%2F2011%2F10%2Fautomation-using-coded-ui-test%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://msdn.microsoft.com/en-us/library/dd286726.aspx" target="_blank">Coded UI Test (CUIT)</a> is a new feature introduced by Microsoft for UI Automation. The automated tests created by CUIT are used for the functionality testing of an application.</p>
<p>To know about this tool, we started exploring its ‘Record and Playback’ feature. A very simple test case that we initiated this effort with had the following steps:</p>
<ol>
<li>Launch Internet Explorer</li>
<li>Navigate to <a href="http://www.google.com" target="_blank">www.google.com</a></li>
<li>Search for “Code UI Test”</li>
<li>Validate if the result returned “How to: Create a Coded UI Test” link (an MSDN article on the topic)</li>
</ol>
<p>Though it generated huge code for such a simple test case, the overall Record and Playback process highlighted the strengths of this tool. The well structured code and powerful element identification mechanism really caught our attention.<br />
<span id="more-760"></span> </p>
<p>Besides that, the CUIT playback engine is also powerful. Playback engine performs duties such as searching for a control and ensuring that the control is visible and ready to be acted upon. Once the control is ready the engine performs actions such as ‘Click’, ‘Select’, ‘Set a Value’, etc. on it.</p>
<p>Recording feature alone is of course, not sufficient for building a full-fledged automation suite. However, CUIT’s recording feature certainly helps you if you decide to write your own scripts. It primarily helps in getting proper hierarchy of controls on the page (such as browser – iframe – div – control) and a set of properties that can be used to identify a particular control uniquely.</p>
<p>We also developed a UI Automation Framework using CUIT. While developing this framework, we experienced that CUIT has got several strengths. Its Recording feature really helped us save development time to a good extent.</p>
<p>Overall, if you decide to go with CUIT, here are some pros and cons of using it for your product:</p>
<h3>Pros</h3>
<ol>
<li>The element identification mechanism is powerful</li>
<li>Uses C#, the compiled language, which comes with its own advantages over the scripting languages</li>
<li>Works well with Web as well as Desktop applications</li>
<li>Strong support for Synchronization. The Playback Engine allows settings such as “WaitForReadyLevel”, which can be either “UIThreadOnly” or “AllThreads”. It makes the Test Execution stop until either UI Threads or All threads are ready.</li>
</ol>
<p>Other supported settings are– “Stop on Error”, “Match exact hierarchy”, “Search in minimized window”, etc.</p>
<ol>
<li>It supports AJAX</li>
<li>The tests can be run on Remote Machines with the help of Tests Agents</li>
</ol>
<h3>Cons</h3>
<ol>
<li>Generates huge code for even a small UI operation, and hence hampers maintainability to some extent</li>
<li>Code Reusability is limited; it regenerates code even if it was already generated for a particular action</li>
<li>It uses almost all the Property &#8211; Value pairs to identify and locate the UI Controls which at times seems to affect the performance of the script</li>
</ol>
<h3>Guidelines for Automation using Code UI Test</h3>
<ol>
<li>Test creation is certainly a time consuming task, but it is worth going for it if the application under test is pretty stable and has got a large number of tests to be executed repetitively</li>
<li>Having said the above, it is not worth putting efforts in generating Test Scripts for an application which has frequently changing functionality</li>
<li>It can be used for Web as well as Windows applications. It supports,
<ol>
<li>AJAX</li>
<li>Silverlight</li>
</ol>
</li>
</ol>
<p>With such advantages and the reliability of the scripts, CUIT appears to be a promising tool for the UI Automation. There are other areas to explore. For example, we have not yet tried it with application containing Flash controls. That might be a topic for a future blog post, but in meanwhile, have you tried it with Flash? Write to us in comments and share your views.</p>
<g:plusone href="http://blog.harbinger-systems.com/2011/10/automation-using-coded-ui-test/"  size="standard"   ></g:plusone></script>
<span style=''><g:plusone count="true" size="tall"></g:plusone></span><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.harbinger-systems.com%2F2011%2F10%2Fautomation-using-coded-ui-test%2F&amp;title=Automation%20Using%20Coded%20UI%20Test" id="wpa2a_14"><img src="http://blog.harbinger-systems.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.harbinger-systems.com/2011/10/automation-using-coded-ui-test/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

