Skip to content

๐Ÿ˜Ž Awesome Open Source โ€” ๊ธ€๋กœ๋ฒŒ ์ถ”์ฒœ ์˜คํ”ˆ์†Œ์Šค TOP 30 โ€‹

๊ธ€๋กœ๋ฒŒ ์˜คํ”ˆ์†Œ์Šค ์•„์นด์ด๋ธŒ์ธ Awesome Open Source์—์„œ ์ „ ์„ธ๊ณ„ ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ๊ฐ€์žฅ ๋†’์€ ์ฐฌ์‚ฌ๋ฅผ ๋ฐ›์œผ๋ฉฐ ๋„๋ฆฌ ํ™œ์šฉ๋˜๊ณ  ์žˆ๋Š” ์ถ”์ฒœ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ 30์„ ์ž…๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๋“ค์€ ์ตœ์‹  ์›น ์•„ํ‚คํ…์ฒ˜, ์„œ๋ฒ„๋ฆฌ์Šค ๋ฐฑ์—”๋“œ, ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”, AI ํ†ตํ•ฉ, ์ƒ์‚ฐ์„ฑ ๋„๊ตฌ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ์‹ค๋ฌด๊ธ‰ ์ŠคํŽ™์„ ์ง€๋‹ˆ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์—ฐ๊ตฌ ๋ฐ ์‘์šฉํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ๊ณผ ์‚ฌ์ „ ์ง€์‹(Prerequisites) ์„ ์ƒ์„ธํ•˜๊ฒŒ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.


1. HTTPie ๐Ÿฅง โ€‹

๊ฐ€์žฅ ์ง๊ด€์ ์ด๊ณ  ์นœ์ ˆํ•œ ๊ฐœ๋ฐœ์ž์šฉ CLI HTTP ํด๋ผ์ด์–ธํŠธGitHub: httpie/cli

์†Œ๊ฐœ: ํ„ฐ๋ฏธ๋„ ํ™˜๊ฒฝ์—์„œ curl์˜ ๋ณต์žกํ•œ ๋ฌธ๋ฒ• ๋Œ€์‹  ์ž์—ฐ์–ด์— ๊ฐ€๊นŒ์šด ๋ช…๋ น์–ด ๊ตฌ์กฐ์™€ ์•„๋ฆ„๋‹ค์šด ๋ฌธ๋ฒ• ํ•˜์ด๋ผ์ดํŒ…์„ ํ†ตํ•ด API๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋•๋Š” ๋ชจ๋˜ ์ปค๋งจ๋“œ๋ผ์ธ ์ธํ„ฐํŽ˜์ด์Šค(CLI) ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

  • โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (Tech Stack): Python, Pygments (๋ฌธ๋ฒ• ๊ฐ•์กฐ), Requests (HTTP ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)
  • ๐Ÿง  ์‚ฌ์ „์— ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ๋“ค:
    • HTTP ํ”„๋กœํ† ์ฝœ ์ŠคํŽ™: HTTP ๋ฉ”์„œ๋“œ(GET, POST, PUT, DELETE), ํ—ค๋” ๊ฐ’์˜ ์ข…๋ฅ˜, ๋ฐ”๋”” ๋ฐ์ดํ„ฐ ํ˜•์‹(MIME Type, JSON)์— ๋Œ€ํ•œ ๊นŠ์€ ์ง€์‹์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
    • CLI ์•„๊ทœ๋จผํŠธ ํŒŒ์‹ฑ: ํ„ฐ๋ฏธ๋„์˜ ๋ฌธ์ž์—ด ์ž…๋ ฅ์„ ์ •์  ํ† ํฐ์œผ๋กœ ๋ถ„ํ•ดํ•ด ๋‚ด๋ถ€ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋งคํ•‘ํ•˜๋Š” CLI ํŒŒ์„œ ์ž‘๋™ ๋ฐฉ์‹์„ ์ดํ•ดํ•˜๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.
  • ๐Ÿ’ก ํ™œ์šฉ ํŒ: ๋ณต์žกํ•œ ํ—ค๋” ์ „์†ก์ด๋‚˜ JWT ํ† ํฐ ์ธ์ฆ์ด ํ•„์š”ํ•œ ๋ณด์•ˆ API ํ…Œ์ŠคํŠธ ์‹œ, curl์˜ ์žฅํ™ฉํ•จ ๋Œ€์‹  http POST api.example.com Authorization:"Bearer [token]" ํ˜•ํƒœ์˜ ๊ฐ„์†Œํ™”๋œ ์ฝ”๋“œ๋ฅผ ์‰˜ ์Šคํฌ๋ฆฝํŠธ์— ํƒ‘์žฌํ•ด ํ…Œ์ŠคํŠธ ์ž๋™ํ™”๋ฅผ ๊ตฌ์ถ•ํ•˜์„ธ์š”.

2. tldraw ๐ŸŽจ โ€‹

์›น ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ๋“œ๋กœ์ž‰ ์บ”๋ฒ„์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌGitHub: tldraw/tldraw

์†Œ๊ฐœ: ํ”ผ๊ทธ๋งˆ๋‚˜ ๋ฏธ๋กœ(Miro)์ฒ˜๋Ÿผ ์›น ๋ธŒ๋ผ์šฐ์ € ์•ˆ์—์„œ ๊ณ ์†์œผ๋กœ ์„ ์„ ๊ทธ๋ฆฌ๊ณ , ๋ฉ”๋ชจ๋ฅผ ๋‚จ๊ธฐ๋ฉฐ, ๊ธฐํ•˜ํ•™์  ๋„ํ˜•์„ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋Ÿ‰ ์บ”๋ฒ„์Šค ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค.

  • โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (Tech Stack): TypeScript, React, HTML5 Canvas / SVG
  • ๐Ÿง  ์‚ฌ์ „์— ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ๋“ค:
    • ์ขŒํ‘œ๊ณ„ ๋ณ€ํ™˜ (Matrix Transform): ํ™”๋ฉด ๋ทฐํฌํŠธ ์ขŒํ‘œ์™€ ์‹ค์ œ ์บ”๋ฒ„์Šค์˜ ์›”๋“œ ์ขŒํ‘œ ๊ฐ„์˜ ์คŒ, ๋“œ๋ž˜๊ทธ(Pan) ๋ณ€ํ™˜์„ ์ˆ˜ํ•™์ ์œผ๋กœ ๋งคํ•‘ํ•˜๋Š” 2D ๋ณ€ํ™˜ ํ–‰๋ ฌ ๊ธฐํ•˜ํ•™์„ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • Canvas API vs SVG: ๋Œ€๋Ÿ‰์˜ ๋ฒกํ„ฐ ๊ฐ์ฒด๋ฅผ ๊ณ ์† ๋ Œ๋”๋งํ•˜๊ธฐ ์œ„ํ•œ ๋‘ ๊ธฐ์ˆ (๋ช…๋ นํ˜• Canvas ๋ Œ๋”๋ง๊ณผ ์„ ์–ธ์  SVG DOM ๊ฐ์ฒด ์ œ์–ด)์˜ ์žฅ๋‹จ์ ์„ ๊นŠ์ด ์ˆ™์ง€ํ•ด์•ผ ์„ฑ๋Šฅ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ๐Ÿ’ก ํ™œ์šฉ ํŒ: ์ž์‚ฌ ์†”๋ฃจ์…˜ ๋‚ด๋ถ€์— ์‹ค์‹œ๊ฐ„ ์•„์ด๋””์–ด ๊ณต์œ  ํ™”์ดํŠธ๋ณด๋“œ๋‚˜ ์Šคํ„ฐ๋”” ์ „์šฉ ๊ทธ๋ฆผํŒ ์œ„์ ฏ์„ ์ž„๋ฒ ๋”ฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ tldraw SDK ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ด์‹ํ•˜์—ฌ ์ฆ‰๊ฐ์ ์œผ๋กœ UI๋ฅผ ๊ตฌํ˜„ํ•ด ๋ณด์„ธ์š”.

3. Excalidraw โœ๏ธ โ€‹

์†๊ทธ๋ฆผ ์Šคํƒ€์ผ์˜ ๊ฐœ๋ฐœ ๋‹ค์ด์–ด๊ทธ๋žจ ๊ฐ€์ƒ ํ™”์ดํŠธ๋ณด๋“œGitHub: excalidraw/excalidraw

์†Œ๊ฐœ: ๊ฐœ๋ฐœ์ž ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„, ์‹œํ€€์Šค ๋‹ค์ด์–ด๊ทธ๋žจ ์ž‘์„ฑ์— ํ‘œ์ค€์ด ๋œ ๋„๊ตฌ๋กœ, ์ •๊ตํ•œ ๊ทธ๋ž˜ํ”ฝ ๋Œ€์‹  ์นœ๊ทผํ•œ ์†๊ทธ๋ฆผ(Hand-drawn) ๋А๋‚Œ์˜ ๋ฒกํ„ฐ ๋ ˆ์ด์•„์›ƒ์„ ํ†ตํ•ด ์•„์ด๋””์–ด๋ฅผ ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ์‹œ๊ฐํ™”ํ•˜๊ฒŒ ๋•๋Š” ๋ณด๋“œ์ž…๋‹ˆ๋‹ค.

  • โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (Tech Stack): TypeScript, React, Canvas, Rough.js (์†๊ทธ๋ฆผ ๋ Œ๋”๋Ÿฌ)
  • ๐Ÿง  ์‚ฌ์ „์— ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ๋“ค:
    • Rough.js ๋ Œ๋”๋ง ์ฒ ํ•™: ์ง์„ ์„ ๊ทธ๋ฆด ๋•Œ ๋ฏธ์„ธํ•œ ํ”๋“ค๋ฆผ์ด๋‚˜ ๊ฒน์นจ ํšจ๊ณผ๋ฅผ ๋ฌผ๋ฆฌ ๋ฒ•์น™์ฒ˜๋Ÿผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•ด ๋ Œ๋”๋งํ•˜๋Š” ์˜คํ”ˆ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์—ฐ๋™ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • WebRTC ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฑ„๋„: ์„œ๋ฒ„๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ํ”ผ์–ด ํˆฌ ํ”ผ์–ด(P2P)๋กœ ๋ณด๋“œ ์ขŒํ‘œ ๋ฐ ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•ด ๋™์‹œ ํŽธ์ง‘๋ฐฉ์„ ํŒŒ์ƒ์‹œํ‚ค๋Š” ๊ธฐ์ˆ ์„ ํ•™์Šตํ•ด ๋ณด์„ธ์š”.
  • ๐Ÿ’ก ํ™œ์šฉ ํŒ: ์ž‘์„ฑ๋œ ๋‹ค์ด์–ด๊ทธ๋žจ์„ ๋กœ์ปฌ .excalidraw JSON ์›๋ณธ ํฌ๋งท์œผ๋กœ ์ถ”์ถœํ•˜๊ฑฐ๋‚˜, ์ด๋ฅผ Next.js์™€ ๊ฒฐํ•ฉํ•ด ํŒ€์›๋“ค์˜ ์•„ํ‚คํ…์ฒ˜ ๋‹ค์ด์–ด๊ทธ๋žจ ์Šคํ† ๋ฆฌ์ง€ ํฌํ„ธ์„ ์ง์ ‘ ๊ตฌ์ถ•ํ•ด ์—…๋ฌด ๊ณต์œ ์šฉ์œผ๋กœ ์‚ฌ์šฉํ•ด ๋ณด์„ธ์š”.

4. Supabase โšก โ€‹

์˜คํ”ˆ์†Œ์Šค ํŒŒ์ด์–ด๋ฒ ์ด์Šค(Firebase)์˜ ์™„์ „ํ•œ ๋Œ€์•ˆGitHub: supabase/supabase

์†Œ๊ฐœ: ์ธ์ฆ, ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”, ๋Œ€์šฉ๋Ÿ‰ ์Šคํ† ๋ฆฌ์ง€, ์„œ๋ฒ„๋ฆฌ์Šค ํ•จ์ˆ˜(Edge Functions)๋ฅผ PostgreSQL ํ•˜๋‚˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ†ต์ผํ•˜์—ฌ ์ œ๊ณตํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ๋ฐฑ์—”๋“œ ํ”Œ๋žซํผ(BaaS)์ž…๋‹ˆ๋‹ค.

  • โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (Tech Stack): Elixir (API ๊ฒŒ์ดํŠธ์›จ์ด), Go (์ธ์ฆ ๋ชจ๋“ˆ), PostgreSQL (๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฝ”์–ด), TypeScript
  • ๐Ÿง  ์‚ฌ์ „์— ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ๋“ค:
    • PostgreSQL RLS (Row Level Security): ๋ฏธ๋“ค์›จ์–ด ๋ฐฑ์—”๋“œ ์„œ๋ฒ„ ์—†์ด ํ”„๋ก ํŠธ์—”๋“œ๊ฐ€ DB์— ๋‹ค์ด๋ ‰ํŠธ ์ฟผ๋ฆฌ๋ฅผ ๋˜์ ธ๋„, ์‚ฌ์šฉ์ž ์‹๋ณ„์ž(JWT)์— ๊ธฐ๋ฐ˜ํ•ด ์ž์‹ ์ด ์†Œ์œ ํ•œ ํ–‰๋งŒ ์•ˆ์ „ํ•˜๊ฒŒ ์กฐํšŒ/์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œ์–ดํ•˜๋Š” ํ–‰ ๋ ˆ๋ฒจ ๋ณด์•ˆ ์ •์ฑ…์˜ ๊ฐœ๋…์„ ๋ฌด์กฐ๊ฑด ๋งˆ์Šคํ„ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ๋…ผ๋ฆฌ์  ๋ณต์ œ (Logical Replication): DB ํ…Œ์ด๋ธ” ๋ณ€๊ฒฝ ๊ฑด์„ ์บ์น˜ํ•ด ํด๋ผ์ด์–ธํŠธ์— ์‹ค์‹œ๊ฐ„ ์†Œ์ผ“์œผ๋กœ ํ‘ธ์‹œํ•˜๋Š” ์›๋ฆฌ๋ฅผ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๐Ÿ’ก ํ™œ์šฉ ํŒ: ์‹ ๊ทœ ๋ชจ๋ฐ”์ผ ์•ฑ์ด๋‚˜ ์›น SaaS ์‹œ์ œํ’ˆ ๊ฐœ๋ฐœ ์‹œ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„์™€ ๋™์‹œ์— ์ž๋™ ์ƒ์„ฑ๋˜๋Š” REST/GraphQL API ๋ฐ ์‚ฌ์šฉ์ž ๋กœ๊ทธ์ธ ํ๋ฆ„์„ ๋‹จ 10๋ถ„ ๋งŒ์— ๊ตฌ์ถ•ํ•˜๋Š” ์ดˆ๊ณ ์† ๋ฐฐํฌ ์Šคํƒ์œผ๋กœ ์šด์šฉํ•ด ๋ณด์„ธ์š”.

