์ ์ฒด ์ํคํ ์ฒ
์นดํ ๊ณ ๋ฆฌ๋ณ๋ก ์ ๋ฆฌ๋ ๋คํธ์ํฌ ํต์ ๊ตฌ์กฐ
โ๏ธ Request-Response
โก Real-time / Persistent
WebSocket
์๋ฐฉํฅ ์ค์๊ฐ ํต์
HTTP ํธ๋์ ฐ์ดํฌ ํ TCP ์ฐ๊ฒฐ์ ์ ์งํ๋ฉฐ, ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ์์ ๋กญ๊ฒ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ์ ์ด์ค(full-duplex) ํต์ ํ๋กํ ์ฝ
SSE (Server-Sent Events)
์๋ฒโํด๋ผ์ด์ธํธ ๋จ๋ฐฉํฅ ์คํธ๋ฆผ
HTTP ์ฐ๊ฒฐ์ ์ ์งํ๋ฉฐ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ด๋ฒคํธ๋ฅผ ๋จ๋ฐฉํฅ์ผ๋ก ์คํธ๋ฆฌ๋ฐํ๋ ๋ฐฉ์. text/event-stream ํ์ ์ฌ์ฉ
GraphQL Subscription
GraphQL ์คํค๋ง ๊ธฐ๋ฐ ์ค์๊ฐ ์ด๋ฒคํธ
GraphQL์ subscription ํ์ ์ ํตํด ํด๋ผ์ด์ธํธ๊ฐ ํน์ ์ด๋ฒคํธ๋ฅผ ๊ตฌ๋ ํ๊ณ , ์๋ฒ๊ฐ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ ์๋์ผ๋ก ์ ๋ฐ์ดํธ๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ์
๐ Event-Driven
Webhook
์ด๋ฒคํธ ๋ฐ์ ์ HTTP ์ฝ๋ฐฑ
์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ์ฌ์ ์ ๋ฑ๋ก๋ URL๋ก HTTP POST ์์ฒญ์ ๋ณด๋ด๋ ์ญ๋ฐฉํฅ API ํธ์ถ ๋ฐฉ์
Publish-Subscribe
๋ฉ์์ง ๋ธ๋ก์ปค๋ฅผ ํตํ ๋น๋๊ธฐ ํต์
๋ฐํ์(Publisher)๊ฐ ๋ฉ์์ง๋ฅผ ํ ํฝ์ ๋ฐํํ๋ฉด, ํด๋น ํ ํฝ์ ๊ตฌ๋ ํ ๋ชจ๋ ๊ตฌ๋ ์(Subscriber)์๊ฒ ๋ฉ์์ง๊ฐ ์ ๋ฌ๋๋ ๋ฐฉ์
Message Queue
ํ๋ฅผ ํตํ ๋น๋๊ธฐ ์์ ์ฒ๋ฆฌ
์์ฐ์(Producer)๊ฐ ๋ฉ์์ง๋ฅผ ํ์ ๋ฃ์ผ๋ฉด, ์๋น์(Consumer)๊ฐ ์์๋๋ก ๊บผ๋ด ์ฒ๋ฆฌํ๋ ์ ๋์ (point-to-point) ๋น๋๊ธฐ ํต์ ๋ฐฉ์
๐ How It Works
ngrok์ ์ด๋ป๊ฒ ๋์ํ๋?
๋ฆฌ๋ฒ์ค ํฐ๋๋ก ๋ก์ปฌ ์๋ฒ๋ฅผ ์ธํฐ๋ท์ ๋ ธ์ถ
ngrok์ ๋ก์ปฌ ๊ฐ๋ฐ ์๋ฒ๋ฅผ ๊ณต๊ฐ URL๋ก ๋ ธ์ถํ๋ ํฐ๋๋ง ์๋น์ค. ๋ด PC์์ ngrok ํด๋ผ์ด์ธํธ๊ฐ ngrok ํด๋ผ์ฐ๋์ ์์๋ฐ์ด๋ ์ฐ๊ฒฐ์ ์ด๊ณ , ์ธ๋ถ ํธ๋ํฝ์ด ๊ทธ ํฐ๋์ ํ๊ณ ๋ก์ปฌ๋ก ์ ๋ฌ๋จ
Slack Socket Mode๋ ์ด๋ป๊ฒ ๋์ํ๋?
Webhook ์์ด ์์๋ฐ์ด๋ WebSocket์ผ๋ก ์ด๋ฒคํธ ์์
Slack Bot์ด ๊ณต๊ฐ URL ์์ด ์ด๋ฒคํธ๋ฅผ ์์ ํ๋ ๋ฐฉ์. Bot ์๋ฒ๊ฐ Slack์ WebSocket ์ฐ๊ฒฐ์ ๋จผ์ ์ด๋ฉด, Slack์ด ๊ทธ ์ฐ๊ฒฐ์ ํตํด ์ด๋ฒคํธ๋ฅผ push. ๋ฐฉํ๋ฒฝ ๋ค์์๋ ๋์
ChatGPT ์คํธ๋ฆฌ๋ฐ์ ์ด๋ป๊ฒ ๋์ํ๋?
SSE๋ก ํ ํฐ ๋จ์ ์ค์๊ฐ ์๋ต ์ ๋ฌ
ChatGPT๊ฐ ๋ต๋ณ์ ํ ๊ธ์์ฉ ํ์ํ๋ ๋น๋ฐ. OpenAI API๊ฐ SSE(Server-Sent Events)๋ก ์์ฑ๋ ํ ํฐ์ ์ฆ์ ์คํธ๋ฆฌ๋ฐ ์ ์กํ๋ฉด, ํด๋ผ์ด์ธํธ๊ฐ ํ๋์ฉ ๋ฐ์ ํ๋ฉด์ ๋ ๋๋ง
GitHub Webhook์ ์ด๋ป๊ฒ ๋์ํ๋?
git push โ HTTP POST โ CI/CD ํธ๋ฆฌ๊ฑฐ
GitHub์์ ์ฝ๋ push, PR ์์ฑ ๋ฑ ์ด๋ฒคํธ ๋ฐ์ ์, ์ฌ์ ์ ๋ฑ๋กํ URL๋ก HTTP POST๋ฅผ ๋ณด๋ด ์ธ๋ถ ์์คํ (CI/CD, ์ฌ๋ ์๋ฆผ ๋ฑ)์ ์๋์ผ๋ก ํธ๋ฆฌ๊ฑฐํ๋ ๋ฐฉ์
Sidekiq๋ ์ด๋ป๊ฒ ๋์ํ๋?
Redis ๊ธฐ๋ฐ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ก ํ ์์คํ
Rails์์ ๋ฌด๊ฑฐ์ด ์์ (์ด๋ฉ์ผ ๋ฐ์ก, ์ด๋ฏธ์ง ์ฒ๋ฆฌ ๋ฑ)์ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ๋๊ธฐ๋ ์์คํ . ์น ํ๋ก์ธ์ค๊ฐ Redis ํ์ ์ก์ ๋ฃ์ผ๋ฉด, Sidekiq ์์ปค ํ๋ก์ธ์ค๊ฐ ๊บผ๋ด์ ๋น๋๊ธฐ ์ฒ๋ฆฌ
WebRTC๋ ์ด๋ป๊ฒ ๋์ํ๋?
๋ธ๋ผ์ฐ์ ๊ฐ ์ง์ ์์/์์ฑ/๋ฐ์ดํฐ ์ ์ก
๋ธ๋ผ์ฐ์ ๋ผ๋ฆฌ ์ค์ ์๋ฒ ์์ด ์์ํตํ, ํ๋ฉด๊ณต์ , ํ์ผ์ ์ก์ ํ๋ ๊ธฐ์ . ์๊ทธ๋๋ง ์๋ฒ๋ก ์ฐ๊ฒฐ ์ ๋ณด๋ฅผ ๊ตํํ ๋ค, STUN/TURN์ผ๋ก NAT๋ฅผ ๋ซ๊ณ P2P ์ง์ ์ฐ๊ฒฐ
MCP๋ ์ด๋ป๊ฒ ๋์ํ๋?
AI ๋ชจ๋ธ๊ณผ ์ธ๋ถ ๋๊ตฌ๋ฅผ ํ์ค ๋ฐฉ์์ผ๋ก ์ฐ๊ฒฐํ๋ ์คํ ํ๋กํ ์ฝ
MCP(Model Context Protocol)๋ AI ๋ชจ๋ธ(LLM)๊ณผ ์ธ๋ถ ๋๊ตฌยท๋ฐ์ดํฐ ์์ค๋ฅผ ํ์คํ๋ ๋ฐฉ์์ผ๋ก ์ฐ๊ฒฐํ๋ ์คํ ํ๋กํ ์ฝ. Host(Claude ๋ฑ)๊ฐ Client๋ฅผ ํตํด MCP Server์ ์ฐ๊ฒฐํ๋ฉด, Server๊ฐ DBยทํ์ผยทAPI ๋ฑ ์ธ๋ถ ์์คํ ์ AI์ ๋ ธ์ถ
MCP Transport: stdio vs Streamable HTTP
๋ก์ปฌ ๊ฐ๋ฐ๊ณผ ํด๋ผ์ฐ๋ SaaS ๋ฐฐํฌ์ ์ฐจ์ด
MCP๋ ๋ ๊ฐ์ง ๊ณต์ transport๋ฅผ ์ง์: stdio(๋ก์ปฌ)์ Streamable HTTP(์๊ฒฉ/SaaS). 2025๋ 3์ ๋์ ๋ Streamable HTTP๋ก SaaS ๋ฒค๋๊ฐ MCP ์๋ฒ๋ฅผ ํด๋ผ์ฐ๋์ ๋ฐฐํฌํ๊ณ ๋ค์์ ํด๋ผ์ด์ธํธ๊ฐ ์ ๊ทผ ๊ฐ๋ฅ
tmux๋ ์ด๋ป๊ฒ ๋์ํ๋?
ํฐ๋ฏธ๋ ๋ฉํฐํ๋ ์๋ก ์ธ์ ์ ์ง & ๋ถํ
tmux๋ ํ๋์ ํฐ๋ฏธ๋์์ ์ฌ๋ฌ ์ธ์ ์ ๊ด๋ฆฌํ๋ ํฐ๋ฏธ๋ ๋ฉํฐํ๋ ์. ์๋ฒ-ํด๋ผ์ด์ธํธ ๊ตฌ์กฐ๋ก, SSH ์ฐ๊ฒฐ์ด ๋๊ฒจ๋ ์ธ์ ์ด ์ ์ง๋๊ณ ๋์ค์ ๋ค์ attach ๊ฐ๋ฅ
DNS-PERSIST-01์ ์ด๋ป๊ฒ ๋์ํ๋?
Let's Encrypt์ ์ง์์ DNS ์ธ์ฆ ๋ ์ฝ๋๋ก ๋ฐ๋ณต ๊ฒ์ฆ ์ ๊ฑฐ
Let's Encrypt ์ธ์ฆ์ ๋ฐ๊ธ ์ ๋งค๋ฒ DNS TXT ๋ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํด์ผ ํ๋ DNS-01์ ํ๊ณ๋ฅผ ํด๊ฒฐ. _validation-persist. TXT ๋ ์ฝ๋์ CA ๊ณ์ ์ ๋ณด๋ฅผ ํ ๋ฒ๋ง ์ค์ ํ๋ฉด ์ดํ ๋ฐ๊ธ/๊ฐฑ์ ์ ์ฌ์ฌ์ฉ