Synpse
🤖 Devices⚡ ApplicationsTry Synpse!
  • Intro to Synpse
  • Start here
    • Quick Start (web user)
    • Quick Start (CLI)
  • Agent
    • Install
      • Raspberry Pi
      • Linux (Docker)
      • MacOS
      • NVIDIA Jetson
      • Headless (Ubuntu)
      • BeagleBoard AI
      • Bulk Provisioning
      • 🪄Beta - Universal Synpse image
      • Containerized agent
      • Configuration
    • Uninstall
  • CLI
    • Install & Usage
  • synpse core
    • Devices
      • Device Provisioning
      • HTTPS Tunnel Access
      • SSH Access
      • Device Labels
      • Environment Variables
      • Proxy Application Ports
      • OS & Architectures
      • Operations
      • Device API
    • Applications
      • Deploy
      • Secrets
      • Environment variables
      • Substitution (dynamic templates)
      • Volumes
      • Networking
      • Scheduling
      • Registry authentication
      • Using GPUs
      • Tips & Tricks
      • Logs and status
      • Application specification (API reference)
    • Account
      • Personal Access Tokens
      • Service (Robot) Accounts
      • Teams (Share Devices)
    • Monitoring (beta)
      • Device Monitoring
      • Application Monitoring
  • Manage
    • Projects
    • Namespaces
    • Quotas
  • Examples
    • 🏠Home Automation
      • Gladys Assistant
      • Home Assistant
    • 🛠️Preparing OS Images
      • Synpse CLI Builder
      • Build a custom Raspberry Pi image
      • Cloud-init (advanced)
    • 💡Dynamic Templates
    • ☁️Public Cloud IoT
      • AWS IoT Core
      • Azure IoT Hub
      • GCP IoT Core
    • 🚀Device management
      • VNC to remove devices
      • Ansible
  • On-prem Deployment
    • 🐳Docker Compose
    • 🌤️kubernetes
  • Resources
    • API Documentation
    • Deployment patterns
    • Security & Tech
Powered by GitBook
On this page
  • Single application - multiple devices
  • Multiple applications - Multiple devices
  • Multi-project multi-application
  • Important

Was this helpful?

  1. Resources

Deployment patterns

Synpse is flexible enough to create a wide range of architectures for managing devices and applications. We will explain how you can manage your stack in a scalable way.

PreviousAPI DocumentationNextSecurity & Tech

Last updated 2 years ago

Was this helpful?

Single application - multiple devices

Deploying a single application to multiple devices is easy: 1. Create an application with the selector of your choice. In example app_version: v1:

Multiple applications - Multiple devices

When dealing with multiple applications and devices, it is good practice to segregate components outs. All devices are shared between namespaces, so use namespaces to isolate applications.

  1. Create separate namespaces per application, where applications are isolated via different namespaces and using different selectors: in example app: drone and app: nodered :

  1. Label targeted devices via selected labels. In our example, 2 devices are running drone application and one - nodered

Multi-project multi-application

Important

In any of these configurations you have to be aware of a few behaviours of the system:

  1. An update to the shared configuration between applications will trigger application redeployment. For example, if you share the same secrets for multiple applications inside the project, updating it will trigger a rolling update to all applications. To avoid this, separate applications by creating dedicated secrets OR separate via projects

  2. Some application updates can cause updates to all other applications on the devices. For example, if you have an application, which modifies underlying device networking configuration, like wireguard or openVPN those might change the device network interface IP address or network card configurations. In situations like this, you might see other applications, restarting as they notice network interface changes. This happens because synpse injects default variables into each application (example below), and changes to any of these values (like name, hostname, IP address) will trigger an update.

"SYNPSE_APPLICATION_ID=app_2BOMpVySqVVY8KqtW1sQ1Oxxxxx"
"SYNPSE_DEVICE_ARCH=amd64"
"SYNPSE_DEVICE_HOSTNAME=localhost.localdomain"
"SYNPSE_DEVICE_IP=192.168.1.100"
"SYNPSE_DEVICE_NAME=minis"
"SYNPSE_NAMESPACE_ID=nms_2BO0QL28VfBsmiJzzXS1HQxxxxx"
"SYNPSE_PROJECT_ID=prj_1vfwzUEZ3Q9l8xcKU263TMxxxxx"

Label devices with label selector app_version: v1 (See ) :

When you need hard isolation, we recommend using different projects for different applications. For example foo-corp-development and foo-corp-production. This way you can isolate your development and production workloads and make sure the right people have access accordingly. See .

This allows a dedicated project for production and development workloads. You can promote physical devices from one 'project' to another without re-installing them. See

device labels page
Teams/RBAC documentation
device operations documentation.