Notice: when this page renders without a diagram, please refresh for it to properly load
graph LR A1[app/client] --> A2["HTTP Methods (get/put/post/delete)"] A2 --> A3[CDN] A3 --> A4[Load Balancer] A4 --> A5[Services
flowchart-elk LR A1[client] subgraph clients[future clients] A2[client] A3[client] A4[client] end B1[server] B3[cache] C1[DB] B1 <--(fetch fresh data)--> C1 B3 <--> A2 B3 <--> A3 B3 <--> A4 B1 --registers--> B3 A1 <--(first req/res)--> B1
flowchart TB subgraph client A1["browser"] end subgraph server B1[DNS] C1[Server] end A1 --(1. DNS Query)--> B1 B1 --(2. IP Address)--> A1 B1 ==(3. knows each other)=== C1 A1 --(5. HTTP request (IP address + data))--> C1 C1 --(4. Data to origin IP)--> A1
graph LR subgraph clients A1[client] A2[client] A3[client] A4[client] A5[client] end subgraph LBs B1["load-balancer with increased power \n(vertical scaling)"] B2[load-balancer] end subgraph server C1[server] end A1 --> B1 A2 --> B1 A3 --> B1 B1 <==works in parallel \n (horizontal scaling)==> B2 A4 --> B2 A5 --> B2 B1 --> C1 B2 --> C1
flowchart-elk LR A1["Client (Browser)"] A2["React Frontend Deployment"] A3["Backend Node/Express"] A4["DB/SQL"] A1 <--> A2 A2 <--> A3 A3 <--> A4
flowchart LR subgraph client A1[client] end subgraph server A2[server.js] A3["router (api.js)"] A4["controller/middlewares \n (CRUD and other lower level functionality)"] end subgraph database A5[DB] end A1 --1. fetch api--> A2 A2 --2 (require router in server)--> A3 A3 --3. .next()--> A4 A4 <--4. data req--> A5 A4 --5. data res--> A3 A3 --6--> A2 A2 --"7. res.locals(json)"--> A1
Max size per packet:
[IP Header][IP Data]
Size: multiple packets coordinated
[ [IP Header][TCP Header][IP Data] [IP Header][TCP Header][IP Data] ]
[get /users][TCP/IP][TCP/IP][TCP/IP] [post /users][TCP/IP][TCP/IP][TCP/IP][TCP/IP]
graph LR A1[client] --calls every x seconds--> A2[server] A2 --data received--> A1
graph LR A1[client] <--continuous--> A2[server]
graph LR A1[client] A2[proxy] A3[server] A1 --"client sends request to proxy"--> A2 A2 --"proxy masks and server doesn't know the IP of client"--> A3 A3 --"server sends response to proxy"--> A2 A2 --"proxy forwards the result"--> A1
graph LR A1[client] A2[reverse proxy] A3[server] A1 --"client sends req to DNS and receives IP of reverse proxy"--> A2 A2 --"Reverse proxy filters, measures user data, caches, load balances"--> A3 A3 --"server sends res to proxy"--> A2 A2 --"client doesn't know IP of server"--> A1
graph LR subgraph publisher A1[publisher] end subgraph topics B1[Topics] B2[Topics] B3[Topics] end subgraph subscribers C1[Subscriber] C2[Subscriber] C3[Subscriber] end A1 --> B1 A1 --> B2 A1 --> B3 B1 --"stream"--> C1 C1 --"subscription"--> B1 B2 --"stream"--> C1 C1 --"subscription"--> B2 B3 --"stream"--> C2 C2 --"subscription"-->B3 B3 --"stream"--> C3 C3 --"subscription"-->B3
graph LR A1[client] A2[server] A3[DB] A1--"1. req"-->A2 A2--"2. accepted"-->A3 A3--"3. success"-->A2 A2--"4a. success"-->A1 A2--"4b. reject"-->A1
graph LR subgraph clients A1[client] A2[client] A3[client] end subgraph loadbalancer B1["3pty (e.g. redis)"] end subgraph servers C1[server] C2[server] end subgraph database D1[DB] end A1 --req--> B1 B1 --accept-->A1 A2 <--> B1 A3 --req-->B1 B1 --reject-->A3 B1 --> C1 B1 --> C2 C1 --> D1 C2 --> D1
graph LR subgraph databases A1[US DB] A2[India DB] end A1 <--"updates each other"--> A2 B1["faster US read of India data"] B2["faster India read of US data vs direct read of US DB (low latency)"] A1 --> B1 A2 --> B2
graph LR AA01["Backend controller"] --(move to)--> AA03 AA03["lib"] --> AA02["services domain"] AA02--(call as service)-->AA01
persists
does not persist
graph LR A1[System A] A2[System B] B1[Event] C1["HTTP body (json or XML)"] C2["HTTP body (json or XML)"] D1[Post Received] D2["processing webhook request"] D3["Process complete"] E1[POST response] A1 --triggers--> B1 B1 --req--> C1 C1 --> A2 A2 --> D1 D1 --> D2 D2 --> D3 D3 --> C2 C2 --> E1