# Patchworks infrastructure

## Introduction

A cutting-edge iPaaS platform requires a robust, versatile infrastructure that scales with its customers. The Patchworks infrastructure is built on Kubernetes, a technology that has revolutionised how we deploy, manage, and scale our applications:

<figure><img src="/files/I2G7Y0NedcKbBvfxO2fr" alt=""><figcaption></figcaption></figure>

## MACH

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td><strong>Microservices</strong> are used to build the Patchworks platform  - small, independent services that communicate with each other, allowing for flexibility, scalability, and easier maintenance.</td><td></td><td></td><td><a href="/files/vkD4dntw9z3ZQp1ZNp9N">/files/vkD4dntw9z3ZQp1ZNp9N</a></td></tr><tr><td><strong>API first</strong> is key for powerful integrations.  Our next-generation dashboard is driven by powerful APIs which means we can integrate with any other API simply and seamlessly.</td><td></td><td></td><td><a href="/files/OGwHxyTM5fuTFahRl0bY">/files/OGwHxyTM5fuTFahRl0bY</a></td></tr><tr><td><strong>Cloud-native</strong> development facilitates our microservice architecture, Kubernetes deployments, DevOps infrastructure as code, and much more!</td><td></td><td></td><td><a href="/files/uUHHlnGOF3UgfIoJYC7B">/files/uUHHlnGOF3UgfIoJYC7B</a></td></tr><tr><td><strong>Headless</strong> is exactly what you'd expect for an API-first platform. The Patchworks backend is built with our own API, which is then consumed by the dashboard for general use.</td><td></td><td></td><td><a href="/files/wGX54zaclqJB5TX2meCv">/files/wGX54zaclqJB5TX2meCv</a></td></tr></tbody></table>

## Performance & scalability

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td><strong>Kubernetes pod and node auto-scaling</strong> Ensure that integrations run consistently, even in the busiest times. See our <a href="/pages/Ddt8YrSk7LF6Upz38muX">auto-scaling</a> page for more information.</td><td></td><td></td><td><a href="/files/cw9VHS7fhGnVGHecyuZ4">/files/cw9VHS7fhGnVGHecyuZ4</a></td></tr><tr><td><p>We use <strong>AWS RDS</strong> for all critical databases. Our databases have full redundancy with one ‘read’ and one ‘write’ copy of each. </p><p></p></td><td></td><td></td><td><a href="/files/NN8fzpVlxyjONjTrpi7x">/files/NN8fzpVlxyjONjTrpi7x</a></td></tr><tr><td>Each database copy is hosted in a <strong>separate availability zone</strong> so, in the unlikely event of a failure in one zone, we can fall back to the other.</td><td></td><td></td><td><a href="/files/hnthe0lv3PfrXtwdcpjt">/files/hnthe0lv3PfrXtwdcpjt</a></td></tr></tbody></table>

## Issue identification & resolution

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td><strong>Real-time logs</strong> (via web sockets) can be viewed while a process flow runs, with visibility of request, response and payload information at every step. </td><td></td><td></td><td><a href="/files/p9iK8DNTQGS7v3N5a8TN">/files/p9iK8DNTQGS7v3N5a8TN</a></td></tr><tr><td>Logs are <strong>retained for one month</strong> for retrospective problem-solving.</td><td></td><td></td><td><a href="/files/7XUovV6hfKBP3bIm6g56">/files/7XUovV6hfKBP3bIm6g56</a></td></tr><tr><td><strong>Webhooks</strong>, <strong>events</strong>, and <strong>inbound API</strong> requests can all be tracked through the Patchworks Dashboard - you don’t need to be an engineer to figure out when/where execution errors occur.</td><td></td><td></td><td><a href="/files/A3KePs5mjaw35GVDQyTf">/files/A3KePs5mjaw35GVDQyTf</a></td></tr></tbody></table>

## Removal of complexity&#x20;

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td>We manage all <strong>API updates</strong> for our library of prebuilt connectors.</td><td></td><td></td><td><a href="/files/OGwHxyTM5fuTFahRl0bY">/files/OGwHxyTM5fuTFahRl0bY</a></td></tr><tr><td>We take care of all supported <strong>authentication mechanisms</strong> (OAuth, token, API key, etc.).</td><td></td><td></td><td><a href="/files/g4AzzGC92mlkyWJM8J9L">/files/g4AzzGC92mlkyWJM8J9L</a></td></tr><tr><td>We've removed all the complexity when it comes to <strong>building and maintaining new integrations</strong>.</td><td></td><td></td><td><a href="/files/vq0NTJr9RHjYoq8RJeUh">/files/vq0NTJr9RHjYoq8RJeUh</a></td></tr></tbody></table>

