Jump to: navigation, search

RACK

RACK (Real Application Centric Kernel)

OpenStack Native Application

The present applications were designed at "before the cloud". As those applications are not intended for cloud, they need other tools such as Chef, Puppet, Ansible, Serf, etc to utilize the cloud power. Thus the systems tend to become more complex on the cloud. We must think the "after the cloud" application now.

The “after the cloud” application we think satisfies below.

  1. The application logic determines amount of required resources by itself.
  2. The application logic iterates allocations/releases of resources from cloud.
  3. Those allocations/releases behave like creation/deletion of process.

We named the application with such behavior “OpenStack Native Application”.

What is RACK?

RACK enables an application to control VMs like a linux process. It provides an application with PID, parent-child relationship, “Fork” / “Kill” VMs capabilities, interVM communication and message exchange without VM’s IP address. Ultimately, RACK enables you to implement a large scale distributed system in a variety of programming languages on OpenStack.

You can use RACK in many cases. Followings are some examples.

  • You can implement a new architecture application. For example, you can build an application that calculates the necessary amount of computing resource(i.e. instance) depending on the data to process and launches additional instances dynamically. Then, the data will be processed very quickly since these instances work in parallel. This new architecture application is suitable for processing a large amount of data.
  • You can integrate existing system such as batch system with Hadoop and Web application using RACK. For example, RACK enables you to deploy Hadoop cluster easily and add autoscale function to your Web applications.


Features

RACK provides some features as follows.

  • Additional attributes to an instance
    In order to treat an instance like a Linux process, RACK adds some additional attributes such as PID(process ID), PPID(parent's process ID) and GroupID(process group ID) to it. In the rest of the document, instance is called "process". This enables to control OpenStack as program resource easily. For example, when a process wants to create an additional process, the process executes fork method in the program. Then, a new process(i.e. child process) is created with the same image as well as connected to the same network with its parent process's. These processes are associated with a GroupID.
  • Interprocess Communication
    Processes can send a message with each other without knowing each other's IP address.
  • Shared Memory
    This enables to store data in key-value pairs. The shared memory space is allocated per a GroupID and each space is isolated. Process can add, get, edit and delete a key-value data.
  • File System
    This enables to store files. The file system is allocated per a GroupID and each one is isolated. Process can add, get and delete files.


Architecture Overview

RACK-Architecutre-Overview.png

Resources

SourceCode