Rahti - Services for Research
Rahti Container Cloud
Rahti is a cloud computing service that allows you to easily host applications and make them accessible over the web. It is based on OKD, which is a distribution of Kubernetes and runs end user applications in Docker containers. With Rahti, you get:
- Hosting of containerized applications
- Persistent storage for those applications
- Virtual networks for connecting your containers
- Load balancing of traffic to your applications
- An application catalog with many commonly used applications ready to deploy with a few clicks
- Features for replication, rolling updates, auto-recovery and auto-scaling of user applications
- Basic default domain name and TLS for hosted web applications (under rahtiapp.fi)
Customers can manage their resources using a web interface accessible through a web browser and through a set of APIs which allow programmatic management of resources. In order to access and use the service the customer must have a CSC user account.
The user's applications are separated from other users' applications from a
network, storage and computational view.
About Kubernetes and container orchestration
To understand why container orchestration platforms like Rahti are important, let's describe how a typical web based application that end users access via a web browser is built.
The application comprises a frontend that is the part of the application visible to users and a backend that handles various tasks in the background like storing user data in a database. The application runs a server process that clients access to interact with the application. It also accesses a database like PostgeSQL or MongoDB in the background to store user data.
The architects of this application must design it to keep the application running reliably, quickly and safely:
- Server hardware can fail, so the application must be replicated to multiple physical servers so that the failure of an individual server won't make the entire application inaccessible.
- A large number of users can cause load on the application. It must be possible to scale up the application by adding more application processes to prepare for increased user load.
- The connection to the application must be secure so that users can safely enter their data into the application without fearing eavesdroppers.
- User data must be stored reliably on a storage system that does replication.
You could create Linux virtual machines, install Docker on them and run the application directly using those, but there is a lot of additional work that you need to do to fulfill all of the above requirements. You would have to figure out how to manage multiple instances of the application running on several servers, how to direct incoming traffic evenly to all the application instances, how to store user data and how to quickly add more capacity when needed.
Luckily most applications have similar requirements, so the steps for creating good applications are often quite similar. This is where container orchestration systems come in. They handle many of the common tasks required for running robust web applications like distributing application instances on multiple servers, directing traffic to the application instances and providing persistent storage for databases.
Currently the most popular software for container orchestration is Kubernetes. It is based on earlier systems developed at Google over a decade. It is also what powers Rahti.