Carrier
Part Four · Architecture Patterns
Chapter 181 min read

Operational Architecture

Architecture does not stop when code compiles. Enterprise services must build, deploy, run, fail, recover, and provide enough evidence for teams to understand what happened.

Build Targets

Carrier source can compile to runtime targets. The build target is an architectural choice because it affects runtime behavior, deployment packaging, observability, performance characteristics, and team workflow. Enterprise teams should define which targets are supported in each environment. The build pipeline should normally include carrier fmt, carrier check, and carrier build --target node. When API or schema shape changes, the pipeline should also include the OpenAPI and migration workflows.

Node Target for Development

The Node target is valuable because it gives fast feedback. Fast feedback changes engineering behavior: teams check more often, catch errors earlier, and avoid batching risky changes. For enterprise development, speed is a governance feature. Slow verification encourages teams to bypass local checks and rely on late CI failures. Fast local builds make the correct workflow easier to follow.

Runtime Deployment Concerns

Deployment design should cover environment configuration, secrets management, database connectivity, migration execution, horizontal scaling, health checks, startup and shutdown behavior, background job execution, external client configuration, and rollback strategy. Schema migration deserves special attention. Application deployment and migration deployment should be coordinated.

Observability and Diagnostics

Carrier projects include first-class telemetry blocks. The hello-carrier example wires OpenTelemetry directly into the service definition — endpoint, protocol, and sampling — so observability is part of the declared architecture rather than a sidecar afterthought:

excerpt
service App {
telemetry {
provider: opentelemetry
endpoint: env("OTEL_EXPORTER_OTLP_ENDPOINT", "")
service_name: "hello-carrier"
protocol: otlp_http
sampling: parentbased_ratio(0.2)
}
}

Architects should also distinguish observability from auditability. Logs help operate the system. Audit records provide durable evidence of business and security-relevant events. Some events belong in both places, but the retention, integrity, and access requirements are different.

Part Five

Delivery and Governance

Lifecycle, ADRs, and the Carrier manifest

Contents