OutSystems Platform Ops Engineer study materials
OutSystems Platform Ops Engineer study resources

OutSystems Platform Ops Engineer cheat sheet

OutSystems Platform Ops Engineer · Keep the key ideas within reach.

Quick reference

Platform Operations and Environment Management

  • OutSystems environments are grouped into stages (Development, Quality, Production) inside a single platform installation; each stage can hold multiple environments, and deployments move only forward through the stage order.

  • An environment is a server (or server farm) running a specific OutSystems Platform Server version plus its own database catalog; environments are isolated, so an application must be deployed to each one separately.

  • The LifeTime console is the single management point for all environments in a stage set; it controls environment registration, deployment plans, user provisioning, and cross-environment monitoring.

  • Publishing to an environment requires a deployment from LifeTime; direct publish from Service Studio is only possible to environments registered as 'development' environments for that user's team.

  • Solution packs (.osp) and module packs are the portable artifacts; a solution pack contains the applications' modules plus references, while an extension pack carries only compiled extensions.

  • Environment health checks: confirm Platform Server version parity across environments, verify the Deployment Controller service is running, and check the deployment cache and database connectivity before scheduling a deploy.

  • Each environment has its own Application Server and Deployment Controller; the Deployment Controller is the component that receives and applies deployment packages, so its logs are the first place to look for failed deploys.

  • Platform Server upgrades are applied to all environments in a stage set, starting with Development, and LifeTime itself is upgraded as part of the same operation; version skew between LifeTime and environments blocks deployments.

  • Environment-level settings such as email, SMS, external database connections, and authentication providers are configured per environment in Service Center or LifeTime and are not carried over by a deployment.

Quick reference

Deployment and Lifecycle Management

  • A deployment plan in LifeTime is built from the diff between source and target environment; you select which applications and which module versions to include, and the plan resolves dependencies automatically.

  • Deployments follow the stage order (Development to Quality to Production); skipping a stage requires an explicit LifeTime setting and is audited, so the default pipeline is Dev to QA to Prod.

  • The deployment process is: validate (compile and dependency check), upload package to the target Deployment Controller, apply, then run the post-deployment step that compiles and warms up the application.

  • A module marked as a 'revision' versus a 'tag': tags are immutable snapshots used for deployment, so a deployment always references a tag, never a mutable development revision.

  • Dependencies that differ between environments (for example a referenced extension or a producer module) cause a dependency conflict; the plan highlights the producer modules that must be deployed first.

  • 1-Click Publish in Service Studio compiles and deploys to the environment the developer is connected to; it bypasses LifeTime and is therefore restricted to non-production environments by default.

  • Rollback is not automatic: to revert, deploy the previous tag of the affected modules as a new deployment; the platform keeps the prior application version available for redeploy.

  • Database schema changes are applied automatically during deployment as 'entity model' synchronization, but destructive changes (dropping columns or tables) require manual confirmation and can cause data loss if not reviewed.

  • Deployment messages and timings are recorded per environment in LifeTime; a failed deployment leaves the target at the last successfully applied tag, and the error is surfaced in the deployment log.

Quick reference

Infrastructure, Monitoring and Troubleshooting

  • A standard OutSystems installation has three tiers: the database server, the Platform Server(s) running Application Server and Deployment Controller, and the front-end load balancer for server farms.

  • Server farm deployments require a shared database and shared file storage for the compiled application cache; sessions must be sticky or state must be stored centrally, otherwise users lose session state between nodes.

  • Service Center (per environment) and LifeTime (cross-environment) are the built-in monitoring surfaces: they show module status, error logs, integration logs, and the health of the deployment controller.

  • The platform writes logs to the database; the 'Log' tab in Service Center and LifeTime filters by module, error type, and time, and is the primary source for runtime exceptions.

  • Integration logs record outbound/inbound calls (REST, SOAP) with request/response payloads and duration; enable them per integration and prune them because they grow quickly.

  • Common failure signatures: 'Deployment Controller not available' means the service is down or unreachable; 'database connection failed' means the connection string or DB server is the problem, not the app.

  • Performance Monitor (in Service Center) shows screen and integration timings per module; use it to separate slow queries from slow client rendering before changing infrastructure.

  • Health checks should cover: Platform Server version, free disk on the app server, DB connectivity, Deployment Controller status, and the last successful deployment timestamp per environment.

Quick reference

