# Takabachan

> Takabachan: 2 services, 10 components and 17 connections on 3 hosts — takabachan-social and takabachan-ecommerce.

A multi-service system design shared from System Canvas, a tool for designing distributed systems and simulating how they behave under load.

- Interactive version: https://vuteem.com/tools/sys-canvas/projects/share/AwFGWQ08Ds
- 10 components, 17 connections, 2 services
- How the simulation models each component: https://vuteem.com/tools/sys-canvas/docs

## Overview — Components

- **takabachan-social** (Microservice) — in VPC "Takabachan VPC"
- **takabachan-ecommerce** (Microservice) — in VPC "Takabachan VPC"
- **User / Client**: Requests Per Second: 10000 req/s; Protocol: HTTPS
- **Cloudflare Worker** (API Gateway): Protocol: HTTPS; Rate Limit (req/s): 0 req/s
- **Cloudflare CDN** (CDN): TTL: 3600 s; Cache Hit Rate: 0.8
- **Meilisearch** (Elasticsearch) — in VPC "Takabachan VPC", on host "VPS": Cluster Nodes: 1; RAM per Node: 8,192 MB; Request Absorption Rate: 1
- **NATs Stream** (Message Queue) — in VPC "Takabachan VPC", on host "VPS": Queue Type: Standard; Visibility Timeout: 30 s; Request Absorption Rate: 1
- **Valkey** (In-Memory Cache) — in VPC "Takabachan VPC", on host "VPS": Memory: 4,096 MB; Max Connections: 10000; Cache Hit Rate: 0.9; Request Absorption Rate: 1; Enable Sharding: off
- **Service Worker** — in VPC "Takabachan VPC", on host "VPS": Worker Threads: 4 workers; Avg Job Duration: 100 ms; Max Queue Depth: 500; Retry on Failure: off; Memory / Worker: 64 MB; CPU-Bound Share of a Job: 0.5; Request Absorption Rate: 1

## Overview — Connections

- User / Client → Cloudflare CDN (HTTPS, cache path)
- Cloudflare CDN → Cloudflare Worker (HTTPS)
- Cloudflare Worker → takabachan-ecommerce (HTTP)
- Cloudflare Worker → Meilisearch (HTTP)
- Cloudflare Worker → takabachan-social (HTTP)
- takabachan-social → Valkey (TCP, cache path)
- takabachan-social → NATs Stream (TCP)
- NATs Stream → takabachan-ecommerce (TCP)
- NATs Stream → takabachan-social (TCP)
- Meilisearch → takabachan-ecommerce (HTTPS)
- Meilisearch → takabachan-social (HTTPS)
- takabachan-ecommerce → NATs Stream (TCP)
- takabachan-ecommerce → Valkey (TCP, cache path)
- takabachan-ecommerce → Service Worker (HTTP)
- takabachan-social → Service Worker (HTTP)

## Overview — Hosts and clusters (components inside share their CPU, RAM and network)

- **VPS**: 12 vCPU, 16,384 MB RAM, 1000 Mbps — runs Meilisearch, NATs Stream, Valkey, Service Worker

## Overview — VPCs (private networks)

- **Takabachan VPC** (us-east-1, 10.0.0.0/16) — contains takabachan-social, takabachan-ecommerce, Meilisearch, NATs Stream, Valkey, Service Worker

## Service: takabachan-social

### Components

- **SQL Database** — on host "VPS": RAM: 1,500 MB; Max Connections: 100; IOPS: 500; Partitioning: None; Enable Sharding: off; Request Absorption Rate: 1
- **Server / VM** — on host "VPS": RAM: 1,500 MB; CPU Cores: 2; Max Connections: 1000; Request Absorption Rate: 1

### Connections

- Server / VM → SQL Database (HTTPS)

### Hosts and clusters (components inside share their CPU, RAM and network)

- **VPS**: 4 vCPU, 4,096 MB RAM, 1000 Mbps — runs SQL Database, Server / VM

## Service: takabachan-ecommerce

### Components

- **Server / VM** — on host "VPS": RAM: 1,500 MB; CPU Cores: 2; Max Connections: 1000; Request Absorption Rate: 1
- **SQL Database** — on host "VPS": RAM: 2,048 MB; Max Connections: 100; IOPS: 500; Partitioning: None; Enable Sharding: off; Request Absorption Rate: 1

### Connections

- Server / VM → SQL Database (HTTPS)

### Hosts and clusters (components inside share their CPU, RAM and network)

- **VPS**: 4 vCPU, 4,096 MB RAM, 1000 Mbps — runs Server / VM, SQL Database
