์ ์ฒด ์ํคํ ์ฒ
์นดํ ๊ณ ๋ฆฌ๋ณ๋ก ์ ๋ฆฌ๋ ๋คํธ์ํฌ ํต์ ๊ตฌ์กฐ
โ๏ธ 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) ๋น๋๊ธฐ ํต์ ๋ฐฉ์
๐ก Sensing / IoT
WiFi CSI๋ก ์์น ๋ถ์์ ์ด๋ป๊ฒ ๋์ํ๋?
๋จ์ผ WiFi ์ ํธ์ ๋ฌผ๋ฆฌ ๊ณ์ธต ๋ฐ์ดํฐ๋ฅผ ๋ ์ด๋์ฒ๋ผ ํ์ฉ
WiFi ์ ํธ์ CSI(Channel State Information)๋ฅผ ๋ถ์ํ์ฌ, ์นด๋ฉ๋ผ ์์ด ์ฌ๋์ ์์นยท์์ง์ยทํธํกยท์ฌ๋ฐ๊น์ง ๊ฐ์งํ๋ ๊ธฐ์ . ๊ฐ ์๋ธ์บ๋ฆฌ์ด์ ์งํญ๊ณผ ์์ ๋ณํ๋ก ๋ฐ๋ฆฌ๋ฏธํฐ ์์ค์ ๊ณต๊ฐ ์ ๋ณด๋ฅผ ์ถ์ถ
๋ธ๋ฃจํฌ์ค๊ฐ ๋ ธ์ถํ๋ ๋น์ ์ ์ ๋ณด๋ค
BLE ์ ํธ๋ง์ผ๋ก ์ํ ํจํดยท์์นยทํ๋์ด ์ถ์ ๋๋ ์๋ฆฌ
๋ธ๋ฃจํฌ์ค๋ฅผ ์ผ๋๋ ๊ฒ๋ง์ผ๋ก๋ MAC ์ฃผ์, ๊ธฐ๊ธฐ๋ช , ์ ์กฐ์ฌ, BLE ์๋น์ค UUID ๋ฑ์ด ๋์์์ด ๋ธ๋ก๋์บ์คํธ๋จ. ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด ํ๋๋ก ์ฃผ๋ณ ์ฌ๋์ ์ถํด๊ทผ ํจํด, ํ๋ฐฐ ๋์ฐฉ ์์ , ์ง ๋น๋ ์๊ฐ๋๊น์ง ํ์ ๊ฐ๋ฅ
๐งฉ Runtime / Execution
WebAssembly(WASM)๋ ์ด๋ป๊ฒ ๋์ํ๋?
C++/Rust/Zig ์ฝ๋๋ฅผ ๋ธ๋ผ์ฐ์ ์์ ๋ค์ดํฐ๋ธ ์๋๋ก ์คํ
WebAssembly(WASM)๋ C++, Rust, Zig ๋ฑ์ผ๋ก ์์ฑ๋ ์ฝ๋๋ฅผ ๋ฐ์ดํธ์ฝ๋๋ก ์ปดํ์ผํด ๋ธ๋ผ์ฐ์ ์์ ๋ค์ดํฐ๋ธ์ ๊ฐ๊น์ด ์๋๋ก ์คํํ๋ ๊ธฐ์ . JavaScript๋ก๋ ๋ถ๊ฐ๋ฅํ ๊ณ ์ฑ๋ฅ ์ฐ์ฐ(์ด๋ฏธ์ง/๋น๋์ค ์ฒ๋ฆฌ, 3D ๋ ๋๋ง, ํฐ๋ฏธ๋ ํ์ ๋ฑ)์ ์น์์ ๊ตฌํ ๊ฐ๋ฅ
WASM์ ์น์ 1๊ธ ์ธ์ด๋ก ๋ง๋ค๊ธฐ
JS glue ์์ด Web API๋ฅผ ์ง์ ํธ์ถํ๋ Component Model
2017๋ ์ถ์ ์ดํ WASM์ ์น์์ "2๊ธ ์๋ฏผ" โ DOM/console ๋ฑ Web API์ ์ง์ ์ ๊ทผํ ์ ์๊ณ ๋ฐ๋์ JS glue code๋ฅผ ๊ฑฐ์ณ์ผ ํจ. Mozilla๊ฐ ์ ์ํ Component Model์ WIT๋ก API๋ฅผ ์ ์ธํ๊ณ JS ์์ด ์ง์ ํธ์ถ์ ๊ฐ๋ฅํ๊ฒ ํ์ฌ, WASM์ ๋ธ๋ผ์ฐ์ ์ 1๊ธ ์คํ ํ๊ฒฝ์ผ๋ก ๊ฒฉ์์ํค๋ ค๋ ์๋
WebGPU โ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ก์ปฌ GPU๋ฅผ ์ง์ ์ฐ๋ ๋ฐฉ๋ฒ
WebGL์ ํ์, Vulkan/Metal/DX12 ์์ค์ ์ ์์ค GPU API๊ฐ ๋ธ๋ผ์ฐ์ ์ ๋ค์ด์๋ค
WebGPU๋ ๋ธ๋ผ์ฐ์ ์ ๋ด์ฅ๋ JavaScript API๋ก, ์นํ์ด์ง๊ฐ ๋ก์ปฌ GPU ํ๋์จ์ด์ ์ง์ ์ ๊ทผํ ์ ์๊ฒ ํ๋ค. WebGL์ ํ์์ด๋ฉฐ OS๋ณ๋ก Vulkan/Metal/DirectX 12์ ๋งคํ๋๋ค.
๐ DNS / Domain
DNS ๋๋ฉ์ธ ์ค์ ์ ์ด๋ป๊ฒ ๋ฐ์๋๋?
onamae.com ๊ฐ์ ์ฌ์ดํธ์์ ๋๋ฉ์ธ ์ค์ ํ๋ฉด ์ค์ ๋ก ์ด๋ค ์ผ์ด ์ผ์ด๋๋๊ฐ
DNS(Domain Name System)๋ ๋๋ฉ์ธ๋ช (์: example.com)์ IP ์ฃผ์(์: 93.184.216.34)๋ก ๋ณํํ๋ ์ธํฐ๋ท์ ์ ํ๋ฒํธ๋ถ. onamae.com ๊ฐ์ ๋ ์ง์คํธ๋ผ์์ ๋๋ฉ์ธ์ ์ค์ ํ๋ฉด ๋ฃจํธ ์๋ฒ โ TLD ์๋ฒ โ ๊ถํ ๋ค์์๋ฒ ์์ผ๋ก ๊ณ์ธต์ ์ผ๋ก ์ ํ๋์ด ์ ์ธ๊ณ์์ ์ ์ ๊ฐ๋ฅํด์ง๋ค
๋ค์์๋ฒ ๋ณ๊ฒฝ์ ์ 24~72์๊ฐ ๊ฑธ๋ฆฌ๋?
๋ค์์๋ฒ(NS) ๋ณ๊ฒฝ ์ ์ ํ๊ฐ ๋๋ฆฐ ์ง์ง ์ด์ ์ ๊ฐ ๋จ๊ณ๋ณ ์บ์ ๊ตฌ์กฐ
๋ค์์๋ฒ ๋ณ๊ฒฝ์ ๋จ์ํ DNS ๋ ์ฝ๋ ๋ณ๊ฒฝ๊ณผ ๋ฌ๋ฆฌ TLD(.com/.net) ๋ ๋ฒจ์ ์บ์๊น์ง ๊ฐฑ์ ์ด ํ์ํ๋ค. TLD NS ๋ ์ฝ๋์ TTL์ด ๋ณดํต 48์๊ฐ์ด๊ณ , ISP ๋ฆฌ์กธ๋ฒ๊ฐ ์ด๋ฅผ ์บ์ํ๋ฏ๋ก ์ ์ธ๊ณ์ ๋ฐ์๋๊ธฐ๊น์ง 24~72์๊ฐ์ด ์์๋๋ค
DNS-PERSIST-01์ ์ด๋ป๊ฒ ๋์ํ๋?
Let's Encrypt์ ์ง์์ DNS ์ธ์ฆ ๋ ์ฝ๋๋ก ๋ฐ๋ณต ๊ฒ์ฆ ์ ๊ฑฐ
Let's Encrypt ์ธ์ฆ์ ๋ฐ๊ธ ์ ๋งค๋ฒ DNS TXT ๋ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํด์ผ ํ๋ DNS-01์ ํ๊ณ๋ฅผ ํด๊ฒฐ. _validation-persist. TXT ๋ ์ฝ๋์ CA ๊ณ์ ์ ๋ณด๋ฅผ ํ ๋ฒ๋ง ์ค์ ํ๋ฉด ์ดํ ๋ฐ๊ธ/๊ฐฑ์ ์ ์ฌ์ฌ์ฉ
onamae.com์ DNS ์ ๊ณต ์ ์ฒด๊ฐ ๋๋ ค๋ฉด?
ICANN ์ธ์ฆ๋ถํฐ Anycast ์ธํ๋ผ๊น์ง, ๋๋ฉ์ธ ๋ ์ง์คํธ๋ผ์ ๋ท๋ฉด
onamae.com ๊ฐ์ DNS ์ ๊ณต ์ ์ฒด(๋ ์ง์คํธ๋ผ)๊ฐ ๋๋ ค๋ฉด ICANN ์ธ์ฆ, Anycast DNS ๋คํธ์ํฌ, EPP ํ๋กํ ์ฝ ๊ตฌํ, WHOIS/RDAP ๋ฐ์ดํฐ๋ฒ ์ด์ค, DDoS ๋ฐฉ์ด ๋ฑ ๋๊ท๋ชจ ์ธํ๋ผ์ ๊ท์ ์ค์๊ฐ ํ์ํ๋ค
๋๋ฉ์ธ ๊ตฌ์ ์ ํ๋ฆ
TLD ์ ํ๋ถํฐ ๊ฐฑ์ ๊ด๋ฆฌ๊น์ง, ๋๋ฉ์ธ ๊ตฌ๋งค์ ๋ชจ๋ ๋จ๊ณ
๋๋ฉ์ธ ๊ตฌ๋งค๋ TLD ์ ํ โ WHOIS ๊ฐ์ฉ์ฑ ํ์ธ โ ๋ ์ง์คํธ๋ผ ์ ํ โ ๋ฑ๋ก (์ฐ๋ฝ์ฒ ์ ๋ณด + WHOIS Privacy) โ DNS ์ด๊ธฐ ์ค์ โ ๊ฐฑ์ ๊ด๋ฆฌ์ ์์๋ก ์งํ๋๋ค. ๋๋ฉ์ธ ๋ผ์ดํ์ฌ์ดํด, ํ๋ฆฌ๋ฏธ์ ๋๋ฉ์ธ ์์ฅ, ๋๋ฉ์ธ ๋๋ ๋ฐฉ์ง๊น์ง ํฌ๊ด ํด์ค
๋ฌด๋ฃ HTTPS ์๋น์ค๋ค์ ์๋ฆฌ
Let's Encrypt, Cloudflare, ACM์ด ๋ฌด๋ฃ ์ธ์ฆ์๋ฅผ ์ ๊ณตํ๋ ๋ฐฉ๋ฒ
ACME ํ๋กํ ์ฝ, ๋๋ฉ์ธ ๊ฒ์ฆ, CA ์ ๋ขฐ ์ฒด์ธ, TLS ํธ๋์ ฐ์ดํฌ ๋ฑ ๋ฌด๋ฃ HTTPS ์๋น์ค์ ํต์ฌ ์๋ฆฌ๋ฅผ ํด๋ถํฉ๋๋ค
DNS ์ฅ์ ์ฌ๊ณ ์ฌ๋ก ๋ชจ์
์ธํฐ๋ท์ ๋ฉ์ถ ๋ํ DNS ์ฅ์ ๋ค๊ณผ ๊ตํ
Dyn DDoS, Facebook BGP ์ฌ๊ณ , Fastly ์ฅ์ ๋ฑ ์ฃผ์ DNS ๊ด๋ จ ์ฅ์ ์ฌ๋ก๋ฅผ ๋ถ์ํ๊ณ , ๋จ์ผ ์ฅ์ ์ ๋ฐฉ์ง๋ฅผ ์ํ ์ค๋ฌด ๊ตํ์ ์ ๋ฆฌํฉ๋๋ค
๐ 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 ๊ฐ๋ฅ
Vercel Subdirectory Reverse Proxy๋ ์ด๋ป๊ฒ ๋์ํ๋?
Next.js ๋๋ฉ์ธ ์๋ ์๋ธ๋๋ ํ ๋ฆฌ๋ก ์ธ๋ถ ์๋ฒ ์ฝํ ์ธ ๋ฅผ ํตํฉํ์ฌ SEO ๊ถ์๋ฅผ ์ง์ค
negabaro.com(Vercel/Next.js)์์ /blog/* ๊ฒฝ๋ก๋ฅผ Rails(DigitalOcean) ๋๋ Jekyll(GitHub Pages) ๋ฑ ์ธ๋ถ ์๋ฒ๋ก ๋ฆฌ๋ฒ์ค ํ๋ก์. ์ฌ์ฉ์์๊ฒ๋ ๋จ์ผ ๋๋ฉ์ธ์ผ๋ก ๋ณด์ด๋ฉด์, ์ค์ ์ฝํ ์ธ ๋ ๋ณ๋ ์๋ฒ์์ ๋ ๋๋ง. ๋ฐฑ์๋ ๊ธฐ์ ์คํ์ ๋ฌด๊ดํ๊ฒ canonical/robots.txt/asset ์ ๋ URL ์ค์ ์ผ๋ก SEO ๊ถ์๋ฅผ ๋ฉ์ธ ๋๋ฉ์ธ์ ์ง์คํ๋ ๊ตฌ์กฐ
Docker ์ปจํ ์ด๋์ ๋ด๋ถ ๊ตฌ์กฐ
Linux ๋ค์์คํ์ด์ค๋ถํฐ macOS ์ง์, GPU๊น์ง โ 10๋ ๊ฐ์ ๊ธฐ์ ์ ์งํ
2013๋ ๋ฑ์ฅํ Docker๋ Linux ๋ค์์คํ์ด์ค๋ก VM ์์ด ํ๋ก์ธ์ค๋ฅผ ๊ฒฉ๋ฆฌํ๋ค. CLI ๋ค์๋ ์์ญ ๋ ๊ฐ์ ์์คํ ์ฐ๊ตฌ๊ฐ ์จ์ด ์๊ณ , macOS/Windows ์ง์์ ์ํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ VMM์ด๋ผ๋ ์ญ๋ฐ์ ์ํคํ ์ฒ๋ฅผ ์ฑํํ๋ค.
Keploy โ eBPF๋ก ํธ๋ํฝ์ ๊ฐ๋ก์ฑ API ํ ์คํธ๋ฅผ ์๋ ์์ฑํ๋ ๊ตฌ์กฐ
eBPF๊ฐ ์ปค๋์์ connect() ๋ชฉ์ ์ง๋ฅผ ๋ชฐ๋ ๋ฐ๊ฟ์น๊ธฐํ๋ ํฌ๋ช ํ๋ก์ ํจํด
keploy record๋ก ์ฑ์ ๊ฐ์ธ๋ฉด, eBPF๊ฐ ์ปค๋ ๋ ๋ฒจ์์ ๋ชจ๋ ์์๋ฐ์ด๋ ์ฐ๊ฒฐ์ ๋ชฉ์ ์ง๋ฅผ ๋ก์ปฌ ํ๋ก์๋ก ๋ฆฌ๋ค์ด๋ ํธํ๋ค. ์ฑ์ ๋ชจ๋ฅธ๋ค. ํ๋ก์๊ฐ ํ๋กํ ์ฝ๋ณ๋ก ํธ๋ํฝ์ ํ์ฑํด์ ํ ์คํธ ์ผ์ด์ค+Mock์ YAML๋ก ๋ฝ์๋ธ๋ค.
๐๏ธ System Design
์ข์ ์์คํ ์ค๊ณ๋ โ ๋์ ๋์ง ์๋ ์ค๊ณ๊ฐ ์ต๊ณ ์ ์ค๊ณ๋ค
์ํ ๊ด๋ฆฌ, DB ์ค๊ณ, ์บ์ฑ, ์ด๋ฒคํธ ์ฒ๋ฆฌ, ์ฅ์ ๋ณต๊ตฌ๊น์ง โ ๊ฒ์ฆ๋ ๋จ์ํจ์ ํ
์ข์ ์์คํ ์ค๊ณ๋ ๋ณต์กํด ๋ณด์ด์ง ์๋๋ค. ์ค๋ ๊ธฐ๊ฐ ๋ณ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์๊ณ , "์ด ๋ถ๋ถ์ ์ ๊ฒฝ ์ธ ํ์ ์๋ค"๋ ๋ฐ์์ด ๋์ค๋ฉด ์ฑ๊ณต์ด๋ค. ์ํ๋ฅผ ์ ์ฅํ๋ ์ปดํฌ๋ํธ๋ฅผ ์ค์ด๊ณ , ๊ฒ์ฆ๋ ๋จ์ํ ๊ตฌ์กฐ๋ฅผ ์ฐ๋ ๊ฒ ํต์ฌ์ด๋ค.
ํ์ ์ ํ์๋ฆฌ๋ค โ ์์๊ฐ ๋ง๋ค๊ณ , ๋ค์๊ฐ ํ์ํ๋ค
Brooks์ ๋ฒ์น, Ringelmann ํจ๊ณผ, ๊ทธ๋ฆฌ๊ณ ํ์ ๋๊ตฌ๊ฐ ๊ฐ์ถ๋ ์ฑ ์ ํ์ฐ์ ๊ตฌ์กฐ
์กฐ์ง ๋ด ์ค์ง์ ์ฑ๊ณผ๋ ์์๊ฐ ๋ง๋ ๋ค. ํ ํฌ ์ ๊ณ๋ ์ด ๋ฌธ์ ์ 'ํ์ '์ ์ฒ๋ฐฉํ์ง๋ง, ์ค์ ๋ก๋ ์กฐ์จ ๋๊ตฌ๋ง ๋๊ณ ์ฐ์ถ๋ฌผ์ ๋์ค์ง ์๋ ๊ตฌ์กฐ๊ฐ ๊ณ ์ฐฉ๋๋ค. ์ง์ง ํ์ํ ๊ฑด ํ์ ์ธํ๋ผ๊ฐ ์๋๋ผ ๊ฐ์ธ์ ์ฃผ์ฒด์ ํ๋จ๊ณผ ์ฑ ์(ownership)์ด๋ค.
ํ ์คํธ ์ฝ๋๊ฐ ์๋ก์ด ํด์(Moat)๊ฐ ๋๋ ์๋
AI ์๋์ ์ง์ง ์์ฐ์ ์ฝ๋๊ฐ ์๋๋ผ ํ ์คํธ ์ค์ํธ๋ค
AI๊ฐ ์ฝ๋๋ฅผ ํ ์ค๋ ์ ๋ณด๊ณ ๋ฌธ์์ ํ ์คํธ๋ง ํ์ตํด์ ๊ฒฝ์ ์ ํ์ 1์ฃผ์ผ ๋ง์ ๋ง๋ค์ด๋ด๋ ์๋๋ค. ์ฝ๋๋ ๋ ์ด์ ํด์๊ฐ ์๋๋ค. ์ง์ง ์์ฐ์ ์๋ง ๊ฐ์ ์ฃ์ง ์ผ์ด์ค๋ฅผ ์ปค๋ฒํ๋ ํ ์คํธ ์ค์ํธ๋ค.
๐ฌ FFmpeg
FFmpeg โ 25๋ ๊ฐ ๋ฏธ๋์ด ์ธ๊ณ๋ฅผ ์งํฑํด์จ ์ค์์ค ์๋ฏธ ๋์ดํ
์ํคํ ์ฒ, ์ฝ๋ฑ ์ถ์ํ, ํํฐ ์ฒด์ธ, ํ๋์จ์ด ๊ฐ์๊น์ง โ FFmpeg์ ๋ด๋ถ ๊ตฌ์กฐ ํด๋ถ
FFmpeg์ ๊ฑฐ์ ๋ชจ๋ ๋ฏธ๋์ด ํฌ๋งท์ ๋์ฝ๋ฉยท์ธ์ฝ๋ฉยท๋ณํยท์คํธ๋ฆฌ๋ฐํ ์ ์๋ ์คํ์์ค ๋ฉํฐ๋ฏธ๋์ด ํ๋ ์์ํฌ๋ค. 2000๋ Fabrice Bellard๊ฐ ์์ํด 25๋ ๋๊ฒ ๊ฐ๋ฐ์ด ์ด์ด์ง๊ณ ์๋ค. YouTube, Netflix, Meta, VLC, OBS โ ๋ฏธ๋์ด๋ฅผ ๋ค๋ฃจ๋ ๊ฑฐ์ ๋ชจ๋ ๊ณณ์์ FFmpeg์ด ๋์๊ฐ๋ค.
Meta์ FFmpeg ํ์ฉ โ ํ๋ฃจ ์๋ฐฑ์ต ํ, ๋๊ท๋ชจ ๋ฏธ๋์ด ์ฒ๋ฆฌ์ ๋น๋ฐ
๋ด๋ถ ํฌํฌ ํ๊ธฐ, ๋ฉํฐ๋ ์ธ ๋ณ๋ ฌ ์ธ์ฝ๋ฉ, ์ค์๊ฐ ํ์ง ๋ฉํธ๋ฆญ, ์์ฒด ASIC๊น์ง
Meta๋ ํ๋ฃจ ์๋ฐฑ์ต ํ FFmpeg์ ์คํํ๋ค. ์ค๋ซ๋์ ๋ด๋ถ ํฌํฌ์ ์์กดํ์ง๋ง, FFmpeg ์ปค๋ฎค๋ํฐ์ ํ๋ ฅํด ๋ฉํฐ๋ ์ธ ๋ณ๋ ฌ ์ธ์ฝ๋ฉ๊ณผ ์ค์๊ฐ ํ์ง ๋ฉํธ๋ฆญ์ ์ ์คํธ๋ฆผ์ ๊ตฌํํ๊ณ ๋ด๋ถ ํฌํฌ๋ฅผ ์์ ํ ํ๊ธฐํ๋ค. ์์ฒด ASIC์ธ MSVP๋ FFmpeg ํ์ค API๋ก ํตํฉํ๋ค.
FFmpeg ๋ฒ์ ๋ณ ๋ณํ โ 6.0์์ 8.1๊น์ง, ๋ฌด์์ด ๋ฌ๋ผ์ก๋
๋ฉํฐ์ค๋ ๋ฉ ๋ฆฌํฉํ ๋ง, Vulkan ์ฝ๋ฑ, ํ๋์จ์ด ๊ฐ์ ํ๋, ๊ทธ๋ฆฌ๊ณ 8.1 "Hoare"๊น์ง
FFmpeg 6.0๋ถํฐ 8.1๊น์ง ๋ฉ์ด์ ๋ณํ๋ฅผ ์ ๋ฆฌํ๋ค. Meta ๊ธฐ๋ฐ์ ๋ฉํฐ์ค๋ ๋ฉ ๋ฆฌํฉํ ๋ง(6.0~8.0), Vulkan ํ๋์จ์ด ์ฝ๋ฑ, ์ธ๋ฃจํ ๋์ฝ๋ฉ, ๊ทธ๋ฆฌ๊ณ ์ต์ 8.1 "Hoare"์ xHE-AAC, D3D12, Rockchip ์ธ์ฝ๋ฉ๊น์ง.
๐ฑ Cross-Platform
Sparkling โ TikTok์ ํฌ๋ก์ค ํ๋ซํผ ์ธํ๋ผ
Lynx ์์ง ์์์ ์ค์ ์ฑ์ ๋๋ฆฌ๊ธฐ ์ํ ํ๋ก๋์ ํ๋ ์์ํฌ
TikTok์ด ์์ฌ ์ฑ์์ Lynx ์์ง์ ํ๋ก๋์ ๊ท๋ชจ๋ก ์ด์ฉํ๊ธฐ ์ํด ๊ตฌ์ถํ ์ธํ๋ผ ๋ ์ด์ด๋ฅผ ์คํ์์ค๋ก ๊ณต๊ฐํ๋ค. React Native์ Expo๊ฐ ํ์ํ๋ฏ, Lynx ์์ง ์์์ ์ค์ ์ฑ์ ์ด์ฉํ๋ ค๋ฉด ๋น๋ ํ์ดํ๋ผ์ธ, ๋ค์ดํฐ๋ธ ๋ธ๋ฆฟ์ง, ๋ด๋น๊ฒ์ด์ ๊ฐ์ ์ธํ๋ผ๊ฐ ํ์ํ๋ค. Sparkling์ด ๊ทธ ๊ฐญ์ ๋ฉ์ด๋ค.
Lynx โ TikTok์ ํฌ๋ก์ค ํ๋ซํผ UI ์์ง
React์ฒ๋ผ ์ฐ๊ณ , ๋ค์ดํฐ๋ธ๋ก ๋ ๋๋ง
Lynx๋ TikTok์ด ๊ณต๊ฐํ ํฌ๋ก์ค ํ๋ซํผ UI ๋ ๋๋ง ์์ง์ด๋ค. ์น ๊ธฐ์ (React ์ ์ฌ ๋ฌธ๋ฒ)๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ๋ค์ดํฐ๋ธ ๋ ๋๋ง์ผ๋ก Android/iOS ํ๋ฉด์ ๊ทธ๋ ค์ค๋ค. React Native์ ๋น์ทํ ํฌ์ง์ ์ด์ง๋ง, TikTok ํ๋ก๋์ ์์ ๊ฒ์ฆ๋ ์์ฒด ๋ ๋๋ง ํ์ดํ๋ผ์ธ์ ๊ฐ๊ณ ์๋ค๋ ๊ฒ ์ฐจ๋ณ์ .
๐ค Agentic AI
Agentic AI โ ์์จ ์์ด์ ํธ์ ๊ธฐ๋ณธ ๊ตฌ์กฐ
LLM์ด ๋๊ตฌ๋ฅผ ์ฐ๊ณ , ํ๋จํ๊ณ , ๋ฐ๋ณตํ๋ ๊ตฌ์กฐ
Agentic AI๋ LLM์ด ๋จ์ํ ํ ์คํธ๋ฅผ ์์ฑํ๋ ๊ฑธ ๋์ด, ์ค์ค๋ก ๊ณํ์ ์ธ์ฐ๊ณ ๋๊ตฌ๋ฅผ ํธ์ถํ๋ฉฐ ๋ชฉํ๋ฅผ ํฅํด ๋ฐ๋ณต ์คํํ๋ ์์คํ ์ด๋ค. "์ฑ๋ด"๊ณผ "์์ด์ ํธ"์ ์ฐจ์ด๋ ์์จ์ฑ์ด๋ค. ์ฑ๋ด์ ์ง๋ฌธ์ ๋๋ตํ๊ณ , ์์ด์ ํธ๋ ๋ชฉํ๋ฅผ ํฅํด ์ค์ค๋ก ํ๋ํ๋ค.
Agent Loop โ ์์ด์ ํธ์ ์คํ ๋ฃจํ ํด๋ถ
while ๋ฃจํ ํ๋๊ฐ ์์ด์ ํธ์ ์ ๋ถ๋ค
์์ด์ ํธ์ ํต์ฌ์ "LLM์ ๋ฃจํ ์์์ ๋๋ฆฌ๋ ๊ฒ"์ด๋ค. ํ ๋ฒ ํธ์ถํ๊ณ ๋๋๋ ๊ฒ ์๋๋ผ, ๋๊ตฌ ํธ์ถ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์์ ๋ค์ LLM์ ๋๊ธฐ๊ณ , LLM์ด ๋ค์ ํ๋์ ๊ฒฐ์ ํ๋ ์ฌ์ดํด. ์ด ๋ฃจํ๋ฅผ ์ด๋ป๊ฒ ์ค๊ณํ๋๋๊ฐ ์์ด์ ํธ์ ํ์ง์ ๊ฒฐ์ ํ๋ค.
Tool Use ํจํด โ LLM์ ์๊ณผ ๋ฐ์ ๋ฌ์์ฃผ๊ธฐ
ํจ์ ํธ์ถ์ ํตํด LLM์ด ์ธ๋ถ ์ธ๊ณ์ ์ํธ์์ฉํ๋ ๊ตฌ์กฐ
LLM์ ํ ์คํธ๋ง ์์ฑํ ์ ์๋ค. ํ์ผ์ ์ฝ๊ฑฐ๋, API๋ฅผ ํธ์ถํ๊ฑฐ๋, DB๋ฅผ ์กฐํํ๋ ค๋ฉด "๋๊ตฌ"๊ฐ ํ์ํ๋ค. Tool Use๋ LLM์๊ฒ ์ฌ์ฉ ๊ฐ๋ฅํ ํจ์ ๋ชฉ๋ก์ ์๋ ค์ฃผ๊ณ , LLM์ด ํ์ํ ๋ ํจ์๋ฅผ ํธ์ถํ๊ฒ ํ๋ ํจํด์ด๋ค.
Ralph Wiggum Loop โ ์์ด์ ํธ๊ฐ ๊ฐ์ ์ฝ์ง์ ๋ฐ๋ณตํ ๋
"I'm in danger" โ ์์ด์ ํธ๊ฐ ๋น ์ ธ๋์ค์ง ๋ชปํ๋ ๋ฃจํ์ ์์ธ๊ณผ ๋์ฑ
์์ด์ ํธ๊ฐ ๊ฐ์ ์๋ฌ์ ๊ฐ์ ์์ ์ ๋ฐ๋ณตํ๊ณ , ์ง์ ์์ด ํ ํฐ๋ง ํ์ฐ๋ ์ํ. ์ฌ์จ ๊ฐ์กฑ์ Ralph Wiggum์ด "I'm in danger"๋ผ๊ณ ํ๋ฉด์ ๋ฉํ๋ ์์์๋ ๋ฐ์์ ๋ฐ์จ ์ด๋ฆ. AI ์์ด์ ํธ ๊ฐ๋ฐ์์ ๊ฐ์ฅ ํํ๊ณ ๋น์ฉ์ด ํฐ ์ํฐํจํด์ด๋ค.
Human-in-the-Loop โ ์ฌ๋์ด ๋ผ์ด๋๋ ํ์ด๋ฐ
์์ ์์จ vs ์ ์ ํ ๊ฐ์ , ๊ทธ ๊ท ํ์
์์ด์ ํธ๊ฐ ๋ชจ๋ ๊ฑธ ์๋์ผ๋ก ํ๋ฉด ํธํ์ง๋ง, ๋์ดํฌ ์ ์๋ ํ๋(๋ฐ์ดํฐ ์ญ์ , ํ๋ก๋์ ๋ฐฐํฌ, ๊ฒฐ์ )์ ์ฌ๋์ด ํ์ธํด์ผ ํ๋ค. Human-in-the-Loop์ "์ธ์ ์ฌ๋ํํ ๋ฌผ์ด๋ณผ ๊ฒ์ธ๊ฐ"๋ฅผ ์ค๊ณํ๋ ํจํด์ด๋ค.
๐ง Harness Engineering
Harness(ํ๋ค์ค)๋ ๋ฌด์์ธ๊ฐ
ํ ์คํธ ์คํ ํ๊ฒฝ์์ AI ์์ด์ ํธ๊น์ง, ๋์์ ๊ฐ์ธ์ ์ ์ดํ๋ ์์คํ
Harness๋ AI์ ๊ตญํ๋ ๊ฐ๋ ์ด ์๋๋ค. ์๋ ์ํํธ์จ์ด ๊ณตํ์ Test Harness์์ ์จ ๊ฒ์ผ๋ก, "๋์์ ๊ฐ์ธ์ ์ ์ดํ๋ ์คํ ํ๊ฒฝ" ์ ์ฒด๋ฅผ ๋ปํ๋ค. AI ํ๋ค์ค๋ , ํ ์คํธ ํ๋ค์ค๋ , ํต์ฌ์ ๊ฐ๋ค โ ๋์ ์์ฒด๋ณด๋ค ๋์์ ๊ฐ์ธ๋ ์์คํ ์ ์ค๊ณ๊ฐ ๊ฒฐ๊ณผ๋ฅผ ์ข์ฐํ๋ค.
Harness Engineering vs Prompt Engineering
ํ๋กฌํํธ๋ฅผ ์ ์ง๋ ๊ฒ๊ณผ ์คํ ํ๊ฒฝ์ ์ ์ง๋ ๊ฒ์ ๋ค๋ฅด๋ค
Prompt Engineering์ ๋ชจ๋ธ์๊ฒ "๋ญ ํด๋ผ"๋ฅผ ์ ์ ๋ฌํ๋ ๊ธฐ์ ์ด๋ค. Harness Engineering์ ๋ชจ๋ธ์ด "์ด๋ค ํ๊ฒฝ์์ ์คํ๋๋๋"๋ฅผ ์ค๊ณํ๋ ๊ธฐ์ ์ด๋ค. ๊ฐ์ ํ๋กฌํํธ๋ผ๋ ํ๋ค์ค๊ฐ ๋ค๋ฅด๋ฉด ๊ฒฐ๊ณผ๊ฐ ์์ ํ ๋ฌ๋ผ์ง๋ค.
๊ฐ๋๋ ์ผ ์ค๊ณ โ ๋ชจ๋ธ์ด ์ฝ์งํ๊ธฐ ์ ์ ๋ง๋ ๋ฒ
์ ๋ ฅ ํํฐ, ์ถ๋ ฅ ๊ฒ์ฆ, ํ๋ ์ ํ์ผ๋ก ์์ ํ ํ๋ค์ค ๋ง๋ค๊ธฐ
๋ชจ๋ธ์ ํ๋ฅ ์ ์ผ๋ก ์ถ๋ ฅํ๋ค. 10๋ฒ ์ค 9๋ฒ ๋ง์๋ 1๋ฒ์ ํ๋ฆฐ๋ค. ๊ฐ๋๋ ์ผ์ ๊ทธ 1๋ฒ์ด ํ๋ก๋์ ์์ ํฐ์ง์ง ์๊ฒ ๋ง๋ ์์ ์ฅ์น๋ค. ์ ๋ ฅ ๋จ๊ณ, ์คํ ๋จ๊ณ, ์ถ๋ ฅ ๋จ๊ณ ๊ฐ๊ฐ์ ๊ฐ๋๋ ์ผ์ ๋๋ค.
ํ๊ฐ ํ์ดํ๋ผ์ธ โ ํ๋ค์ค ํ์ง์ ์ธก์ ํ๋ ๋ฒ
๊ฐ์ผ๋ก ํ๋จํ๋ฉด ์ง๋ค, ์๋ํ๋ ํ๊ฐ ์ฒด๊ณ๊ฐ ํ์๋ค
ํ๋ค์ค๋ฅผ ๋ฐ๊ฟจ๋๋ฐ ์ข์์ก๋์ง ๋๋น ์ก๋์ง ๋ชจ๋ฅด๋ฉด ์๋ฏธ๊ฐ ์๋ค. ํ๊ฐ ํ์ดํ๋ผ์ธ์ ํ๋ค์ค ๋ณ๊ฒฝ์ ํจ๊ณผ๋ฅผ ์ ๋์ ์ผ๋ก ์ธก์ ํ๋ ์์คํ ์ด๋ค. SWE-bench, HumanEval ๊ฐ์ ๋ฒค์น๋งํฌ๋ ๊ฒฐ๊ตญ ํ๊ฐ ํ์ดํ๋ผ์ธ์ ์ผ์ข ์ด๋ค.
์ปจํ ์คํธ ์๋์ฐ ๊ด๋ฆฌ โ ์ ํํ ๊ธฐ์ต์ ์ ๋ต
100๋ง ํ ํฐ์ด์ด๋ ๋ฃ๋ ๋ฐฉ๋ฒ์ด ์ค์ํ๋ค
์ปจํ ์คํธ ์๋์ฐ๋ ๋ชจ๋ธ์ "์์ ๊ธฐ์ต"์ด๋ค. ํฌ๊ธฐ๊ฐ ์ปค์ ธ๋ ๋ฌดํํ์ง ์๊ณ , ๋ฃ๋ ์์์ ๋ด์ฉ์ ๋ฐ๋ผ ์ฑ๋ฅ์ด ๋ฌ๋ผ์ง๋ค. ํ๋ค์ค์ ํต์ฌ ์ญํ ์ค ํ๋๊ฐ ์ด ์ ํ๋ ๊ณต๊ฐ์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ด๋ค.
์ค์ผ์คํธ๋ ์ด์ ํจํด โ ๋ชจ๋ธ ํธ์ถ์ ์กฐํฉํ๋ ๋ฒ
ํ ๋ฒ์ ํธ์ถ๋ก ์ ๋๋ฉด, ์ฌ๋ฌ ๋ฒ์ ์ด๋ป๊ฒ ์ฎ๋๊ฐ
๋ณต์กํ ์์ ์ ๋ชจ๋ธ ํ ๋ฒ ํธ์ถ๋ก ๋๋์ง ์๋๋ค. ์ฌ๋ฌ ๋ชจ๋ธ ํธ์ถ์ ์ด๋ค ์์๋ก, ์ด๋ค ์กฐ๊ฑด์์ ์คํํ๋๋๊ฐ ์ค์ผ์คํธ๋ ์ด์ ์ด๋ค. Agentic AI์ ์์ด์ ํธ ๋ฃจํ๋, RAG๋, ์ฝ๋ ์์ฑ ํ์ดํ๋ผ์ธ๋ ์ ๋ถ ์ค์ผ์คํธ๋ ์ด์ ํจํด์ด๋ค.
gstack ํด๋ถ โ ํ๋ค์ค ์์ง๋์ด๋ง ์ค์ ์ฌ๋ก
Garry Tan์ด Claude Code๋ก 60์ผ๊ฐ 60๋ง ์ค์ ์น ์ ์์๋ ๊ตฌ์กฐ
gstack์ Y Combinator CEO Garry Tan์ด ๊ณต๊ฐํ Claude Code ์คํฌ ํฉ์ด๋ค. 23๊ฐ slash command๋ก ํ๋์ ๋ชจ๋ธ์ ์ญํ ๋ณ ์ ๋ฌธ๊ฐ ํ์ผ๋ก ๋ถ๋ฆฌํ๋ค. ๊ฐ์ Claude์ธ๋ฐ ํ๋ค์ค๋ฅผ ๋ฐ๊ฟจ์ ๋ฟ์ด๋ค. ์ด๊ฒ ํ๋ค์ค ์์ง๋์ด๋ง์ ์๋ ฅ์ด๋ค.
๐ Git
Git์ ๋ด๋ถ์ ์ผ๋ก ์ด๋ป๊ฒ ๋์ํ๋?
Blob, Tree, Commit โ Git์ 3๊ฐ์ง ๊ฐ์ฒด
Git์ content-addressable ํ์ผ ์์คํ ์ด๋ค. ๋ชจ๋ ํ์ผ๊ณผ ๋๋ ํ ๋ฆฌ, ์ปค๋ฐ์ SHA-1 ํด์๋ก ์๋ณ๋๋ ๊ฐ์ฒด๋ก ์ ์ฅ๋๋ค. Blob(ํ์ผ), Tree(๋๋ ํ ๋ฆฌ), Commit(์ค๋ ์ท) ์ธ ๊ฐ์ง ๊ฐ์ฒด๋ง ์ดํดํ๋ฉด Git์ ๋๋ถ๋ถ์ด ์ค๋ช ๋๋ค.
rebase vs merge, ์ธ์ ๋ฌด์์ ์ฐ๋
ํ์คํ ๋ฆฌ ๋ณด์กด๊ณผ ์ ํํ์ ํธ๋ ์ด๋์คํ
merge๋ ๋ ๋ธ๋์น๋ฅผ merge commit์ผ๋ก ํฉ์น๋ค. rebase๋ ์ปค๋ฐ์ ๋ค๋ฅธ ๋ฒ ์ด์ค ์๋ก ๋ค์ ์๋๋ค. merge๋ ํ์คํ ๋ฆฌ๋ฅผ ์๋ ๊ทธ๋๋ก ๋จ๊ธฐ๊ณ , rebase๋ ์ ํ์ผ๋ก ์ ๋ฆฌํ๋ค. ๊ณต์ ๋ธ๋์น์๋ merge, ๊ฐ์ธ ๋ธ๋์น์๋ rebase๊ฐ ๊ธฐ๋ณธ ์์น์ด๋ค.
reset vs revert, ๋ญ ์ธ์ ์ฐ๋
ํ์คํ ๋ฆฌ๋ฅผ ๊ณ ์น๋ ๋ฒ vs ๋๋๋ฆฌ๋ ์ปค๋ฐ์ ์ถ๊ฐํ๋ ๋ฒ
reset์ ๋ธ๋์น ํฌ์ธํฐ๋ฅผ ๊ณผ๊ฑฐ ์ปค๋ฐ์ผ๋ก ์ฎ๊ธด๋ค. revert๋ ๋ฐ๋ ๋ณ๊ฒฝ์ ๋ด์ ์ ์ปค๋ฐ์ ์ถ๊ฐํ๋ค. ํผ์ ์์ ์ค์ด๋ฉด reset, ์ด๋ฏธ pushํ ์ปค๋ฐ์ด๋ฉด revert๊ฐ ์์ ํ๋ค.
stash ์ ๋๋ก ์ฐ๊ธฐ
์์ ์ค ๋ธ๋์น ์ ํ์ด ํ์ํ ๋
stash๋ ์ปค๋ฐํ์ง ์์ ๋ณ๊ฒฝ์ ์์ ์ ์ฅ์์ ๋ฐ์ด๋ฃ๊ณ working tree๋ฅผ ๊นจ๋ํ๊ฒ ๋ง๋ ๋ค. ๋ธ๋์น ์ ํ, cherry-pick, ๊ธด๊ธ bugfix ๋์์ ์ด๋ค. checkout -- . / reset --hard ๋์ stash๋ฅผ ์ฐ๋ฉด ์ค์๋ก ๋ณ๊ฒฝ์ ๋ ๋ฆด ์ผ์ด ์๋ค.
worktree๋ก ์ฌ๋ฌ ๋ธ๋์น๋ฅผ ๋์์ ์ฒดํฌ์์
clone ์ฌ๋ฌ ๋ฒ ์ ํด๋ ๋๋ค
git worktree๋ ๊ฐ์ ์ ์ฅ์๋ฅผ ์ฌ๋ฌ ๋๋ ํ ๋ฆฌ์ ๊ฐ๊ธฐ ๋ค๋ฅธ ๋ธ๋์น๋ก ์ฒดํฌ์์ํ ์ ์๊ฒ ํด์ค๋ค. clone์ ์ฌ๋ฌ ๋ฒ ํ ํ์๊ฐ ์๊ณ , .git ๋๋ ํ ๋ฆฌ๋ ๊ณต์ ๋๋ฏ๋ก ์ฉ๋๋ ์ ์ฝ๋๋ค. ๊ธด ๋น๋๊ฐ ๋๋ ๋์ ๋ค๋ฅธ ๋ธ๋์น ์์ ์ ๋ณํํ ๋ ์ง๊ฐ๊ฐ ๋์จ๋ค.