5. Appwrite ๐Ÿš€ โ€‹

์›น/๋ชจ๋ฐ”์ผ/Flutter ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ์…€ํ”„ํ˜ธ์ŠคํŒ… BaaSGitHub: appwrite/appwrite

์†Œ๊ฐœ: Supabase์™€ ํ•จ๊ป˜ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์˜ ์–‘๋Œ€ ์‚ฐ๋งฅ์œผ๋กœ ๊ผฝํžˆ๋ฉฐ, Docker ํ™˜๊ฒฝ๋งŒ ๊ฐ–์ถ”์–ด์ ธ ์žˆ๋‹ค๋ฉด ๋‹จ ํ•˜๋‚˜์˜ ๋ช…๋ น์–ด๋กœ ์‚ฌ๋‚ด ์ธํ”„๋ผ์— ์™„์ „ํžˆ ์‚ฌ์„ค๋กœ ๊ฐ€๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋„์ปค ๊ธฐ๋ฐ˜ ํ†ตํ•ฉ ๋ฐฑ์—”๋“œ ์—”์ง„์ž…๋‹ˆ๋‹ค.

  • โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (Tech Stack): PHP (Swoole ๋น„๋™๊ธฐ ์—”์ง„), Docker, Redis, MariaDB
  • ๐Ÿง  ์‚ฌ์ „์— ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ๋“ค:
    • Docker Compose ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜: ์ปจํ…Œ์ด๋„ˆ ๊ฐ„์˜ ๋…๋ฆฝ ๋„คํŠธ์›Œํ‚น๊ณผ Redis ์บ์‹œ, MariaDB ์˜์† ์Šคํ† ๋ฆฌ์ง€ ๋ณผ๋ฅจ ๋งคํ•‘ ๊ตฌ์„ฑ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๋„์ปค ์‹ค๋ฌด ์ง€์‹์ด ์š”๊ตฌ๋ฉ๋‹ˆ๋‹ค.
    • ๋น„๋™๊ธฐ PHP (Swoole): ์ผ๋ฐ˜์ ์ธ ๋™๊ธฐ์‹ FPM ๊ตฌ์กฐ๊ฐ€ ์•„๋‹Œ ๋ฉ”๋ชจ๋ฆฌ ๋กœ๋”ฉ ๊ธฐ๋ฐ˜ ๊ณ ์„ฑ๋Šฅ ์ด๋ฒคํŠธ ๋“œ๋ฆฌ๋ธ PHP ์‹คํ–‰ ์—”์ง„์˜ ํšจ์œจ์„ฑ์„ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๐Ÿ’ก ํ™œ์šฉ ํŒ: ํด๋ผ์šฐ๋“œ ๋น„์šฉ์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ๋‚ด ์˜จํ”„๋ ˆ๋ฏธ์Šค ์„œ๋ฒ„๋‚˜ ๊ฐœ์ธ ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด ์„œ๋ฒ„์— Appwrite๋ฅผ ์„ค์น˜ํ•˜๊ณ , ๊ฐœ์ธ ์›น ์„œ๋น„์Šค์˜ ๋กœ๊ทธ์ธ ๊ณ„์ • ์ €์žฅ์†Œ ๋ฐ ์ด๋ฏธ์ง€ CDN ์„œ๋ฒ„๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ํ™œ์šฉํ•ด ๋ณด์„ธ์š”.

6. Directus ๐Ÿ“‚ โ€‹

๋ณด์œ  ์ค‘์ธ ๋ชจ๋“  SQL DB๋ฅผ ์ฆ‰๊ฐ์ ์ธ API์™€ ์–ด๋“œ๋ฏผ ๋ทฐ๋กœ ์ „ํ™˜ํ•˜๋Š” ์—”์ง„GitHub: directus/directus

์†Œ๊ฐœ: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ข…์†๋œ ๋…์ž์ ์ธ ์Šคํ‚ค๋งˆ๋ฅผ ๊ฐ•์ œํ•˜์ง€ ์•Š๊ณ , ํ˜„์žฌ ๊ฐ€๋™ ์ค‘์ธ ๋ณต์žกํ•œ SQL DB๋ฅผ ๋ถ„์„(Introspection)ํ•˜์—ฌ ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋Š” ์ฆ‰์„ REST/GraphQL API๋ฅผ, ๋น„๊ฐœ๋ฐœ์ž ๊ด€๋ฆฌ์ž์—๊ฒŒ๋Š” ๊ณ ํ’ˆ๊ฒฉ ๋ฐ์ดํ„ฐ CRUD ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

  • โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (Tech Stack): Node.js, Vue.js, Knex.js (SQL ์ฟผ๋ฆฌ ๋นŒ๋”)
  • ๐Ÿง  ์‚ฌ์ „์— ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ๋“ค:
    • ์Šคํ‚ค๋งˆ ์ธํŠธ๋กœ์ŠคํŽ™์…˜: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฉ”ํƒ€ํ…Œ์ด๋ธ”(Information Schema)์„ ์—ญ์œผ๋กœ ์กฐํšŒํ•ด ๋ฐ์ดํ„ฐ ์ปฌ๋Ÿผ ๊ตฌ์กฐ์™€ ๊ด€๊ณ„์„ฑ์„ ์ฝ์–ด์™€ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋กœ ๋™์  ๊ฐ€๊ณตํ•˜๋Š” ์‹œ์Šคํ…œ ๊ธฐ์ˆ ์„ ์•Œ์•„๋‘์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • RBAC (์—ญํ•  ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ์ œ์–ด): ์‚ฌ๋‚ด ์ง๊ตฐ๋ณ„๋กœ ํ…Œ์ด๋ธ”์˜ CRUD ๊ถŒํ•œ์„ ์„ธ๋ฐ€ํ•˜๊ฒŒ ๋ถ„ํ•  ํ†ต์ œํ•˜๋Š” ๊ถŒํ•œ ๋งคํŠธ๋ฆญ์Šค๋ฅผ ์ดํ•ดํ•ด์•ผ ๋ณด์•ˆ ์‚ฌ๊ณ ๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๐Ÿ’ก ํ™œ์šฉ ํŒ: ์‹ ๊ทœ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค ํ•„์š” ์—†์ด, ์ด๋ฏธ ์šด์˜ ์ค‘์ธ ์‡ผํ•‘๋ชฐ์ด๋‚˜ ์„œ๋น„์Šค์˜ ๋ณต์žกํ•œ MySQL/PostgreSQL์— Directus๋งŒ ํฌํŠธ๋กœ ์–น์–ด ์‚ฌ๋‚ด CS ๋ถ€์„œ๋‚˜ ์ •์‚ฐํŒ€์ด ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ •๊ตํ•œ ๋ฐฑ์˜คํ”ผ์Šค ์–ด๋“œ๋ฏผ ํ”„๋กœ๊ทธ๋žจ์„ ์ฆ‰์‹œ ํ™•๋ณดํ•˜์„ธ์š”.

7. Strapi ๐Ÿ”Œ โ€‹

REST์™€ GraphQL์„ ์™„๋ฒฝ ์ง€์›ํ•˜๋Š” ๊ธ€๋กœ๋ฒŒ 1์œ„ ํ—ค๋“œ๋ฆฌ์Šค CMSGitHub: strapi/strapi

์†Œ๊ฐœ: ์ฝ˜ํ…์ธ  ์ œ์ž‘์ž(์—๋””ํ„ฐ)๋Š” ์•„๋ฆ„๋‹ค์šด ๊ด€๋ฆฌ์ž ํผ์—์„œ ๊ธ€์„ ์“ฐ๊ณ  ์ด๋ฏธ์ง€๋‚˜ ํƒœ๊ทธ๋ฅผ ๋ถ™์—ฌ ์ €์žฅํ•˜๊ณ , ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋Š” ์ˆœ์ˆ˜ํ•œ JSON API๋งŒ ๋ฐ›์•„์„œ ์ž์œ ๋กญ๊ฒŒ ํ™”๋ฉด์„ ๋“œ๋กœ์ž‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ๋Œ€ํ‘œ์ ์ธ API-first ์ฝ˜ํ…์ธ  ๊ด€๋ฆฌ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

  • โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (Tech Stack): JavaScript, React (์–ด๋“œ๋ฏผ ํŒจ๋„), Koa.js (๊ฒฝ๋Ÿ‰ ์„œ๋ฒ„ ํ”„๋ ˆ์ž„์›Œํฌ)
  • ๐Ÿง  ์‚ฌ์ „์— ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ๋“ค:
    • ํ—ค๋“œ๋ฆฌ์Šค(Headless) ์•„ํ‚คํ…์ฒ˜: ํ™”๋ฉด๋‹จ(Head)์ด ์กด์žฌํ•˜์ง€ ์•Š๊ณ  ์ˆœ์ˆ˜ ์›์‹œ ๋ฐ์ดํ„ฐ ์†ก์ถœ์ฐฝ(API)๋งŒ ๊ด€๋ฆฌํ•˜์—ฌ ์ •์  ์‚ฌ์ดํŠธ ๋นŒ๋”๋‚˜ ๋ชจ๋ฐ”์ผ ์•ฑ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฟœ์–ด์ฃผ๋Š” ๋ฐฑ์—”๋“œ ๊ตฌ์กฐ๋ฅผ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • Dynamic Zones ๋ชจ๋ธ๋ง: ์—๋””ํ„ฐ๊ฐ€ ์ฝ˜ํ…์ธ  ์˜์—ญ์— ํ…์ŠคํŠธ, ์ฐจํŠธ, ์Šฌ๋ผ์ด๋“œ ์ด๋ฏธ์ง€๋ฅผ ์ž์œ ๋กญ๊ฒŒ ๊ฐ€๋ณ€ ๋ฐฐ์—ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋•๋Š” ๋™์  JSON ์ž๋ฃŒํ˜• ๋ชจ๋ธ๋ง ๊ธฐ์ˆ ์„ ์ˆ™์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๐Ÿ’ก ํ™œ์šฉ ํŒ: ์ฝ˜ํ…์ธ ๋Š” Strapi์—์„œ ํผ๋ธ”๋ฆฌ์‹ฑํ•˜๊ณ , Next.js๋‚˜ Gatsby ์›น์•ฑ์€ ๋นŒ๋“œ ํƒ€์ž„์— Strapi API๋ฅผ ๋•ก๊ฒจ์™€ ์›น ๋กœ๋”ฉ ์†๋„๊ฐ€ 0.1์ดˆ ์ˆ˜์ค€์œผ๋กœ ๋น ๋ฅธ ๋ธ”๋กœ๊ทธ/๋‰ด์Šค ์„œ๋น„์Šค ์ •์  ์‚ฌ์ดํŠธ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์ ์šฉํ•ด ๋ณด์„ธ์š”.

8. Cal.com ๐Ÿ“… โ€‹

์ปค์Šคํ„ฐ๋งˆ์ด์ง•์ด ๊ฐ€๋Šฅํ•œ ์˜คํ”ˆ์†Œ์Šค ์ผ์ • ์˜ˆ์•ฝ ํ”Œ๋žซํผGitHub: calcom/cal.com

์†Œ๊ฐœ: ์บ˜๋ฆฐ๋“ค๋ฆฌ(Calendly)๋ฅผ ์™„์ „ํžˆ ๋Œ€์ฒดํ•˜๋Š” ์˜คํ”ˆ์†Œ์Šค ์Šค์ผ€์ค„๋ง ์ธํ”„๋ผ๋กœ, ๊ตฌ๊ธ€ ์บ˜๋ฆฐ๋”๋‚˜ ์•„์›ƒ๋ฃฉ, ํ™”์ƒ ํšŒ์˜์šฉ Zoom/Meet์„ ์•ˆ์ „ํ•˜๊ฒŒ ๋™๊ธฐํ™”ํ•ด ๊ณ ๊ฐ์ด ๋‚ด ๊ฐ€์šฉ ์‹œ๊ฐ„๋Œ€์— ๋ฏธํŒ…์„ ์˜ˆ์•ฝํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

  • โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (Tech Stack): Next.js, React, Prisma (ORM), PostgreSQL, TailwindCSS
  • ๐Ÿง  ์‚ฌ์ „์— ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ๋“ค:
    • ์‹œ๊ฐ„๋Œ€(Timezone) ์—ฐ์‚ฐ: ์˜ˆ์•ฝ์ž๊ฐ€ ์„ธ๊ณ„ ๊ฐ๊ตญ์— ํผ์ ธ์žˆ์„ ๋•Œ ์ƒ๊ธฐ๋Š” UTC ํ‘œ์ค€์‹œ์™€ ๋กœ์ปฌ ์‹œ๊ฐ„(KST, EST ๋“ฑ) ๊ฐ„์˜ ์ค‘๋ณต ์˜ˆ์•ฝ ์ฐจ๋‹จ๊ณผ ์จ๋จธํƒ€์ž„ ์˜ค์ฐจ๋ฅผ ์žก๋Š” ์‹œ๊ณ„์—ด ์ˆ˜ํ•™์„ ์ˆ™์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • OAuth 3์‚ฌ ํ† ํฐ ์—ฐ๋™: ๊ตฌ๊ธ€/๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ ์บ˜๋ฆฐ๋” API ๊ถŒํ•œ์„ ๋ฐ›์•„์™€ ์‚ฌ์šฉ์ž์˜ ์ผ์ •์„ ์‹ค์‹œ๊ฐ„ ์Šค์บ”ํ•ด ๋น„์–ด์žˆ๋Š” ํƒ€์ž„ ์Šฌ๋กฏ์„ ์ถ”์ถœํ•˜๋Š” ๊ธฐ๋ฒ•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ๐Ÿ’ก ํ™œ์šฉ ํŒ: ์œ ๋ฃŒ ํ”Œ๋žซํผ ๊ตฌ๋… ๋น„์šฉ์„ ์ ˆ์•ฝํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ์ธ VPS ์„œ๋ฒ„์— Cal.com์„ ์…€ํ”„ ํ˜ธ์ŠคํŒ…์œผ๋กœ ๋„์›Œ, ๋‚ด ํฌํŠธํด๋ฆฌ์˜ค ์›น์‚ฌ์ดํŠธ๋‚˜ ์‚ฌ๋‚ด ์›น์•ฑ ๋‚ด์— ์ง์ ‘ ์ผ์ • ์˜ˆ์•ฝ ์œ„์ ฏ์„ ์—ฐ๋™ํ•ด ์‚ฌ์šฉํ•˜์„ธ์š”.

