{"_id":"5702e5f118ad001700a2954f","project":"54d4ecb5f6c48a0d00f0f041","title":"Frequently Asked Questions","type":"basic","body":"##Why Instacount vs. an In-Memory Counter?\n\nIn-memory counting is extremely trivial, and makes sense for many day-to-day programming tasks.  However, in-memory counters are insufficient if any of the following are true for your use-case:\n\n1. **Global Accessibility:**  Your require processes that don't have access to local memory to be able to read, increment or decrement a counter.\n\n2. **Scalability:**  Your counter is mutated more frequently than the processing capacity of a single phone, tablet, virtual server, etc, allows.\n\n3. **Durability**:  Your counter needs to be able to survive a system crash, machine restart, network outage, or device loss.\n\nSome good examples of the above requirements include: \n\n  * Two or more batch processing jobs running in different virtual machines.\n  * Two or more browsers trying to access or mutate the same counter.\n  * A cluster of servers handling events coming from multiple sources.\n\nInstacount was designed to handle all of these use-cases by providing a counter that is **globally accessible**, **durable**, and can **scale** to handle nearly any load.\n\nIn fact, our first counter-type is a Sharded Counter, which is uniquely designed to handle a massively large number of concurrent increments to a single counter.  [Read more about sharded counters here](https://instacount.readme.io/docs/whats-a-sharded-counter).\n\n##Why Instacount vs. Creating My Own Service Backed by Durable Storage.\n\nAt Instacount, we believe that great software developers want to focus on writing great software, and **not** focus on maintaining servers, load balancers, database failover and other infrastructure just to make sure your counters are globally accessible, durable, and scale to handle any load.\n\nBut we know great software developers also know their use-cases best.  That's why we've open-sourced the sharded-counter software powering Instacount.  If you want to run it on your own, that's always an option.\n\nUsing the API, however, you'll also receive the same software without any of the work to setup infrastructure.  Plus, you can take advantage of optional enterprise support, a dashboard for organizing your applications, and any performance improvements that make it into our API such as the [Google Global CDN](https://cloud.google.com/compute/docs/load-balancing/http/cdn). \n\n##Why Instacount instead of Memcached, Cassandra, Redis, or Something Else?\n\nThere are many great tools available today that provide high-performance counting.  Instacount is build on top of the Google Cloud Datastore, which is the premiere NoSQL datastore implementation: [it powers](https://cloud.google.com/datastore/) many of Google's applications serving billions of users; is constantly [being improved](https://cloudplatform.googleblog.com/2016/04/Google-Cloud-Datastore-gets-faster-cross-platform-API.html); nearly never suffers [downtime](https://status.cloud.google.com/) because of its unique design; and is constantly being worked on by the best engineers in the world.\n\nThat's not to take anything away from the alternatives available for counting.  But when you couple the best-in-class software powering Instacount with a globally available solution that you don't have to worry about, we hope you'll consider Instacount when it comes to any of your counting needs.","createdAt":"2016-04-04T22:08:49.114Z","link_url":"","excerpt":"Questions and answers about Instacount","isReference":false,"slug":"frequently-asked-questions","updates":[],"user":"54d4ec36f6c48a0d00f0f040","__v":26,"api":{"auth":"required","params":[],"results":{"codes":[]},"settings":"","url":""},"category":"5702e5b8f2d6f336005e9025","version":"563a2dba1846790d00895309","sync_unique":"","githubsync":"","hidden":false,"link_external":false,"order":999,"childrenPages":[]}

Frequently Asked Questions

Questions and answers about Instacount

##Why Instacount vs. an In-Memory Counter? In-memory counting is extremely trivial, and makes sense for many day-to-day programming tasks. However, in-memory counters are insufficient if any of the following are true for your use-case: 1. **Global Accessibility:** Your require processes that don't have access to local memory to be able to read, increment or decrement a counter. 2. **Scalability:** Your counter is mutated more frequently than the processing capacity of a single phone, tablet, virtual server, etc, allows. 3. **Durability**: Your counter needs to be able to survive a system crash, machine restart, network outage, or device loss. Some good examples of the above requirements include: * Two or more batch processing jobs running in different virtual machines. * Two or more browsers trying to access or mutate the same counter. * A cluster of servers handling events coming from multiple sources. Instacount was designed to handle all of these use-cases by providing a counter that is **globally accessible**, **durable**, and can **scale** to handle nearly any load. In fact, our first counter-type is a Sharded Counter, which is uniquely designed to handle a massively large number of concurrent increments to a single counter. [Read more about sharded counters here](https://instacount.readme.io/docs/whats-a-sharded-counter). ##Why Instacount vs. Creating My Own Service Backed by Durable Storage. At Instacount, we believe that great software developers want to focus on writing great software, and **not** focus on maintaining servers, load balancers, database failover and other infrastructure just to make sure your counters are globally accessible, durable, and scale to handle any load. But we know great software developers also know their use-cases best. That's why we've open-sourced the sharded-counter software powering Instacount. If you want to run it on your own, that's always an option. Using the API, however, you'll also receive the same software without any of the work to setup infrastructure. Plus, you can take advantage of optional enterprise support, a dashboard for organizing your applications, and any performance improvements that make it into our API such as the [Google Global CDN](https://cloud.google.com/compute/docs/load-balancing/http/cdn). ##Why Instacount instead of Memcached, Cassandra, Redis, or Something Else? There are many great tools available today that provide high-performance counting. Instacount is build on top of the Google Cloud Datastore, which is the premiere NoSQL datastore implementation: [it powers](https://cloud.google.com/datastore/) many of Google's applications serving billions of users; is constantly [being improved](https://cloudplatform.googleblog.com/2016/04/Google-Cloud-Datastore-gets-faster-cross-platform-API.html); nearly never suffers [downtime](https://status.cloud.google.com/) because of its unique design; and is constantly being worked on by the best engineers in the world. That's not to take anything away from the alternatives available for counting. But when you couple the best-in-class software powering Instacount with a globally available solution that you don't have to worry about, we hope you'll consider Instacount when it comes to any of your counting needs.