CRIU is a cool open-source project that provides checkpoint/restore functionality in user-space for Linux. Among various use-cases like live-migration, debugging, we would mainly be focusing on instant startup of slow-to-start applications, specifically JVM based applications, which can help solve the problem of startup latency due to cold starts in serverless architecture.
In this session, we will demonstrate the usage of CRIU in following contexts:
1) Using CRIU CLI to checkpoint and restore a standalone Java application
2) Using docker-criu intergration to checkpoint and restore docker containers running a Java application
3) Using docker-criu integration in Kubernetes - it would have been straight-forward only if k8s has not yet adopted C/R in its workflow. But that's not the case. To over come this limitation, we demonstrate how you can update your docker containers to checkpoint the Java application and add the checkpoint in the docker image. Once the docker image has the checkpoint, you can spawn a new container which restores the application from the checkpoint. This way you can get the benefit of C/R without relying on the availability of docker-criu intergration.