9. Metabase ๐Ÿ“Š โ€‹

๋ˆ„๊ตฌ๋‚˜ ์‰ฝ๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์‹œํ™”ํ•˜๋Š” ์˜คํ”ˆ์†Œ์Šค ๋น„์ฆˆ๋‹ˆ์Šค ์ธํ…”๋ฆฌ์ „์Šค(BI)GitHub: metabase/metabase

์†Œ๊ฐœ: ๋ณต์žกํ•œ ์ฝ”๋”ฉ์ด๋‚˜ SQL ์ง€์‹์ด ์—†๋Š” ๊ธฐํš์ž๋‚˜ ๋งˆ์ผ€ํ„ฐ๋„ ๋งˆ์šฐ์Šค ํด๋ฆญ ๋ช‡ ๋ฒˆ(Visual Query Builder)์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‹œ๊ฐ์  ์ฐจํŠธ์™€ ์‹ค์‹œ๊ฐ„ ์—ฐ๋™ ๋Œ€์‹œ๋ณด๋“œ๋กœ ๋งŒ๋“ค์–ด ์‚ฌ๋‚ด์— ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐํ™” ์†Œํ”„ํŠธ์›จ์–ด์ž…๋‹ˆ๋‹ค.

  • โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (Tech Stack): Clojure (LISP ๊ณ„์—ด์˜ ๋ฐฑ์—”๋“œ), React, Java
  • ๐Ÿง  ์‚ฌ์ „์— ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ๋“ค:
    • ๋ฐ์ดํ„ฐ ๋ ˆ์ดํฌ ๋ฐ ์›จ์–ดํ•˜์šฐ์ง•: ์ˆ˜๋งŽ์€ ์„œ๋น„์Šค ํŠธ๋žœ์žญ์…˜์ด ๋ฐœ์ƒํ•˜๋Š” ์‹ค์‹œ๊ฐ„ DB์— ๋ถ€ํ•˜๋ฅผ ์ฃผ์ง€ ์•Š๊ณ  ๋ณต์ œ DB๋‚˜ ๋ฐ์ดํ„ฐ์›จ์–ดํ•˜์šฐ์Šค(BigQuery ๋“ฑ)์— ์ปค๋„ฅ์…˜์„ ๋งบ์–ด ๊ฒฉ๋ฆฌ ์กฐํšŒํ•˜๋Š” ํŒŒ์ดํ”„๋ผ์ธ ์ง€์‹์„ ๋ฐฐ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • SQL ์งˆ์˜ ์ปดํŒŒ์ผ๋Ÿฌ: ๋น„๊ธฐ์ˆ ์ž๊ฐ€ UI์—์„œ ์„ค์ •ํ•œ ํ•„ํ„ฐ ์กฐ๊ฑด์ด ๋‚ด๋ถ€์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ RDBMS ํ˜ธํ™˜ SELECT ์ฟผ๋ฆฌ๋กœ ์ปดํŒŒ์ผ๋˜์–ด ๋‚˜๊ฐ€๋Š”์ง€ ์›๋ฆฌ๋ฅผ ํŒŒ์•…ํ•ด ๋ณด์„ธ์š”.
  • ๐Ÿ’ก ํ™œ์šฉ ํŒ: ์‚ฌ๋‚ด ๊ธฐ์ˆ  ์ง€ํ‘œ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์œ„ํ•ด ์ฃผ์š” ํŠธ๋ž˜ํ”ฝ DB๋ฅผ Metabase์— ์—ฐ๊ฒฐํ•ด ๋งค์ผ ์•„์นจ ๊ฐ€์ž…์ž ์ˆ˜, ๊ฒฐ์ œ์œจ ํ†ต๊ณ„๋ฅผ ์Šฌ๋ž™ ์ฑ„๋„๋กœ ์ฐจํŠธ ์ด๋ฏธ์ง€์™€ ํ•จ๊ป˜ ์ž๋™ ์Šค์ผ€์ค„๋ง ์ „์†กํ•˜๋Š” ์ž๋™ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ์—ฐ๋™ํ•˜์„ธ์š”.

10. n8n ๐Ÿ”— โ€‹

๋…ธ๋“œ ๊ธฐ๋ฐ˜ ๋น„๋™๊ธฐ์‹ ์›Œํฌํ”Œ๋กœ์šฐ ๋น„์ฃผ์–ผ ์ž๋™ํ™” ์—”์ง„GitHub: n8n-io/n8n

์†Œ๊ฐœ: ์žํ”ผ์–ด(Zapier)์˜ ๊ฐ•๋ ฅํ•œ ์˜คํ”ˆ์†Œ์Šค ๋ฒ„์ „์œผ๋กœ, ๊ฐ ์„œ๋น„์Šค ๋ธ”๋ก(GitHub, Gmail, Slack ๋“ฑ)์„ ํ™”๋ฉด ์ƒ์— ์„ ์œผ๋กœ ๋Œ์–ด๋‹ค ๋†“์•„ ์กฐ๊ฑด ๋ถ„๊ธฐ, ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜์„ ๊ฐ€๋™ํ•ด ์—…๋ฌด๋ฅผ ์ž๋™ํ™”ํ•ด ์ฃผ๋Š” ๋…ธ๋“œ ์‹คํ–‰๊ธฐ์ž…๋‹ˆ๋‹ค.

  • โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (Tech Stack): TypeScript, Vue.js, Node.js
  • ๐Ÿง  ์‚ฌ์ „์— ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ๋“ค:
    • ๋น„์ฃผ์–ผ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์•„ํ‚คํ…์ฒ˜: ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ๋…ธ๋“œ ๊ทธ๋ž˜ํ”„๋ฅผ ์งœ๋ฉด ์ด์ „ ๋…ธ๋“œ์˜ ์•„์›ƒํ’‹ JSON ๊ฐ์ฒด๊ฐ€ ๋‹ค์Œ ๋…ธ๋“œ์˜ ์ธํ’‹ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ”์ธ๋”ฉ๋˜์–ด ์‹คํ–‰๋˜๋Š” ๋ฐ์ดํ„ฐ ์ง€ํ–ฅ ์ƒŒ๋“œ๋ฐ•์Šค์˜ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • Webhook ์ˆ˜์‹  ํ•ธ๋“ค๋ง: ์™ธ๋ถ€ ์„œ๋น„์Šค์˜ ์ด๋ฒคํŠธ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ›์•„๋‚ด๋Š” ์›นํ›… ์ปจํŠธ๋กค๋Ÿฌ ์—”๋“œํฌ์ธํŠธ ์ˆ˜๋ฆฝ ๋ฐฉ์‹์„ ๋งˆ์Šคํ„ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๐Ÿ’ก ํ™œ์šฉ ํŒ: ๊ฐœ๋ฐœ ์—…๋ฌด ํšจ์œจ์„ ์œ„ํ•ด **"๊นƒํ—ˆ๋ธŒ์— ๋ˆ„๊ตฐ๊ฐ€ ์Šคํƒ€๋ฅผ ๋ˆ„๋ฅด๋ฉด, ๊ทธ ์‚ฌ๋žŒ์˜ ๊ณ„์ • ํ”„๋กœํ•„ ์ •๋ณด๋ฅผ ์กฐํšŒํ•˜์—ฌ ์Šฌ๋ž™ ์ฑ„๋„๋กœ ์˜ˆ์œ ํ”„๋กœํ•„ ์‚ฌ์ง„๊ณผ ์นด๋“œ๋ฅผ ์ „์†กํ•˜๋Š” ์›Œํฌํ”Œ๋กœ์šฐ"**๋ฅผ ๋‹จ 5๋ถ„ ๋งŒ์— ๊ตฌ์„ฑํ•ด ํŒ€์›๋“ค๊ณผ ๊ณต์œ ํ•ด ๋ณด์„ธ์š”.

11. Rasa ๐Ÿ’ฌ โ€‹

๊ธฐ์—…์šฉ ๊ณ ์„ฑ๋Šฅ ๋จธ์‹ ๋Ÿฌ๋‹ ๋Œ€ํ™”ํ˜• AI ํ”„๋ ˆ์ž„์›ŒํฌGitHub: RasaHQ/rasa

์†Œ๊ฐœ: ์™ธ๋ถ€ ํด๋ผ์šฐ๋“œ AI ์„œ๋น„์Šค(ChatGPT ๋“ฑ)์— ๋ฏผ๊ฐํ•œ ์‚ฌ๋‚ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜์ง€ ์•Š๊ณ , ์‚ฌ์„ค ์˜จํ”„๋ ˆ๋ฏธ์Šค ์žฅ๋น„ ์ƒ์—์„œ ๊ธฐ๊ณ„ํ•™์Šต ๋ชจ๋ธ์„ ์ง์ ‘ ํ›ˆ๋ จ์‹œ์ผœ ์‚ฌ์šฉ์ž ๋ฐœํ™”์˜ ์˜๋„(Intent)๋ฅผ ํŒŒ์•…ํ•˜๊ณ  ๋Œ€ํ™”๋ฅผ ์ด๋Œ์–ด๋‚ด๋Š” ์˜คํ”ˆ์†Œ์Šค ๋Œ€ํ™” ์—”์ง„์ž…๋‹ˆ๋‹ค.

  • โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (Tech Stack): Python, TensorFlow, PyTorch
  • ๐Ÿง  ์‚ฌ์ „์— ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ๋“ค:
    • NLU (์ž์—ฐ์–ด ์ดํ•ด) ํŒŒ์ดํ”„๋ผ์ธ: ํ…์ŠคํŠธ ํ† ํฐํ™”, ํ˜•ํƒœ์†Œ ๋ถ„์„, ์‚ฌ์ „ ํ•™์Šต๋œ ์ž„๋ฒ ๋”ฉ ๋ฒกํ„ฐ ๋ชจ๋ธ์„ ์ด์šฉํ•ด ํ…์ŠคํŠธ์˜ ์‹ค์ œ ์˜๋„๋ฅผ ๋ถ„๋ฅ˜ํ•˜๋Š” ๋จธ์‹ ๋Ÿฌ๋‹ ๊ตฌ์กฐ๋ฅผ ํŒŒ์•…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ๋Œ€ํ™” ์ƒํƒœ ์ „์ด (Dialogue Management): ์‚ฌ์šฉ์ž๊ฐ€ ์ด์ „์— ์–ด๋–ค ๋ง์„ ํ–ˆ๋Š”์ง€ ๋ฌธ๋งฅ(Slot, Story) ์ •๋ณด๋ฅผ ์ถ”์ ํ•ด ์ ์ ˆํ•œ ๋‹ต๋ณ€์„ ์ƒ์„ฑํ•˜๋Š” ์ƒํƒœ ์ „์ด ์ด๋ก ์„ ๋ฐฐ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๐Ÿ’ก ํ™œ์šฉ ํŒ: Rasa๋ฅผ ์ด์šฉํ•ด ์‚ฌ๋‚ด ์ธ์‚ฌ ๊ฐ€์ด๋“œ๋ถ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฑ—๋ด‡ ์—”์ง„์„ ๋กœ์ปฌ ํ•™์Šต์‹œํ‚ค๊ณ , "์—ฐ์ฐจ ์‹ ์ฒญ", "๊ธ‰์—ฌ ์กฐํšŒ" ๋“ฑ์˜ ํŠน์ • ํ‚ค์›Œ๋“œ ์ˆ˜์‹  ์‹œ ์‚ฌ๋‚ด ์ธํŠธ๋ผ๋„ท ์‹œ์Šคํ…œ API์™€ ์—ฐ๋™ํ•ด ์ž๋™ ๋‹ต๋ณ€ํ•ด ์ฃผ๋Š” ์‚ฌ๋‚ด AI ๋น„์„œ๋ฅผ ๊ตฌํ˜„ํ•˜์„ธ์š”.

12. Hasura ๐Ÿ—ƒ๏ธ โ€‹

DB ์Šคํ‚ค๋งˆ ๊ธฐ๋ฐ˜ ์‹ค์‹œ๊ฐ„ ์ดˆ๊ณ ์† GraphQL ์ž๋™ ์ƒ์„ฑ ์—”์ง„GitHub: hasura/graphql-engine

