ssm.ro Docs
Security, Infrastructure & OperationsInfrastructureHeroku (Shared Model)

Heroku Architecture

Dynos, deployment environments, GitHub→Heroku pipeline, Postgres and Redis add-ons

Shared Model (SaaS)

Heroku is the hosting platform for the Shared Model. The Enterprise Model runs on dedicated AWS infrastructure — see Deployment Models.

Deployment Environments

The SSM.ro platform operates three distinct environments:

EnvironmentURLAccessData
Productionhttps://www.appssm.roPublic — HTTPS (TLS 1.2+)Real production data
StagingInternal — not publicly exposedRestricted — HTTP Basic Auth at the edge; credentials issued only to authorized staffTest data only — never production/customer data
DevelopmentLocal (developer workstation)Developer's local network only — not exposed to the internetLocal test data

Staging never contains production or customer data.


Heroku Components

Web Dynos

  • Host the web application
  • Autoscaling configured
  • Authentication: username + password; optional TOTP 2FA (code from an authenticator app or sent by email); per-organization OIDC SSO (optional or exclusive)
  • Session timeout: 30 minutes of inactivity; with the “remember me” option the session does not expire through inactivity for 2 weeks

Worker Dynos (Asynchronous Jobs)

  • Asynchronous job processing
  • Responsibilities: document signing orchestration, notification sending, daily archive export, scheduled tasks
  • Job queue based on Heroku Redis

Heroku Postgres (Managed)

  • Main relational database, on the Heroku Postgres Standard plan
  • TLS in transit, encryption at rest
  • Continuous Point-in-Time Recovery (PITR) (WAL) + daily snapshots with 30-day retention
  • Hosts the customer activity log table (3-month retention, downloadable by tenant)
  • Continuous Protection enabled — allows rollback to a specific point in time

Heroku Redis (Managed)

  • Application cache + asynchronous job queue
  • TLS in transit
  • Private within the Heroku network (not accessible from outside)

Build & Release Pipeline

Developer → Pull Request on GitHub
    │ mandatory review (branch protection on main)

Merge into main branch
    │ webhook automatically triggered

Heroku Build
    buildpack runs → produces release artifact (slug)


Heroku Release
    rolling restart of web dynos + worker dynos


Versioned release with audit log in Heroku Releases
    │ one-click rollback available

Critical patches follow the same flow on an expedited schedule.


Postgres Backups — Retention Limits

The platform uses the Heroku Postgres Standard plan, which retains up to 25 manual backups.

In addition to manual backups, PITR (Continuous Protection) is active: every change is backed up continuously, allowing restoration to any point within the last few days.


Cross-Cutting Heroku Controls

  • All inbound traffic: HTTPS/TLS 1.2+ via Heroku Router with Let's Encrypt wildcard certificates (managed by the technical support team)
  • Internal traffic (App ↔ Postgres/Redis): private Heroku network, TLS in transit
  • Secrets: stored exclusively in Heroku config vars — never in source code
  • Versioned releases with audit log and rollback available