Security, Access Control and Compliance

  • LifeTime roles (Administrator, Developer, and IT Manager) are assigned per user and are separate from per-environment roles; a LifeTime administrator can manage environments without being an app-level developer.

  • Environment-level roles in Service Center include Administrator, Developer, and Operator; application-level roles are defined in the module's Users/Roles and enforced by the platform's authentication.

  • Authentication options are built-in (platform-managed users), Active Directory/LDAP, SAML 2.0, and OpenID Connect; the choice is configured per environment, so Dev can use built-in while Prod uses SAML.

  • End-user authentication is configured per environment in Service Center; changing the provider invalidates existing sessions, so plan the cutover outside business hours.

  • HTTPS is enforced at the load balancer or IIS binding; the platform also supports secure cookies, and the 'Require HTTPS' setting should be on for production environments.

  • Secrets (connection strings, API keys) belong in the environment's configuration or a secure store, not in the module; LifeTime's environment settings are the supported place for per-environment secrets.

  • Audit trail: LifeTime records who deployed what and when, and Service Center logs user and role changes; both are needed for compliance evidence of change management.

  • Least privilege: developers get Developer role only in Dev and QA, production deploys are performed by an operator or automated pipeline account, and Administrator is limited to platform operators.

  • Data protection: enable database encryption where supported, restrict direct database access to the platform account, and review the platform's published security notes for each Platform Server version before upgrading.

Quick reference

Performance, Scalability and Capacity Management

  • Scale out by adding Platform Server nodes behind the load balancer; scale up by increasing CPU/RAM on existing nodes; the database is usually the first bottleneck, so scale it before adding app nodes.

  • The application cache (compiled modules) is stored on disk and shared across farm nodes; if the cache is not shared, each node must compile independently, which slows first requests after deploy.

  • Screen performance: use aggregates with server-side filters, avoid 'SQL' queries where an aggregate suffices, and paginate lists; the Performance Monitor's slow-screen list identifies the worst offenders.

  • Aggregates fetch only the columns referenced downstream; adding unused attributes to a screen's aggregate increases query width and memory, so trim the aggregate to the fields used.

  • Integration calls should be asynchronous where the user does not need the result immediately; synchronous REST calls inside a screen block the request thread and inflate response time.

  • Session and request timeouts are configurable per environment; long-running requests tie up threads, so the number of concurrent requests per node is bounded by the thread pool and must be sized to the workload.

  • Capacity planning inputs: peak concurrent users, requests per user per minute, average and p95 response time, database CPU, and app-node CPU; the target is to keep p95 under the agreed SLA with headroom for failover.

  • Caching: use the platform's built-in cache for reference data that changes rarely, and set explicit expiration; unbounded caches are a memory leak in disguise.

  • Database tuning: index the columns used in aggregate filters and joins, review slow-query logs, and keep the platform's own logging tables pruned so log growth does not degrade the database.

Quick reference

Platform Operations and Environment Management

  • OutSystems environments are grouped into stages (Development, Quality, Production) inside a single platform installation; each stage can hold multiple environments, and deployments move only forward through the stage order.

  • An environment is a server (or server farm) running a specific OutSystems Platform Server version plus its own database catalog; environments are isolated, so an application must be deployed to each one separately.

  • The LifeTime console is the single management point for all environments in a stage set; it controls environment registration, deployment plans, user provisioning, and cross-environment monitoring.

  • Publishing to an environment requires a deployment from LifeTime; direct publish from Service Studio is only possible to environments registered as 'development' environments for that user's team.

  • Solution packs (.osp) and module packs are the portable artifacts; a solution pack contains the applications' modules plus references, while an extension pack carries only compiled extensions.

  • Environment health checks: confirm Platform Server version parity across environments, verify the Deployment Controller service is running, and check the deployment cache and database connectivity before scheduling a deploy.

  • Each environment has its own Application Server and Deployment Controller; the Deployment Controller is the component that receives and applies deployment packages, so its logs are the first place to look for failed deploys.

  • Platform Server upgrades are applied to all environments in a stage set, starting with Development, and LifeTime itself is upgraded as part of the same operation; version skew between LifeTime and environments blocks deployments.

  • Environment-level settings such as email, SMS, external database connections, and authentication providers are configured per environment in Service Center or LifeTime and are not carried over by a deployment.

Quick reference

Deployment and Lifecycle Management

  • A deployment plan in LifeTime is built from the diff between source and target environment; you select which applications and which module versions to include, and the plan resolves dependencies automatically.

  • Deployments follow the stage order (Development to Quality to Production); skipping a stage requires an explicit LifeTime setting and is audited, so the default pipeline is Dev to QA to Prod.

  • The deployment process is: validate (compile and dependency check), upload package to the target Deployment Controller, apply, then run the post-deployment step that compiles and warms up the application.

  • A module marked as a 'revision' versus a 'tag': tags are immutable snapshots used for deployment, so a deployment always references a tag, never a mutable development revision.

  • Dependencies that differ between environments (for example a referenced extension or a producer module) cause a dependency conflict; the plan highlights the producer modules that must be deployed first.

  • 1-Click Publish in Service Studio compiles and deploys to the environment the developer is connected to; it bypasses LifeTime and is therefore restricted to non-production environments by default.

  • Rollback is not automatic: to revert, deploy the previous tag of the affected modules as a new deployment; the platform keeps the prior application version available for redeploy.

  • Database schema changes are applied automatically during deployment as 'entity model' synchronization, but destructive changes (dropping columns or tables) require manual confirmation and can cause data loss if not reviewed.

  • Deployment messages and timings are recorded per environment in LifeTime; a failed deployment leaves the target at the last successfully applied tag, and the error is surfaced in the deployment log.