์†Œ๊ฐœ: PostgreSQL, SQL Server ๋“ฑ ๋‹ค์–‘ํ•œ DB์— ์—ฐ๊ฒฐํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ์Šคํ‚ค๋งˆ ๊ตฌ์กฐ๋ฅผ ๋™์  ์ปดํŒŒ์ผํ•˜์—ฌ ์™„๋ฒฝํ•œ ๋ณด์•ˆ ์ •์ฑ…๊ณผ ์‹ค์‹œ๊ฐ„ ๊ตฌ๋…(Subscription) ๊ธฐ๋Šฅ์ด ํฌํ•จ๋œ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ๊ธ‰ GraphQL API๋ฅผ ์ฆ‰์‹œ ๋ฟœ์–ด๋‚ด๋Š” ๋ชจ๋˜ ์•„ํ‚คํ…์ฒ˜์šฉ API ๊ฒŒ์ดํŠธ์›จ์ด ์—”์ง„์ž…๋‹ˆ๋‹ค.

  • โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (Tech Stack): Haskell, PostgreSQL, C/C++
  • ๐Ÿง  ์‚ฌ์ „์— ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ๋“ค:
    • GraphQL AST to SQL Compiler: ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋‚ธ ์ค‘์ฒฉ๋œ GraphQL ์งˆ์˜๋ฅผ ๊ฐ€๊ณตํ•ด N+1 ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๋ฉฐ ์ตœ์ ์˜ ์กฐ์ธ(JOIN) ์ฟผ๋ฆฌ๋ฅผ ํฌํ•จํ•œ ๋‹จ ํ•˜๋‚˜์˜ ๊ณ ์„ฑ๋Šฅ SQL๋กœ ์ปดํŒŒ์ผํ•ด DB์— ์ง€์‹œํ•˜๋Š” ์ปดํŒŒ์ผ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ์›น์†Œ์ผ“ ์ปค๋„ฅ์…˜ ํ’€๋ง: ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„๊ฐ€๋Š” ์ˆ˜์ฒœ ๋ช…์˜ ํด๋ผ์ด์–ธํŠธ ๊ตฌ๋… ์š”์ฒญ์„ ๋‹จ์ผ ์ปค๋„ฅ์…˜ ํ’€๋กœ ์••์ถ•ํ•ด ๊ฐ์ง€ํ•˜๋Š” ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๐Ÿ’ก ํ™œ์šฉ ํŒ: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ ๋ณ€๋™ ์‹œ๋งˆ๋‹ค ๋ฐฑ์—”๋“œ ์ฝ”๋“œ๋ฅผ ์งœ์„œ ๋ฐฐํฌํ•  ํ•„์š” ์—†์ด, Hasura ์—”์ง„์„ ๊ฒŒ์ดํŠธ์›จ์ด๋กœ ๋‘๊ณ  ํ”„๋ก ํŠธ์—”๋“œ๊ฐ€ ํ•„์š”ํ•œ ์ฟผ๋ฆฌ๋ฅผ ์ฆ‰์‹œ ์š”์ฒญํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ์„œ๋ฒ„๋ฆฌ์Šค ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ฐ€๋™ํ•ด ๋ณด์„ธ์š”.

13. LocalStack ๐Ÿ’ป โ€‹

๋กœ์ปฌ์—์„œ ์™„๋ฒฝํ•˜๊ฒŒ ๊ตฌ๋™๋˜๋Š” AWS ํด๋ผ์šฐ๋“œ ์Šคํƒ ์—๋ฎฌ๋ ˆ์ดํ„ฐGitHub: localstack/localstack

