Skip to content
Matthew Fisher edited this page Sep 27, 2013 · 6 revisions

This project was created by Team Alpha from BCIT COMP3900, Fall 2013. It involves implementing a “Big Data” data service within Stackato. Specifically, our task is to implement CouchDB as a service within Stackato.

ActiveState wants to add additional functionality to their flagship Stackato PaaS platform. A “Big Data” database system such as CouchDB should be hooked up to the platform. The CouchDB integration should be seamless; binding to applications and automatically recover from failure.

Our team selected CouchDB to integrate with Stackato for the following reasons:

  • It is easy to install and use, relative to other "Big Data" databases such as Cassandra and Hadoop.
  • It is well-documented.
  • It uses HTTP as its API, so it is web-aware and relatively easy to connect a service to.

Implementation and integration of CouchDB with Stackato involves automating the installation process, creating/deleting services, allowing it to bind to applications, and auto-configuration. The service must be hooked up to the existing monitoring system so it will be restarted if it fails to respond. In addition, we are required to create a sample application to show that our data service is in fact working. This project would have five main components:

  1. Developing the Stackato service in Ruby that connects CouchDB so the system recognizes the service and exposes it to the app that requires it.
  2. Installing and running CouchDB in the Stackato environment. (Ubuntu 12.04 LTS)
  3. Replication of CouchDB across multiple nodes. One of CouchDB’s strengths is the ability to synchronize two copies of the same database. This enables users not only to distribute data across several nodes or datacenters, but also to move data more closely to clients.
  4. Developing a demo app that demonstrates that the first two components are working. This application will provision a CouchDB service, bind to the service, perform CRUD (Create, Read, Update, Delete) functions in the database, and then unprovision the service when the application is deleted.
  5. Add auto-wiring of connectivity credentials for the language that our sample application uses.

To get started on preparing your development environment, please see Setting Up.

Clone this wiki locally