## Multi-tenancy

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td>Our <strong>multi-tenant architecture</strong> means that customers have the benefits of shared software and infrastructure, secure in the knowledge that each customer's data is isolated and invisible to other tenants.</td><td></td><td></td><td><a href="/files/VqmiNSitoTtRXDZaa2Uh">/files/VqmiNSitoTtRXDZaa2Uh</a></td></tr><tr><td>Multi-tenancy provides a much <strong>faster solution</strong>, since we only search one set of data rather than everything - all database operations and secret storage is per-tenant.</td><td></td><td></td><td><a href="/files/bGaCmNQnOswOwsVPFg92">/files/bGaCmNQnOswOwsVPFg92</a></td></tr><tr><td>Multi-tenancy allows <strong>flexibility for change</strong> - if necessary we can 'lift and shift' a tenant to a new database, or to a faster region, or even to a completely different cloud provider in a different continent!</td><td></td><td></td><td><a href="/files/XmyVLrjtJmJcftbwxerg">/files/XmyVLrjtJmJcftbwxerg</a></td></tr><tr><td></td><td></td><td></td><td></td></tr></tbody></table>

## Robust processes for assured uptime

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td>Infrastructure updates are made via <strong>IaC (Infrastructure as Code)</strong>. </td><td></td><td></td><td><a href="/files/ItLq7SfH2jiyuMo0pdXC">/files/ItLq7SfH2jiyuMo0pdXC</a></td></tr><tr><td>Infrastructure updates are <strong>peer-reviewed and authorised</strong> before being merged.</td><td></td><td></td><td><a href="/files/ONYHiY9YK7pFm0RvVFXS">/files/ONYHiY9YK7pFm0RvVFXS</a></td></tr><tr><td>All production code flows through <strong>development and staging review cycles</strong> before release to production.</td><td></td><td></td><td><a href="/files/ONYHiY9YK7pFm0RvVFXS">/files/ONYHiY9YK7pFm0RvVFXS</a></td></tr><tr><td>Every release must pass both <strong>automated</strong> and <strong>hands-on testing</strong> by our QA team.</td><td></td><td></td><td><a href="/files/RwienszIv3keySysp5V0">/files/RwienszIv3keySysp5V0</a></td></tr></tbody></table>

## Infrastructure security

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td>Product <strong>penetration testing</strong> is performed annually by an external, CREST-accredited organisation.</td><td></td><td></td><td><a href="/files/UALJ8AxpMBztwjXrwIM2">/files/UALJ8AxpMBztwjXrwIM2</a></td></tr><tr><td>Our Kubernetes nodes live in <strong>private subnets</strong>.</td><td></td><td></td><td><a href="/files/xJEe8Rqn4IVoj94SHSmd">/files/xJEe8Rqn4IVoj94SHSmd</a></td></tr><tr><td>All key ingresses are <strong>IP whitelisted</strong>.</td><td></td><td></td><td><a href="/files/fY66bPFFN6b9CfQXQeuf">/files/fY66bPFFN6b9CfQXQeuf</a></td></tr><tr><td>We adopt a 'least privilege' model for our development team, and also for users of our AWS and Kubernetes infrastructure. </td><td></td><td></td><td><a href="/files/oqj3pWtdXxWWQvHXmVsA">/files/oqj3pWtdXxWWQvHXmVsA</a></td></tr><tr><td>All key business systems must be accessed via a VPN</td><td></td><td></td><td><a href="/files/821sT99Pi6yrDqSI4gMx">/files/821sT99Pi6yrDqSI4gMx</a></td></tr><tr><td>All staff use LastPass to generate and store strong passwords - 2FA access to LastPass is mandated.</td><td></td><td></td><td><a href="/files/pqI9Joxysjhf6AD4p8An">/files/pqI9Joxysjhf6AD4p8An</a></td></tr></tbody></table>

## Platform account security

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td>Access is managed via <strong>role-based permissions</strong>, so only authorised users can access integrations and data for their company profile(s).</td><td></td><td></td><td><a href="/files/rM82eVN54Iw8nW05sMoS">/files/rM82eVN54Iw8nW05sMoS</a></td></tr><tr><td><strong>Audit logs</strong> provide a complete history of all user account activity, including Patchworks users.</td><td></td><td></td><td><a href="/files/wSqf38pYEQ0Uv1U9kVDw">/files/wSqf38pYEQ0Uv1U9kVDw</a></td></tr><tr><td>Users always <strong>control their own passwords</strong> - password resets are never performed on behalf of other users.</td><td></td><td></td><td><a href="/files/Dn8nrvnewSHbhpZEIZ7Y">/files/Dn8nrvnewSHbhpZEIZ7Y</a></td></tr><tr><td><strong>Single sign-on</strong> via Google is supported.</td><td></td><td></td><td><a href="/files/fJaqQFZbIPtgJREoHOhd">/files/fJaqQFZbIPtgJREoHOhd</a></td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://doc.wearepatchworks.com/product-documentation/getting-started/technical-overview/patchworks-infrastructure.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
