> For the complete documentation index, see [llms.txt](https://doc.wearepatchworks.com/product-documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://doc.wearepatchworks.com/product-documentation/getting-started/technical-overview/patchworks-infrastructure.md).

# 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>We use <strong>AWS RDS</strong> for all critical databases. Our databases have full redundancy with one ‘read’ and one ‘write’ copy of each.</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

<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>
