Wednesday, January 15, 2014

Why use WSO2 Storage Server

Typical Development Scenario with Data

Lets take a typical scenario of setting up an application development environment which needs to access a relational database.

With respect to handling the data side of things, the basic steps that need to be done are,
1. Create a database
2. Create permission templates
3. Create users with permission templates
4. Provide access to the database for different users with different permissions

The above can be done manually using the particular RDBMS tools. However, it is rare that one would simply setup a development environment for just one application with one type of data server. As various applications come through the data requirements would differ. Also it would be rare that all applications created can be satisfied with a relational database - there may be instances where a unstructured data storage mechanism is needed or a distributed file system is needed.

Whatever the data requirement is, the basic steps that need to be done would remain the same but the tool set used may differ depending on the data storage mechanism used. Thus arises the requirement for an abstraction which would provide such services providing the user a consistent interface to use while also doing the underlying actions with the required data storage system. WSO2's Storage Server provides the answer for this.

What is WSO2 Storage Server

WSO2 storage server is a platform which provides easy provisioning and managing of data storage systems for development purposes. This includes both structured as well as unstructured data storage systems. The storage server provides rapid provisioning and secure access to such data storage systems.
The storage server's management console provides a consistent management process for provisioning and managing relational, NoSQL Columnar and Hadoop distributed file system repositories alike. 

The highlight of WSO2 Storage server is that it is cloud aware and thus provides these services while taking into consideration cloud characteristics such as elasticity, scalability, tenant isolation, on demand self provisioning, metering and billing based on analytics.

What are the internal mechanics of WSO2 Storage Server

Looking at an example where an application uses a relational data store the following explains how WSO2's Storage Server works internally.
  • The storage server needs to be setup with the database server instance which acts as the container for the provisioned databases. A cluster of such containers is provided to the Storage Server configuration documents. 
  • Based on a round robin algorithm databases are created in each database server instance cluster.
  • The Storage  Server has it's own central database (RSS management database) which will contain all details pertaining to databases created, users created, users allocated and permissions created and granted. It is though this central database that all management activities are carried out.
  • If an application needs to have separate environments e.g. development and production then the storage server will enable provisioning environments which are logical boundaries separating database server instance cluster sets.
  • Once the databases have been created, privileges created, users created and allocated to the databases with privileges using the management console tables can be created and the created databases can be viewed.
  • Thereafter applications can access these databases in their applications.

Why you should use WSO2's Storage Server

When selecting a certain product for a need there are two main criteria that should be looked at.
  1. What the product does which are the basic features supported
  2. How these functional features are supported which points to the non-functional features of the product 

1. Functional features:
  • Provide a consistent management interface which handles provisioning and management of structured and unstructured data stores. 
  • Ability to be used on-premise as well as to be used in a private cloud.
  • Ability to monitor clusters created and obtain statistics of provisioning.
  • Support the concept of environment which enables an application to use different data stores based on the life cycle stage it is in through a single point interface.
  • Relational data stores
    • Ability to create databases, add users and privileges.
    • Provide a database console through which SQL queries can be run to create tables and also do data manipulation.
    • Ability to create data sources, edit privileges and detach users from databases.
  • Distributed File System based data stores - Hadoop
    • Provide an explorer to explore and navigate the file structure.
    • Ability to do operations such as folder management, file management, and file upload/download.
  • Columnar data stores - Cassandra 
    • Provide authentication and authorization.
    • Ability to create key spaces and create column families.
    • Ability to explore the cluster.
    • Provision to run CQL commands.
2. Non-functional features:
  • Usability
    • Consistency of operations across types of data storages.
    • Provides the basic functionality required.
    • Linked with WSO2 Developer Studio to provide an IDE based interface as well.
  • Availability and Reliability
    • The data stores are provisioned in a cluster which enables high availability and also reliability of data operations.
  • Scalability
    • Horizontally scalable through adding a node to the cluster.

So how do these features motivate one to use WSO2 Storage Server ?
  • It has a comprehensive set of features for provisioning and managing data storage requirements 
  • It's cloud nativeness opens up usability within a cloud solution. 
  • It does not lock you down to technology - users can always move if needed. 
  • It has high usability in terms of providing a consistent interface for all types of data storage.
  • It's linked up with a monitoring tool as well which provides critical information for decision making.
  • It understands the need for supporting scalability and providing a highly available service and provides the capability to execute these.

Looking at the above functional and non-functional features and the motivation points, it can be seen that WSO2's Storage Server provides all basic data storage provisioning and management functionality, supports the desired quality attributes, and, is cloud native as well which, enables it to be used in a cloudy environment thus qualifying as a comprehensive storage solution which can be used in any enterprise.

1 comment: