Choose a deployment model without the hype.
Separate public content from private operations, then compare deployment models against the workload and operating responsibilities.
First: what varies per visitor?
If a URL returns the same public content to everyone, a static page may be sufficient. If the response depends on identity, current private data or transactions, a server-side path is needed. Separate the public shell from personalized operations where possible.
Source: Read the original guide
Then: who operates the runtime?
Functions reduce server management but introduce platform limits and usage meters. Containers allow more control and portability but require deployment and runtime discipline. Virtual machines offer control with still more operating responsibility. Managed platforms sit at different points along that spectrum.
Source: Read the original guide
Compare with your workload
For each candidate, record scaling pattern, latency sensitivity, background jobs, storage, observability, rollback, team skill and likely billing drivers. Write “unknown” where measurement or official documentation is missing.
Source: Read the original guide
Run a reversible test
Build a minimal non-production route with representative traffic and failure cases only after a human approves the environment. Measure startup, response time, logs, recovery and cost using current documentation and actual test records.
Source: Read the original guide