Build-Time vs. Run-Time: Why Dev Tools Fail in Production โ Averi Kitsch & Prerna Kakkar, Google
ํ ์ค ํต์ฌ
๋ฐ์ดํฐ๋ฒ ์ด์ค์ฉ ์์ด์ ํธ ๋๊ตฌ๋ ๋น๋ํ์์ ์ ์ฐํ ๊ฐ๋ฐ ๋ณด์กฐ์๋ ์ ์ฉํ์ง๋ง, ํ๋ก๋์ ์์๋ ๊ถํยท์ ๋ ฅยท์ถ๋ ฅ์ ์๊ฒฉํ ์ ํํ๋ ๋ฐํ์ ๋๊ตฌ์ ์ ์ ๋ถ๋ฆฌ๊ฐ ์์ผ๋ฉด ๋ณด์ ์ฌ๊ณ ์ ์ค์๋์ด ์ฝ๊ฒ ๋ฐ์ํ๋ค.
์๊ฐ๋ณ ์์ฝ
-
0:00
์๊ฐ, MCP Toolbox์ ๊ด๋ฆฌํ MCP ๋ฐํ๋ Google์ MCP Toolbox for databases์ Google managed MCP๋ฅผ ์ค์ฌ์ผ๋ก, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ฉ ์์ด์ ํธ ๋๊ตฌ๋ฅผ ์ด๋ป๊ฒ ์์ ํ๊ฒ ์ ๊ณตํ๋์ง ์ค๋ช ํ๋ค. ์์ฒด ์ด์ํ์ ์ฐ๊ฒฐ ํ๋ง๊ณผ ๊ด์ธก์ฑ์ ๊ธฐ๋ณธ ์ ๊ณตํ๊ณ , ๊ด๋ฆฌํ์ Gemini CLI, Cloud Code ๊ฐ์ ํ๋ค์ค์ ์ฐ๊ฒฐํด ๋๊ท๋ชจ ๋๊ตฌ ํธ์ถ์ ์ฒ๋ฆฌํ๋ค.
-
2:56
๋ฐ์ดํฐ๋ฒ ์ด์ค์ฉ ์ผ๋ฐ์ ์ธ ๋๊ตฌ ํจํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๊ตฌ๋ ๊ด๋ฆฌ ์์ ์ฉ control plane ๋๊ตฌ์ ์์ฐ์ด๋ฅผ SQL๋ก ๋ฐ๊พธ๋ NL2SQL ๋๊ตฌ๋ก ํฌ๊ฒ ๋๋๋ค. ์ ์๋ ์ธ์คํด์ค์ DB ์์ฑยท๊ด๋ฆฌ์ฒ๋ผ ์ํํ ์์ ์ ๋ค๋ฃจ๋ฏ๋ก human in the loop์ด ํ์ํ๊ณ , ํ์๋ ํ์์ ๋ถ์๊ณผ ๋ณต์กํ ์ง์ ์์ฑ์ ์ ํฉํ๋ค.
-
4:37
ํ๋ก๋์ ์ ์ํ ๊ตฌ์กฐํ๋ SQL ๋๊ตฌ ํ๋ก๋์ ์์๋ ์ฌ์ฉ์๊ฐ ์ด๋ค SQL์ ์ธ์ง ์ด๋ฏธ ์๊ณ ์๊ณ , ํ๋ผ๋ฏธํฐ๊ฐ ๋ฏธ๋ฆฌ ์ ํด์ง ๊ตฌ์กฐํ๋ SQL ๋๊ตฌ๊ฐ ๋ ์ ํฉํ๋ค. ์ด ๋ฐฉ์์ SQL injection ์ํ์ ์ค์ด๊ณ , ์์ด์ ํธ์ ํ๊ฐ์ ๋ฎ์ถ๋ฉฐ, ์ง์ฐ์๊ฐ๊ณผ ์ ๊ทผ ์ ์ด๋ฅผ ๋ ์๊ฒฉํ๊ฒ ๊ด๋ฆฌํ ์ ์๋ค.
-
5:20
๋น๋ํ์๊ณผ ๋ฐํ์์ ์ฐจ์ด NL2SQL ๋๊ตฌ์ control plane ๋๊ตฌ๋ ๊ฐ๋ฐ ๋ณด์กฐ์ฉ ๋น๋ํ์ ๋๊ตฌ๋ก๋ ์ ์ฉํ์ง๋ง, ํ๋ก๋์ ์ฌ์ฉ์ ํ๋ฆ์๋ ๊ทธ๋๋ก ์ฐ๋ฉด ์ ๋๋ค. ๋ฐํ์์๋ Patching AI๋ LangChain ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ์์ฉ ์ฑ์ ๋ง๋ ๊ฒฐ์ ์ ๋๊ตฌ๋ฅผ ๊ตฌ์ฑํด์ผ ํ๋ค.
-
6:16
๋น๋ํ์ ๋๊ตฌ๊ฐ ํ ์ด๋ธ์ ์ญ์ ํ ๋ ๋ฐ๋ชจ์์๋ ๋น๋ํ์ ๋๊ตฌ๊ฐ ์์ด์ ํธ์ ์๋ชป๋ ์ง์๋ฅผ ๋ฐ์ ํ ์ด๋ธ ์ ์ฒด๋ฅผ ์ญ์ ํ๋ ์ฌ๊ณ ๊ฐ ๋ฐ์ํ๋ค. ์์ ์ฅ์น์ guardrail์ด ์์ผ๋ฉด ์์ด์ ํธ๊ฐ ์์ ์๊ฒ ์ํํ ์์ ์ ์คํํ ์ ์๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ ์ฆ์ ํ๊ดด์ ์ผ ์ ์๋ค.
-
8:46
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ณด์์ ์์ด์ ํธ๋งํผ๋ง ๊ฐํ๋ค ์์ด์ ํธ์ LLM์ ์ฝ๊ฒ ์์ ์ ์์ผ๋ฏ๋ก, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณด์์ ๊ฒฐ๊ตญ ์์ด์ ํธ์ ๊ถํ ์ค๊ณ์ ๋ฌ๋ ค ์๋ค. ์ฌ์ฉ์๊ฐ ์์ด์ ํธ๋ฅผ ์์ฌ ๊ถํ์ ์ค๋จ์ฉํ๊ฒ ๋ง๋๋ confused deputy ๊ณต๊ฒฉ์ด ๋ํ์ ์ธ ์ํ์ด๋ค.
-
9:13
์น๋ช ์ ์ผ์ค์กฐํฉ๊ณผ confused deputy ์ ์ถ์ ๋น๊ณต๊ฐ ๋ฐ์ดํฐ, ์ ๋ขฐ๋์ง ์์ ์ ๋ ฅ, ๊ทธ๋ฆฌ๊ณ ์ธ๋ถ ์ฌ์ฉ์์๊ฒ ๊ทธ ๋ด์ฉ์ ๋ค์ ๋ ธ์ถํ ๋ฅ๋ ฅ์ด ๋์์ ์์ ๋ ๋ฐ์ํ๋ค. ํฐ์ผ ๊ธฐ๋ฐ ํธ๋ฆฌ์์ง ์์ด์ ํธ์ฒ๋ผ ์ ๋ขฐ๋ ์์คํ ์ด ์ ์ฑ ์ ๋ ฅ์ ๋ฐ์ ๊ถํ์ ๊ทธ๋๋ก ํ์ฌํ๋ฉด, ์๋ ์ ๊ทผ ๊ถํ์ด ์๋ ๋ฐ์ดํฐ๊ฐ ์ธ๋ถ๋ก ํ๋ฌ๋๊ฐ๋ค.
-
11:19
์ฌ์ฉ์, ์ ํ๋ฆฌ์ผ์ด์ , ์์ด์ ํธ ์ ์ ๋ถ๋ฆฌ ์ฌ์ฉ์ ์ ์, ์ ํ๋ฆฌ์ผ์ด์ ์ ์, ์์ด์ ํธ ์ ์์ ๋ถ๋ฆฌํด์ผ ๊ถํ ๋ฒ์๋ฅผ ์ ํํ ํต์ ํ ์ ์๋ค. ์ฌ์ฉ์์๊ฒ๋ ์ฑ ์ ๊ทผ๋ง ์ฃผ๊ณ , ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ํ ์๋น์ค์๋ง ๋๊ฒ ์ ๊ทผํ๋, ์์ด์ ํธ๋ ์ต์ข ์ฌ์ฉ์์๊ฒ ํ์ํ ๋ฐ์ดํฐ ๋ฒ์๊น์ง๋ง ์ ๊ทผํ๊ฒ ํด์ผ ํ๋ค.
-
12:33
์ํผ์ ์ ๋๊ตฌ๋ฅผ ์ ํํ ๋๊ตฌ๋ก ์งํ์ํค๊ธฐ ์ด๊ธฐ์๋ ์์ด์ ํธ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๊ฒฉ ์ฆ๋ช , ํธ์คํธ, ํฌํธ, raw SQL๊น์ง ์ฅ ์ํผ์ ์ ํํ์ง๋ง, MCP Toolbox๋ source primitive๋ก ์ฐ๊ฒฐ ์ ๋ณด๋ฅผ ์์ด์ ํธ ๋ฐ๊นฅ์ ๋๋ค. read only ์ ํ, allowed data sets, ์ถ๋ ฅ ํฌ๊ธฐ ์ ํ๊น์ง ๋ํด blast radius๋ฅผ ์ค์ด๊ณ , ๋๊ตฌ ์ ๋ ฅ๋ SQL string ์์ค์ผ๋ก ๋จ์ํํ๋ค.
-
14:55
์ปค์คํ ๋๊ตฌ์ prepared statements ์์ด์ ํธ๊ฐ ์์์ SQL์ ์์ฑํ์ง ๋ชปํ๊ฒ ํ๋ ค๋ฉด YAML๋ก ์ ํํ SQL ๋ฌธ์ ์ ์ํ custom tools๊ฐ ํ์ํ๋ค. prepared statements์ type parameters๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๋ ฅ ๊ฒ์ฆ์ด ๊ฐํด์ง๊ณ , ๋๊ตฌ ์ด๋ฆ๊ณผ ์ค๋ช ๋ ์์ด์ ํธ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๋ช ํํ ์ค๊ณํ ์ ์๋ค.
-
15:52
๋๊ตฌ ํ์ง์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก ๋๊ตฌ๋ ์์์ REST API๊ฐ ์๋๋ผ ์ค์ ๊ฒฐ๊ณผ ์ค์ฌ์ผ๋ก ์ค๊ณํด์ผ ํ๋ฉฐ, ์ฝ๊ธฐ์ ์ฐ๊ธฐ๋ฅผ ๋ถ๋ฆฌํด ์น์ธ ํ๋ฆ์ ๋ค๋ฅด๊ฒ ๊ฐ์ ธ๊ฐ์ผ ํ๋ค. ๋ํ ์ฌ์๋ ๊ฐ๋ฅํ ๊ตฌ์ฒด์ ์ค๋ฅ, ๋จ์ํ ํ๋ฉด ์ ๋ ฅ ๊ตฌ์กฐ, ๊ทธ๋ฆฌ๊ณ ์ค๋ณต๋์ง ์๋ ๋ช ํํ ์ค๋ช ์ด ๋๊ตฌ ํ์ง์ ํฌ๊ฒ ๋์ธ๋ค.
-
17:39
๋ฐ์ธ๋ฉ๋ ํ๋ผ๋ฏธํฐ์ ์์ด์ ํธ์์ PII ์จ๊ธฐ๊ธฐ user ID ๊ฐ์ PII๋ ์์ด์ ํธ๊ฐ ์ง์ ๋ค๋ฃจ๊ฒ ๋๋ฉด ์ ๋๋ฉฐ, ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋จผ์ ์ธ์ฆํ ๋ค bound parameters๋ก ๋๊ตฌ์ ๋ฌถ์ด์ผ ํ๋ค. ๋๋ authenticated parameters๋ก identity token์ ๊ฒ์ฆํด user claims๋ฅผ ์ถ์ถํ๋ฉด, ๋ฏผ๊ฐํ ์ ์ ์ ๋ณด๊ฐ ์์ด์ ํธ ์ ์ด ๋ฐ์์ ์ฒ๋ฆฌ๋๋ค.
์ค๋ฌด ์ธ์ฌ์ดํธ
- ํ๋ก๋์ ์ฉ ์์ด์ ํธ ๋๊ตฌ๋ '๋ฌด์์ ํ ์ ์๋'๋ณด๋ค '๋ฌด์์ ์ ๋ ๋ชป ํ๊ฒ ํ ๊ฒ์ธ๊ฐ'๋ฅผ ๋จผ์ ์ค๊ณํด์ผ ํ๋ค.
- SQL ์์ฑ๊ถ, ์ฐ๊ฒฐ ์ ๋ณด, ์ฌ์ฉ์ ์ ์์ฒ๋ผ ์ํ๋๊ฐ ํฐ ์์๋ ์์ด์ ํธ ์ ๋ ฅ์์ ๋ถ๋ฆฌํ๊ณ , ๋๊ตฌ ์๊ทธ๋์ฒ๋ฅผ ๊ฐ๋ฅํ ํ ์ข๊ฒ ์ ์งํ๋ ๊ฒ์ด ํต์ฌ์ด๋ค.
- ์ฝ๊ธฐ/์ฐ๊ธฐ ๋ถ๋ฆฌ, ๋ช ์์ ์ค๋ฅ, bound parameters, authenticated parameters๋ฅผ ํจ๊ป ์ ์ฉํ๋ฉด ๋ณด์๊ณผ ์ด์ ์์ ์ฑ์ ๋์์ ๋์ผ ์ ์๋ค.