These docs are for a previous release (v1.8). See the latest release (v1.9)

Testing your application

Before you roll Architect out in production, validate your own application in a staging environment. The Quick start covers the mechanics of hibernating and waking a pod; this page is about confirming your workload comes through that cycle correctly.

Deploy under Architect

Add the runtime class and annotations to your workload and deploy it to staging. See Configuration for the full annotation reference.

spec:
  template:
    metadata:
      annotations:
        architect.loopholelabs.io/managed-containers: '["my-container"]'
        architect.loopholelabs.io/scaledown-durations: '{"my-container":"60s"}'
    spec:
      runtimeClassName: runc-architect

What to validate

Drive your app through a full hibernate and wake cycle (the Quick start has the exact commands) and confirm:

  • It hibernates. After the idle timeout, the status.architect.loopholelabs.io/<container> label reads SCALED_DOWN.
  • It wakes. A kubectl exec, or incoming traffic when network-monitor is set, returns the label to RUNNING and the app responds normally.
  • In-memory state survives. Write a value, let the container hibernate, wake it, and read the value back; it should still be there.
  • Health checks pass after wake. Liveness and readiness probes recover. If they keep the container awake or fail, enable the health-check proxy.
  • Open work is not corrupted. Connections, transactions, and background jobs resume cleanly rather than erroring.

Check logs on failure

kubectl logs -n architect -l app.kubernetes.io/name=architectd | grep <pod>

The Architect Console also shows per-pod events, timings, and checkpoint details.

Compatibility matrix

GPU workloads are not supported yet. These language and framework combinations have been tested:

LanguageApplicationHibernationMigration
CPostgreSQLYesYes
CValkeyYesYes
Gonet/httpYesYes
JavaKafkaYesYes
JavaSpring BootYesYes
PHPWordPressYesYes
Pythonhttp.serverYesYes
RubyTCPServerYesYes
RustminiserveYesYes
C#ASP.NETNoNo
JSNode.jsNoNo

Node.js and ASP.NET aren't supported yet: their runtimes rely on kernel features CRIU cannot checkpoint. For Node.js this is io_uring, which libuv enables by default in current releases.