Skip to content

Clarify mapping between build modules and deployed services#3086

Open
Senthil455 wants to merge 1 commit into
google:masterfrom
Senthil455:clarify-service-mapping
Open

Clarify mapping between build modules and deployed services#3086
Senthil455 wants to merge 1 commit into
google:masterfrom
Senthil455:clarify-service-mapping

Conversation

@Senthil455

@Senthil455 Senthil455 commented Jun 15, 2026

Copy link
Copy Markdown

This PR adds a new "Build Modules vs Deployed Services" section to
docs/architecture.md that resolves the recurring confusion about how
Nomulus subdirectories map to deployed services.
The codebase has two overlapping naming conventions:

  1. Build modules (what you see in the repo): core, jetty, proxy,
    console-webapp, services/backend, services/pubapi, etc.
  2. Deployed services (what runs in Kubernetes): frontend, backend,
    console, pubapi, proxy

Key clarifications in the documentation

  • All four HTTP services (frontend, backend, console, pubapi)
    run the same nomulus Docker image
    built from the jetty/ module.
    They are differentiated only by the environment argument passed to the
    container and URL routing rules in the GKE Gateway, not by different
    binaries.
  • jetty is not a service — it is the build module that produces the
    Docker image deployed as all four HTTP services.
  • services/ subdirectories (backend, bsa, default, pubapi,
    tools) are legacy App Engine stubs. They have empty src/ directories
    and contain no logic. They exist for Gradle compatibility only and are
    not used in Kubernetes/Cloud Run deployments.
  • proxy can run either as a sidecar container in the frontend pod
    or as a standalone cluster (with its own deployment manifests in
    proxy/kubernetes/).
  • console-webapp Angular assets are bundled into the jetty Docker
    image, not deployed separately.

Why environment-specific titles appear

The /console and /registrar paths serve the registrar console with
Angular builds configured per environment (alpha, sandbox, qa, crash,
production), which can display different branding/titles.

Recommended starting environment

For new operators, the existing "Environments" section recommends
starting with the SANDBOX environment. It has its own GCP project,
database, and is isolated from production data — designed for learning
and registrar integration testing.
Fixes #2839


This change is Reviewable

Add a new section to the architecture documentation that explains the
relationship between Nomulus build modules (core, jetty, proxy,
console-webapp, services/*) and deployed services (frontend, backend,
console, pubapi, proxy).

Key clarifications:
- All four HTTP services (frontend, backend, console, pubapi) run the
  same nomulus Docker image built from the jetty/ module
- services/* directories are legacy App Engine stubs with no logic
- proxy can run as either a sidecar or a standalone cluster
- Differentiated by environment argument and URL routing, not binaries

Fixes google#2839
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Nomulus CloudRun Deployment & Service Mapping Clarification

1 participant