ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
๐ŸฆŠGoClaw Deep Dive ๐Ÿค– โ€” A Builder's Guide to a Multi-Tenant AI Agent Platform ๐Ÿ“˜
Dev.toDev.to
Backend

8๋‹จ๊ณ„ Pipeline๊ณผ 3๊ณ„์ธต Memory ๊ธฐ๋ฐ˜ Multi-tenant AI Gateway ์„ค๊ณ„

๐ŸฆŠGoClaw Deep Dive ๐Ÿค– โ€” A Builder's Guide to a Multi-Tenant AI Agent Platform ๐Ÿ“˜

Truong Phung2026๋…„ 4์›” 28์ผ33๋ถ„advanced

Context

๋‹จ์ˆœ LLM Wrapper์˜ ํ•œ๊ณ„๋ฅผ ๋„˜์–ด ๋‹ค์ˆ˜์˜ ์ œ๊ณต์ž์™€ ์ฑ„๋„์„ ํ†ตํ•ฉ ๊ด€๋ฆฌํ•˜๋Š” ํ™•์žฅ ๊ฐ€๋Šฅํ•œ Agent Gateway ํ•„์š”์„ฑ ๋Œ€๋‘. ๊ธฐ์กด ๋‹จ์ผ ๋ฃจํ”„ ๊ตฌ์กฐ์˜ ๋ณต์žก๋„ ์ฆ๊ฐ€๋กœ ์ธํ•œ ์œ ์ง€๋ณด์ˆ˜ ์–ด๋ ค์›€๊ณผ ๋ฉ€ํ‹ฐํ…Œ๋„Œ์‹œ ๋ณด์•ˆ ๊ฒฉ๋ฆฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ ์ž ํ•จ.

Technical Solution

  • Monolithic Loop๋ฅผ 8๊ฐœ์˜ ๋…๋ฆฝ์ ์ธ Stage ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ธฐ๋Šฅ ํ™•์žฅ์„ฑ๊ณผ ๊ฐœ๋ณ„ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ์„ฑ์„ ํ™•๋ณดํ•œ Pluggable Pipeline ๊ตฌ์กฐ ์„ค๊ณ„
  • 20๊ฐœ ์ด์ƒ์˜ LLM Provider๋ฅผ ๋‹จ์ผ Interface๋กœ ์ถ”์ƒํ™”ํ•˜์—ฌ ๋ฒค๋” ์ข…์†์„ฑ์„ ์ œ๊ฑฐํ•˜๊ณ  ๋Ÿฐํƒ€์ž„ ๊ต์ฒด๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ ๊ตฌํ˜„
  • Working/Episodic/Semantic์˜ 3-tier Memory ์•„ํ‚คํ…์ฒ˜์™€ BM25+Vector ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰์„ ํ†ตํ•œ ์ปจํ…์ŠคํŠธ ์ตœ์ ํ™”
  • DB ๋ ˆ๋ฒจ์˜ tenant_id ๊ฐ•์ œ ์ ์šฉ๊ณผ context.Context ๊ธฐ๋ฐ˜์˜ ํ…Œ๋„ŒํŠธ ์ „ํŒŒ๋ฅผ ํ†ตํ•œ ๊ธฐ๋ณธ ๊ฒฉ๋ฆฌ(Isolation by Default) ์ „๋žต ์ฑ„ํƒ
  • Parallel Tool Execution์„ ํ†ตํ•œ ๋‹ค์ค‘ ๋„๊ตฌ ํ˜ธ์ถœ ์‹œ์˜ Latency ๊ฐ์†Œ ๋ฐ context window 75% ๋„๋‹ฌ ์‹œ ์ž๋™ ์š”์•ฝ(Compaction) ๋กœ์ง ์ ์šฉ
  • 5๊ณ„์ธต Defense-in-Depth ๋ณด์•ˆ ๋ชจ๋ธ์„ ํ†ตํ•ด Credential Scrubbing ๋ฐ SSRF/Shell-deny ๊ฐ€๋“œ๋ ˆ์ผ ๊ตฌ์ถ•

- ๋ณต์žกํ•œ ์กฐ๊ฑด ๋ถ„๊ธฐ๊ฐ€ 3๊ฐœ ์ด์ƒ์ธ ๋ฃจํ”„๋Š” Stage ์ธํ„ฐํŽ˜์ด์Šค ๊ธฐ๋ฐ˜ ํŒŒ์ดํ”„๋ผ์ธ์œผ๋กœ ๋ถ„๋ฆฌํ•  ๊ฒƒ - ๋ชจ๋“  ์™ธ๋ถ€ ์—ฐ๋™ ๋ชจ๋“ˆ(Provider, Store, Channel)์„ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ถ”์ƒํ™”ํ•˜์—ฌ Mock ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•  ๊ฒƒ - ๋ฉ€ํ‹ฐํ…Œ๋„Œ์‹œ ๊ตฌํ˜„ ์‹œ ๋ชจ๋“  ์ฟผ๋ฆฌ์— tenant_id๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฐ•์ œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ ์šฉํ•  ๊ฒƒ - LLM ์ปจํ…์ŠคํŠธ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ์œˆ๋„์šฐ ์‚ฌ์šฉ๋Ÿ‰์— ๋”ฐ๋ฅธ ๋‹จ๊ณ„์  Pruning ์ „๋žต์„ ์ˆ˜๋ฆฝํ•  ๊ฒƒ

์›๋ฌธ ์ฝ๊ธฐ