PodSpace is a public Container-as-a-Service cloud built for Docker from the ground up. It is actually more than that: it also provides a full set of Platform-as-a-Service features on top of the container management layer, but for now on let’s concentrate on the container orchestration stack.

To see a demonstration of the features covered here, check out this video:

Deploying Docker Containers

Deploying your application on PodSpace is very easy: you just create a Project, click on the Add to project button on the administration console, and select which Docker image you want to deploy. There is no prior configuration and setting up involved, you can just create an account and deploy your application in 2 minutes.

We have a collection of Docker images readily available in our application catalog, but you can just as easily deploy any image from the Docker Hub, or any other public or private Docker registry out there.

Networking and load balancing

We automatically create a virtual private network for every project that you create on PodSpace. All containers within a project are connected to the project’s virtual private network, and thus they are completely isolated from other projects and from the outside world.

So how will other people access your application, you might wonder. With just a couple of clicks, you can define and expose virtual load balancers which direct traffic to your containers. Based on what you have defined, our load balancing infrastructure will route incoming requests from your users to your application.

Scaling your applications

Speaking of load balancing: should you want to run multiple copies of a container, you can do that with a single click too. This is how it works: when you deploy a container to PodSpace, it starts the container in a Pod. Here is how it looks like after you have deployed an application:

View of the deployment status in the management console

All you have to do is to click on one of those two arrows you see at the right side of the deployment status box, and PodSpace automatically starts up new copies of your Pods if you have increased, or terminates them in case you lowered the number.

The virtual load balancers that you have defined for that application (BTW, they are called Services if internal, or Routes if exposed to the outside world) automatically adapt to the new topology.

But you don’t have to stand there and stare at your resource usages so that you can click on the up arrow when your application suddenly gets a burst of load: you can set up an autoscaler so that PodSpace scales your pods up and down as needed. Easy.

Private Docker Registry

With registering to PodSpace, you also get access to the PodSpace Docker Registry, where you can create an unlimited number of private or public repositories.

You can use the platform service features of PodSpace to build Docker images on the cloud (using Dockerfiles or source-to-image builds). These images will then be pushed into the PodSpace Docker Registry, but you can also push images into the registry externally.

For more information, refer to the Docker Registry and Builds FAQ categories.

Container Management and Monitoring

There is more than just deploying your containers. PodSpace also provides intelligent management and monitoring features. Here are a few:

Health Checks

By defining health checks, PodSpace can determine if your application is working properly. If it finds that an instance is not working, it is instantly put out of service (that is, no user requests get forwarded to it from the load balancer), and restarted. After restarting, the health checks are run again and the container gets put back into service.

You can define health checks in simple terms such as "consider my app healthy if it responds with HTTP 200 to this URL", or "consider my app healthy if it is listening on port 8080". Or you can define advanced heuristics by telling PodSpace to call a shell script inside your container to determine application health.

Defining health checks

Debugging

Investigating problems within Docker containers can be notoriously clumbersome without the right tools. With PodSpace, however, it is easy: you can open a shell session into any running container with just a click in your browser.

Opening a shell session in a container

Deployment Strategies

Let’s imagine that your application is in production, serving requests continuously. Let’s say it has to serve so much traffic that it’s scaled to multiple copies. Now what happens if you have made a new version and you want to deploy it to production?

Configuring deployment strategies

We provide automated processes that handle the version rollouts so that your users experience no downtime at all: for example, you can tell PodSpace to deploy the new Docker image one by one, by stopping an old container, starting up a new one, and then stopping the second old one, etc.

And in the meantime PodSpace is monitoring the health and readiness of your new containers: no traffic gets directed to the newly started containers until all health checks confirm that they are working properly. If something goes wrong, the deployment process stops and the old version is rolled back before your users notice anything!

The PodSpace Infrastructure

Our servers are located in Budapest, Hungary, in a state-of-the-art datacenter with 10Gbit/s international uplink to multiple IP transit providers.

Our software stack is made entirely out of open-source components:

PodSpace Software Stack
Docker

Docker is the world’s leading software container platform. It helps developers by eliminating "works on mi machine" problems when collaborating on code with co-workers and operators. It allows managing applications in isolated containers, and to build software delivery pipelines to streamline the application development and deployment lifecycle.

Kubernetes

Kubernetes is an open-source system created by Google, for automating deployment, scaling, and management of containerized applications. It is designed on the same principles that allows Google to run billions of containers a week. Kubernetes provides the Container-as-a-Service cloud functionality in the PodSpace stack.

OpenShift Container Platform

The OpenShift Container Platform is the third generation of Red Hat’s open-source Platform-as-a-Service solution, designed specifically for Docker and Kubernetes. It adds developer and operational centric capabilities to enable rapid application development, easy deployment and scaling, and long-term lifecycle maintenance for small and large teams and applications. OpenShift provides the Platform-as-a-Service features in the PodSpace Stack.

The public PodSpace cloud platform is based on these open-source components, and it is hosted and managed entirely by PodSpace, on our own infrastructure.

The overall architecture was designed to be highly available from the ground up, which implies that every hardware and software component in our architecture is redundant: there is no single point of failure which could stop the entire system from working.