Quick reference

Infrastructure, Monitoring and Troubleshooting

  • A standard OutSystems installation has three tiers: the database server, the Platform Server(s) running Application Server and Deployment Controller, and the front-end load balancer for server farms.

  • Server farm deployments require a shared database and shared file storage for the compiled application cache; sessions must be sticky or state must be stored centrally, otherwise users lose session state between nodes.

  • Service Center (per environment) and LifeTime (cross-environment) are the built-in monitoring surfaces: they show module status, error logs, integration logs, and the health of the deployment controller.

  • The platform writes logs to the database; the 'Log' tab in Service Center and LifeTime filters by module, error type, and time, and is the primary source for runtime exceptions.

  • Integration logs record outbound/inbound calls (REST, SOAP) with request/response payloads and duration; enable them per integration and prune them because they grow quickly.

  • Common failure signatures: 'Deployment Controller not available' means the service is down or unreachable; 'database connection failed' means the connection string or DB server is the problem, not the app.

  • Performance Monitor (in Service Center) shows screen and integration timings per module; use it to separate slow queries from slow client rendering before changing infrastructure.

  • Health checks should cover: Platform Server version, free disk on the app server, DB connectivity, Deployment Controller status, and the last successful deployment timestamp per environment.

Quick reference

Security, Access Control and Compliance

  • LifeTime roles (Administrator, Developer, and IT Manager) are assigned per user and are separate from per-environment roles; a LifeTime administrator can manage environments without being an app-level developer.

  • Environment-level roles in Service Center include Administrator, Developer, and Operator; application-level roles are defined in the module's Users/Roles and enforced by the platform's authentication.

  • Authentication options are built-in (platform-managed users), Active Directory/LDAP, SAML 2.0, and OpenID Connect; the choice is configured per environment, so Dev can use built-in while Prod uses SAML.

  • End-user authentication is configured per environment in Service Center; changing the provider invalidates existing sessions, so plan the cutover outside business hours.

  • HTTPS is enforced at the load balancer or IIS binding; the platform also supports secure cookies, and the 'Require HTTPS' setting should be on for production environments.

  • Secrets (connection strings, API keys) belong in the environment's configuration or a secure store, not in the module; LifeTime's environment settings are the supported place for per-environment secrets.

  • Audit trail: LifeTime records who deployed what and when, and Service Center logs user and role changes; both are needed for compliance evidence of change management.

  • Least privilege: developers get Developer role only in Dev and QA, production deploys are performed by an operator or automated pipeline account, and Administrator is limited to platform operators.

  • Data protection: enable database encryption where supported, restrict direct database access to the platform account, and review the platform's published security notes for each Platform Server version before upgrading.

Quick reference

Performance, Scalability and Capacity Management

  • Scale out by adding Platform Server nodes behind the load balancer; scale up by increasing CPU/RAM on existing nodes; the database is usually the first bottleneck, so scale it before adding app nodes.

  • The application cache (compiled modules) is stored on disk and shared across farm nodes; if the cache is not shared, each node must compile independently, which slows first requests after deploy.

  • Screen performance: use aggregates with server-side filters, avoid 'SQL' queries where an aggregate suffices, and paginate lists; the Performance Monitor's slow-screen list identifies the worst offenders.

  • Aggregates fetch only the columns referenced downstream; adding unused attributes to a screen's aggregate increases query width and memory, so trim the aggregate to the fields used.

  • Integration calls should be asynchronous where the user does not need the result immediately; synchronous REST calls inside a screen block the request thread and inflate response time.

  • Session and request timeouts are configurable per environment; long-running requests tie up threads, so the number of concurrent requests per node is bounded by the thread pool and must be sized to the workload.

  • Capacity planning inputs: peak concurrent users, requests per user per minute, average and p95 response time, database CPU, and app-node CPU; the target is to keep p95 under the agreed SLA with headroom for failover.

  • Caching: use the platform's built-in cache for reference data that changes rarely, and set explicit expiration; unbounded caches are a memory leak in disguise.

  • Database tuning: index the columns used in aggregate filters and joins, review slow-query logs, and keep the platform's own logging tables pruned so log growth does not degrade the database.