{"type":"excalidraw","version":2,"source":"https://AwesomeSystemDesign.dev","elements":[{"angle":0,"strokeColor":"#6577aa","backgroundColor":"#eef1fc","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-1"],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"shape-1"}],"updated":0,"link":null,"locked":false,"id":"shape-0","type":"rectangle","seed":41,"x":16,"y":16,"width":288,"height":808.2,"customData":{"revealStep":1}},{"angle":0,"strokeColor":"#394557","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-1"],"frameId":null,"roundness":null,"boundElements":null,"updated":0,"link":null,"locked":false,"id":"shape-1","type":"text","seed":114,"x":36,"y":34,"width":248,"height":772.2,"fontSize":22,"fontFamily":1,"text":"CONTROL PLANE\n\n• Namespace Service\n(bucket CRUD, global\nuniqueness)\n\n• IAM / Auth Service\n(policies, ACLs,\npresigned URLs)\n\n• Lifecycle Mgr\n(transition objects\nbetween storage\nclasses)\n\n• Placement Service\n(decide which nodes\nstore data)\n\n• Replication Mgr\n(ensure 3 replicas\nacross AZs)\n\n• Garbage Collector\n(clean orphaned\ndata, expired\nversions)","originalText":"CONTROL PLANE\n\n• Namespace Service\n(bucket CRUD, global\nuniqueness)\n\n• IAM / Auth Service\n(policies, ACLs,\npresigned URLs)\n\n• Lifecycle Mgr\n(transition objects\nbetween storage\nclasses)\n\n• Placement Service\n(decide which nodes\nstore data)\n\n• Replication Mgr\n(ensure 3 replicas\nacross AZs)\n\n• Garbage Collector\n(clean orphaned\ndata, expired\nversions)","textAlign":"left","verticalAlign":"middle","containerId":"shape-0","lineHeight":1.3,"autoResize":false,"customData":{"revealStep":1}},{"angle":0,"strokeColor":"#6577aa","backgroundColor":"#eef1fc","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-2"],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"shape-3"}],"updated":0,"link":null,"locked":false,"id":"shape-2","type":"rectangle","seed":187,"x":16,"y":868.2,"width":288,"height":1208.6000000000001,"customData":{"revealStep":2}},{"angle":0,"strokeColor":"#394557","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-2"],"frameId":null,"roundness":null,"boundElements":null,"updated":0,"link":null,"locked":false,"id":"shape-3","type":"text","seed":260,"x":36,"y":886.2,"width":248,"height":1172.6000000000001,"fontSize":22,"fontFamily":1,"text":"DATA PLANE\n\n• API Gateway\nLayer\n• Parse\nS3-compatible REST\nAPI\n• Authenticate\n(HMAC-SHA256\nsigning)\n• Route to\nmetadata or data\nservice\n\n• Metadata Service\nBacked by:\ndistributed KV store\n(like DynamoDB /\nFoundationDB)\nStrongly consistent\nreads (quorum-based)\n• Bucket Metadata\n(name, owner, region,\nconfig)\n• Object Metadata\n(key, size, etag,\nstorage_class,\ndata_locations)\n\n• Data Service\nObjects split into\nchunks → distributed\nacross nodes Each\nchunk replicated to 3\nAZs\n• Data Node AZ-a\n12× 20TB HDD Chunk\nstorage\n• Data Node AZ-b\n12× 20TB HDD Chunk\nstorage","originalText":"DATA PLANE\n\n• API Gateway\nLayer\n• Parse\nS3-compatible REST\nAPI\n• Authenticate\n(HMAC-SHA256\nsigning)\n• Route to\nmetadata or data\nservice\n\n• Metadata Service\nBacked by:\ndistributed KV store\n(like DynamoDB /\nFoundationDB)\nStrongly consistent\nreads (quorum-based)\n• Bucket Metadata\n(name, owner, region,\nconfig)\n• Object Metadata\n(key, size, etag,\nstorage_class,\ndata_locations)\n\n• Data Service\nObjects split into\nchunks → distributed\nacross nodes Each\nchunk replicated to 3\nAZs\n• Data Node AZ-a\n12× 20TB HDD Chunk\nstorage\n• Data Node AZ-b\n12× 20TB HDD Chunk\nstorage","textAlign":"left","verticalAlign":"middle","containerId":"shape-2","lineHeight":1.3,"autoResize":false,"customData":{"revealStep":2}}],"appState":{"viewBackgroundColor":"#fbfbf8","gridSize":null},"files":{}}