Appfabric cache is something which is not new to distributed computing world. Microsoft released it as code named "Velocity" on Windows Server 2008 family few years back and Azure Appfabric caching is more like extension of this on Azure Platform.
What is Appfabric Cache?
Before getting into different types of Distributed Cache, let us quickly understand the definition of Distributed Cache.
distributed caching is a form of caching that allows the cache to span multiple servers so that it can grow in size and in transactional capacity. Distributed caching has become feasible now for a number of reasons. First, memory has become very cheap, and you can stuff computers with many gigabytes at throwaway prices. Second, network cards have become very fast, with 1Gbit now standard everywhere and 10Gbit gaining traction. Finally, unlike a database server, which usually requires a high-end machine, distributed caching works well on lower cost machines (like those used for Web servers), which allows you to add more machines easily.
Distributed caching is scalable because of the architecture it employs. It distributes its work across multiple servers but still gives you a logical view of a single cache. For application data, a distributed cache keeps a copy of a subset of the data in the database. This is meant to be a temporary store, which might mean hours, days or weeks. In a lot of situations, the data being used in an application does not need to be stored permanently. In ASP.NET, for example, session data is temporary and needed for maybe a few minutes to a few hours at most.
Difference between Partitioned Cache and Replicated Cache:
Appfabric Cache supports three types of caching techniques.
1>Partitioned Cache
2>Replicated Cache
3>Local Cache.
I'm going to ignore Local Cache in this topic as this is something which is known to computing world for ages now.
To understand the difference between Partitioned Cached and Replicated Cache. let us imagine Azure Platform having a Cache Custer with 10 Cache Hosts (Servers).
now if you have 100 CLR objects which needs to be cached on this Cache Cluster.
Partitioned Caching will store 10 CLR objects each on 10 Cache Host and Application can do Get and Put operation of Cluster and Cluster in tern picks cached data from the host on which it stored.
Advantage: Partitioned Cache can store huge amount of data as data is distributed across the hosts. I.e, if you have 1GB of Data to be cached and if the cluster has 10 hosts, then each host will be storing 100 MB of data. Put operation will be fast.
Disadvantage: If any of the host server goes down, then data will be lost. in general High Availability is not possible and GET operation is going to be slow.
Replicated Caching will store all the 100 objects on each of the 10 Cache host on the above scenario. In general each cache host will be having replica of all the Cache Data. I.e, if you have 1 GB of data to be cached and if the cluster has 10 host, then each host will be having complete 1 GB of data. This option provides high availability but it comes will lot of memory cost. Put option is going to be slow as data has to be synchronized across all the Hosts.
Showing posts with label Azure Appfabric. Show all posts
Showing posts with label Azure Appfabric. Show all posts
Monday, February 27, 2012
Friday, December 16, 2011
The Pros and Cons of Cloud Platform Development
One of the first kind of argument which we had during our Cloud Computing training days was about "Why Cloud? and how it adds value to customers who are of small size and mid size?", in fact one of my colleague even today argues saying hosting applications on GoDaddy.com is better approach as it also provides 99.9% up time, paying as cheap as 10$ for hosting a small website, in fact GoDaddy now claims capable of instantly Scaling! There are several good reasons to do—and a few reasons to be, perhaps, a bit more cautious.
Advantages of Cloud Development
One of the underlying advantages of cloud development is that of economy of scale. By taking advantage of the infrastructure provided by a cloud computing vendor, a developer can offer better, cheaper, and more reliable applications than is possible within a single enterprise. Again the same argument may start, how it is cheaper and better?, but you will feel it only when you go for long run, The application can utilize the full resources of the cloud, if needed—without requiring a company to invest in similar physical resources.
Speaking of cost, because cloud services follow the one-to-many model, cost is significantly reduced over individual desktop program deployment. Instead of purchasing or licensing physical copies of software programs (one for each
desktop), cloud applications are typically “rented,” priced on a per-user basis. It’s more of a subscription model than an asset purchase (and subsequent depreciation) model, which means there’s less up-front investment and a more
predictable monthly expense stream. IT departments like cloud applications because all management activities are
managed from a central location rather than from individual sites or workstations. This enables IT staff to access applications remotely via the web. There’s also the advantage of quickly outfitting users with the software they need
(known as “rapid provisioning), and adding more computing resources as more users tax the system (automatic scaling). When you need more storage space or bandwidth, companies can just add another virtual server from the
cloud. It’s a lot easier than purchasing, installing, and configuring a new server in their data center.
For developers, it’s also easier to upgrade a cloud application than with traditional desktop software. Application features can be quickly and easily updated by upgrading the centralized application, instead of manually
upgrading individual applications located on each and every desktop PC in the organization. With a cloud service, a single change affects every user running the application, which greatly reduces the developer’s workload.
One of the underlying advantages of cloud development is that of economy of scale. By taking advantage of the infrastructure provided by a cloud computing vendor, a developer can offer better, cheaper, and more reliable applications than is possible within a single enterprise. Again the same argument may start, how it is cheaper and better?, but you will feel it only when you go for long run, The application can utilize the full resources of the cloud, if needed—without requiring a company to invest in similar physical resources.
Speaking of cost, because cloud services follow the one-to-many model, cost is significantly reduced over individual desktop program deployment. Instead of purchasing or licensing physical copies of software programs (one for each
desktop), cloud applications are typically “rented,” priced on a per-user basis. It’s more of a subscription model than an asset purchase (and subsequent depreciation) model, which means there’s less up-front investment and a more
predictable monthly expense stream. IT departments like cloud applications because all management activities are
managed from a central location rather than from individual sites or workstations. This enables IT staff to access applications remotely via the web. There’s also the advantage of quickly outfitting users with the software they need
(known as “rapid provisioning), and adding more computing resources as more users tax the system (automatic scaling). When you need more storage space or bandwidth, companies can just add another virtual server from the
cloud. It’s a lot easier than purchasing, installing, and configuring a new server in their data center.
For developers, it’s also easier to upgrade a cloud application than with traditional desktop software. Application features can be quickly and easily updated by upgrading the centralized application, instead of manually
upgrading individual applications located on each and every desktop PC in the organization. With a cloud service, a single change affects every user running the application, which greatly reduces the developer’s workload.
Disadvantages of Cloud Development
Perhaps the biggest perceived disadvantage of cloud development is the same one that plagues all web-based applications: Is it secure? Web-based applications have long been considered potential security risks. For this reason, many businesses prefer to keep their applications, data, and IT operations under their own control. In fact all big players are still following Wait and Watch kind of mode to enter the cloud.
Perhaps the biggest perceived disadvantage of cloud development is the same one that plagues all web-based applications: Is it secure? Web-based applications have long been considered potential security risks. For this reason, many businesses prefer to keep their applications, data, and IT operations under their own control. In fact all big players are still following Wait and Watch kind of mode to enter the cloud.
Another potential disadvantage is what happens if the cloud computing host goes offline? Although companies like Microsoft (Azure Platform), Amazon and Google say this isn't possible, only time can believe their claim.
Subscribe to:
Posts (Atom)