Skip to content

Latest commit

 

History

History
34 lines (22 loc) · 2.39 KB

architecture.md

File metadata and controls

34 lines (22 loc) · 2.39 KB

High-level architecture

Piipan is designed to be a cloud-native system. It is under active development and is not complete. Several subsystems have been implemented; others are anticipated and indicated with an asterisk.

Here is a diagram depicting these anticipated subsystems:

High-level architecture

A guiding architectural principle is to treat organizations and their data as tenants of a platform (i.e., Piipan), and accordingly apply isolation best practices and the principle of least privilege throughout the system.

Finally, this reference model is designed to be extended to support a fully federated system, whereby PII records never leave tenant-run enclaves in bulk. Under this hypothetical extension, the federally-run API orchestrator would reach back to each tenant, rather than its own isolated copies of tenant data records. And the bulk match API would incorporate a Privacy Set Intersection (PSI) protocol, with the federal system acting as a semi-trusted 3rd party.

Implementation

Piipan targets Microsoft Azure as its cloud computing platform, but generally selects for commoditized features that are available on other cloud platforms.

To expedite development and compliance processes, Piipan maximizes the use of managed services, including Function-as-a-Service (FaaS). No virtual machines or containers are directly employed in the production system.

Piipan's programming languages and frameworks include: .NET Core, C#, and ASP.NET using Razor Pages. Bash and ARM templates are used for Infrastructure-as-Code.

Our processes and code are intended to be platform agnostic: the 18F team primarily uses macOS-hosted local development tools and the managed services use a mix of Windows and Linux.

Piipan uses the monorepo strategy; subsystems get their own top-level directory and are independently deployable modulo any shared datastores. A system-wide CircleCI configuration manages continuous integration and deployment.