<?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"
	>

<channel>
	<title>Welcome to GlobalLogic Blogs &#187; Enterprise 2.0</title>
	<atom:link href="http://blogs.globallogic.com/category/enterprise-20/feed" rel="self" type="application/rss+xml" />
	<link>http://blogs.globallogic.com</link>
	<description>Exponential Innovation</description>
	<pubDate>Mon, 30 Jan 2012 06:04:14 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<item>
		<title>Five Cloud Computing Patterns</title>
		<link>http://blogs.globallogic.com/five-cloud-computing-patterns</link>
		<comments>http://blogs.globallogic.com/five-cloud-computing-patterns#comments</comments>
		<pubDate>Thu, 26 Nov 2009 06:51:29 +0000</pubDate>
		<dc:creator>RickyHo</dc:creator>
		
		<category><![CDATA[Enterprise 2.0]]></category>

		<category><![CDATA[Technology]]></category>

		<category><![CDATA[cloud computing]]></category>

		<category><![CDATA[Design pattern]]></category>

		<guid isPermaLink="false">http://blogs.globallogic.com/?p=832</guid>
		<description><![CDATA[I have attended a presentation by Simon Guest from Microsoft on their cloud computing architecture.  Although there was no new concept or idea introduced, Simon has provided an excellent summary on the major patterns of doing cloud computing.
I have to admit that I am not familiar with Azure and this is my first time [...]]]></description>
			<content:encoded><![CDATA[<p>I have attended a presentation by <a href="http://simonguest.com/blogs/smguest/default.aspx">Simon Guest</a> from Microsoft on their cloud computing architecture.  Although there was no new concept or idea introduced, Simon has provided an excellent summary on the major patterns of doing cloud computing.</p>
<p>I have to admit that I am not familiar with Azure and this is my first time hearing a Microsoft cloud computing presentation.  I felt Microsoft has explained their Azure platform in a very comprehensible way.  I am quite impressed.</p>
<p>Simon talked about 5 patterns of Cloud computing.  Let me summarize it (and mix-in a lot of my own thoughts) &#8230;</p>
<h2>1.   Use Cloud for Scaling</h2>
<p>The key idea is to spin up and down machine resources according to workload so the user only pay for the actual usage.  There is two types of access patterns: passive listener model and active worker model.</p>
<p><span style="bold;">Passive listener model</span> uses a synchronous communication pattern where the client pushes request to the server and synchronously wait for the processing result.<br />
<a href="http://4.bp.blogspot.com/_j6mB7TMmJJY/SwYh8WQq4nI/AAAAAAAAAT8/1iVfT0Bu2Cg/s1600/p1.png"><img style="204px;" src="http://4.bp.blogspot.com/_j6mB7TMmJJY/SwYh8WQq4nI/AAAAAAAAAT8/1iVfT0Bu2Cg/s320/p1.png" border="0" alt="" /></a></p>
<p>In the passive listener model, machine instances are typically sit behind a load balancer. To scale the resource according to the work load, we can use a monitor service that send NULL client request and use the measured response time to spin up and down the size of the machine resources.</p>
<p>On the other hand, <span style="bold;">Active worker model</span> uses an asynchronous communication patterns where the client put the request to a queue, which will be periodically polled by the server.  After queuing the request, the client will do some other work and come back later to pickup the result.  The client can also provide a callback address where the server can push the result into after the processing is done.<br />
<a href="http://4.bp.blogspot.com/_j6mB7TMmJJY/SwYiBY4GmII/AAAAAAAAAUE/HBkz9z8M-io/s1600/P2.png"><img style="199px;" src="http://4.bp.blogspot.com/_j6mB7TMmJJY/SwYiBY4GmII/AAAAAAAAAUE/HBkz9z8M-io/s320/P2.png" border="0" alt="" /></a></p>
<p>In the active worker model, the monitor can measure the number of requests sitting in the queue and use that to determine whether machine instances (at the consuming end) need to be spin up or down.</p>
<h2>2.  Use Cloud for Multi-tenancy</h2>
<p><a href="http://horicky.blogspot.com/2009/08/multi-tenancy-in-cloud-computing.html">Multi-tenancy</a> is more a SaaS provider (rather than an enterprise) usage scenario.  The key idea is to use the same set of code / software to host the application for different customers (tenants)   who may have slightly different requirement in</p>
<ul>
<li>UI branding</li>
<li>Business rules for decision criteria</li>
<li>Data schema</li>
</ul>
<p>The approach is to provide sufficient &#8220;customization&#8221; capability for their customer.  The most challenging part is to determine which aspects should be opened for customization and which shouldn&#8217;t.  After identifying these configurable parameters, it is straightforward to define configuration metadata to capture that.</p>
<h2>3.  Use Cloud for Batch processing</h2>
<p>This is about running things like statistics computation, report generation, machine learning, analytics &#8230; etc.  These task is done in batch mode and so it is more economical to use the &#8220;pay as you go&#8221; model.  On the other hand, batch processing has very high tolerance in latency and so is a perfect candidate of running in the cloud.<br />
<a href="http://4.bp.blogspot.com/_j6mB7TMmJJY/SwYiOU8WuPI/AAAAAAAAAUU/yc_ZTspSGZ8/s1600/P3.png"><img style="237px;" src="http://4.bp.blogspot.com/_j6mB7TMmJJY/SwYiOU8WuPI/AAAAAAAAAUU/yc_ZTspSGZ8/s400/P3.png" border="0" alt="" /></a></p>
<p>Here is an example of how to run <a href="http://horicky.blogspot.com/2008/11/hadoop-mapreduce-implementation.html">Map/Reduce framework</a> in the cloud.  Microsoft hasn&#8217;t provided a Map/Reduce solution at this moment but Simon mentioned that Dryad in Microsoft research may be a future Microsoft solution.  Interestingly, Simon also recommended Hadoop.</p>
<p>Of course, one challenge is how to move the data from the cloud in the first place.  In my earlier blog, I have describe <a href="http://horicky.blogspot.com/2009/08/skinny-straw-in-cloud-shake.html">some best practices </a>on this.</p>
<h2>4.  Use Cloud for Storage</h2>
<p>The idea of storing data into the cloud and no need to worry about DBA tasks.  Most cloud vendor provide large scale key/value store as well as RDBMS services.  Their data storage services will also take care of data partitioning, replication &#8230; etc.  Building <a href="http://horicky.blogspot.com/2009/11/nosql-patterns.html">cloud storage is a big topic</a> involving many distributed computing concepts and techniques, I have covered it in a <a href="http://horicky.blogspot.com/2009/11/nosql-patterns.html">separate blog</a>.</p>
<h2>5.  Use Cloud for Communication</h2>
<p>A <span style="bold;">queue</span> (or mailbox) service provide a mechanism for different machines to communicate in an asynchronous manner via message passing.<br />
<a href="http://4.bp.blogspot.com/_j6mB7TMmJJY/SwYsvJbTyOI/AAAAAAAAAUk/cFQGNjplDlM/s1600/P5.png"><img style="118px;" src="http://4.bp.blogspot.com/_j6mB7TMmJJY/SwYsvJbTyOI/AAAAAAAAAUk/cFQGNjplDlM/s320/P5.png" border="0" alt="" /></a><br />
Azure also provide a <span style="bold;">relay service</span> in the cloud which is quite useful for machines behind different firewall to communicate.  In a typical firewall setup, incoming connection is not allowed so these machine cannot directly establish a socket to each other.  In order for them to communicate, each need to open an on-going socket connection to the cloud relay, which will route traffic between these connections.</p>
<p><a href="http://3.bp.blogspot.com/_j6mB7TMmJJY/SwYtJzwTCEI/AAAAAAAAAU0/L_i0ubRjVks/s1600/P6.png"><img style="208px;" src="http://3.bp.blogspot.com/_j6mB7TMmJJY/SwYtJzwTCEI/AAAAAAAAAU0/L_i0ubRjVks/s400/P6.png" border="0" alt="" /></a></p>
<p>I have used the same technique in a previous P2P project where user&#8217;s PC behind their firewall need to communicate, and I know this relay approach works very well.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.globallogic.com/five-cloud-computing-patterns/feed</wfw:commentRss>
		</item>
		<item>
		<title>Amazon Cloud Computing Stack</title>
		<link>http://blogs.globallogic.com/amazon-cloud-computing-stack</link>
		<comments>http://blogs.globallogic.com/amazon-cloud-computing-stack#comments</comments>
		<pubDate>Fri, 13 Nov 2009 17:21:19 +0000</pubDate>
		<dc:creator>RickyHo</dc:creator>
		
		<category><![CDATA[Enterprise 2.0]]></category>

		<category><![CDATA[Technology]]></category>

		<category><![CDATA[amazon]]></category>

		<category><![CDATA[aws]]></category>

		<category><![CDATA[Cloud]]></category>

		<category><![CDATA[cloud computing]]></category>

		<guid isPermaLink="false">http://blogs.globallogic.com/?p=801</guid>
		<description><![CDATA[Cloud computing is becoming a very hot area as it provides cost savings and time-to-market benefits to a wide spectrum of organizations.
At the consumer end, small startup companies found Cloud computing can significantly reduce their initial setup cost. Large enterprises also found Cloud computing allows them to improve resource utilization and cost effectiveness, although they [...]]]></description>
			<content:encoded><![CDATA[<p>Cloud computing is becoming a very hot area as it provides cost savings and time-to-market benefits to a wide spectrum of organizations.</p>
<p>At the consumer end, small startup companies found Cloud computing can significantly reduce their initial setup cost. Large enterprises also found Cloud computing allows them to improve resource utilization and cost effectiveness, although they also have security and control concerns. <a href="http://horicky.blogspot.com/2008/12/does-cloud-computing-make-sense-for.html">Here is a very common cloud deployment model</a> across many large enterprises.</p>
<p>Traditional software companies who distributes software on CD also look into the SaaS model as a new way of doing business. However, a SaaS model typically requires the companies to build some kind of web site. But these companies may not have the expertise to build large scale web sites and operate it. Cloud computing also allows them to outsource the SaaS infrastructure.</p>
<p>Here we look at the leader in the cloud computing provider space.  AWS from Amazon.</p>
<h2>Amazon Web Service</h2>
<p>Amazon is the current leading provider in the Cloud computing space. At the heart of its technology stack (which is known as the Amazon Web Services), it includes an IaaS stack, a PaaS stack and a SaaS stack.</p>
<ol>
<li>Their <span style="130%;"><span style="bold;">IaaS stack</span></span> includes infrastructure resource such as virtual machine, virtual mount disks, virtual network, load balancer, VPN, Databases.</li>
<li>Their <span style="130%;">PaaS stack</span> provides a set of distributed computing services including queuing, data storage, metadata, parallel batch processing,</li>
<li>Their <span style="130%;">SaaS stack</span> provides a set of high level services such as content delivery network, payment processing services, ecommerce fulfillment services.</li>
</ol>
<p>Since we are focusing in the Cloud Computing aspects, we will describe their IaaS and PaaS stack below but will skip their SaaS stack.</p>
<h2>EC2 – Elastic Computing</h2>
<p>Amazon has procured a large number of commoditized Intel boxes running virtualization software Xen. On top of Xen, Linux or Windows can be run as the guest OS . The guest operating system can have many variations with different set of software packages installed.</p>
<p>Each configuration is bundled as a custom machine image (called AMI). Amazon host a catalog of AMI for the users to choose from. Some AMI is free while other requires a usage charge. User can also customize their own setup by starting from a standard AMI, make their special configuration changes and then create a specific AMI that is customized for their specific needs. The AMIs are stored in Amazon’s storage subsystem S3.</p>
<p>Amazon also classifies their machines in terms of their processor power (no of cores, memory and disk size) and charged their usage at a different rate. These machines can be run in different network topology specified by the users. There is an “availability zone” concept which is basically a logical data center. “Availability zone” has no interdependency and is therefore very unlikely to fail at the same time. To achieve high availability, users should consider putting their EC2 instances in different availability zones.</p>
<p>“Security Group” is the virtual firewall of Amazon EC2 environment. EC2 instances can be grouped under “security group” which specifies which port is open to which incoming range of IP addresses. So EC2 instances that running applications at various level of security requirements can be put into appropriated security groups and managed using ACL (access control list). Somewhat very similar to what network administrator configure their firewalls.</p>
<p>User can start the virtual machine (called an EC2 instance) by specifying the AMI, the machine size, the security group, and its authentication key via command line or an HTTP/XML message. So it is very easy to startup the virtual machine and start running the user’s application. When the application completes, the user can also shutdown the EC2 instance via command line or HTTP/XML message. The user is only charged for the actual time when the EC2 instance is running.</p>
<p>One of the issue of extremely dynamic machine configuration (such as EC2) is that a lot of configuration setting is transient and does not survive across reboot. For example, the node name and IP address may have been changed, all the data stored in local files is lost. Latency and network bandwidth between machines may also have changed. Fortunately, Amazon provides a number of ways to mitigate these issues.</p>
<ul>
<li>By paying some charge, user can reserve a stable IP address, called “elastic IP”, which can be attached to EC2 instance after they bootup. External facing machine is typically done this way.</li>
<li>To deal with data persistence, Amazon also provides a logical network disk, called “elastic block storage” to store the data. By paying some charges, EBS is reserved for the user and it survives across EC2 reboots. User can attach the EBS to EC2 instances after the reboot.</li>
</ul>
<h2>EBS – Elastic Block Storage</h2>
<p>Based on RAID disks, EBS provides a persistent block storage device for data persistence where user can attach it to a running EC2 instance within the same availability zone. EBS is typically used as a file system that is mounted to EC2 instance, or as raw devices for database.</p>
<p>Although EBS is a network devices to the EC2 instance, benchmark from Amazon shows that it has higher performance than local disk access. Unlike S3 which is based on eventual consistent model, EBS provides strict consistency where latest updates are immediately available.</p>
<h2>CloudWatch &#8212; Monitoring Services</h2>
<p>CloudWatch provides an API to extract system level metrics for each VM (e.g. CPU, network I/O and disk I/O) as well as for each load balancer services (e.g. response time, request rate). The collected metrics is modeled as a multi-dimensional data cube and therefore can be queried and aggregated (e.g. min/max/avg/sum/count) in different dimensions, such as by time, or by machine groups (by ami, by machine class, by particular machine instance id, by auto-scaling group).</p>
<p>This metrics is also used to drive the auto-scaling services (described below). Note that the metrics are predefined by Amazon and custom metrics (application level metrics) is not supported at this moment.</p>
<h2>Load Balancing Services</h2>
<p>Load balancer provides a way to group identical VMs into a pool. Amazon provides a way to create a software load balancer in a region and then attach EC2 instances (of the same region) to the it. The EC2 instances under a particular load balancer can be in different availability zone but they have to be in the same region.</p>
<h2>Auto-Scaling Services</h2>
<p>Auto-scaling allows the user to group a number of EC2 instances (typically behind the same load balancer) and specify a set of triggers to grow and shrink the group. Trigger defines the condition which is matching the collected metrics from the CloudWatch and match that against some threshold values. When match, the associated action can be to grow or shrink the group.</p>
<p>Auto-scaling allows resource capacity (number of EC2 instances) automatically adjusted to the actual workload. This way user can automatically spawn more VMs as the workload increases and shutdown the VM as the load decreases.</p>
<h2>Relational DB Services</h2>
<p>RDS is basically running MySQL in the EC2.</p>
<h2>S3 – Simple Storage Service</h2>
<p>Amazon S3 provides a HTTP/XML services to save and retrieve content. It provides a file system-like metaphor where “objects” are group under “buckets”. Based on a REST design, each object and bucket has its own URL.</p>
<p>With HTTP verbs (PUT, GET, DELETE, POST), user can create a bucket, list all the objects within the bucket, create object within a bucket, retrieve an object, remove an object, remove a bucket … etc.</p>
<p>Under S3, each object has a unique URI which serves as its key. There is no query mechanism in S3 and User has to lookup the object by its key. Each object is stored as an opaque byte array with maximum 5GB size. S3 also provides an interesting partial object retrieval mechanism by specifying the ranges of bytes in the URL.</p>
<p>However, partial put is not current support but it can be simulated by breaking the large object into multiple small objects and then do the assembly at the app level. Breaking down the object also help to speed up the upload and download by doing the data transfer in parallel.</p>
<p>Within Amazon S3, each S3 objects are replicated across 2 (or more) data center and also cache at the edge for fast retrieval.</p>
<p>Amazon S3 is based on an “eventual consistent” model which means it is possible that an application won’t see the change it just made. Therefore, some degree of tolerance of inconsistent view is required by the application. Application should avoid the situation of having two concurrent modifications to the same object. And application should wait for some time between updates, and also should expect all the data it reads is potentially stale for few seconds.</p>
<p>There is also no versioning concept in S3, but it is not hard to build one on top of S3.</p>
<h2>SimpleDB – queriable data storage</h2>
<p>Unlike S3 where data has to be looked up by key, SimpleDB provides a semi-structured data store with querying capability. Each object can be stored as a number of attributes where the user can search the object by the attribute name.</p>
<p>Similar to the concepts of “buckets “ and “objects” in S3, SimpleDB is organized as a set of “items” grouped by “domains”. However, each item can have a number of “attributes” (up to 256). Each attribute can store one or multiple values and the value must be a string (or a string array in case of multi-valued attribute). Each attribute can store up to 1K bytes, so it is not appropriate to store binary content.</p>
<p>SimpleDB is typically used as a metadata store in conjuction with S3 where the actual data is being stored. SimpleDB is also schema-less. Each item can define its own set of attributes and is free to add more or remove some attributes at runtime.</p>
<p>SimpleDB provides a query capability which is quite different from SQL. The “where” clause can only match an attribute value with a constant but not with other attributes. On the other hand, the query result only return the name of the matched items but not the attributes, which means subsequent lookup by item name is needed. Also, there is no equivalent of “order by” and the returned query result is unsorted.</p>
<p>Since all attribute are store as strings (even number, dates … etc). All comparison operation is done based on lexical order. Therefore, special encoding is needed for data type such as date, number to string to make sure comparison operation is done correctly.</p>
<p>SimpleDB is also based on an eventual consistency model like S3.</p>
<h2>SQS – Simple Queue Service</h2>
<p>Amazon provides a queue services for application to communicate in an asynchronous way with each other. Message (up to 256KB size) can be sent to queues. Each queue is replicated across multiple data centers.</p>
<p>Enterprises use HTTP protocol to send messages to a queue. “At least once” semantics is provided, which means, when the sender get back a 200 OK response, SQS guarantees that the message will be received by at least one receiver.</p>
<p>Receiving messages from a queue is done by polling rather than event driven calling interface. Since messages are replicated across queues asynchronously, it is possible that receivers only get some (but not all) messages sent to the queue. But the receiver keep polling the queue, he will eventually get all messages sent to the queue. On the other hand, message can be delivered out of order or delivered more than once. So the message processing logic needs to be idempotent as well as independent of message arrival order.</p>
<p>Once message is taken by a receiver, the message is invisible to other receivers for a period of time but it is not gone yet. The original receiver is supposed to process the message and make an explicit call to remove the message permanently from the queue. If such “removal” request is not made within the timeout period, the message will be visible in the queue again and will be picked up by subsequent receivers.</p>
<h2>Elastic Map/Reduce</h2>
<p>Amazon provides an easy way to run Hadoop Map/Reduce in the EC2 environment. They provide a web UI interface to start/stop a Hadoop Cluster and submit jobs to it. For a detail of <a href="http://horicky.blogspot.com/2008/11/hadoop-mapreduce-implementation.html">how Hadoop works</a>, see <a href="http://horicky.blogspot.com/2008/11/hadoop-mapreduce-implementation.html">here</a>.</p>
<p>Under elastic MR, both input and output data are stored into S3 rather than HDFS. This means data need to be loaded to S3 before the Hadoop processing can be started. Elastic also provides a job flow definition so user can concatenate multiple Map/Reduce job together. Elastic MR supports the program to be written in Java (jar) or any programming language (Hadoop streaming) as well as PIG and Hive.</p>
<h2>Virtual Private Cloud</h2>
<p>VPC is a VPN solution such that the user can extend its data center to include EC2 instances running in the Amazon cloud. Notice that this is an &#8220;elastic data center&#8221; because its size can grow and shrink when the user starts / stops EC2 instances.</p>
<p>User can create a VPC object which represents an isolated virtual network in the Amazon cloud environment and user can create multiple virtual subnets under a VPC. When starting the EC2 instance, the subnet id need to be specified so that the EC2 instance will be put into the subnet under the corresponding VPC.</p>
<p>EC2 instances under the VPC is completely isolated from the rest of Amazon&#8217;s infrastructure at the network packet routing level (of course it is software-implemented isolation). Then a pair of gateway objects (VPN Gateway on the Amazon side and Customer gateway on the data center side) need to be created. Finally a connection object is created that binds these 2 gateway objects together and then attached to the VPC object.</p>
<p>After these steps, the two gateway will do the appropriate routing between your data center and the Amazon VPC with VPN technologies used underneath to protect the network traffic.</p>
<h2>Things to watch out</h2>
<p>I personally think Amazon provides a very complete set of services that is sufficient for a wide spectrum of deployment scenarios. Nevertheless, there are a number of limitations that needs to pay attention to …</p>
<ol>
<li>There are no Cloud standards today. Whatever choice made for a provider will imply some degree of lock-in to a vendor specific architecture. Amazon is no exception. One way to minimize such lock-in is to introduce an insulation layer to localize all the provider-specific API.</li>
<li>Cloud providers typically run their infrastructure on low-cost commodity hardware inside some data center with network connected between them. Amazon is not making their hosting environment very transparently and so it is not very clear how much reliability one can expect from their environment. On the other hand, the SLA guarantee that Amazon is willing to provide is relatively low.</li>
<li>Multicast communication is not supported between EC2 instances. This means application has to communicate using TCP point-to-point protocol. Some cluster replication framework based on IP multicast simply doesn’t work in EC2 environment.</li>
<li>EBS currently cannot be attached to a multiple EC2 instance at the same time. This means some application (e.g. Oracle cluster) which based on having multiple machines accessing a shared disk simply won’t work in EC2 environment.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blogs.globallogic.com/amazon-cloud-computing-stack/feed</wfw:commentRss>
		</item>
		<item>
		<title>The tale of two Webs</title>
		<link>http://blogs.globallogic.com/the-tale-of-two-webs</link>
		<comments>http://blogs.globallogic.com/the-tale-of-two-webs#comments</comments>
		<pubDate>Thu, 12 Nov 2009 20:11:24 +0000</pubDate>
		<dc:creator>Sachin Saxena</dc:creator>
		
		<category><![CDATA[Enterprise 2.0]]></category>

		<category><![CDATA[Marketing]]></category>

		<category><![CDATA[Technology]]></category>

		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://blogs.globallogic.com/?p=796</guid>
		<description><![CDATA[ Web 2.0 vs. Web 1.0 The tale of these two Webs is best told once we understand the meaning, importance and the differences between the following key words for each of the two versions of the web: 
* Communities * Content * Communication  *Conversations 
Communities: Humans are social creature and associating with a [...]]]></description>
			<content:encoded><![CDATA[<p><span style="14px;"> <strong>Web 2.0 vs. Web 1.0</strong> The tale of these two Webs is best told once we understand the meaning, importance and the differences between the following key words for each of the two versions of the web: </span></p>
<p><span style="14px;">* Communities * Content * Communication  *Conversations </span></p>
<p><span style="14px;"><strong>Communities</strong>: Humans are social creature and associating with a ‘tribe’ is a very basic instinct for most of us. We identify ourselves by the places where we were born or live, schools we attended, religious beliefs we practice, professions organization we belong to, companies we work for and a whole slew of such groupings. The groups can be professional or personal and everything in between. Web 1.0 was very informational centric and did not include the community aspect. It did not foster any sense of community, the sense of belonging. So in a sense Web 1.0 did very little to address one of the very basic human nature.</span></p>
<p><span style="14px;"><strong>Content</strong>: Content is king. However not all kings are created equals, there are emperors, kings and chiefs. Similarly all content is not created equal. In content world, one of the biggest differentiator is content creator. In the world of Web 1.0, because of the inherent cost related to content publishing and distribution, content was locked-up to the few. For example corporate marketing defined all out bound messaging. However, within any industry, groups or company there are leaders and experts, example company CTO or somebody who is an influencer in your group. Their voice and opinions are important to a more targeted group. The third type of content is the idle chat between friends, or a water cooler talk between co-workers, think Facebook. People have various personas, and there is place for all these types of conversation in each person’s life. </span></p>
<p><span style="14px;">Whereas Web 1.0 was mostly for the first persona of content creators, Web 2.0 covers all types of content. In the Web 2.0 world, Wikipedia replaced Encyclopedias, Corporate Wiki replaced the intranet and your LinkedIn post of “Tell your network what you are doing” and IM status replaced the Post-it notes of “Do not disturb” sign outside the cubicle. </span></p>
<p><span style="14px;"><strong>Communication</strong>: Communication is a two way dialog. In the real world it happens top down, bottom up, and sideways. The first version of the web was top down, talk only as it had no listen capability. In a sense it allowed for a very uninteresting monolog. Web 2.0 is about two way communication, it is about a dialog. </span></p>
<p><span style="14px;">It put people and their communities in the center of all the dialogs. In the first incarnation of the web, this interaction was left to the physical world. Communication is about collaboration and conversations. It is about linking, sharing and interacting. Web 2.0 provided a platform to do all of this. </span></p>
<p><span style="14px;">With so much content and so many conversations and no moderator, the problem of information overload became even more acute. Web 2.0 addressed this problem with a unique ‘wisdom of the crowds’ who provide the moderation by ‘following on twitter’, rating and ranking associated with both the content providers and their content. Comments, bookmarks, ‘..also bought’ (at Amazon), thumbs-up/ down, defined the features that link between relevant content to their communities and allowed them to have a meaningful conversation. </span></p>
<p><span style="14px;"><strong>What role has Web 2.0 played in giving rise to the era of blogging and to social networking?</strong> </span></p>
<p><span style="14px;">Some of the key Web 2.0 technologies include </span></p>
<p><span style="14px;">*Social Networking site </span></p>
<p><span style="14px;">*Wikis, Blogs &amp; Micro blog </span></p>
<p><span style="14px;">*Mash-ups, Video and Podcast </span></p>
<p><span style="14px;">There are five specific business objectives of most communication — to listen, to talk, to energize, to support, and to embrace. Individuals and companies are using Web 2.0 technologies to communicate with their customers, business partners, employees and their industry groups. Blogging and Social networking are two of the more widely adopted Web 2.0 technologies. </span></p>
<p><span style="14px;">Often time, the users for these tools are viewed as outside of the company, but the audience can very likely be your employees too. Initial adoption of these technologies was done by companies trying to sell directly to the consumer, but companies that have traditionally sold to the Fortune 2000 or to SMB are also starting to adopt ways to bring these tools into their portfolio. The initial adopters of these tools were people who were in the front end of the sales and marketing, but now applications are being developed that are using these tools to support internal and backend processes. Imagine the CEO of a company who wants to engage in ‘chat dialog’ with thousands of employees. Think of the CTO who wants to communicate his product/ architecture vision to the engineers while including constructive feedback from his entire team. These tools are the enablers of these conversations. </span></p>
<p><span style="14px;"><strong>So how has the rise of Web 2.0 affected business and changed the way people work.</strong> </span></p>
<p><span style="14px;">Web 2.0 is still in its infancy within most organizations. However it has the prospect of changing how marketing departments engages with prospects and customers, how product managers interact with internal and external stake holders, how hiring and recruitment is done, how training is delivered, or how customer support performs their activities today. For example, it is not uncommon that marketing updates their websites once a quarter or every six months with messages that are very carefully crafted but that is totally gibberish to most. It does not have to happen that way. There is no reason why training departments should only conduct instructor led courses that are conducted at prescheduled times that are inconvenient to all and topics that are relevant to few. </span></p>
<p><span style="14px;"><strong>Where is the web 2.0 heading</strong> </span></p>
<p><span style="14px;">The future is hard to predict. However, some places where Web 2.0 is most like to go next could be.. </span></p>
<p><span style="14px;">•Adoption of these tools within the enterprise. Companies shall start using these constructs to reduce the friction and increase the speed in how work is done. Some have labeled this as ‘Enterprise 2.0’. Today integration of the corporate tools such as email, documents etc. is missing. Addressing issues such as security, compliance, would be important before these tools get wider acceptance within enterprise. </span></p>
<p><span style="14px;">•Web 2.0 is very text oriented today. Video, animation, audio, mobile smart phones are some fairly unexplored areas in the web 2.0 world. </span></p>
<p><span style="14px;">•So far Web 2.0 is mostly about free to consumers. Rise of the private club, where members pay to participate or pay for premium services, B2B services is another area that is relatively unexplored. </span></p>
<p><!--Session data--></p>
<p><!--Session data--></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.globallogic.com/the-tale-of-two-webs/feed</wfw:commentRss>
		</item>
		<item>
		<title>Designing SOA in a RESTful way</title>
		<link>http://blogs.globallogic.com/designing-soa-in-a-restful-way</link>
		<comments>http://blogs.globallogic.com/designing-soa-in-a-restful-way#comments</comments>
		<pubDate>Fri, 06 Nov 2009 18:24:51 +0000</pubDate>
		<dc:creator>RickyHo</dc:creator>
		
		<category><![CDATA[Enterprise 2.0]]></category>

		<category><![CDATA[Technology]]></category>

		<category><![CDATA[Rest]]></category>

		<category><![CDATA[SOA]]></category>

		<category><![CDATA[Web services]]></category>

		<guid isPermaLink="false">http://blogs.globallogic.com/?p=767</guid>
		<description><![CDATA[Based on the same architectural pattern of the web, “REST” has a growing dominance of the SOA (Service Oriented Architecture) implementation these days. In this article, we will discuss some basic design principles of REST.
SOAP : The Remote Procedure Call Model
Before the REST become a dominance, most of SOA architecture are built around WS* stack, [...]]]></description>
			<content:encoded><![CDATA[<p>Based on the same architectural pattern of the web, <strong>“REST”</strong> has a growing dominance of the SOA (Service Oriented Architecture) implementation these days. In this article, we will discuss some basic design principles of REST.</p>
<h2>SOAP : The Remote Procedure Call Model</h2>
<p>Before the REST become a dominance, most of SOA architecture are built around WS* stack, which is fundamentally a RPC (Remote Procedure Call) model.</p>
<p>Under this model, “Service” is structured as some “Procedure” exposed by the system. For example, WSDL is used to define the procedure call syntax (such as the procedure name, the parameter and their structure). SOAP is used to define how to encode the procedure call into an XML string. And there are other WS* standards define higher level protocols such as how to pass security credentials around, how to do transactional procedure call, how to discover the service location … etc.</p>
<p>Unfortunately, the WS* stack are getting so complicated that it takes a steep learning curve before it can be used. On the other hand, it is not achieving its original goal of inter-operability (probably deal to different interpretation of what the spec says).</p>
<p>In the last 2 years, WS* technology development has been slowed down and the momentum has been shifted to another model; REST.</p>
<h2>REST: The Resource Oriented Model</h2>
<p>REST (<strong>REpresentation State Transfer</strong>) is introduced by Roy Fielding when he captured the basic architectural pattern that make the web so successful.  Observing how the web pages are organized and how they are linked to each other, REST is modeled around a large number of “Resources” which “link” among each other.</p>
<p>As a significant difference with WS*, REST raises the importance of “Resources” as well as its “Linkage”, on the other hand, it push down the importance of “Procedures”.</p>
<p>Unlike the WS* model, “Service” in REST is organized as large number of “Resources”. Each resource will have a URI that make it globally identifiable. A resource is &#8220;represented&#8221; by some format of “Representation” which is typically extracted by an idempotent HTTP GET.</p>
<p>The &#8220;resource representation&#8221; can also embed other URI which refers to other resources.  This emulates an HTML link between web pages and provide a powerful way for the client to discover other services by traversing its links. It also make building SOA search engine possible.</p>
<p>On the other hand, REST down-play the “Procedure” aspect and define a small number of “action” based on existing HTTP Methods.</p>
<ol>
<li>To get a resource, use HTTP GET is used to get a representation of the resource</li>
<li>To search for a resource, use HTTP GET to its parent container to get a set of references to matched resources</li>
<li>To create a resource, use HTTP PUT if the client define the resource id.  Otherwise, use HTTP POST to the parent container URL</li>
<li>To modify a resource, REST use HTTP PUT with the new representation embedded inside the HTTP Body.</li>
<li>To delete a resource, REST use HTTP DELETE.</li>
<li>To get metadata of a resource, REST use HTTP HEAD.</li>
</ol>
<p>Notice that in all these cases, the HTTP Body doesn’t carry any information about the “Procedure”. This is quite different from WS* SOAP where the request is always made using HTTP POST.</p>
<p>At the first glance, it seems REST is quite limiting in terms of the number of procedures that it can supported. It turns out this is not the case, REST allows any “Procedure” (which has a side effect) to use HTTP POST.</p>
<p>Effectively, REST categorize the operations by its nature and associate well-defined semantics with these categories (ie: GET for read-only, PUT for update, DELETE for remove, all above are idempotent) while provide an extension mechanism for application-specific operations (ie: POST for application procedures which may be non-idempotent).</p>
<h2>URI Naming Convention</h2>
<p>Since resource is usually mapped to some state in the system, analyzing its lifecycle is an important step when designing how a resource is created and how an URI should be structured.</p>
<p>Typically there are some eternal, singleton “Factory Resource” which create other resources. Factory resource typically represents the “type” of resources. Factory resource usually have a static, well-known URI, which is suffixed by a plural form of the resource type.</p>
<p>Some factory resource examples are …</p>
<blockquote><p><code>http://xyz.com/books </code></p>
<p><code>http://xyz.com/users http://xyz.com/orders</code></p></blockquote>
<p>“Resource Instance”, which are created by the “Factory Resource” usually represents an instance of that resource type. “Resource instances” typically have a limited life span. Their URI typically contains some unique identifier so that the corresponding instance of the resource can be located.</p>
<p>Some resource instance examples are …</p>
<blockquote><p><code>http://xyz.com/books/4545 </code></p>
<p><code>http://xyz.com/users/123 </code></p>
<p><code>http://xyz.com/orders/2008/04/10/1001 </code></p></blockquote>
<p>If this object is a singleton object of that type, the id is not needed.</p>
<blockquote><p><code>http://www.xyz.com/library</code></p></blockquote>
<p>“Dependent Resource” are typically created and owned by an existing resource during part of its life cycle. Therefore “dependent resource” has an implicit life-cycle dependency on its owning parent.</p>
<p>When a parent resource is deleted, all the dependent resource it owns will be deleted automatically. Dependent resource use an URI which has prefix of its parent resource URI.</p>
<p>Some dependent resource examples are …</p>
<blockquote><p><code>http://xyz.com/books/4545/tableofcontent </code></p>
<p><code>http://xyz.com/users/123/shopping_cart</code></p></blockquote>
<h2>Creating Resource</h2>
<p>HTTP PUT is also used to create the object if the caller has complete control of assigning the object id, the request body contains the representation of the Object after successful creation.  <em><strong></strong></em></p>
<p><em><strong>Request</strong></em></p>
<blockquote><p><code>PUT /library/books/668102 HTTP/1.1<br />
Host: www.xyz.com<br />
Content-Type: application/xml<br />
Content-Length: nnn<br />
&lt;book&gt;<br />
&lt;title&gt;Restful design&lt;/title&gt;<br />
&lt;author&gt;Ricky&lt;/author&gt;<br />
&lt;/book&gt;</code></p></blockquote>
<p><em><strong>Response</strong></em></p>
<blockquote><p><code>HTTP/1.1 201 Created </code></p></blockquote>
<p>If the caller has no control in the object id, HTTP POST is made to the object’s parent container with the request body contains the representation of the Object. The response body should contain a reference to the URL of the created object. <em><strong></strong></em></p>
<p><em><strong>Request</strong></em></p>
<blockquote><p><code>POST /library/books HTTP/1.1<br />
Host: www.xyz.com<br />
Content-Type: application/xml<br />
Content-Length: nnn<br />
&lt;book&gt;<br />
&lt;title&gt;Restful design&lt;/title&gt;<br />
&lt;author&gt;Ricky&lt;/author&gt;<br />
&lt;/book&gt;</code></p></blockquote>
<p><em><strong>Response</strong></em></p>
<blockquote><p><code>HTTP/1.1 301 Moved<br />
Permanently Location: /library/books/668102</code></p></blockquote>
<p>To create a resource instance of a particular resource type, make an HTTP POST to the Factory Resource URI. If the creation is successful, the response will contain a URI of the resource that has been created.</p>
<p><strong>To create a book …</strong> <em><strong></strong></em></p>
<p><em><strong>Request</strong></em></p>
<blockquote><p><code>POST /books HTTP/1.1<br />
Host: xyz.com<br />
Content-Type: application/xml; charset=utf-8<br />
Content-Length: nnn<br />
&lt;book&gt;<br />
&lt;title&gt;...&lt;/title&gt;<br />
&lt;author&gt;Ricky Ho&lt;/author&gt;<br />
&lt;/book&gt;</code></p></blockquote>
<p><em><strong>Response</strong></em></p>
<blockquote><p><code>HTTP/1.1 201 Created<br />
Content-Type: application/xml; charset=utf-8<br />
Location: /books/4545<br />
&lt;ref&gt;http://xyz.com/books/4545&lt;/ref&gt;</code></p></blockquote>
<p>To create a dependent resource, make an HTTP POST (or PUT) to its owning resource’s URI</p>
<p><strong>To upload the content of a book</strong> (using HTTP POST) …  <em><strong></strong></em></p>
<p><em><strong>Request</strong></em></p>
<blockquote><p><code>POST  /books/4545  HTTP/1.1<br />
Host: example.org<br />
Content-Type: application/pdf<br />
Content-Length: nnnn<br />
{pdf data}</code></p></blockquote>
<p><em><strong>Response</strong></em></p>
<blockquote><p><code>HTTP/1.1 201 Created<br />
Content-Type: application/pdf<br />
Location: /books/4545/content<br />
&lt;ref&gt;http://xyz.com/books/4545/tableofcontent&lt;/ref&gt;</code></p></blockquote>
<p>HTTP POST is typically used to create a resource when its URI is unknown to the client before its creation. However, if the URI is known to the client, then an idempotent HTTP PUT should be used with the URI of the resource to be created. For example,  <strong></strong></p>
<p><strong>To upload the content of a book</strong> (using HTTP PUT) …</p>
<p><em><strong>Request</strong></em></p>
<blockquote><p><code>PUT  /books/4545/tableofcontent  HTTP/1.1<br />
Host: example.org<br />
Content-Type: application/pdf<br />
Content-Length: nnnn {pdf data}</code></p></blockquote>
<p><em><strong>Response</strong></em></p>
<blockquote><p><code>HTTP/1.1 200 OK</code></p></blockquote>
<h2>Finding Resources</h2>
<p>Make an HTTP GET to the factory resource URI, criteria pass in as parameters. (Note that it is up to the factory resource to interpret the query parameter).  <strong></strong></p>
<p><strong>To search for books </strong>with a certain author …  <em><strong></strong></em></p>
<p><em><strong>Request</strong></em></p>
<blockquote><p><code>GET /books?author=Ricky HTTP/1.1<br />
Host: xyz.com<br />
Content-Type: application/xml; charset=utf-8 </code></p></blockquote>
<p><em><strong>Response</strong></em></p>
<blockquote><p><code>HTTP/1.1 200 OK<br />
Content-Type: application/xml; charset=utf-8<br />
Content-Length: nnn<br />
&lt;books&gt;<br />
&lt;book&gt;<br />
&lt;ref&gt;http://xyz.com/books/4545&lt;/ref&gt;<br />
&lt;title&gt;...&lt;/title&gt;<br />
&lt;author&gt;Ricky&lt;/author&gt;<br />
&lt;/book&gt;<br />
&lt;book&gt;<br />
&lt;ref&gt;http://xyz.com/books/4546&lt;/ref&gt;<br />
&lt;title&gt;...&lt;/title&gt;<br />
&lt;author&gt;Ricky&lt;/author&gt;<br />
&lt;/book&gt;<br />
&lt;/books&gt;</code></p></blockquote>
<p><strong>Lookup a particular resource</strong> Make an HTTP GET to the resource object URI  Lookup a particular book…  <em><strong></strong></em></p>
<p><em><strong>Request</strong></em></p>
<blockquote><p><code>GET /books/4545 HTTP/1.1<br />
Host: xyz.com<br />
Content-Type: application/xml; charset=utf-8</code></p></blockquote>
<p><em><strong>Response</strong></em></p>
<blockquote><p><code>HTTP/1.1 200 OK<br />
Content-Type: application/xml; charset=utf-8<br />
Content-Length: nnn<br />
&lt;book&gt;<br />
&lt;title&gt;...&lt;/title&gt;<br />
&lt;author&gt;Ricky Ho&lt;/author&gt;<br />
&lt;/book&gt;</code></p></blockquote>
<p>In case the resource have multiple representation format. The client should specify within the HTTP header “Accept” of its request what format she is expecting.  <strong></strong></p>
<p><strong>Lookup a dependent resource</strong></p>
<p>Make an HTTP GET to the dependent resource object URI  Download the table of content of a particular book…  <em><strong></strong></em></p>
<p><em><strong>Request</strong></em></p>
<blockquote><p><code>GET /books/4545/tableofcontent HTTP/1.1<br />
Host: xyz.com<br />
Content-Type: application/pdf</code></p></blockquote>
<p><em><strong>Response</strong></em></p>
<blockquote><p><code>HTTP/1.1 200 OK<br />
Content-Type: application/pdf<br />
Content-Length: nnn<br />
{pdf data}</code></p></blockquote>
<h2>Modify a resource</h2>
<p>Make an HTTP PUT to the resource object URI, pass in the new object representation in the HTTP body  <strong></strong></p>
<p><strong>Change the book title</strong> …  <em><strong></strong></em></p>
<p><em><strong>Request</strong></em></p>
<blockquote><p><code>PUT /books/4545 HTTP/1.1<br />
Host: xyz.com<br />
Content-Type: application/xml; charset=utf-8<br />
Content-Length: nnn<br />
&lt;book&gt;<br />
&lt;title&gt;Changed title&lt;/title&gt;<br />
&lt;author&gt;Ricky Ho&lt;/author&gt;<br />
&lt;/book&gt;</code></p></blockquote>
<p><em><strong>Response</strong></em></p>
<blockquote><p><code>HTTP/1.1 200 OK</code></p></blockquote>
<h2>Delete a resource</h2>
<p>Make an HTTP DELETE to the resource object URI</p>
<p><strong>Delete a book</strong> …  <em><strong></strong></em></p>
<p><em><strong>Request</strong></em></p>
<blockquote><p><code>DELETE /books/4545 HTTP/1.1 Host: xyz.com </code></p></blockquote>
<p><em><strong>Response</strong></em></p>
<blockquote><p><code>HTTP/1.1 200 OK</code></p></blockquote>
<h2>Resource Reference</h2>
<p>In some cases, we do not want to create a new resource, but we want to add a “reference” to an existing resource. e.g. consider a book is added into a shopping cart, which is another resource.  <strong></strong></p>
<p><strong>Add a book into the shopping cart</strong> …  <em><strong></strong></em></p>
<p><em><strong>Request</strong></em></p>
<blockquote><p><code>POST  /users/123/shopping_cart  HTTP/1.1<br />
Host: xyz.com<br />
Content-Type: application/xml; charset=utf-8<br />
Content-Length: nnn<br />
&lt;?xml version="1.0" ?&gt;<br />
&lt;add&gt;<br />
&lt;ref&gt;http://xyz.com/books/4545&lt;/ref&gt;<br />
&lt;/add&gt;</code></p></blockquote>
<p><em><strong>Response</strong></em></p>
<blockquote><p><code>HTTP/1.1 200 OK</code></p></blockquote>
<p><strong>Show all items of the shopping cart</strong> …</p>
<p><em><strong>Request</strong></em></p>
<blockquote><p><code>GET  /users/123/shopping_cart  HTTP/1.1<br />
Host: xyz.com<br />
Content-Type: application/xml; charset=utf-8</code></p></blockquote>
<p><em><strong>Response</strong></em></p>
<blockquote><p><code>HTTP/1.1 200 OK<br />
Content-Type: application/xml; charset=utf-8<br />
Content-Length: nnn<br />
&lt;?xml version="1.0" ?&gt;<br />
&lt;shopping_cart&gt;<br />
&lt;ref&gt;http://xyz.com/books/4545&lt;/ref&gt;<br />
...<br />
&lt;shopping_cart&gt;</code></p></blockquote>
<p>Note that the shopping cart resource contains “resource reference” which acts as links to other resources (which is the books). Such linkages create a resource web so that client can discovery and navigate across different resources.  <strong></strong></p>
<p><strong>Remove a book from the shopping cart</strong> … <em><strong></strong></em></p>
<p><em><strong>Request</strong></em></p>
<blockquote><p><code>POST  /users/123/shopping_cart  HTTP/1.1<br />
Host: xyz.com<br />
Content-Type: application/xml; charset=utf-8<br />
Content-Length: nnn<br />
&lt;?xml version="1.0" ?&gt;<br />
&lt;remove&gt;<br />
&lt;ref&gt;http://xyz.com/books/4545&lt;/ref&gt;<br />
&lt;/remove&gt;</code></p></blockquote>
<p><em><strong>Response</strong></em></p>
<blockquote><p><code>HTTP/1.1 200 OK</code></p></blockquote>
<p>Note that we are using HTTP POST rather than HTTP DELETE to remove a resource reference. This is because we are remove a link but not the actual resource itself. In this case, the book still exist after it is taken out from the shopping cart.</p>
<p>What if the book itself is deleted ?  In this case, all the shopping cart that refers to that book need to be fixed in an application specific way. One way is to do lazy checking. In other words, wait until the shopping cart checking out to check the book existence and fix it at that point.</p>
<p><strong>Checkout the shopping cart </strong>…  <em><strong></strong></em></p>
<p><em><strong>Request</strong></em></p>
<blockquote><p><code>POST  /orders  HTTP/1.1<br />
Host: xyz.com<br />
Content-Type: application/xml; charset=utf-8<br />
Content-Length: nnn<br />
&lt;?xml version="1.0" ?&gt;<br />
&lt;ref&gt;http://xyz.com/users/123/shopping_cart&lt;/ref&gt;</code></p></blockquote>
<p><em><strong>Response</strong></em></p>
<blockquote><p><code>HTTP/1.1 201 Created<br />
Content-Type: application/xml; charset=utf-8<br />
Location: /orders/2008/04/10/1001<br />
&lt;?xml version="1.0" ?&gt;<br />
&lt;ref&gt;http://xyz.com/orders/2008/04/10/1001&lt;/ref&gt;</code></p></blockquote>
<p>Note that here the checkout is implemented by creating another resource “Order” which is used to keep track of the fulfillment of the purchase.</p>
<h2>Asynchronous Request</h2>
<p>In case when the operation takes a long time to complete, an asynchronous mode should be used.</p>
<p>In a polling approach, a transient transaction resource is return immediately to the caller. The caller can then use GET request to poll for the result of the operation</p>
<p>We can also use a notification approach. In this case, the caller pass along a callback URI when making the request. The server will invoke the callback URI to POST the result when it is done.</p>
<p>In the polling approach, the basic idea is to immediately create a “Transaction Resource” to return back to the client. While the actual processing happens asynchronously in the background, the client at any time, can poll the “Transaction Resource” for the latest processing status.</p>
<p>Lets look at an example to request for printing a book, which may take a long time to complete  <strong></strong></p>
<p><strong>Print a book</strong> <em><strong>Request</strong></em></p>
<blockquote><p><code>POST  /books/123  HTTP/1.1<br />
Host: xyz.com<br />
Content-Type: application/xml; charset=utf-8<br />
Content-Length: nnn<br />
&lt;?xml version="1.0" ?&gt;<br />
&lt;print&gt;http://xyz.com/printers/abc&lt;/print&gt;</code></p></blockquote>
<p><em><strong>Response</strong></em></p>
<blockquote><p><code>HTTP/1.1 200 OK<br />
Content-Type: application/xml; charset=utf-8<br />
Location: /transactions/1234<br />
&lt;?xml version="1.0" ?&gt;<br />
&lt;ref&gt;http://xyz.com/transactions/1234&lt;/ref&gt;</code></p></blockquote>
<p>Note that a response is created immediately which contains the URI of a transaction resource, even before the print job is started. Client can poll the transaction resource to obtain the latest status of the print job.  <strong></strong></p>
<p><strong>Check the status</strong> of the print Job … <em><strong></strong></em></p>
<p><em><strong>Request</strong></em></p>
<blockquote><p><code>GET /transactions/1234 HTTP/1.1<br />
Host: xyz.com<br />
Content-Type: application/xml; charset=utf-8 </code></p></blockquote>
<p><em><strong>Response</strong></em></p>
<blockquote><p><code>HTTP/1.1 200 OK<br />
Content-Type: application/xml; charset=utf-8<br />
Content-Length: nnn<br />
&lt;transaction&gt;<br />
&lt;type&gt;PrintJob&lt;/type&gt;<br />
&lt;status&gt;In Progress&lt;/status&gt;<br />
&lt;/transaction&gt;</code></p></blockquote>
<p>It is also possible to cancel the transaction if it is not already completed.  <strong></strong></p>
<p><strong>Cancel the print job</strong> <em><strong>Request</strong></em></p>
<blockquote><p><code>POST  /transactions/1234  HTTP/1.1<br />
Host: xyz.com<br />
Content-Type: application/xml; charset=utf-8<br />
Content-Length: nnn<br />
&lt;?xml version="1.0" ?&gt;<br />
&lt;cancel/&gt;</code></p></blockquote>
<p><em><strong>Response</strong></em></p>
<blockquote><p><code>HTTP/1.1 200 OK</code></p></blockquote>
<h2>Conclusion</h2>
<p>The Resource Oriented Model that REST advocates provides a more natural fit for our service web. Therefore, I suggest that SOA implementation should take the REST model as a default approach.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.globallogic.com/designing-soa-in-a-restful-way/feed</wfw:commentRss>
		</item>
		<item>
		<title>Train-to-Retain - Simple Success Formula</title>
		<link>http://blogs.globallogic.com/train-to-retain-simple-success-formula</link>
		<comments>http://blogs.globallogic.com/train-to-retain-simple-success-formula#comments</comments>
		<pubDate>Sun, 23 Aug 2009 07:15:08 +0000</pubDate>
		<dc:creator>dhejov</dc:creator>
		
		<category><![CDATA[Enterprise 2.0]]></category>

		<category><![CDATA[Global Product Development]]></category>

		<category><![CDATA[HR]]></category>

		<category><![CDATA[Internal Training]]></category>

		<category><![CDATA[Organization]]></category>

		<category><![CDATA[Training]]></category>

		<guid isPermaLink="false">http://blogs.globallogic.com/?p=729</guid>
		<description><![CDATA[“When the going gets tough, tough gets going”. But the fact is tougher time ask for smarter and prudent strategies. Is shedding extra fat all what a can bulky corporate can rely on this time of recession? Is it due time to think beyond it?  As most economist believe that the grilling is over and sooner or [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="0in 0in 10pt;"><span style="small;">“When the going gets tough, tough gets going”. But the fact is tougher time ask for smarter and prudent strategies. Is shedding extra fat all what a can bulky corporate can rely on this time of recession? Is it due time to think beyond it? <span style="yes;"> </span>As most economist believe that the grilling is over and sooner or later a high tide is expected. So the tactical decisions for survival is over and what should be worrying most is the strategic decisions to be made. <span style="yes;"> </span>So the question is how to be prepared to take the new wave that will hit our doorstep sooner or latter.</span></p>
<p class="MsoNormal" style="0in 0in 10pt;"><span style="Calibri;"><span style="small;"><span style="yes;"> </span>Let us try to understand what keeps the dices rolling for each one of us.<span style="yes;">  </span>I recently came across a very interesting blog which claim that career is based on a simple formula:</span></span></p>
<p class="MsoNormal" style="0in 0in 10pt;"><span style="small;">Career = S +LT</span></p>
<p class="MsoNormal" style="0in 0in 10pt;"><span style="small;">Where S= gifted skills, L = Learning and T= time</span></p>
<p class="MsoNormal" style="0in 0in 10pt;"><span style="small;">Let us extend this formula to analyze the effectiveness of the workforce.</span></p>
<p class="MsoNormal" style="0in 0in 10pt;"><span style="Calibri;"><span style="small;">How is this formula relevant to corporate which hardily managed to come out to the tough recession tunnel? <span style="yes;"> </span></span></span></p>
<p class="MsoNormal" style="0in 0in 10pt;"><span style="small;">Let us look at how each of the parameter matters to corporate. As we all would agree the key factor in the formula is “S” yes the gifted skills. But the hard part is that this “S” directly equates to “Money”.</span></p>
<p class="MsoNormal" style="0in 0in 10pt;"><span style="small;">Every corporate will agree that in tough time acquiring the right skill is an expensive proposition. No doubts that acquiring the best in the market is the safest bet but of course not that feasible option.</span></p>
<p class="MsoNormal" style="0in 0in 10pt;"><span style="small;">Now what are we left with, “L” and “T”. “T” which equates to the experience of the workforce and seems to be a more lucrative option. I know that some eye brows are already rising. Does experience guarantees efficiency or even yield in proposition. That is a question he recruitment team will be more than happily to evade. </span></p>
<p class="MsoNormal" style="0in 0in 10pt;"><span style="small;"><span style="Calibri;">Let us be optimistic and look at the brighter side and believe “L” is directly proportional to “Productivity”</span><span style="Symbol;"> </span><span style="Calibri;">. Again the major stumbling stone would be the “Money” that we need to invest in acquiring experience. Experience which is for sure indispensable comes with a cost associated. </span></span></p>
<p class="MsoNormal" style="0in 0in 10pt;"><span style="small;">If the times were more rosy this would be a parameter that every corporate would be happy to settle with. But not when the times are tough and especially so wooly. </span></p>
<p class="MsoNormal" style="0in 0in 10pt;"><span style="small;">So what are we left with, that was simple yes “L”. Tough part is not elaborating the “L” but understanding it and effectively implementing it. Providing the workforce with efficient and effective means to learn might sound simple but hard to imbibe and harder to implement.</span></p>
<p class="MsoNormal" style="0in 0in 10pt;"><span style="small;">With high level of attrition laughing at the very crimson face of the corporate, should they still consider it as a viable option? I would like to differ give a different scenario as bringing in the most skill and experienced talent on board being the safest bet. </span></p>
<p class="MsoNormal" style="0in 0in 10pt;"><span style="small;">So are we talking about tactics of survival here? It would be completely wrong to say NO on my part, as I am not or at least that is not my intention. Let us take a leaf from our old chemistry book. I am sure everyone is aware of what a catalyst is capable of. Catalyst is a substance that accelerats the reaction without directly getting involved.</span></p>
<p class="MsoNormal" style="0in 0in 10pt;"><span style="small;">So what is this catalyst which came into picture from nowhere? Is it money? If it was money then we would not have bothered about “L” in the first place. So what is it?</span></p>
<p class="MsoNormal" style="0in 0in 10pt;"><span style="small;">I am sure everyone would act shocked but deep inside won’t mind say “Yes that was the missing piece”. Yes it is the very “Work Culture” we maintain in our corporate ecosystem that would be our life saving catalyst. I don’t want to emphasize more on it as I believe everyone would be more than happy to agree with me on this very fact. “Yes I am an optimistic person”</span></p>
<p class="MsoNormal" style="0in 0in 10pt;"><span style="small;">So let us revisit the formula (customized version)</span></p>
<p class="MsoNormal" style="0in 0in 10pt;"><span style="small;"><span style="small;"><a href="http://blogs.globallogic.com/wp-content/uploads/2009/08/formula.jpg"></a></span></span></p>
<p class="MsoNormal" style="0in 0in 10pt;"><a href="http://blogs.globallogic.com/wp-content/uploads/2009/08/formula.jpg"><img class="alignnone size-medium wp-image-733" src="http://blogs.globallogic.com/wp-content/uploads/2009/08/formula-300x15.jpg" alt="" width="300" height="15" /></a> </p>
<p class="MsoNormal" style="0in 0in 10pt;"><span style="small;">I am sure you are in a hurry to make a call to your training department. Good luck…..</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.globallogic.com/train-to-retain-simple-success-formula/feed</wfw:commentRss>
		</item>
		<item>
		<title>Agile, Innovation Games, and Conversation</title>
		<link>http://blogs.globallogic.com/agile-innovation-games-and-conversation</link>
		<comments>http://blogs.globallogic.com/agile-innovation-games-and-conversation#comments</comments>
		<pubDate>Tue, 18 Aug 2009 17:29:11 +0000</pubDate>
		<dc:creator>Johnny Scarborough</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Enterprise 2.0]]></category>

		<category><![CDATA[Global Product Development]]></category>

		<category><![CDATA[Web 2.0]]></category>

		<category><![CDATA[Add new tag]]></category>

		<category><![CDATA[Innovation Games]]></category>

		<guid isPermaLink="false">http://blogs.globallogic.com/?p=720</guid>
		<description><![CDATA[
I recently attended an Innovation games ™ class held by Luke Hohmann of Enthiosys , http://www.enthiosys.com , and during and more so after the class, was struck by the power of “conversation”. The class itself was focusing on how to harness the various Innovation Games ™ as Luke has described in his book, http://www.innovationgames.com/about/The+Book , [...]]]></description>
			<content:encoded><![CDATA[<p><!--StartFragment--></p>
<p class="MsoNormal">I recently attended an Innovation games ™ class held by Luke Hohmann of Enthiosys , <a href="http://www.enthiosys.com/">http://www.enthiosys.com</a> , and during and more so after the class, was struck by the power of “conversation”. The class itself was focusing on how to harness the various Innovation Games ™ as Luke has described in his book, <a href="http://www.innovationgames.com/about/The+Book">http://www.innovationgames.com/about/The+Book</a> , and how we could best apply them but it accomplished much more than that for me. <span> </span>Most of the folks in the class where already familiar with Innovation Games ™ and as well were experienced Scrum trainers, coaches and expert facilitators for Innovation Games ™. The class was extremely well structured and open to evolving as it suited us and was lead by a true master facilitator, Luke Hohmann.</p>
<p class="MsoNormal">The driving force throughout the class was the conversations we had and oh the conversations we had! It was a revealing experience for me in that the conversations would take us down the various experiences we all have had and by applying those experiences into the structure of the Innovation Games ™  we were able to harness all the data that we all brought to the table and transform that data into real information that we all could use in each of our future engagements and lives ahead. <span> </span></p>
<p class="MsoNormal">As I sat on the plane ride home and the last few weeks reflecting and digesting what had happened at the class I came to the realization that at the heart of any product/program/project development I have been involved with (whether professional or personal), that involves more than just a single person, it always begins with a conversation. Sometimes that initial conversation goes well and we head off full of vim and vigor on the journey to completion, sometimes that is where we essentially kill the idea&#8230; but in either case a conversation kicks or kills off the process of innovation. To me a conversation is essential to starting the process of innovation. <span> </span>But it definitely does not stop there…</p>
<p class="MsoNormal">One of the harder parts to innovation in product development is to keep the conversations going in an efficient and effective direction after you have been off building whatever it is you are building. This is but one place where I see the application of  Innovations Games ™ helping to move or better yet guide the conversations along.</p>
<p class="MsoNormal">As we see and know in practicing agile techniques for software development, conversations are a key component to success. In the 12 principles of the agile manifesto they tell us that conversations are important, to which there is no disagreement, Innovation games ™ is one more way for us to accomplish this and to have some fun in doing so.</p>
<p class="MsoNormal">Let us say that you are deep into a product development effort for a new web based travel site and you and your development team are attempting to make trade-offs now on what features you roll out with in your first release. <span> </span>Do I make the travel site more inclined to handle “XYZ” over “ABC”, Do I need to have feature “DEF” done first or can it wait till after feature<span> </span>“GHI”. Since, there is no way to do it all and have a reasonable time to market you need to ruthlessly re-prioritize. You are battling the ever present “prioritization wall of death” of what your development team and various other internal stakeholders feel are important and working to understand what your consumers want. Since you are practicing agile, you have come to know there are inevitable changes that have been or will be discovered along this journey that would be better to do than something previously thought of. It is also great to involve the possible end-users in this prioritization process so that you can deliver to their needs what they need and want first. This is where a couple of the Innovation Games ™ could help you out, “Buy a Feature” and/or “Prune the Product Tree”.<span> </span>Both are well suited in helping drive out what is more important to do first with Buy a feature being the one most directed at prioritizing features and Prune the product tree helping to round it all out by giving some customer driven shape to the product as a whole.<span> </span>You can read more about all the games as well as play some online at <a href="http://www.innovationgames.com/">http://www.innovationgames.com</a> .</p>
<p class="MsoNormal">Innovation Games ™ are a new way to deal with this all and really help to keep the conversations moving in the right direction as well help to find the new directions that may come about. <span> </span>I look forward to applying them in various ways to help our partners become more successful and to help them better harness the conversations that drive products forward.</p>
<p><!--EndFragment--></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.globallogic.com/agile-innovation-games-and-conversation/feed</wfw:commentRss>
		</item>
		<item>
		<title>Elastic Compute Cloud (EC2) Overview</title>
		<link>http://blogs.globallogic.com/elastic-compute-cloud-ec2-overview</link>
		<comments>http://blogs.globallogic.com/elastic-compute-cloud-ec2-overview#comments</comments>
		<pubDate>Mon, 27 Jul 2009 05:12:02 +0000</pubDate>
		<dc:creator>Ashwani Kumar</dc:creator>
		
		<category><![CDATA[Enterprise 2.0]]></category>

		<category><![CDATA[Global Product Development]]></category>

		<category><![CDATA[Technology]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.globallogic.com/?p=679</guid>
		<description><![CDATA[ Elastic Compute Cloud (EC2) Overview
Elastic Compute Cloud is an environment provided by Amazon for creating and running Virtual servers. It allows us to make manage a Virtual servers like real machines. For example: It allows us to run and install software of our choice on machine. It provides us flexibility to create as many [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="justify;"><!--[if gte mso 9]&gt;  Normal 0     false false false  EN-US X-NONE X-NONE              MicrosoftInternetExplorer4              &lt;![endif]--><!--[if gte mso 9]&gt;                                                                                                                                            &lt;![endif]--> <strong><span style="&quot;Arial&quot;,&quot;sans-serif&quot;;">Elastic Compute Cloud (EC2) </span></strong><strong><span style="&quot;Arial&quot;,&quot;sans-serif&quot;;">Overview</span></strong></p>
<p class="MsoNormal" style="justify;"><span style="&quot;Arial&quot;,&quot;sans-serif&quot;;">Elastic Compute Cloud is an environment provided by Amazon for creating and running Virtual servers. It allows us to make manage a Virtual servers like real machines. For example: It allows us to run and install software of our choice on machine.<span> </span>It provides us flexibility to create as many virtual servers we want, to use them in any way we want, and to use them any long we want. This whole process incurs cost corresponding to the resource we use and the time these resources are used.</span></p>
<p class="MsoNormal" style="justify;"><span style="&quot;Arial&quot;,&quot;sans-serif&quot;;">These virtual machines are handled by AMI’s and Instances. AMI is Amazon Machine Image which is responsible for booting a machine. </span></p>
<h3>Amazon Machine Image (AMI)</h3>
<p class="MsoNormal" style="justify;"><span style="&quot;Arial&quot;,&quot;sans-serif&quot;;">An AMI is a configuration of files, softwares and certain installations and data that helps in booting a virtual machine. An AMI can be used to boot more than one Virtual machine. Every AMI has a configuration and it opens up a machine with the same configuration. After logging onto a virtual machine, one can change the configuration of his machine and hence can update his AMI. </span></p>
<p class="MsoNormal" style="justify;"><span style="&quot;Arial&quot;,&quot;sans-serif&quot;;">There are several ways of creating and using an AMI: An AMI can be created from scratch. Some already created AMIs can be used for booting a machine. AMI can be created and shared on web and can be made accessible to public. AMI can be sold or rented using Amazon Devpay system. Amazon deducts hourly premium from the user.</span></p>
<h3><strong>Amazon EC2 Instance</strong></h3>
<p class="MsoNormal" style="justify;"><span style="&quot;Arial&quot;,&quot;sans-serif&quot;;">An instance is the building block of Amazon EC2. Each virtual machine corresponds to an instance. Running an instance means using one machine. A user has the root access over his instances. He can run as many or as few instances at the same time. </span></p>
<p class="MsoNormal" style="justify;"><span style="&quot;Arial&quot;,&quot;sans-serif&quot;;">Instances are categorized into two categories viz: </span><span style="&quot;Arial&quot;,&quot;sans-serif&quot;;">standard and High-CPU</span><span style="&quot;Times New Roman&quot;,&quot;serif&quot;;"> </span><span style="&quot;Arial&quot;,&quot;sans-serif&quot;;">depending on the performance, computational power and resources they provide. EC2 has its own benchmark for computing power e.g. : </span><span style="&quot;Arial&quot;,&quot;sans-serif&quot;;">an instance with a rating of 1 EC2 compute unit is expected to provide the same CPU capacity as a physical machine with a 1.0 to 1.2 GHz AMD Opteron processor, circa 2007. Standard instances are used for general purpose applications while High-CPU instances are used for applications requiring high computations. </span></p>
<p><span style="&quot;Arial&quot;,&quot;sans-serif&quot;;">Amazon EC2 provides renting capacity by an hour which means customers need not to buy or lease resources for months or years. In this technologically dynamic time, it becomes important not stuck by any commodity and keep room for yourself to change the newer one.</span></p>
<p><span style="&quot;Arial&quot;,&quot;sans-serif&quot;;">Every instance keeps a storage space along with it. This space is not permanent and hence is called “ephemeral store”. All the data stored in the instance storage is at risk of being lost. If an instance is intentionally or unintentionally rebooted then the data gets stored but it gets lost if instance terminates or underlying drive fails. So, it is always recommended to instance user to keep backup of the important data in Amazon S3.</span></p>
<p class="MsoNormal" style="justify;"><span style="&quot;Arial&quot;,&quot;sans-serif&quot;;">Amazon provides facility to its users to store their EC2 instances in any availability zone of their choice. The choice of availability is specified while launching an instance. <span> </span></span></p>
<p class="MsoNormal" style="justify;"><strong><span class="MsoIntenseEmphasis">Instance Addressing</span></strong></p>
<p class="MsoNormal" style="justify;"><span style="&quot;Arial&quot;,&quot;sans-serif&quot;;">Every instance has two IP addresses: a <strong>private address</strong> and a <strong>public address</strong>. </span></p>
<p class="MsoNormal" style="justify;"><span style="&quot;Arial&quot;,&quot;sans-serif&quot;;">Private address is reachable only within Amazon EC2 network and is used for communication among instances. <span> </span>Private address is associated with an instance for its lifetime. Communication among EC2 instances with private IP addresses ensures highest bandwidth, low latency path being used through the network. Every instance has an internal DNS name that resolves its private IP address inside Amazon EC2 network.</span></p>
<p class="MsoNormal" style="justify;"><span style="&quot;Arial&quot;,&quot;sans-serif&quot;;">Like private address has to do only within the EC2 network, there is public address that has to do only outside EC2 network. This address is reachable over the internet. It is mapped to private IP address using Network Access Translation (NAT). Every instance has public DNS name associated with it and it is used to resolve public address outside Amazon and private address within Amazon. <span> </span></span></p>
<p class="MsoNormal" style="justify;"><strong><span class="MsoIntenseEmphasis">Elastic IP Address</span></strong></p>
<p class="MsoNormal" style="justify;"><span style="&quot;Arial&quot;,&quot;sans-serif&quot;;">Elastic IP address is an address associated with any AWS account that can be mapped to any instance.</span></p>
<p class="MsoNormal" style="justify;"><span style="&quot;Arial&quot;,&quot;sans-serif&quot;;">Changing an existing DNS to a new instance creates problem because takes almost 24 hours to propagate the change through internet. Any request in the meantime to that DNS fails because it reaches the terminated instance.</span></p>
<p class="MsoNormal" style="justify;"><span style="&quot;Arial&quot;,&quot;sans-serif&quot;;">To cope with the problem Amazon comes out with Elastic IP addressing. Elastic IP address can be attached to any instance. If an instance fails, the Elastic IP address associated with it is attached to the new instance thus enabling the traffic to the old instance to get diverted to the new instance. </span></p>
<p class="MsoNormal" style="justify;"><strong><span class="MsoIntenseEmphasis">Network Security</span></strong></p>
<p class="MsoNormal" style="justify;"><span style="&quot;Arial&quot;,&quot;sans-serif&quot;;">Frequently adding or deleting instances raise some security issues to the instances as their firewall configuration depends on their DNS names. So in order to preserve the security, Amazon EC2 provides Security Groups. </span></p>
<p class="MsoNormal" style="justify;"><strong><span class="MsoIntenseEmphasis">Security Group</span></strong></p>
<p class="MsoNormal" style="justify;"><span style="&quot;Arial&quot;,&quot;sans-serif&quot;;">Security Group is a set of access rules that describes which incoming traffic should reach the instance and which should be discarded. The rules described in a security group are enforced to all the members. If there is any new instance in the group, then the rules are automatically enforced to it. An AWS account holder can have 100 security Groups.</span></p>
<p class="MsoNormal" style="justify;"><span style="&quot;Arial&quot;,&quot;sans-serif&quot;;">During the creation of instance; user can assign any number of groups to that instance. If an instance is not assigned any security Group then default security Group is automatically assigned to it. The rules in default Group are preconfigured but account holder can modify these as per his/her needs.</span></p>
<p class="MsoNormal" style="justify;">
<p class="MsoNormal"><span><em>In short Amazon EC2 is a web server which is online, easy to use and at cheap prices. It simply reduces the work of weeks into days and work of days into hours.</em></span><span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.globallogic.com/elastic-compute-cloud-ec2-overview/feed</wfw:commentRss>
		</item>
		<item>
		<title>McKinsey - Clearing the Air on Cloud Computing</title>
		<link>http://blogs.globallogic.com/mckinsey-clearing-the-air-on-cloud-computing</link>
		<comments>http://blogs.globallogic.com/mckinsey-clearing-the-air-on-cloud-computing#comments</comments>
		<pubDate>Tue, 23 Jun 2009 21:34:48 +0000</pubDate>
		<dc:creator>Sachin Saxena</dc:creator>
		
		<category><![CDATA[Enterprise 2.0]]></category>

		<category><![CDATA[Technology]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[cloud computing]]></category>

		<guid isPermaLink="false">http://blogs.globallogic.com/?p=567</guid>
		<description><![CDATA[The McKinsey &#38; Co. report titled Clearing the Air on Cloud Computing has been causing quite the uproar. Forbes, The Wall Street Journal, The New York Times and others have all written pieces quote the report saying &#8220;clouds are NOT very cost-effective&#8221;.
My thoughts on the topic.

McKinsey is thinking of cloud = infrastructure (slide #12). I [...]]]></description>
			<content:encoded><![CDATA[<p>The McKinsey &amp; Co. report titled <a title="Clearing the Air on Cloud Computing" href="http://www.slideshare.net/kvjacksn/mckinsey-co-clearing-the-air-on-cloud-compuitng" target="_blank">Clearing the Air on Cloud Computing</a> has been causing quite the uproar. Forbes, The Wall Street Journal, The New York Times and others have all written pieces quote the report saying &#8220;clouds are NOT very cost-effective&#8221;.</p>
<p>My thoughts on the topic.</p>
<ul>
<li>McKinsey is thinking of cloud = infrastructure (slide #12). I think that is too narrow.  They need to include services like Platform and Software. Together, the value proposition of the cloud is more powerful.</li>
<li>They use a new term called “cloud service” (Slide #18) which sounds like SaaS, but not sure about that definition.</li>
<li>Large enterprise will not adopt the public cloud in the near future.  Beyond the economics, they will have to overcome their fear about security, control and compliance. (Slide #22). I think in this category a B2B enterprise say Oracle is less likely to be early adoptor than NetFlix which is primarily a mass/ consumer driven company. They will experiment doing something piece meal.</li>
<li>Agree with the assertion that SMB will be the early adopters of the cloud.  Infact in our experience, some of the earliest adoptors were some really early stage companies which were &#8220;born on the cloud&#8221; (eg: <a title="SAP/ Knowledge as a Service" href="http://www.cumulusiq.com/" target="_blank">CumulusIQ </a>and <a title="Local/ Targeted ads" href="http://precisionads.com/" target="_blank">PrecisionAds</a>)</li>
</ul>
<p><!--Session data--></p>
<p><!--Session data--></p>
<p><!--Session data--></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.globallogic.com/mckinsey-clearing-the-air-on-cloud-computing/feed</wfw:commentRss>
		</item>
		<item>
		<title>Cloud Vocabulary</title>
		<link>http://blogs.globallogic.com/cloud-vocabulary</link>
		<comments>http://blogs.globallogic.com/cloud-vocabulary#comments</comments>
		<pubDate>Mon, 22 Jun 2009 22:32:14 +0000</pubDate>
		<dc:creator>Sachin Saxena</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Enterprise 2.0]]></category>

		<category><![CDATA[Technology]]></category>

		<category><![CDATA[Web 2.0]]></category>

		<category><![CDATA[Add new tag]]></category>

		<category><![CDATA[Cloud]]></category>

		<guid isPermaLink="false">http://blogs.globallogic.com/?p=559</guid>
		<description><![CDATA[ Gartner report points that we have reached the crescendo (or close to) of the hype cycle around cloud computing. There is a lot that has been written and said about this topic. If you break it down it comes to some fairly common set of words and some jargon. It is possible; people who [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal"><!--[if gte mso 9]&gt;    &lt;![endif]--><!--[if gte mso 9]&gt;  Normal 0   false false false        MicrosoftInternetExplorer4  &lt;![endif]--><!--[if gte mso 9]&gt;   &lt;![endif]--> <span style="x-small;"><span style="Arial;">Gartner report points that we have reached the crescendo (or close to) of the hype cycle around cloud computing. There is a lot that has been written and said about this topic. If you break it down it comes to some fairly common set of words and some jargon. It is possible; people who are saying and writing are rehashing the same set of materials! I did a rather simple exercise (not very scientific). For a period of two weeks wrote down common words that were used to describe cloud computing.<br />
</span></span></p>
<p class="MsoNormal">
<p class="MsoNormal"><span style="x-small;"><span style="Arial;">Here are my observations a) Lots of repetition. b) Some of these words are fairly generic and so they have probably multiple meanings to the author or speaker. c) Some of the words have negative connotations, not surprise to a rather bleeding edge computing paradigm. d) Lots of optimism and hence the hype (except maybe some big guys like Larry Ellison http://www.youtube.com/watch?v=0FacYAI6DY0)<br />
</span></span></p>
<p class="MsoNormal"><span style="x-small;"><span style="Arial;"> </span></span></p>
<p class="MsoNormal"><span style="x-small;"><span style="Arial;">Here are the common used words that you see in relation to cloud computing…</span></span></p>
<p class="MsoNormal">
<p><strong><span style="x-small;"><span style="Arial;">Utility computing, private clouds, public clouds, scaling, elastic, reliable, pay on use, on-demand, pay-per-drink, no hardware, no software, Software as Service, Infrastructure as a Service,<span> </span>Hardware as a Service, Virtualization, <span style="#ff6600;"><span style="#ff0000;">security concerns, lack of control, regulatory &amp;compliance issues</span></span></span></span></strong></p>
<p><!--Session data--></p>
<p><!--Session data--></p>
<p><!--Session data--></p>
<p><!--Session data--></p>
<p><!--Session data--></p>
<p><!--Session data--></p>
<p><!--Session data--></p>
<p><!--Session data--></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.globallogic.com/cloud-vocabulary/feed</wfw:commentRss>
		</item>
		<item>
		<title>The KaaS proposition</title>
		<link>http://blogs.globallogic.com/the-kaas-proposition</link>
		<comments>http://blogs.globallogic.com/the-kaas-proposition#comments</comments>
		<pubDate>Tue, 28 Apr 2009 19:59:11 +0000</pubDate>
		<dc:creator>Monty Kalsi</dc:creator>
		
		<category><![CDATA[Enterprise 2.0]]></category>

		<category><![CDATA[ERP]]></category>

		<category><![CDATA[KaaS]]></category>

		<category><![CDATA[Knowledge Marketplace]]></category>

		<category><![CDATA[SaaS]]></category>

		<guid isPermaLink="false">http://blogs.globallogic.com/?p=549</guid>
		<description><![CDATA[Buying knowledge is much cheaper than renting or migrating software..

KaaS doesn’t replace on-premise software, SaaS, or services; think of KaaS as a kind of motor oil that makes the whole ERP machine run faster. By making end users smarter, for a lower price point, KaaS reduces later reliance on overblown SI projects and questionable methodologies.]]></description>
			<content:encoded><![CDATA[<p>From my <a href="http://blog.spinact.com/knowledge_as_a_service/2009/04/the-kaas-proposition.html">Blog </a>on cumulusIQ</p>
<p>In any technology project, there are two axes of control: cost and risk. In the ERP world, we know that there is a high risk of failure and a high cost of implementation for both the underlying software and the services that accompany it. Meanwhile, a SaaS model reduces both risk and cost, but still represents real risks at the project level. KaaS is the only model that lowers risk and cost at the same time:</p>
<p class="MsoNormal" style="center;"><span><span><span style="underline;"><a href="http://blog.spinact.com/.a/6a00e55499485988330115703376bb970b-pi"><img class="at-xid-6a00e55499485988330115703376bb970b" src="http://blog.spinact.com/.a/6a00e55499485988330115703376bb970b-800wi" border="0" alt="Kaas" /></a><br />
</span></span></span></p>
<p class="MsoNormal"><span><span><span style="underline;"><br />
</span></span></span></p>
<p class="MsoNormal"><span><span>Buying knowledge is much cheaper than renting or migrating software; at cumulusIQ (previously SpinAct), for example, subscribing to a SAP Helpdesk service that includes knowledge FAQs and the ability to get on demand answers starts at a modest $2,000/month whereas even a simple </span></span><span><span>SaaS CRM </span></span><span><span>can cost you ten times as much </span></span><span><span>in an enterprise context.</span></span><span><span> Further at cumulusIQ entrprise customers control their own spend on knowledge and services and pay directly for performance.<br />
</span></span></p>
<p class="MsoNormal"><span><span>Buying knowledge also poses lowered project risk, for a couple of reasons. The first is that, when end users already know something about a technology or a methodology, they are better prepared to manage on-site consultants and to guide the success of a project. In ERP projects, one of the underlying problems is that the people who are going to use the technology don’t have the least idea of how it works, at either the technology or business process level; for that reason, it’s easy for SIs to overcharge clients and easy for the end users to become dependent on consultants whenever anything goes wrong (which it will).</span></span></p>
<p class="MsoNormal"><span><span>The premise of KaaS is that knowledge A)reduces the risk of a project going wrong and B)costs less than paying for someone else’s expertise. Sure, you may still need services, but going into an engagement armed with knowledge can let you cut down the number of hours you need from consultants, and can also let you have a say in the project methodology your own company needs to succeed. </span></span></p>
<p class="MsoNormal"><span><span><strong>KaaS doesn’t replace on-premise software, SaaS, or services; think of KaaS as a kind of motor oil that makes the whole ERP machine run faster.</strong> By making end users smarter, for a lower price point, KaaS reduces later reliance on overblown SI projects and questionable methodologies. </span></span></p>
<p class="MsoNormal"><span><span>Checkout what your peers had to say about the impact of “Knowledgeable in-house staff” on ERP project success from this recent </span></span><a href="http://polls.linkedin.com/poll-results/32659/qayru"><span><span>LinkedIn Poll</span></span></a><span><span> we conducted.</span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.globallogic.com/the-kaas-proposition/feed</wfw:commentRss>
		</item>
	</channel>
</rss>