์†Œ๊ฐœ: S3, Lambda, DynamoDB, SQ, API Gateway ๋“ฑ AWS์˜ ์œ ๋ฃŒ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค ๋ช…์„ธ์™€ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•˜๋Š” ๊ฐ€์ƒ์˜ AWS ๋ชจํ˜• ์„œ๋ฒ„๋ฅผ ๋‚ด ์ปดํ“จํ„ฐ ๋‚ด ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์—์„œ 100% ๋ชจ๋ฐฉํ•ด ์‹คํ–‰์‹œ์ผœ ์ฃผ๋Š” ๊ฐœ๋ฐœ ๋ฐ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ์šฉ ํ•ต์‹ฌ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

  • โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (Tech Stack): Python, Docker
  • ๐Ÿง  ์‚ฌ์ „์— ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ๋“ค:
    • AWS API ๋ฐ SDK: boto3๋‚˜ aws-cli๋ฅผ ์ด์šฉํ•ด ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์ด ์•„๋‹Œ ๋กœ์ปฌ LocalStack ์—”๋“œํฌ์ธํŠธ URL(http://localhost:4566)๋กœ ๋ฐฉํ–ฅ์„ ํ‹€์–ด ์ ‘์†์‹œํ‚ค๋Š” ์ง€์‹์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
    • ํด๋ผ์šฐ๋“œ IaC (IaC - Infrastructure as Code): Terraform์ด๋‚˜ CloudFormation ๋ช…์„ธ๋ฅผ ๋กœ์ปฌ ํ™˜๊ฒฝ์˜ ๊ฐ€์ƒ AWS์— ๋ฐ˜์˜ํ•˜๋Š” ๊ธฐ๋ณธ ๊ฐœ๋…์„ ํ•™์Šตํ•˜๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.
  • ๐Ÿ’ก ํ™œ์šฉ ํŒ: ๋žŒ๋‹ค(Lambda) ์„œ๋ฒ„๋ฆฌ์Šค ํ•จ์ˆ˜๋‚˜ S3 ๋ฒ„ํ‚ท ํŒŒ์ผ ํŠธ๋ฆฌ๊ฑฐ ๋กœ์ง์„ AWS์— ์‹ค์ œ ์˜ฌ๋ฆฌ๋ฉฐ ๋น„์šฉ์„ ๋‚ญ๋น„ํ•˜๋Š” ๋Œ€์‹ , ๋กœ์ปฌ ํ…Œ์ŠคํŒ… ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์™„์ „ํžˆ ๊ฒ€์ฆํ•œ ํ›„์— ๋‹จ ํ•œ ๋ฒˆ์˜ ์ปค๋งจ๋“œ๋กœ ์ƒ์šฉ ํด๋ผ์šฐ๋“œ์— ์ด์‹ํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ์™„์„ฑํ•ด ๋ณด์„ธ์š”.

14. Meilisearch ๐Ÿ” โ€‹

์ดˆ๊ณ ์†์ด๋ฉฐ ์ž๋™ ์˜คํƒ€ ๊ต์ •์ด ์ง€์›๋˜๋Š” ๋ชจ๋˜ ๊ฒ€์ƒ‰ ์—”์ง„GitHub: meilisearch/meilisearch

์†Œ๊ฐœ: ๋ฌด๊ฒ๊ณ  ๋ณต์žกํ•œ Elasticsearch ๋Œ€์‹ , ๋‹จ์ผ ์‹คํ–‰ ํŒŒ์ผ๋งŒ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ตœ์†Œํ™”ํ•˜๋ฉด์„œ ์ดˆ์„ฑ ๊ฒ€์ƒ‰, ์˜คํƒ€ ํ—ˆ์šฉ(Typo Tolerance), ํ•„ํ„ฐ ์กฐ๊ฑด์„ ๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„๋กœ ์ดˆ๊ณ ์† ๋ฐ˜์‘ํ•ด ์ฃผ๋Š” ํ”„๋ก ํŠธ์—”๋“œ ์ตœ์ ํ™”ํ˜• ๊ฒ€์ƒ‰์—”์ง„์ž…๋‹ˆ๋‹ค.

  • โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (Tech Stack): Rust, Actix-web, LMDB (Lightning Memory-Mapped Database)
  • ๐Ÿง  ์‚ฌ์ „์— ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ๋“ค:
    • ์—ญ์ƒ‰์ธ(Inverted Index): ๋ฌธ์„œ ๋‚ด๋ถ€์˜ ๋ชจ๋“  ๋‹จ์–ด๋ฅผ ํ† ํฐ ๋ถ„ํ•ดํ•ด ๋‹จ์–ด๋ณ„ ๋ฌธ์„œ ์œ„์น˜ ๋งต์„ ์ƒ์„ฑํ•˜์—ฌ, ๊ฒ€์ƒ‰ ์‹œ ์ˆœ์ฐจ ํƒ์ƒ‰ ์—†์ด ํ•ด์‹œ ๋งคํ•‘์œผ๋กœ ์ฆ‰๊ฐ ๋„์ถœํ•˜๋Š” ๊ฒ€์ƒ‰ ํ•ต์‹ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ฐฐ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ๋žญํ‚น ๋ฐ ๊ฐ€์ค‘์น˜ ๊ทœ์น™: ๊ฒ€์ƒ‰์–ด์˜ ์ค‘์š”๋„, ๋ฌธ์„œ์˜ ์ตœ์‹ ์„ฑ, ์˜คํƒ€ ๊ฑฐ๋ฆฌ(Levenshtein Distance)๋ฅผ ์ข…ํ•ฉ ์‚ฐ์ถœํ•ด ๊ด€๋ จ๋„๊ฐ€ ๋†’์€ ๋ฌธ์„œ๋ฅผ ์ตœ์ƒ๋‹จ์— ๋ฐฐ์น˜ํ•˜๋Š” ์ˆœ์œ„ ๊ฒฐ์ • ๊ณต์‹์„ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๐Ÿ’ก ํ™œ์šฉ ํŒ: ์‡ผํ•‘๋ชฐ ์ƒํ’ˆ ๊ฒ€์ƒ‰์ฐฝ์ด๋‚˜ ์ž์‚ฌ ๊ธฐ์ˆ  ๊ฐ€์ด๋“œ ๋ฌธ์„œ ์‚ฌ์ดํŠธ์— Meilisearch ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์—ฐ๋™ํ•˜๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ํ•œ ๊ธ€์ž์”ฉ ์ž…๋ ฅํ•  ๋•Œ๋งˆ๋‹ค ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฒฐ๊ณผ ๋ชฉ๋ก์ด ๋น„๋™๊ธฐ ๊ฐฑ์‹ ๋˜๋Š” ์ธ์Šคํ„ดํŠธ ๊ฒ€์ƒ‰ UI๋ฅผ ์ด์‹ํ•˜์„ธ์š”.

15. Typesense โšก โ€‹

๋ฉ”๋ชจ๋ฆฌ ์ƒ์ฃผ ๊ธฐ๋ฐ˜ ๊ณ ์„ฑ๋Šฅ ์‹ค์‹œ๊ฐ„ ๊ฒ€์ƒ‰ ์—”์ง„GitHub: typesense/typesense

์†Œ๊ฐœ: Meilisearch์™€ ๊ฒฝ์Ÿํ•˜๋ฉฐ, ์ธ๋ฉ”๋ชจ๋ฆฌ(In-Memory) ๊ธฐ๋ฐ˜์œผ๋กœ ๋Œ€๋Ÿ‰์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ณด๊ด€ํ•˜์—ฌ ๋””์Šคํฌ I/O ๋ณ‘๋ชฉ์„ ์ œ๋กœํ™”ํ•˜๊ณ  Raft ํ•ฉ์˜ ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ํด๋Ÿฌ์Šคํ„ฐ๋ง ํ™•์žฅ์„ฑ๊นŒ์ง€ ์ง€์›ํ•˜๋Š” ๊ธฐ์—…์šฉ ๊ณ ์† ๊ฒ€์ƒ‰ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

  • โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (Tech Stack): C++, Raft Consensus
  • ๐Ÿง  ์‚ฌ์ „์— ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ๋“ค:
    • ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•„ํ‚คํ…์ฒ˜: ๋ชจ๋“  ๊ฒ€์ƒ‰ ์ธ๋ฑ์Šค๋ฅผ RAM ์ƒ์— ์˜ฌ๋ ค ์—ฐ์‚ฐ ์†๋„๋ฅผ ๋ณด์žฅํ•˜๊ณ , ๋ณ€๊ฒฝ ๋‚ด์—ญ์€ ํŠธ๋žœ์žญ์…˜ ๋กœ๊ทธ(WAL) ํ˜•ํƒœ๋กœ ๋””์Šคํฌ์— ๊ธฐ๋กํ•ด ์•ˆ์ „์„ฑ์„ ๋‹ด๋ณดํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณตํ•™์„ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • Raft ํ•ฉ์˜ ํ”„๋กœํ† ์ฝœ: ์—ฌ๋Ÿฌ ๋Œ€์˜ ๊ฒ€์ƒ‰ ๋…ธ๋“œ๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ๋ง๋  ๋•Œ ๋ฆฌ๋” ๋…ธ๋“œ๋ฅผ ์„ ์ถœํ•˜๊ณ  ๋ถ„์‚ฐ ์ธ๋ฑ์Šค ๋™๊ธฐํ™” ์ƒํƒœ๋ฅผ ๋™์˜ํ•˜๋Š” ๊ณ ๊ฐ€์šฉ์„ฑ ๊ตฌ์กฐ๋ฅผ ์ˆ™์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๐Ÿ’ก ํ™œ์šฉ ํŒ: ๋Œ€์šฉ๋Ÿ‰ ๋กœ๊ทธ ์ˆ˜์ง‘๊ธฐ๋‚˜ ์ „์‚ฌ ๋ฌธ์„œ ์•„์นด์ด๋ธŒ์ฒ˜๋Ÿผ ๊ฒ€์ƒ‰ ๋Œ€์ƒ ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆ˜๋ฐฑ๋งŒ ๊ฑด ์ด์ƒ์œผ๋กœ ๋Œ€๊ทœ๋ชจํ™”๋  ๋•Œ, Typesense ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋„์›Œ ๋‹ค์ˆ˜์˜ ์„œ๋น„์Šค API ์„œ๋ฒ„์—์„œ ๊ณ ์† ์ฟผ๋ฆฌ๋ฅผ ์†Œํ™”ํ•˜๋„๋ก ์ด์‹ํ•ด ๋ณด์„ธ์š”.

16. PostHog ๐Ÿฆ” โ€‹

ํด๋ผ์šฐ๋“œ ์ข…์† ์—†๋Š” ์˜ฌ์ธ์› ์ œํ’ˆ ๋ถ„์„ ๋ฐ ์‚ฌ์šฉ์ž ํ–‰๋™ ์ถ”์  ํ”Œ๋žซํผGitHub: posthog/posthog

์†Œ๊ฐœ: ๊ตฌ๊ธ€ ์• ๋„๋ฆฌํ‹ฑ์Šค๋‚˜ ์•ฐํ”Œ๋ฆฌํŠœ๋“œ(Amplitude)์ฒ˜๋Ÿผ ์‚ฌ์šฉ์ž์˜ ์œ ์ž… ๊ฒฝ๋กœ, ํŽ˜์ด์ง€ ๋ทฐ, ๋ฒ„ํŠผ ํด๋ฆญ ํŒจํ„ด์„ ํŠธ๋ž˜ํ‚นํ•˜๊ณ  ๋‚˜์•„๊ฐ€ ์‚ฌ์šฉ์ž ํ™”๋ฉด ๋งˆ์šฐ์Šค ์›€์ง์ž„์„ ๋™์˜์ƒ์ฒ˜๋Ÿผ ์žฌ์ƒํ•ด์ฃผ๋Š” ์„ธ์…˜ ๋ฆฌํ”Œ๋ ˆ์ด(Session Recording) ๊ธฐ๋Šฅ๊นŒ์ง€ ํƒ‘์žฌํ•œ ํ†ตํ•ฉ ๋ถ„์„ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

  • โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (Tech Stack): Python (Django), ClickHouse (์—ด ์ง€ํ–ฅ ๋ถ„์„์šฉ DB), React, TypeScript
  • ๐Ÿง  ์‚ฌ์ „์— ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ๋“ค:
    • ์—ด ์ง€ํ–ฅ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (ClickHouse): ๋Œ€์šฉ๋Ÿ‰์˜ ์ด๋ฒคํŠธ ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ํŠน์ • ์ปฌ๋Ÿผ ๋‹จ์œ„๋กœ ์••์ถ•ํ•˜์—ฌ ์ €์žฅํ•˜๊ณ , ์ˆ˜์–ต ๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ ์ค‘ ํŠน์ • ์ด๋ฒคํŠธ์˜ ํ•ฉ๊ณ„๋ฅผ ๋‹จ ์ˆ˜์ดˆ ๋งŒ์— ๊ณ„์‚ฐํ•ด๋‚ด๋Š” OLAP ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ ๊ตฌ์กฐ๋ฅผ ๋ฐฐ์›Œ๋‘์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • DOM ์ง๋ ฌํ™”(Serialization): ์‚ฌ์šฉ์ž ํ™”๋ฉด์˜ ํ”„๋ผ์ด๋ฒ„์‹œ ์ •๋ณด๋ฅผ ๋งˆ์Šคํ‚นํ•˜๋ฉด์„œ HTML ์š”์†Œ์˜ ํฌ๊ธฐ์™€ ๋งˆ์šฐ์Šค ๊ฒฝ๋กœ๋ฅผ ์‹ค์‹œ๊ฐ„ ์ง๋ ฌํ™”ํ•ด ์„œ๋ฒ„๋กœ ์ „์†กํ•˜๋Š” ์›๋ฆฌ๋ฅผ ์•Œ๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.
  • ๐Ÿ’ก ํ™œ์šฉ ํŒ: ์‹ ๊ทœ ๋Ÿฐ์นญํ•œ ์›น ์„œ๋น„์Šค์˜ ๊ฐ€์ž… ํผ๋„(Funnel)์„ ์„ค์ •ํ•˜๊ณ , ์‚ฌ์šฉ์ž๋“ค์ด ์–ด๋А ๋‹จ๊ณ„์—์„œ ๊ฐ€์ž…์„ ํฌ๊ธฐํ•˜๊ณ  ์ดํƒˆํ•˜๋Š”์ง€ ํผ๋„ ์ฐจํŠธ์™€ ์„ธ์…˜ ๋…นํ™”๋ณธ์„ ๋ถ„์„ํ•˜์—ฌ UX๋ฅผ ์ ์ง„์ ์œผ๋กœ ๊ฐœ์„ ํ•ด๋‚˜๊ฐ€๋Š” ๋„๊ตฌ๋กœ ํ™œ์šฉํ•˜์„ธ์š”.

17. Plausible Analytics ๐Ÿ“ˆ โ€‹

1KB ๋ฏธ๋งŒ ๊ฒฝ๋Ÿ‰ ์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ฐ˜ ๊ฐœ์ธ์ •๋ณด ๋ณดํ˜ธํ˜• ์›น ๋ถ„์„ ์†”๋ฃจ์…˜GitHub: plausible/analytics

์†Œ๊ฐœ: ๊ตฌ๊ธ€ ์• ๋„๋ฆฌํ‹ฑ์Šค์˜ ๋ฌด๊ฑฐ์šด ํŠธ๋ž˜์ปค ์Šคํฌ๋ฆฝํŠธ(์ˆ˜์‹ญ KB)๋กœ ์ธํ•ด ์›น ์‚ฌ์ดํŠธ ์†๋„๊ฐ€ ๋А๋ ค์ง€๋Š” ๋ฌธ์ œ๋ฅผ ๋‹จ 1KB ๋ฏธ๋งŒ์˜ ๊ฒฝ๋Ÿ‰ ํŠธ๋ž˜์ปค ์Šคํฌ๋ฆฝํŠธ๋กœ ํ•ด๊ฒฐํ•˜๋ฉฐ, ์ฟ ํ‚ค๋ฅผ ์ผ์ ˆ ๊ตฝ์ง€ ์•Š์•„ GDPR(์œ ๋Ÿฝ ๊ฐœ์ธ์ •๋ณด๋ณดํ˜ธ๊ทœ์ •) ์ค€์ˆ˜๊ฐ€ ์šฉ์ดํ•œ ๊น”๋”ํ•œ ์›น ํŠธ๋ž˜ํ”ฝ ๋ชจ๋‹ˆํ„ฐ์ž…๋‹ˆ๋‹ค.

  • โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (Tech Stack): Elixir (Phoenix), ClickHouse, PostgreSQL
  • ๐Ÿง  ์‚ฌ์ „์— ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ๋“ค:
    • ์ฟ ํ‚ค ์—†๋Š” ์›น ๋ถ„์„ (Cookie-less Tracking): IP ํ•ด์‹œ๊ฐ’๊ณผ ๋ธŒ๋ผ์šฐ์ € User-Agent ์ •๋ณด๋ฅผ ์กฐํ•ฉํ•ด ๋‹จ 24์‹œ๊ฐ„ ๋™์•ˆ๋งŒ ์œ ํšจํ•œ ์ž„์‹œ ์‹๋ณ„์ž๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์‚ฌ์šฉ์ž๋ฅผ ์ถ”์ ํ•˜๋Š” ๊ฐœ์ธ์ •๋ณด ์นœํ™” ๊ธฐ์ˆ ์„ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ์›น ์„ฑ๋Šฅ ์ตœ์ ํ™”: ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š๋Š” ๋น„๋™๊ธฐ(defer) ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ์ œ์–ด๋ฒ•์„ ์Šต๋“ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๐Ÿ’ก ํ™œ์šฉ ํŒ: ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ๋‚˜ ์‚ฌ๋‚ด ํ™๋ณด ํŽ˜์ด์ง€์˜ ์œ ์ž…๋Ÿ‰, ์ธ๊ธฐ ํฌ์ŠคํŠธ ์ˆœ์œ„๋ฅผ ์›นํŽ˜์ด์ง€ ๋ฐ˜์‘ ์„ฑ๋Šฅ ์ €ํ•˜ ์—†์ด ๊ฐ€์žฅ ๋น ๋ฅด๊ณ  ์ •ํ™•ํ•˜๊ฒŒ ๋ถ„์„ํ•˜๊ณ  ์‹ถ์„ ๋•Œ Plausible์„ ์ž์‚ฌ ๊ฐ€์ƒ ์„œ๋ฒ„์— ๊ตฌ์ถ•ํ•ด ์—ฐ๋™ํ•˜์„ธ์š”.

18. Uptime Kuma ๐Ÿšฆ โ€‹

์•„๋ฆ„๋‹ค์šด ๋ชจ๋˜ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์…€ํ”„ํ˜ธ์ŠคํŒ… ์„œ๋ฒ„ ๊ฐ์‹œ ๋ชจ๋‹ˆํ„ฐGitHub: louislam/uptime-kuma

์†Œ๊ฐœ: ์‚ฌ๋‚ด ์„œ๋ฒ„, API ์—”๋“œํฌ์ธํŠธ, DB ํฌํŠธ๊ฐ€ ์ •์ƒ ๊ฐ€๋™ ์ค‘์ธ์ง€ ์ฃผ๊ธฐ์ ์œผ๋กœ ์‹ ํ˜ธ(Ping/HTTP)๋ฅผ ๋ณด๋‚ด ์ฒดํฌํ•˜๊ณ , ์žฅ์•  ๋ฐœ์ƒ ์‹œ ํ…”๋ ˆ๊ทธ๋žจ, ๋””์Šค์ฝ”๋“œ, ์Šฌ๋ž™ ๋“ฑ์œผ๋กœ ์žฅ์•  ์•Œ๋ฆผ์„ ์ฆ‰์‹œ ์˜์•„์ฃผ๋Š” ์„ธ๋ จ๋œ ๋ชจ๋‹ˆํ„ฐ๋ง ๋Œ€์‹œ๋ณด๋“œ์ž…๋‹ˆ๋‹ค.

  • โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (Tech Stack): Vue.js, Node.js (Socket.io), SQLite
  • ๐Ÿง  ์‚ฌ์ „์— ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ๋“ค:
    • ๋น„๋™๊ธฐ ์†Œ์ผ“ ํ†ต์‹  (Socket.io): ์„œ๋ฒ„ ์ƒํƒœ ๋ณ€ํ™” ์ด๋ฒคํŠธ๋ฅผ ๋ธŒ๋ผ์šฐ์ €์— ์‹ค์‹œ๊ฐ„ ์–‘๋ฐฉํ–ฅ์œผ๋กœ ๋”œ๋ ˆ์ด ์—†์ด ์ŠคํŠธ๋ฆฌ๋ฐํ•˜๋Š” ์†Œ์ผ“ ์›น ํ”„๋กœํ† ์ฝœ์„ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ๋„คํŠธ์›Œํฌ ์ง„๋‹จ ํ”„๋กœํ† ์ฝœ: ICMP Ping, TCP handshake, HTTP ์‘๋‹ต ์ƒํƒœ ์ฝ”๋“œ์— ๋”ฐ๋ฅธ ์žฅ์•  ๊ธฐ์ค€ ์ˆ˜๋ฆฝ ์›๋ฆฌ๋ฅผ ์ˆ™์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๐Ÿ’ก ํ™œ์šฉ ํŒ: ์ €๋ ดํ•œ ์†Œํ˜• ํด๋ผ์šฐ๋“œ ์ธ์Šคํ„ด์Šค์— Uptime Kuma๋ฅผ ์˜ฌ๋ฆฐ ๋’ค, ์ž์‚ฌ ํ”„๋กœ๋•์…˜ ์›น์‚ฌ์ดํŠธ URL๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํฌํŠธ๋ฅผ ๋“ฑ๋กํ•˜๊ณ  ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡ ํ† ํฐ์„ ์—ฐ๋™ํ•ด ์„œ๋ฒ„ ๋‹ค์šด ์‹œ ๋ชจ๋ฐ”์ผ ํฐ์œผ๋กœ 30์ดˆ ๋‚ด์— ๊ธด๊ธ‰ ์žฅ์•  ํ‘ธ์‹œ๋ฅผ ๋ฐ›๋„๋ก ์„ค์ •ํ•ด ๋‘์‹ญ์‹œ์˜ค.

19. Outline ๐Ÿ“ โ€‹

ํŒ€์„ ์œ„ํ•œ ์„ธ๋ จ๋˜๊ณ  ๊ณ ์†์ธ ๋ชจ๋˜ ๋งˆํฌ๋‹ค์šด ์œ„ํ‚ค ์œ„์ ฏGitHub: outline/outline

์†Œ๊ฐœ: ๋…ธ์…˜(Notion)์˜ ์†๋„ ๋ณ‘๋ชฉ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆ๋œ ๋งˆํฌ๋‹ค์šด ๊ธฐ๋ฐ˜์˜ ํ˜‘์—… ์œ„ํ‚ค ํ”Œ๋žซํผ์œผ๋กœ, ์‹ค์‹œ๊ฐ„ ๊ณต๋™ ํŽธ์ง‘๊ณผ ์Šฌ๋ž™ ์—ฐ๋™์ด ๊ฐ•๋ ฅํ•˜๊ฒŒ ํƒ‘์žฌ๋œ ์ฐจ์„ธ๋Œ€ ์‚ฌ๋‚ด ์ง€์‹ ๊ณต์œ  ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

  • โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (Tech Stack): Node.js, React, PostgreSQL, Redis, Sequelize (ORM)
  • ๐Ÿง  ์‚ฌ์ „์— ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ๋“ค:
    • Collaborative Editor (Yjs/ProseMirror): ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ ํƒ€์ดํ•‘ํ•  ๋•Œ ๊ธ€์ž๊ฐ€ ๊ผฌ์ด์ง€ ์•Š๋„๋ก ์ถฉ๋Œ์„ ์ค‘์žฌํ•˜๊ณ  ๋ฌธ์„œ๋ฅผ ๋ณ‘ํ•ฉํ•˜๋Š” ๋ถ„์‚ฐ ๋™๊ธฐํ™” ํ”„๋กœํ† ์ฝœ์„ ์•Œ์•„์•ผ ์—๋””ํ„ฐ ์„ฑ๋Šฅ ์ปค์Šคํ…€์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
    • S3 ํ˜ธํ™˜ ์˜ค๋ธŒ์ ํŠธ ์Šคํ† ๋ฆฌ์ง€: ์œ„ํ‚ค์— ์—…๋กœ๋“œ๋˜๋Š” ์ฒจ๋ถ€ ์ด๋ฏธ์ง€๋‚˜ ํŒŒ์ผ์„ ๋ณด๊ด€ํ•˜๊ธฐ ์œ„ํ•ด AWS S3๋‚˜ ์˜คํ”ˆ์†Œ์Šค MinIO์™€ ์—ฐ๋™ํ•˜๋Š” ํŒŒ์ผ ๋งคํ•‘ ๊ธฐ์ˆ ์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.
  • ๐Ÿ’ก ํ™œ์šฉ ํŒ: ๊ฐœ๋ฐœํŒ€ ๋‚ด๋ถ€์˜ API ๋ช…์„ธ์„œ, ์‹œ์Šคํ…œ ์ธํ”„๋ผ ๋‹ค์ด์–ด๊ทธ๋žจ, ์‹ ๊ทœ ์ž…์‚ฌ์ž ๊ฐ€์ด๋“œ ๊ฐ€์ด๋“œ๋ผ์ธ ๋ฌธ์„œ๋ฅผ ์Šฌ๋ž™ ์›Œํฌ์ŠคํŽ˜์ด์Šค์™€ ์—ฐ๋™ํ•ด Outline ์œ„์—์„œ ๋งˆํฌ๋‹ค์šด ํ˜•ํƒœ๋กœ ๊ฐ€์žฅ ๊ธฐ๋ฏผํ•˜๊ฒŒ ์ž‘์„ฑ ๋ฐ ๊ณต์œ ํ•ด ๋ณด์„ธ์š”.

20. Focalboard ๐Ÿ“‹ โ€‹

ํŠธ๋ ๋กœ(Trello)๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ์˜คํ”ˆ์†Œ์Šค ์…€ํ”„ํ˜ธ์ŠคํŒ… ์นธ๋ฐ˜ ๋ณด๋“œGitHub: mattermost/focalboard

์†Œ๊ฐœ: ๋ฉ”ํ„ฐ๋ชจ์ŠคํŠธ(Mattermost) ํŒ€์ด ๋ฆฌ๋“œํ•˜๋Š” ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ํ˜‘์—… ํˆด๋กœ, ์ผ์ •ํ‘œ, ๋ฆฌ์ŠคํŠธ, ์นด๋“œ ๋ณด๋“œ(์นธ๋ฐ˜) ๋ทฐ๋ฅผ ์ง๊ด€์ ์œผ๋กœ ์ œ๊ณตํ•˜์—ฌ ๊ฐœ์ธ ์—…๋ฌด ์Šค์ผ€์ค„์ด๋‚˜ ์†Œ๊ทœ๋ชจ ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ์˜ ์Šคํ”„๋ฆฐํŠธ ์ด์Šˆ๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ๋ณด๋“œ์ž…๋‹ˆ๋‹ค.

  • โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (Tech Stack): Go, React, TypeScript, SQLite / PostgreSQL
  • ๐Ÿง  ์‚ฌ์ „์— ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ๋“ค:
    • RESTful API์™€ ๊ตฌ์กฐ์ฒด: Go ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์— ๋”ฐ๋ผ ํƒœ์Šคํฌ์˜ ์ƒํƒœ ํ•„๋“œ(To Do, In Progress, Done)๋ฅผ ์กฐ์ž‘ํ•˜๊ณ  ๊ด€๊ณ„๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ ์„ค๊ณ„๋ฅผ ํŒŒ์•…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • Drag-and-Drop (๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ) UI: ๋ธŒ๋ผ์šฐ์ € ๋งˆ์šฐ์Šค ํฌ์ธํ„ฐ ์ด๋ฒคํŠธ๋ฅผ ์ถ”์ ํ•ด ์นด๋“œ์˜ ์‹œ๊ฐ์  ์ •๋ ฌ ์œ„์น˜๋ฅผ ์˜ฎ๊ธฐ๊ณ  ์ƒํƒœ ๋ณ€๊ฒฝ API๋ฅผ ๋น„๋™๊ธฐ ํ˜ธ์ถœํ•˜๋Š” ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ ํ•ธ๋“ค๋ง ๊ธฐ์ˆ ์„ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๐Ÿ’ก ํ™œ์šฉ ํŒ: ์™ธ๋ถ€ ์ผ์ • ๊ด€๋ฆฌ ํˆด(Trello, Jira ๋“ฑ)์˜ ๊ณ ๋น„์šฉ ๊ตฌ๋… ๋ชจ๋ธ ๋Œ€์‹ , ๋กœ์ปฌ ์„œ๋ฒ„๋‚˜ ์‚ฌ๋‚ด ๋„คํŠธ์›Œํ‚น ๋ง ๋‚ด๋ถ€์— Focalboard ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•ด๋‘๊ณ , ํŒ€์›๋“ค๊ณผ ์—…๋ฌด ์ง„๋„๋ฅผ ์นธ๋ฐ˜๋ณด๋“œ ํ˜•ํƒœ๋กœ ๋ณด์•ˆ ๋ฌธ์ œ ์—†์ด ๊ธฐ๋ฏผํ•˜๊ฒŒ ์šด์˜ํ•˜์‹ญ์‹œ์˜ค.

21. Infisical ๐Ÿ” โ€‹

ํ™˜๊ฒฝ ๋ณ€์ˆ˜(ENV)์™€ ์‹œํฌ๋ฆฟ ํ‚ค๋ฅผ ์—”๋“œํˆฌ์—”๋“œ๋กœ ์•”ํ˜ธํ™”ํ•˜๊ณ  ํŒ€ ๊ฐ„ ๋™๊ธฐํ™”ํ•˜๋Š” ๋ณด์•ˆ ํ”Œ๋žซํผGitHub: Infisical/infisical

์†Œ๊ฐœ: ๊ฐœ๋ฐœ์ž๋“ค ๊ฐ„์— .env ํŒŒ์ผ์„ ๋ฉ”์‹ ์ €๋กœ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ณด์•ˆ ์œ„ํ˜‘์„ ์›์ฒœ ์ฐจ๋‹จํ•˜๊ณ , ๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ๋ถ€ํ„ฐ CI/CD, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค, ํ”„๋กœ๋•์…˜ ์„œ๋ฒ„๊นŒ์ง€ ๋ชจ๋“  ์‹œํฌ๋ฆฟ ํ‚ค๋ฅผ E2EE(์ข…๋‹จ๊ฐ„ ์•”ํ˜ธํ™”)๋กœ ์™„๋ฒฝํ•˜๊ฒŒ ์ž๋™ ์ฃผ์ž…ํ•ด ์ฃผ๋Š” ๋น„๋ฐ€ ์ •๋ณด ๊ด€๋ฆฌ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

  • โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (Tech Stack): Node.js, TypeScript, Next.js, PostgreSQL, Redis
  • ๐Ÿง  ์‚ฌ์ „์— ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ๋“ค:
    • ์ข…๋‹จ๊ฐ„ ์•”ํ˜ธํ™”(E2EE): ์„œ๋ฒ„์กฐ์ฐจ ์‚ฌ์šฉ์ž์˜ ๋น„๋ฐ€ํ‚ค ๋ณตํ˜ธํ™” ํ‚ค๋ฅผ ์•Œ์ง€ ๋ชปํ•˜๋„๋ก ํด๋ผ์ด์–ธํŠธ ๋ธŒ๋ผ์šฐ์ €/CLI ๋‹จ์—์„œ ๋น„๋Œ€์นญ ํ‚ค(RSA/ECC)๋กœ ์•”ํ˜ธํ™”ํ•˜๋Š” ์˜์ง€์‹(Zero-Knowledge) ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • CLI ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ธ์ ์…˜: infisical run -- npm start ๋ช…๋ น์–ด๋กœ ์ž์‹ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ธฐ๋™๋  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—๋งŒ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ƒ์œผ๋กœ ์ฃผ์ž…ํ•˜๊ณ  ๋””์Šคํฌ์— ํ”์ ์„ ๋‚จ๊ธฐ์ง€ ์•Š๋Š” ๋ณด์•ˆ ํ”„๋กœ์„ธ์Šค ๊ฒฉ๋ฆฌ๋ฅผ ํ•™์Šตํ•˜์„ธ์š”.
  • ๐Ÿ’ก ํ™œ์šฉ ํŒ: ์‚ฌ๋‚ด ๊ฐœ๋ฐœํŒ€์˜ .env ํŒŒ์ผ ์œ ์ถœ ์‚ฌ๊ณ ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด Infisical CLI๋ฅผ ์„ค์น˜ํ•˜๊ณ  ๊ฐœ๋ฐœ ์„œ๋ฒ„ ๊ธฐ๋™ ๋ช…๋ น์–ด๋ฅผ ๋ž˜ํ•‘ํ•˜์—ฌ, ํŒ€์› ๋ชจ๋‘๊ฐ€ ์ตœ์‹  ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ 1์ดˆ ๋งŒ์— ์•ˆ์ „ํ•˜๊ฒŒ ์ž๋™ ๋™๊ธฐํ™”ํ•˜๋„๋ก ์„ค์ •ํ•˜์„ธ์š”.

22. Documenso โœ๏ธ โ€‹

DocuSign์„ ์™„๋ฒฝํžˆ ๋Œ€์ฒดํ•˜๋Š” ๋ฒ•์  ํšจ๋ ฅ์˜ ์˜คํ”ˆ์†Œ์Šค ์ „์ž ์„œ๋ช… ํ”Œ๋žซํผGitHub: documenso/documenso

์†Œ๊ฐœ: ๊ณ„์•ฝ์„œ, ๋™์˜์„œ, ํ”„๋ฆฌ๋žœ์„œ ์šฉ์—ญ ๊ณ„์•ฝ ๋“ฑ ๋‹ค์–‘ํ•œ PDF ๋ฌธ์„œ์— ์„œ๋ช… ํ•„๋“œ๋ฅผ ๋ฐฐ์น˜ํ•˜๊ณ  ์ˆ˜์‹ ์ž์—๊ฒŒ ์„œ๋ช… ์š”์ฒญ ๋ฉ”์ผ์„ ๋ฐœ์†กํ•˜์—ฌ, ์œ„๋ณ€์กฐ ๋ฐฉ์ง€ ๊ฐ์‚ฌ ๋กœ๊ทธ(Audit Trail)์™€ ๋””์ง€ํ„ธ ์„œ๋ช…์„ ์•ˆ์ „ํ•˜๊ฒŒ ์™„์„ฑํ•ด ์ฃผ๋Š” ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

  • โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (Tech Stack): TypeScript, Next.js, Prisma, PostgreSQL, PDF-lib
  • ๐Ÿง  ์‚ฌ์ „์— ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ๋“ค:
    • PDF ๋ฐ”์ด๋„ˆ๋ฆฌ ์ŠคํŠธ๋ฆผ ์กฐ์ž‘: pdf-lib์„ ํ†ตํ•ด ๊ธฐ์กด PDF์˜ ํŽ˜์ด์ง€ ์ขŒํ‘œ๊ณ„์— ์„œ๋ช… ์ด๋ฏธ์ง€ ๋ฐ ํ…์ŠคํŠธ ํผ ํ•„๋“œ๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ํ•ฉ์„ฑํ•˜๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ Œ๋”๋ง์„ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • PKI(๊ณต๊ฐœํ‚ค ๊ธฐ๋ฐ˜๊ตฌ์กฐ) ์ „์ž ์„œ๋ช…: ์„œ๋ช… ์™„๋ฃŒ ์‹œ์ ์˜ ๋ฌธ์„œ ํ•ด์‹œ(SHA-256)๋ฅผ ํƒ€์ž„์Šคํƒฌํ”„ ์ธ์ฆ์„œ์™€ ๊ฒฐํ•ฉํ•˜์—ฌ ๋ฌธ์„œ์˜ ์‚ฌํ›„ ์œ„๋ณ€์กฐ ์—ฌ๋ถ€๋ฅผ ์ฆ๋ช…ํ•˜๋Š” ์•”ํ˜ธํ•™์  ๋ฌด๊ฒฐ์„ฑ ์›๋ฆฌ๋ฅผ ํ•™์Šตํ•˜์„ธ์š”.
  • ๐Ÿ’ก ํ™œ์šฉ ํŒ: ์œ ๋ฃŒ ์ „์ž์„œ๋ช… ์„œ๋น„์Šค์˜ ๊ฑด๋‹น ๊ฒฐ์ œ ๋น„์šฉ์„ ์ ˆ๊ฐํ•˜๊ธฐ ์œ„ํ•ด ์ž์‚ฌ ๋„๋ฉ”์ธ์— Documenso๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๊ณ  ์›นํ›…์„ ์—ฐ๋™ํ•˜์—ฌ, ๊ฒฐ์ œ ์™„๋ฃŒ ๊ณ ๊ฐ์—๊ฒŒ ์ด์šฉ ๊ณ„์•ฝ์„œ๋ฅผ ์ž๋™์œผ๋กœ ๋ฐœ์†กํ•˜๊ณ  ์ฒด๊ฒฐํ•˜๋Š” ์—…๋ฌด ์ž๋™ํ™”๋ฅผ ๊ตฌํ˜„ํ•ด ๋ณด์„ธ์š”.

23. Dub.co ๐Ÿ”— โ€‹

๊ณ ๋„ํ™”๋œ ๋ถ„์„ ๊ธฐ๋Šฅ๊ณผ ๋งž์ถคํ˜• ๋„๋ฉ”์ธ์„ ์ง€์›ํ•˜๋Š” ์ตœ์‹  ์˜คํ”ˆ์†Œ์Šค ๋งํฌ ๋‹จ์ถ• ์„œ๋น„์ŠคGitHub: dubinc/dub

์†Œ๊ฐœ: Bitly๋ฅผ ๋Šฅ๊ฐ€ํ•˜๋Š” ์˜คํ”ˆ์†Œ์Šค ๋‹จ์ถ• ๋งํฌ ์ธํ”„๋ผ๋กœ, ์ปค์Šคํ…€ ๋„๋ฉ”์ธ ๋งคํ•‘, ์‹ค์‹œ๊ฐ„ ํด๋ฆญ ์ง€๋ฆฌ์  ์œ„์น˜ ๋ถ„์„, ๋””๋ฐ”์ด์Šค/OS๋ณ„ ๋™์  ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ, ๊ทธ๋ฆฌ๊ณ  QR ์ฝ”๋“œ ์ž๋™ ์ƒ์„ฑ์„ ์ œ๊ณตํ•˜๋Š” ํ˜„๋Œ€์  ๋งˆ์ผ€ํŒ… ์—”์ง€๋‹ˆ์–ด๋ง ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

  • โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (Tech Stack): TypeScript, Next.js, TailwindCSS, Tinybird (ClickHouse), Redis
  • ๐Ÿง  ์‚ฌ์ „์— ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ๋“ค:
    • ์ดˆ์ €์ง€์—ฐ ์—ฃ์ง€ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ: Vercel Edge Middleware ๋ฐ Redis ์บ์‹œ๋ฅผ ํ™œ์šฉํ•ด HTTP 301/302 ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋ฅผ 10ms ๋ฏธ๋งŒ์˜ ๋ฒˆ๊ฐœ ๊ฐ™์€ ์†๋„๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ์—ฃ์ง€ ์ปดํ“จํŒ…์„ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ์‹ค์‹œ๊ฐ„ ๋Œ€์šฉ๋Ÿ‰ ์ด๋ฒคํŠธ ๋ถ„์„: ์ดˆ๋‹น ์ˆ˜๋งŒ ๊ฑด์˜ ํด๋ฆญ ๋กœ๊ทธ๋ฅผ ClickHouse/Tinybird ์ปฌ๋Ÿผ ์ง€ํ–ฅ DB์— ์ง‘๊ณ„ํ•˜์—ฌ ๋”œ๋ ˆ์ด ์—†์ด ์‹œ๊ฐํ™” ๋Œ€์‹œ๋ณด๋“œ๋กœ ๋ Œ๋”๋งํ•˜๋Š” ๋ฐ์ดํ„ฐ ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ•™์Šตํ•˜์„ธ์š”.
  • ๐Ÿ’ก ํ™œ์šฉ ํŒ: ๋งˆ์ผ€ํŒ… ์บ ํŽ˜์ธ ๋งํฌ๋‚˜ ๋‰ด์Šค๋ ˆํ„ฐ URL์„ ์ž์‚ฌ ์ „์šฉ ๋‹จ์ถ• ๋„๋ฉ”์ธ(link.mycompany.com)์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , ์ ‘์†์ž์˜ ๊ตญ๊ฐ€์™€ ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ์ตœ์ ์˜ ๋žœ๋”ฉ ํŽ˜์ด์ง€๋กœ ์ž๋™ ๋ถ„๊ธฐ์‹œํ‚ค๋Š” ์ง€๋Šฅํ˜• ๋งํฌ ๋ผ์šฐํ„ฐ๋ฅผ ๊ตฌ์ถ•ํ•˜์„ธ์š”.

24. Novu ๐Ÿ”” โ€‹

์ธ์•ฑ, ํ‘ธ์‹œ, ์ด๋ฉ”์ผ, SMS, ์Šฌ๋ž™ ๋“ฑ ๋ชจ๋“  ์•Œ๋ฆผ ์ธํ”„๋ผ๋ฅผ ํ•˜๋‚˜๋กœ ํ†ตํ•ฉํ•˜๋Š” ์˜คํ”ˆ์†Œ์Šค ์•Œ๋ฆผ ์—”์ง„GitHub: novuhq/novu

์†Œ๊ฐœ: ์ด๋ฉ”์ผ(SendGrid/SES), SMS(Twilio), ํ‘ธ์‹œ(FCM), ์‚ฌ๋‚ด ๋ฉ”์‹ ์ €(Slack/Discord), ๊ทธ๋ฆฌ๊ณ  ํ”„๋ก ํŠธ์—”๋“œ ์›น ์•Œ๋ฆผ ๋ฒจ ์„ผํ„ฐ(Notification Center) UI ์ปดํฌ๋„ŒํŠธ๊นŒ์ง€ ๋‹จ ํ•˜๋‚˜์˜ API๋กœ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ํ•ด ์ฃผ๋Š” ์ฐจ์„ธ๋Œ€ ์•Œ๋ฆผ ์ธํ”„๋ผ์ž…๋‹ˆ๋‹ค.

  • โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (Tech Stack): TypeScript, NestJS, React, Redis, MongoDB
  • ๐Ÿง  ์‚ฌ์ „์— ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ๋“ค:
    • ์•Œ๋ฆผ ์›Œํฌํ”Œ๋กœ์šฐ ์—”์ง„: ํŠธ๋ฆฌ๊ฑฐ ๋ฐœ์ƒ ์‹œ "ํ‘ธ์‹œ ๋ฐœ์†ก ํ›„ 5๋ถ„๊ฐ„ ๋ฏธํ™•์ธ ์‹œ ์ด๋ฉ”์ผ 2์ฐจ ๋ฐœ์†ก"๊ณผ ๊ฐ™์€ ์กฐ๊ฑด๋ถ€ ์ง€์—ฐ(Digest/Delay) ํŒŒ์ดํ”„๋ผ์ธ์„ ์ƒํƒœ ๋จธ์‹ ์œผ๋กœ ์ œ์–ดํ•˜๋Š” ์›๋ฆฌ๋ฅผ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ํ—ค๋“œ๋ฆฌ์Šค(Headless) UI ์œ„์ ฏ: ๋ฆฌ์•กํŠธ ์•ฑ์— ์•Œ๋ฆผ ์ข…(Bell) ์•„์ด์ฝ˜๊ณผ ์ฝ์Œ ์ฒ˜๋ฆฌ ํŒ์—… ๋“œ๋กญ๋‹ค์šด์„ ๋‹จ ํ•œ ์ค„์˜ ์ปดํฌ๋„ŒํŠธ๋กœ ์ด์‹ํ•˜๋Š” SDK ํŒจํ‚ค์ง• ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ•™์Šตํ•˜์„ธ์š”.
  • ๐Ÿ’ก ํ™œ์šฉ ํŒ: ๊ฐ ์ฑ„๋„๋ณ„๋กœ ์ œ๊ฐ๊ฐ ๋ถ„์‚ฐ๋˜์–ด ์žˆ๋˜ ํ‘ธ์‹œ ๋ฐœ์†ก ๋กœ์ง๊ณผ ์ด๋ฉ”์ผ ํ…œํ”Œ๋ฆฟ์„ Novu ๋Œ€์‹œ๋ณด๋“œ ํ•˜๋‚˜๋กœ ํ†ตํ•ฉ ๊ด€๋ฆฌํ•˜์—ฌ, ๊ฐœ๋ฐœ์ž์˜ ์•Œ๋ฆผ ์ฝ”๋“œ ์ž‘์„ฑ ์‹œ๊ฐ„์„ 80% ๋‹จ์ถ•์‹œํ‚ค๋Š” ์•Œ๋ฆผ ํ—ˆ๋ธŒ๋ฅผ ๊ตฌ์ถ•ํ•˜์„ธ์š”.

25. Twenty ๐Ÿ‘ฅ โ€‹

Salesforce์™€ HubSpot์„ ๋Œ€์ฒดํ•˜๋Š” ๋ชจ๋˜ํ•˜๊ณ  ๋ฏธ๋ คํ•œ ์˜คํ”ˆ์†Œ์Šค CRMGitHub: twentyhq/twenty

์†Œ๊ฐœ: ์ „ํ†ต์ ์ธ CRM์˜ ๋‹ต๋‹ตํ•˜๊ณ  ๋ณต์žกํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋…ธ์…˜(Notion)์ฒ˜๋Ÿผ ์„ธ๋ จ๋˜๊ณ  ๊ธฐ๋ฏผํ•œ UX๋กœ ์™„์ „ํžˆ ์žฌ์ฐฝ์กฐํ•œ ์ตœ์‹  ๊ณ ๊ฐ ๊ด€๊ณ„ ๊ด€๋ฆฌ(CRM) ํ”Œ๋žซํผ์œผ๋กœ, ๊ณ ๊ฐ ํŒŒ์ดํ”„๋ผ์ธ ๊ด€๋ฆฌ, ์ด๋ฉ”์ผ ๋™๊ธฐํ™”, ์ปค์Šคํ…€ ํ•„๋“œ ์„ค๊ณ„๋ฅผ ์™„๋ฒฝ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

  • โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (Tech Stack): TypeScript, NestJS, React, GraphQL, PostgreSQL
  • ๐Ÿง  ์‚ฌ์ „์— ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ๋“ค:
    • ๋™์  ์Šคํ‚ค๋งˆ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ(Metadata Engine): DB ํ…Œ์ด๋ธ”์„ ์ง์ ‘ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ ๋„ ์‚ฌ์šฉ์ž๊ฐ€ ์›น UI์—์„œ ์ฆ‰์‹œ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ํ•„๋“œ(๊ณ ๊ฐ ์†์„ฑ)๋ฅผ ์ •์˜ํ•˜๊ณ  ์ธ๋ฑ์‹ฑํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์—ฐํ•œ ์Šคํ‚ค๋งˆ ์„ค๊ณ„๋ฒ•์„ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • GraphQL Apollo Federation: ๋ณต์žกํ•˜๊ฒŒ ์–ฝํžŒ ๊ณ ๊ฐ, ํšŒ์‚ฌ, ๊ฑฐ๋ž˜(Deal), ํ™œ๋™ ๋กœ๊ทธ ๊ฐ„์˜ ๊ด€๊ณ„ํ˜• ๊ทธ๋ž˜ํ”„ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹จ์ผ ์ฟผ๋ฆฌ๋กœ ์ตœ์ ํ™”ํ•˜์—ฌ ํŒจ์น˜ํ•˜๋Š” ๋ฐฑ์—”๋“œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ•™์Šตํ•˜์„ธ์š”.
  • ๐Ÿ’ก ํ™œ์šฉ ํŒ: ๋น„์‹ผ ์ƒ์šฉ CRM ๋ผ์ด์„ ์Šค ๋น„์šฉ ์—†์ด ์‚ฌ๋‚ด B2B ์˜์—… ํŒ€์˜ ๋ฆฌ๋“œ ๋ฐœ๊ตด๋ถ€ํ„ฐ ๊ณ„์•ฝ ์ฒด๊ฒฐ๊นŒ์ง€์˜ ์ „์ฒด ์„ธ์ผ์ฆˆ ํŒŒ์ดํ”„๋ผ์ธ์„ Twenty๋กœ ์ค‘์•™ ์ง‘์ค‘ํ™”ํ•˜์—ฌ ํˆฌ๋ช…ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•ด ๋ณด์„ธ์š”.

26. Formbricks ๐Ÿ“‹ โ€‹

Typeform์„ ๋Œ€์ฒดํ•˜๋Š” ํ”„๋ผ์ด๋ฒ„์‹œ ์ค‘์‹ฌ์˜ ๋งˆ์ดํฌ๋กœ ์„œ๋ฒ ์ด ๋ฐ ์‚ฌ์šฉ์ž ํ”ผ๋“œ๋ฐฑ ์†”๋ฃจ์…˜GitHub: formbricks/formbricks

์†Œ๊ฐœ: ์›น/์•ฑ ์„œ๋น„์Šค ๋‚ด๋ถ€์— ์ž์—ฐ์Šค๋Ÿฌ์šด ํŒ์—… ๋ชจ๋‹ฌ ํ˜•ํƒœ๋กœ ์„ค๋ฌธ์กฐ์‚ฌ๋ฅผ ๋„์šฐ๊ฑฐ๋‚˜ ๋…๋ฆฝ ๋งํฌ๋กœ ๋ฐฐํฌํ•˜์—ฌ, ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ๊ธฐ๋Šฅ(์˜ˆ: ๊ฒฐ์ œ ์™„๋ฃŒ, ๊ธฐ๋Šฅ ์ดํƒˆ)์„ ์‚ฌ์šฉํ•  ๋•Œ ์ฆ‰๊ฐ์ ์ธ ์ •์„ฑ์  ํ”ผ๋“œ๋ฐฑ์„ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ฒ ์ด ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

  • โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (Tech Stack): TypeScript, Next.js, TailwindCSS, Prisma, PostgreSQL
  • ๐Ÿง  ์‚ฌ์ „์— ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ๋“ค:
    • ์‚ฌ์šฉ์ž ํ–‰๋™ ํŠธ๋ฆฌ๊ฑฐ(Behavioral Targeting): ํŠน์ • ํŽ˜์ด์ง€ N์ดˆ ์ฒด๋ฅ˜, ํŠน์ • ๋ฒ„ํŠผ ํด๋ฆญ, ์œ ์ € ์„ธ๊ทธ๋จผํŠธ(์‹ ๊ทœ/์œ ๋ฃŒ ์œ ์ €) ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋™์ ์œผ๋กœ ์„ค๋ฌธ ์œ„์ ฏ์„ ๋…ธ์ถœ์‹œํ‚ค๋Š” ์ด๋ฒคํŠธ ๋””์ŠคํŒจ์น˜ ์›๋ฆฌ๋ฅผ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ๊ฒฝ๋Ÿ‰ ์ธ์•ฑ SDK ์ž„๋ฒ ๋”ฉ: ๊ณ ๊ฐ์‚ฌ ์„œ๋น„์Šค์˜ ๋ฒˆ๋“ค ์šฉ๋Ÿ‰์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋„๋ก 20KB ๋ฏธ๋งŒ์˜ ์ดˆ๊ฒฝ๋Ÿ‰ ์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘๋™ํ•˜๋Š” ์œ„์ ฏ ์ƒŒ๋“œ๋ฐ•์Šค ํŒจํ‚ค์ง• ๊ธฐ๋ฒ•์„ ์ดํ•ดํ•˜์„ธ์š”.
  • ๐Ÿ’ก ํ™œ์šฉ ํŒ: ์‹ ๊ทœ ๊ธฐ๋Šฅ ์ถœ์‹œ ํ›„ ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ 3ํšŒ ์ด์ƒ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ "์ด ๊ธฐ๋Šฅ ์–ด๋– ์…จ๋‚˜์š”?"๋ผ๋Š” 1์ดˆ ๋ณ„์  ์„ค๋ฌธ์„ ๋„์›Œ ์ฆ‰๊ฐ์ ์ธ ์ œํ’ˆ ๊ฐœ์„  ๋ฐ์ดํ„ฐ๋ฅผ ํ™•๋ณดํ•˜๋Š” ๊ทธ๋กœ์Šค ํ•ดํ‚น ์‹คํ—˜์„ ์ˆ˜ํ–‰ํ•ด ๋ณด์„ธ์š”.

27. Latent Scope ๐Ÿ”ฌ โ€‹

์ˆ˜์‹ญ๋งŒ ๊ฐœ์˜ ํ…์ŠคํŠธ ์ž„๋ฒ ๋”ฉ ๋ฐ์ดํ„ฐ๋ฅผ 2D ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ์ง€๋„๋กœ ์‹œ๊ฐํ™”ํ•˜๊ณ  ํƒ์ƒ‰ํ•˜๋Š” AI ํˆดGitHub: enjalot/latent-scope

์†Œ๊ฐœ: LLM๊ณผ ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ(OpenAI, Cohere ๋“ฑ)์„ ํ†ตํ•ด ์ˆ˜์น˜ํ™”๋œ ๊ณ ์ฐจ์› ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ UMAP ๊ธฐ๋ฒ•์œผ๋กœ 2์ฐจ์› ๊ณต๊ฐ„์— ํˆฌ์˜ํ•˜๊ณ , ํด๋Ÿฌ์Šคํ„ฐ๋ง(HDBSCAN)์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ์˜ ์ˆจ๊ฒจ์ง„ ํŒจํ„ด๊ณผ ํ† ํ”ฝ์„ ์ง€๊ฐ์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” AI ๋ถ„์„ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

  • โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (Tech Stack): Python, DuckDB, Polars, Svelte / WebGL
  • ๐Ÿง  ์‚ฌ์ „์— ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ๋“ค:
    • ์ฐจ์› ์ถ•์†Œ(UMAP) ๋ฐ ํด๋Ÿฌ์Šคํ„ฐ๋ง: 1536์ฐจ์›์˜ ๊ณ ์ฐจ์› ๋ฒกํ„ฐ ๊ฑฐ๋ฆฌ(์ฝ”์‚ฌ์ธ ์œ ์‚ฌ๋„) ๊ด€๊ณ„๋ฅผ 2์ฐจ์› ํ‰๋ฉด ์ขŒํ‘œ(X, Y)๋กœ ์••์ถ•ํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ์ง€์—ญ์ /์ „์—ญ์  ๊ตฌ์กฐ๋ฅผ ๋ณด์กดํ•˜๋Š” ์ˆ˜ํ•™์  ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • DuckDB ์ธ๋ฉ”๋ชจ๋ฆฌ OLAP ์—”์ง„: ์ˆ˜์‹ญ๋งŒ ๊ฑด์˜ ๋ฒกํ„ฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋ธŒ๋ผ์šฐ์ € ๋ฐ ๋กœ์ปฌ ํŒŒ์ด์ฌ ์ƒ์—์„œ ๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„๋กœ ํ•„ํ„ฐ๋งํ•˜๊ณ  ์Šฌ๋ผ์ด์‹ฑํ•˜๋Š” ์ดˆ๊ณ ์† ์ฟผ๋ฆฌ ์›๋ฆฌ๋ฅผ ํ•™์Šตํ•˜์„ธ์š”.
  • ๐Ÿ’ก ํ™œ์šฉ ํŒ: ํšŒ์‚ฌ์— ์ถ•์ ๋œ ์ˆ˜๋งŒ ๊ฑด์˜ ๊ณ ๊ฐ ๋ฌธ์˜(CS) ๋กœ๊ทธ๋‚˜ ๋ฒ„๊ทธ ๋ฆฌํฌํŠธ๋ฅผ ์ž„๋ฒ ๋”ฉํ•˜์—ฌ ์–ด๋–ค ์œ ํ˜•์˜ ๋ถˆ๋งŒ์ด ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š”์ง€ 2D ํด๋Ÿฌ์Šคํ„ฐ ๋งต์œผ๋กœ ์‹œ๊ฐํ™”ํ•˜๊ณ , AI๋กœ ๊ฐ ๊ตฐ์ง‘์˜ ํ•ต์‹ฌ ์›์ธ์„ ์ž๋™ ๋ผ๋ฒจ๋งํ•ด ๋ณด์„ธ์š”.

28. Paperless-ngx ๐Ÿ“„ โ€‹

์Šค์บ”ํ•œ ์ข…์ด ๋ฌธ์„œ์™€ ์ „์ž ์˜์ˆ˜์ฆ์„ OCR๋กœ ์ธ์‹ํ•˜์—ฌ ์ž๋™ ํƒœ๊น… ๋ฐ ์ธ๋ฑ์‹ฑํ•ด์ฃผ๋Š” ๋ฌธ์„œ ๊ด€๋ฆฌ ์‹œ์Šคํ…œGitHub: paperless-ngx/paperless-ngx

์†Œ๊ฐœ: ์Šค์บ”ํ•œ ๊ณ„์•ฝ์„œ, ์˜์ˆ˜์ฆ, ์„ธ๊ธˆ๊ณ„์‚ฐ์„œ, ๊ณ ์ง€์„œ ์ด๋ฏธ์ง€๋‚˜ PDF ํŒŒ์ผ์„ ํด๋”์— ๋„ฃ๊ฑฐ๋‚˜ ์ด๋ฉ”์ผ๋กœ ์ „๋‹ฌํ•˜๋ฉด, Tesseract OCR ์—”์ง„์ด ๊ธ€์ž๋ฅผ 100% ์ธ์‹ํ•˜์—ฌๅ…จๆ–‡ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ  ๋จธ์‹ ๋Ÿฌ๋‹์œผ๋กœ ๋ณด๊ด€ํ•จ์„ ์ž๋™ ๋ถ„๋ฅ˜ํ•ด ์ฃผ๋Š” ์Šค๋งˆํŠธ ์•„์นด์ด๋น™ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

  • โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (Tech Stack): Python (Django), Angular, Tesseract OCR, Redis, Celery
  • ๐Ÿง  ์‚ฌ์ „์— ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ๋“ค:
    • ๋น„๋™๊ธฐ OCR ํŒŒ์ดํ”„๋ผ์ธ: ๋Œ€์šฉ๋Ÿ‰ PDF ์—…๋กœ๋“œ ์‹œ ์›น ์„œ๋ฒ„์˜ ๋ž™์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด Celery ํƒœ์Šคํฌ ํ๋ฅผ ํ†ตํ•ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์›Œ์ปค์—์„œ OCR ํ…์ŠคํŠธ ์ถ”์ถœ ๋ฐ PDF/A ์•„์นด์ด๋ธŒ ๋ณ€ํ™˜์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋น„๋™๊ธฐ ์„ค๊ณ„๋ฅผ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ์ž๋™ ๋ฌธ์„œ ๋ถ„๋ฅ˜ ๋จธ์‹ ๋Ÿฌ๋‹: ๋ฌธ์„œ์— ๋“ฑ์žฅํ•˜๋Š” ํ…์ŠคํŠธ ํŒจํ„ด์„ ๋ฐ”ํƒ•์œผ๋กœ ๋ฐœํ–‰์ฒ˜, ๋ฌธ์„œ ์œ ํ˜•(์˜์ˆ˜์ฆ/๊ณ„์•ฝ์„œ), ๋‚ ์งœ๋ฅผ ์Šค์Šค๋กœ ํ•™์Šตํ•ด ํƒœ๊ทธ๋ฅผ ์ž๋™ ๋ถ€์—ฌํ•˜๋Š” Naive Bayes ๋ถ„๋ฅ˜๊ธฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ•™์Šตํ•˜์„ธ์š”.
  • ๐Ÿ’ก ํ™œ์šฉ ํŒ: ๊ฐœ๋ฐœ์‹ค์ด๋‚˜ ์‚ฌ๋ฌด์‹ค์˜ ๋ชจ๋“  ํ•˜๋“œ์นดํ”ผ ๊ณ„์•ฝ์„œ์™€ ์ง€์ถœ ์ฆ๋น™ ์˜์ˆ˜์ฆ์„ ์Šค๋งˆํŠธํฐ์œผ๋กœ ์ฐ์–ด ์—…๋กœ๋“œํ•˜๊ณ , ํ•„์š”ํ•  ๋•Œ ๋‹จ์–ด ๊ฒ€์ƒ‰ ํ•œ ๋ฒˆ์œผ๋กœ 1์ดˆ ๋งŒ์— ์›๋ณธ ๋ฌธ์„œ๋ฅผ ์ฐพ์•„๋‚ด๋Š” ํŽ˜์ดํผ๋ฆฌ์Šค ์˜คํ”ผ์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜์„ธ์š”.

29. RustDesk ๐Ÿ–ฅ๏ธ โ€‹

TeamViewer์™€ AnyDesk๋ฅผ ์™„๋ฒฝํžˆ ๋Œ€์ฒดํ•˜๋Š” ์˜คํ”ˆ์†Œ์Šค ์…€ํ”„ํ˜ธ์ŠคํŒ… ์›๊ฒฉ ์ œ์–ด ์†”๋ฃจ์…˜GitHub: rustdesk/rustdesk

์†Œ๊ฐœ: ์ƒ์šฉ ์›๊ฒฉ ๋ฐ์Šคํฌํ†ฑ ํ”„๋กœ๊ทธ๋žจ์˜ ์ ‘์† ์‹œ๊ฐ„ ์ œํ•œ ๋ฐ ๊ณ ๊ฐ€ ๋ผ์ด์„ ์Šค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ ๋„๊ตฌ๋กœ, Rust๋กœ ์ž‘์„ฑ๋˜์–ด ์ดˆ๊ณ ์† ๋ฐ˜์‘ ์†๋„์™€ ์—”๋“œํˆฌ์—”๋“œ ์•”ํ˜ธํ™”๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ ์‚ฌ๋‚ด ์ž์ฒด ๋ž‘๋ฐ๋ถ€(Rendezvous) ๋ฆด๋ ˆ์ด ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•ด ์™„๋ฒฝํ•œ ๋ณด์•ˆ ๋ง์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (Tech Stack): Rust, Flutter (UI), WebRTC, Tokio
  • ๐Ÿง  ์‚ฌ์ „์— ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ๋“ค:
    • NAT ํ†ต๊ณผ(NAT Traversal / STUN / TURN): ๊ณต์œ ๊ธฐ(๋ฐฉํ™”๋ฒฝ) ๋’ค์— ์žˆ๋Š” ๋‘ ์ปดํ“จํ„ฐ๊ฐ€ ๊ณต์ธ IP ์—†์ด๋„ P2P ์ง์ ‘ ํ†ต์‹  ํ„ฐ๋„์„ ๊ฐœ์„คํ•˜๋Š” ํ™€ ํŽ€์นญ(Hole Punching) ๋„คํŠธ์›Œํฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ํ•˜๋“œ์›จ์–ด ๊ฐ€์† ๋น„๋””์˜ค ์ธ์ฝ”๋”ฉ: ํ™”๋ฉด ๋ณ€๊ฒฝ ํ”ฝ์…€์„ CPU ๋ถ€๋‹ด ์—†์ด GPU(NVENC, VAAPI ๋“ฑ)๋กœ ์‹ค์‹œ๊ฐ„ ์••์ถ•(H.264/H.265/VP9)ํ•˜์—ฌ ์ŠคํŠธ๋ฆฌ๋ฐํ•˜๋Š” ์ €์ง€์—ฐ ๋น„๋””์˜ค ํŒŒ์ดํ”„๋ผ์ธ์„ ์ˆ™์ง€ํ•˜์„ธ์š”.
  • ๐Ÿ’ก ํ™œ์šฉ ํŒ: ๋ณด์•ˆ์ด ์ค‘์š”ํ•œ ํšŒ์‚ฌ ๋‚ด๋ถ€ ์„œ๋ฒ„๋‚˜ ์žฌํƒ๊ทผ๋ฌด PC์— ์ž์ฒด RustDesk ๋ฆด๋ ˆ์ด ์„œ๋ฒ„๋ฅผ ์˜ฌ๋ ค ์™ธ๋ถ€ ํด๋ผ์šฐ๋“œ ์ค‘๊ณ„ ์—†์ด ํšŒ์‚ฌ ์ „์šฉ ๊ณ ์† ์›๊ฒฉ ๋ฐ์Šคํฌํ†ฑ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜์„ธ์š”.

30. Coolify ๐Ÿš€ โ€‹

Heroku, Netlify, Vercel์„ ๋‚˜๋งŒ์˜ VPS ์„œ๋ฒ„์— ์ž์ฒด ๊ตฌ์ถ•ํ•˜๋Š” ์›ํด๋ฆญ PaaS ์†”๋ฃจ์…˜GitHub: coollabsio/coolify

์†Œ๊ฐœ: ํด๋ผ์šฐ๋“œ(Vercel, AWS)์˜ ๋น„์‹ผ ํ˜ธ์ŠคํŒ… ๋น„์šฉ์— ์ง€์นœ ๊ฐœ๋ฐœ์ž๋“ค์„ ์œ„ํ•œ ์ตœ๊ณ ์˜ ์…€ํ”„ํ˜ธ์ŠคํŒ… PaaS๋กœ, 5์ฒœ์›์งœ๋ฆฌ ์ €๋ ดํ•œ ๋ฆฌ๋ˆ…์Šค VPS ์„œ๋ฒ„์— ์„ค์น˜ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด Git Push ์‹œ ์ž๋™ ๋นŒ๋“œ/๋ฐฐํฌ, ๋ฌด๋ฃŒ SSL ์ธ์ฆ์„œ ๋ฐœ๊ธ‰, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(PostgreSQL, Redis ๋“ฑ) ์›ํด๋ฆญ ์ƒ์„ฑ์„ ์ง€์›ํ•˜๋Š” ๋งˆ๋ฒ• ๊ฐ™์€ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

  • โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (Tech Stack): PHP (Laravel), Livewire, Docker Engine, Traefik (์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ)
  • ๐Ÿง  ์‚ฌ์ „์— ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ๋“ค:
    • ๋„์ปค ์†Œ์ผ“ ์ œ์–ด์™€ Nixpacks: ์›น UI์—์„œ Docker API๋ฅผ ์ง์ ‘ ์ œ์–ดํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋นŒ๋“œ ๋ฐ ๊ธฐ๋™ํ•˜๊ณ , ์†Œ์Šค์ฝ”๋“œ์˜ ์–ธ์–ด๋ฅผ ์ž๋™ ์ธ์‹ํ•ด ์ตœ์ ์˜ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” Nixpacks ์—”์ง„์˜ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ๋™์  ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ(Traefik): ์‹ ๊ทœ ์•ฑ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ฐฐํฌ๋  ๋•Œ๋งˆ๋‹ค ์„ค์ • ํŒŒ์ผ ์žฌ๋ถ€ํŒ… ์—†์ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ผ์šฐํŒ… ๊ทœ์น™์„ ๊ฐฑ์‹ ํ•˜๊ณ  Let's Encrypt ๋ฌด๋ฃŒ SSL ์ธ์ฆ์„œ๋ฅผ ์ž๋™ ๋ฐœ๊ธ‰๋ฐ›๋Š” ํ”„๋ก์‹œ ๊ตฌ์กฐ๋ฅผ ํ•™์Šตํ•˜์„ธ์š”.
  • ๐Ÿ’ก ํ™œ์šฉ ํŒ: ํ† ์ด ํ”„๋กœ์ ํŠธ๋‚˜ ๊ฐœ์ธ ์„œ๋น„์Šค๊ฐ€ ๋Š˜์–ด๋‚  ๋•Œ๋งˆ๋‹ค ๋ฐœ์ƒํ•˜๋Š” ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„ ๋น„์šฉ์„ ์•„๋ผ๊ธฐ ์œ„ํ•ด, ๋‹จ ํ•˜๋‚˜์˜ VPS์— Coolify๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์ˆ˜์‹ญ ๊ฐœ์˜ Node.js, Next.js, FastAPI ์›น์•ฑ๊ณผ DB๋ฅผ ์›ํด๋ฆญ์œผ๋กœ ๋ฌด์ œํ•œ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ๋‚˜๋งŒ์˜ ์ „์šฉ ํด๋ผ์šฐ๋“œ๋ฅผ ์™„์„ฑํ•ด ๋ณด์„ธ์š”.

๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ์ง€์‹DB โ€” ๋” ๋‚˜์€ ๊ฐœ๋ฐœ ๊ฒฝํ—˜์„ ์œ„ํ•ด