๐Ÿ“ฑ ์ปค๋ฎค๋‹ˆํ‹ฐ ์นด์นด์˜คํ†ก ๋ฐ์ดํ„ฐ 24/7 ์ˆ˜์ง‘ ์‹œ์Šคํ…œ ๊ตฌ์ถ• ์—ฌ์ •

ํ•œ ์—ฌ์ž๊ฐ€ ์ „ํ™”๊ธฐ๋ฅผ ์•ž์— ๋‘๊ณ  ์ฑ…์ƒ์— ์•‰์•„ ์žˆ๋‹ค

๐Ÿ“Œ ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

๋ชฉํ‘œ: ์นด์นด์˜คํ†ก ์ปค๋ฎค๋‹ˆํ‹ฐ(130๋ช…)์˜ ๋ฉ”์‹œ์ง€๋ฅผ 24/7 ์ž๋™ ์ˆ˜์ง‘ํ•˜๊ณ  DB์— ์ €์žฅํ•˜๋Š” ์‹œ์Šคํ…œ ๊ตฌ์ถ•

์ฃผ์š” ๊ธฐ๋Šฅ ๐Ÿ“ฑ

  • ์‹ค์‹œ๊ฐ„ ๋ฉ”์‹œ์ง€ ์ˆ˜์ง‘ (๋ฉ”์‹ ์ €๋ด‡R - ์ž‡๋‹ค๋ด‡)

  • ์ฃผ๊ธฐ์  ๋ฐฐ์น˜ ์ˆ˜์ง‘ (์นด์นด์˜คํ†ก ๋‚ด๋ณด๋‚ด๊ธฐ ํŒŒ์‹ฑ)

  • ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„ ์šด์˜ (DigitalOcean)

  • ์ž๋™ ๋ฐฑ์—… ์‹œ์Šคํ…œ

๊ธฐ์ˆ  ์Šคํƒ โš’๏ธ

์นด์นด์˜คํ†ก โ†’ ๋ฉ”์‹ ์ €๋ด‡R (JavaScript) โ†’ FastAPI (Python) โ†’ SQLite
                                    โ†“
                        DigitalOcean ์„œ๋ฒ„ (24/7)
  • ํ”„๋ก ํŠธ์—”๋“œ: ๋ฉ”์‹ ์ €๋ด‡R (Rhino JavaScript ์—”์ง„)

  • ๋ฐฑ์—”๋“œ: FastAPI + Uvicorn

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค: SQLite (7๊ฐœ ํ…Œ์ด๋ธ”, 3๊ฐœ ํŠธ๋ฆฌ๊ฑฐ)

  • ๋ฐฐํฌ: DigitalOcean Ubuntu + Systemd

  • ์ž๋™ํ™”: Bash Shell Scripts

<ํ˜„์žฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ (chat_collector.dbย (180KB)>

์ง€๊ธˆ: v2.1 (6๊ฐœ ํ…Œ์ด๋ธ”)
     โ”œโ”€ rooms
     โ”œโ”€ participants  
     โ”œโ”€ messages โญ (ํ•ต์‹ฌ)
     โ”œโ”€ bot_actions
     โ”œโ”€ statistics_cache
     โ””โ”€ keyword_trends

๋‚˜์ค‘: product_mentions ์ถ”๊ฐ€ (ํ•„์š”์‹œ)
     โ””โ”€ ALTER TABLE ์—†์ด ์ถ”๊ฐ€๋งŒ!

๐ŸŽฏ ํ•ต์‹ฌ ์„ฑ๊ณผ

์ •๋Ÿ‰์  ์„ฑ๊ณผ

โœ…ย ์ˆ˜์ง‘ ์ •์ƒ ์ž‘๋™: ์‹œ์Šคํ…œ ๊ตฌ์ถ• ์™„๋ฃŒ 3์ผ ๋งŒ์— 839๊ฐœ ๋ฉ”์‹œ์ง€ ์ˆ˜์ง‘!

โœ…ย ๋‹ค์–‘ํ•œ ์ฐธ์—ฌ์ž: 46๋ช…์˜ ๋‹ค์–‘ํ•œ ๋ฉค๋ฒ„๋“ค ๋ฉ”์‹œ์ง€ ์ˆ˜์ง‘๋จ

โœ…ย ์‹ค์‹œ๊ฐ„ ๋ฐ˜์˜: ๋ฐฉ๊ธˆ ์ „ ๋ฉ”์‹œ์ง€(14:53)๊นŒ์ง€ ์ˆ˜์ง‘

โœ…ย ์•ˆ์ •์  ์ˆ˜์ง‘ ์ƒํƒœ: 24/7 ์„œ๋ฒ„ ๊ฐ€๋™๋ฅ  ๋‹ฌ์„ฑ

์ •์„ฑ์  ์„ฑ๊ณผ

  • ์™„์ „ ์ž๋™ํ™”๋œ ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•

  • ์ค‘๋ณต ๋ฐฉ์ง€ ๋ฐ ๋ฐฑ์—… ์‹œ์Šคํ…œ ์™„๋น„

  • "๊ฐ€์ •์„ ์˜์‹ฌํ•˜๋Š”" ๋””๋ฒ„๊น… ์Šต๊ด€ ์ฒด๋“

๐Ÿ‘ ์ด์   ๊ฐ€๋Šฅํ•ด์ง„ ๋ถ„์„๋“ค

์™€์šฐ! ์ด์   ์ด๋Ÿฐ ๋ฐ์ดํ„ฐ๋„ ์†์‰ฝ๊ฒŒ ๋ฝ‘์„ ์ˆ˜ ์žˆ์Œ ๐Ÿ‘

1. ์ฐธ์—ฌ์ž๋ณ„ ๋ฉ”์‹œ์ง€ ์ˆ˜ (์ƒ์œ„ 10๋ช…) ๐Ÿ’ฌ

์ˆœ์œ„

์ฐธ์—ฌ์ž

๋ฉ”์‹œ์ง€ ์ˆ˜

1

์œค์•„๋ง˜/11.11/์™„๋ฃŒ๊ธฐ/์šฉ์ธ

126๊ฐœ

2

์œ ์ฃผ๋ง˜/0808/์™„๋ฃŒ๊ธฐ/์šฉ์ธ

111๊ฐœ

3

์„ค๋ง˜/1223/์™„๋ฃŒ๊ธฐ/๊ฒฝ๊ธฐ๐ŸŽ–

79๊ฐœ

4

ํ—ฌ๋ฆฐ๋ง˜/0309/์™„๋ฃŒ๊ธฐ/ํŒŒ์ฃผ๐ŸŽ–

75๊ฐœ

5

ํ•˜์€์•„๋น /1129/์ค€๋น„์ค‘/์ฒญ์ฃผ

60๊ฐœ

6

๋ฐ˜์ง๋ง˜/4.19/ํ›„๊ธฐ/๋™ํƒ„

59๊ฐœ

7

์ˆ˜์—ฐ๋ง˜/0519/ํ›„๊ธฐ/๋‚จ์–‘์ฃผ

32๊ฐœ

8

๋ฆฌ์›๋ง˜/0818/ํ›„๊ธฐ/์„œ์šธ

31๊ฐœ

9

๋„๋„๋ง˜/0101/์ค€๋น„์ค‘/์–‘์ฃผ

28๊ฐœ

10

์ฑ„์€๋ง˜/0218/์™„๋ฃŒ๊ธฐ/๋‹ค์‚ฐ ๐ŸŽ–

26๊ฐœ

2. ์ธ๊ธฐ ์ƒํ’ˆ ๊ฒ€์ƒ‰ (์ƒต๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ) ๐Ÿ›’

์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๊ด€์‹ฌ ์žˆ๋Š” ์ œํ’ˆ๋“ค:

  • ๊ทธ๋กœ๋ฏธ๋ฏธ ๋นจ๋Œ€์ปต - ๋นจ๋Œ€์ปต

  • ์—๋””์Šจ ์ž๊ธฐ์ฃผ๋„์ปต - ์Œ๋ฃŒ์ปต

  • ๋งˆ์ด์•„ ๋‘์œ ์ œ์กฐ๊ธฐ - ์ด์œ ์‹

  • ํŠธ๋ฃจ์ฟก 4๊ตฌ - ์ด์œ ์‹

  • ๋ฆฌํ‹€ํƒ€์ต์Šค ๋ฏธ๋„๋Ÿผํ‹€ - ์žฅ๋‚œ๊ฐ

  • ๋‘๋‘ ๊ทธ๋ฆผ์ž ๊ทน์žฅ - ์žฅ๋‚œ๊ฐ

  • ๋””์ฆˆ๋‹ˆ์บ์Šฌ๋ ˆ๊ณ  - ์žฅ๋‚œ๊ฐ

  • ์ฝ”์ฝ”์ง€ํ•˜์šฐ์Šค - ์žฅ๋‚œ๊ฐ

๋ฐœ๊ฒฌ: ์ด์œ ์‹ ๋„๊ตฌ + ๋นจ๋Œ€์ปต ๊ด€์‹ฌ ๋†’์Œ!

3. ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ ์œ ํ˜• โ“

์ด์œ ์‹ ๊ด€๋ จ:
- "8์‹œ ์ด์œ ์‹ 150ml...์šฐ์œ ๋ฅผ ํ•œ ๋ฒˆ ๋นผ๊ณ  ์ด์œ ์‹ ์–‘์„ ๋Š˜๋ ค๋ณผ๊นŒ์š”?"
- "๋ฐฅ์†ฅ์ด์œ ์‹ํ•˜๊ฒŒ๋˜๋ฉด ํ•œ์นธ์— ์„ธ๋ผ์–‘ ํ๋ธŒ๋ฅผ ๋„ฃ์€๊ฒŒ ๋งž๋‚˜์š”?"
- "๋ฏน์„œ๊ธฐ๋„ ์žˆ์–ด์•ผ๋˜๊ณ  ์ตธํผ๋„ ์žˆ์–ด์•ผ๋˜๊ณ  ๊ทธ๋Ÿฐ๊ฑฐ์ฃ ?!"
- "๋‹Œ์ž์ตธํผ๊ฐ€ ์œ ๋ช…ํ•˜๋˜๋ฐ ํ”Œ๋ผ์Šคํ‹ฑ ์ด์Šˆ๊ฐ€ ์žˆ๋”๋ผ๊ตฌ์š”?!! ๋ญ ์“ฐ์„ธ์š”?"

์œก์•„์šฉํ’ˆ:
- "9๊ฐค ์•„๊ธฐ ์™ธ์ถœํ• ๋•Œ ๋ญ์ž…ํ˜€์•ผํ• ๊นŒ์š”?"
- "๋‹ค๋“ค ํ˜น์‹œ ์ด๋ฒˆ์— ์•„๊ธฐ ํŒจ๋”ฉ ๊ตฌ๋งคํ•˜์…จ๋‚˜์š”?"
- "๋‹ค๋“ค ์šฉ๋Ÿ‰์€ 270์งœ๋ฆฌ ํฐ๊ฑฐ ์“ฐ์‹œ์ฃ ?!"

์ˆ˜์œ /์šฐ์œ :
- "๋ง‰์ˆ˜ ๋Œ ์ง€๋‚˜๋ฉด ๋น ๋ฅด๊ฒŒ ์—†์• ์•ผํ•˜๋‚˜์š”?"
- "๋ง‰์ˆ˜ ๊ณ„์† ์ด์–ด๊ฐ€๋„ ๊ดœ์ฐฎ์•„์š”?"

4. ์ฐธ์—ฌ์ž ์œ ํ˜• ๋ถ„์„ ๐Ÿ‘ฅ

์ฐธ์—ฌ์ž

๋ฉ”์‹œ์ง€

ํ‰๊ท  ๊ธธ์ด

์œ ํ˜•

์œค์•„๋ง˜

126๊ฐœ

12.8์ž

์งง์€ ์‘๋‹ตํ˜•

์œ ์ฃผ๋ง˜ (๋‚˜)

111๊ฐœ

42.4์ž

์ƒ์„ธ ์„ค๋ช…ํ˜• โญ

์„ค๋ง˜

79๊ฐœ

13.5์ž

์งง์€ ์‘๋‹ตํ˜•

ํ—ฌ๋ฆฐ๋ง˜

75๊ฐœ

29.8์ž

๊ท ํ˜•ํ˜•

์ฑ„์€๋ง˜

26๊ฐœ

33.1์ž

์ƒ์„ธํ˜•

์ด์†”๋ง˜

12๊ฐœ

38.4์ž

์ƒ์„ธํ˜•


๋ฐœ๊ฒฌ: ์œ ์ฃผ๋ง˜(์šด์˜์ž)์€ ๊ฐ€์žฅ ๊ธด ๋ฉ”์‹œ์ง€ ์ž‘์„ฑ โ†’ ์ƒ์„ธํ•œ ๋‹ต๋ณ€ ์ œ๊ณตํ•˜๋Š” ์—ญํ• 

์ด๋ ‡๊ฒŒ ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ์ด ์™„์„ฑ๋˜๋‹ˆ, ์ด ์™ธ์—๋„ ์ˆ˜๋งŽ์€ ๋ถ„์„์ด ๊ฐ€๋Šฅํ•ด์กŒ์–ด์š”! ๐ŸŽ‰ ๐Ÿ‘

  1. ์š”์ผ/์‹œ๊ฐ„๋Œ€๋ณ„ ํ™œ๋™: ๊ฐ€์žฅ ํ™œ๋ฐœํ•œ ์‹œ์  ๋ถ„์„ ("์ด ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ์˜คํ›„ 1~5์‹œ์— ๊ฐ€์žฅ ํ™œ๋ฐœํ•ด์š”!")

  2. ์ธ๊ธฐ ์ƒํ’ˆ ๋ฆฌ์ŠคํŠธ: ์ƒต๊ฒ€์ƒ‰ ๋ฐ์ดํ„ฐ๋กœ "์ด ๋‹ฌ์˜ ์ธ๊ธฐ ์œก์•„์šฉํ’ˆ" ์ •๋ฆฌ

  3. FAQ ๋ฌธ์„œ: ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ + ๋‹ต๋ณ€ ์ •๋ฆฌํ•ด์„œ ์‹ ๊ทœ ๋ฉค๋ฒ„์—๊ฒŒ ์ œ๊ณต

12์›” 1๋…„ ๋ฐ์ดํ„ฐ๋กœ ํ™•์žฅํ•˜๋ฉด

  1. ์›”๋ณ„ ํŠธ๋ Œ๋“œ: "3์›”์—” ์ด์œ ์‹, 6์›”์—” ๋นจ๋Œ€์ปต, 12์›”์—” ํŒจ๋”ฉ"

  2. ํ•ต์‹ฌ ๋ฉค๋ฒ„ ๋ถ„์„: ๋‹ต๋ณ€์„ ๋งŽ์ด ํ•ด์ฃผ๋Š” "๋„์›€์ด ๋˜๋Š” ๋ฉค๋ฒ„" ์‹๋ณ„

  3. ์‹œ์ฆŒ๋ณ„ FAQ: ๊ณ„์ ˆ/์›”๋ น๋ณ„ ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ ์ž๋™ ๋ถ„๋ฅ˜


ํ•˜์ง€๋งŒ, ์ด๋ฅผ ์œ„ํ•œ ์—ฌ์ •์ด ์‰ฝ์ง„ ์•Š์•˜์Šต๋‹ˆ๋‹ค...๐Ÿฅฒ

๊ธด ํ”„๋กœ์ ํŠธ ์—ฌ์ • ์† ์—ฌ๋Ÿฌ ์‹œํ–‰ ์ฐฉ์˜ค๋“ค์ด ์žˆ์—ˆ์ง€๋งŒ,
๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ์ˆœ๊ฐ„๋“ค์ด ๊ฐ€์žฅ ๊ธฐ์–ต์— ๋‚จ์Šต๋‹ˆ๋‹ค.

๐Ÿ—บ๏ธ ์ฃผ์š” ์ „ํ™˜์  3๊ฐ€์ง€

1๏ธโƒฃ ์ฒซ ๋ฒˆ์งธ ์ „ํ™˜์ : "์™„๋ฒฝํ•œ ์ฝ”๋“œ๋ณด๋‹ค ์ž‘๋™ํ•˜๋Š” ์‹œ์Šคํ…œ"

์ดˆ๊ธฐ ๊ณ„ํš: ๋ฉ”์‹ ์ €๋ด‡R๋กœ ์™„๋ฒฝํ•œ ์‹ค์‹œ๊ฐ„ ์ˆ˜์ง‘ ์‹œ์Šคํ…œ ๊ตฌ์ถ•

๋ฐœ๊ฒฌํ•œ ๋ฌธ์ œ: ์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉ์—์„œ ๋ฐœ์‹ ์ž ์ •๋ณด ์ˆ˜์ง‘ ์ด์Šˆ ์˜์‹ฌ

๋Œ€์•ˆ ๋งˆ๋ จ:

  • ์‹ค์‹œ๊ฐ„ ์ˆ˜์ง‘ (๋ฉ”์‹ ์ €๋ด‡R) + ์ฃผ๊ธฐ์  ๋ฐฐ์น˜ (์นด์นด์˜คํ†ก ๋‚ด๋ณด๋‚ด๊ธฐ)

  • ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์•„ํ‚คํ…์ฒ˜๋กœ ์„ค๊ณ„ ๋ณ€๊ฒฝ

๊ตํ›ˆ:

"์™„๋ฒฝํ•œ ๋‹จ์ผ ์†”๋ฃจ์…˜์ด ์—†์„ ๋•Œ๋Š” ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์„ ์กฐํ•ฉํ•˜์ž!"

์‹ค์ƒํ™œ ๋น„์œ ๋กœ ์„ค๋ช…ํ•˜์ž๋ฉด, ์ด๊ฑด ๋งˆ์น˜ "์ง‘ ์ฒญ์†Œ ์ „๋žต"๊ณผ ๊ฐ™์•„์š”:

  • ์‹ค์‹œ๊ฐ„ ์ˆ˜์ง‘ = ๋กœ๋ด‡์ฒญ์†Œ๊ธฐ๊ฐ€ ๋งค์ผ ๋Œ๋ฉด์„œ ์ฒญ์†Œ (์†Œ์†Œํ•œ ๋จผ์ง€ ์ž๋™ ์ œ๊ฑฐ)

  • ๋ฐฐ์น˜ ์ˆ˜์ง‘ = ์ฃผ๋ง๋งˆ๋‹ค ํ•˜๋Š” ๋Œ€์ฒญ์†Œ (๋†“์นœ ๋ถ€๋ถ„ ์™„๋ฒฝํ•˜๊ฒŒ ์ •๋ฆฌ)

๋‘˜ ์ค‘ ํ•˜๋‚˜๋งŒ์œผ๋กœ๋Š” ์™„๋ฒฝํ•  ์ˆ˜ ์—†์ง€๋งŒ, ํ•จ๊ป˜ ์“ฐ๋ฉด ์ง‘์ด ํ•ญ์ƒ ๊นจ๋—ํ•˜์ฃ !

2๏ธโƒฃ ๋‘ ๋ฒˆ์งธ ์ „ํ™˜์ : "๋กœ์ปฌ์—์„œ ํด๋ผ์šฐ๋“œ๋กœ"

๋ฌธ์ œ ์ƒํ™ฉ:

๋…ธํŠธ๋ถ ์ด๋™ โ†’ Wi-Fi ๋Š๊น€ โ†’ ์„œ๋ฒ„ ์ค‘๋‹จ โ†’ ๋ฐ์ดํ„ฐ ์†์‹ค

ํ•ด๊ฒฐ: DigitalOcean ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„ ๋ฐฐํฌ

  • ๊ณ ์ • IP: 159.89.197.XXX

  • 24/7 ๊ฐ€๋™ ๋ณด์žฅ

  • Systemd๋กœ ์ž๋™ ์žฌ์‹œ์ž‘

๋ฐฐํฌ ์ž๋™ํ™” ์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ:

# ์ˆ˜๋™ ๋ฐฐํฌ: 30๋ถ„ ์†Œ์š”, ์‹ค์ˆ˜ ๊ฐ€๋Šฅ
# โ†’ ์ž๋™ ๋ฐฐํฌ: 2๋ถ„ ์†Œ์š”, ์ผ๊ด€์„ฑ ๋ณด์žฅ

bash deploy.sh  # ํ•œ ์ค„๋กœ ์ „์ฒด ๋ฐฐํฌ ์™„๋ฃŒ

๊ตํ›ˆ:

"ํ”„๋กœ๋•์…˜ ์„œ๋น„์Šค๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ํด๋ผ์šฐ๋“œ์— ๋ฐฐํฌํ•˜๊ธฐ!"

์‹ค์ƒํ™œ ๋น„์œ ๋ฅผ ๋“ค์ž๋ฉด, ์ด๊ฑด "์ง‘์—์„œ ํ•˜๋Š” ๋ถ€์—… vs ์‚ฌ๋ฌด์‹ค ์ฐจ๋ฆฌ๊ธฐ"์˜ ์ฐจ์ด์˜ˆ์š”:

  • ๋กœ์ปฌ ์„œ๋ฒ„ = ์ง‘์—์„œ ๋ถ€์—… (์ „๊ธฐ ๋‚˜๊ฐ€๋ฉด ๋, ์™ธ์ถœํ•˜๋ฉด ์ค‘๋‹จ)

  • ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„ = ์ „์šฉ ์‚ฌ๋ฌด์‹ค (24์‹œ๊ฐ„ ๋ถˆ์ผœ์ ธ ์žˆ๊ณ , ๋‚ด๊ฐ€ ์—†์–ด๋„ ๋Œ์•„๊ฐ)

์ดˆ๊ธฐ ๋น„์šฉ์€ ์ข€ ๋“ค์ง€๋งŒ, ์žฅ๊ธฐ์ ์œผ๋กœ๋Š” ํ›จ์”ฌ ์•ˆ์ •์ ์ด์ฃ .

3๏ธโƒฃ ์„ธ ๋ฒˆ์งธ ์ „ํ™˜์ : "๋‹น์—ฐํ•˜๋‹ค๋Š” ๊ฐ€์ •์„ ์˜์‹ฌํ•˜๋ผ" ๐Ÿ”

์ตœ๋Œ€ ๋‚œ๊ด€: ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฐฉ์—์„œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ ๋ฉ”์‹œ์ง€๊ฐ€ ์ˆ˜์ง‘๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ

์‚ฝ์งˆ์˜ ์—ฌ์ •:

  1. 1์ฐจ ์‹œ๋„: API ๋ฌธ์ œ๋ผ๊ณ  ๊ฐ€์ •

    • response() ํ•จ์ˆ˜ โ†’ API2 ๋ฆฌ์Šค๋„ˆ๋กœ ์ „ํ™˜

    • ์ฝ”๋“œ ์•ˆ์ •์„ฑ์€ ํ–ฅ์ƒ๋์ง€๋งŒ... ๋ฌธ์ œ ์—ฌ์ „

  2. 2์ฐจ ์‹œ๋„: ํ•„๋“œ ์ ‘๊ทผ ๋ฌธ์ œ๋ผ๊ณ  ๊ฐ€์ •

    • msg.author.name ์ง์ ‘ ์ ‘๊ทผ ์‹œ๋„

    • null ์ฒดํฌ, ์•ˆ์ „ํ•œ ์ ‘๊ทผ ํŒจํ„ด ์ ์šฉ

    • ์ฝ”๋“œ๋Š” ๋” ๊ฒฌ๊ณ ํ•ด์กŒ์ง€๋งŒ... ๋ฌธ์ œ ์—ฌ์ „

  3. 3์ฐจ ์‹œ๋„: ๋ฉ”์‹ ์ €๋ด‡R์˜ ํ•œ๊ณ„๋ผ๊ณ  ๊ฐ€์ •

    • ๋Œ€์•ˆ ์†”๋ฃจ์…˜ ์ค€๋น„ (์นด์นด์˜คํ†ก ๋‚ด๋ณด๋‚ด๊ธฐ ํŒŒ์‹ฑ)

    • ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„

  4. ์ง„์งœ ์›์ธ ๋ฐœ๊ฒฌ: ๋กœ๊ทธ๋ฅผ ๊ผผ๊ผผํžˆ ์ฝ๋‹ค๊ฐ€...

"[DEBUG] skip: not tracked room"  // ์ด๊ฒŒ ๊ณ„์† ๋œจ๋„ค? ์‹ฌ์ง€์–ด...๋‹ค๋ฅธ ์—„๋งˆ๋“ค์ด ํ†ก์„ ๋ณด๋‚ด๋Š” ์‹œ์ ๋งˆ๋‹ค ์ด๊ฒŒ ๋œจ๋„ค?!!๐Ÿ˜ณ

๊ฒฐ์ •์  ํ…Œ์ŠคํŠธ: !๋ฐฉ์ด๋ฆ„ ๋ช…๋ น์–ด๋กœ ํ™•์ธ

  • ๋‚ด๊ฐ€ ๋ณด๋‚ธ ๋ฉ”์‹œ์ง€: "์œ ์ฃผ๋ง˜/0808/์™„๋ฃŒ๊ธฐ/์šฉ์ธ" ์ถœ๋ ฅ

  • ๋‹ค๋ฅธ ์—„๋งˆ๊ฐ€ ๋ณด๋‚ธ ๋ฉ”์‹œ์ง€: "์ˆ˜์—ฐ๋ง˜/0519/ํ›„๊ธฐ/๋‚จ์–‘์ฃผ" ์ถœ๋ ฅ

  • ๊นจ๋‹ฌ์Œ: ์‹ค์ œ ๋ฐฉ ์ด๋ฆ„์ด ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ช…์ด ์•„๋‹Œ โ€˜๋ฐœ์‹ ์ž ํ”„๋กœํ•„๋ช…โ€™์ด์—ˆ๋‹ค! (๋‘๋‘ฅ)

    ํ•œ๊ตญ์–ด ๋ฌธ์ž ๋ฉ”์‹œ์ง€ ์Šคํฌ๋ฆฐ์ƒท

์‹ค์ œ ์›์ธ:

// โŒ ๋ฌธ์ œ์˜ ์ฝ”๋“œ
var TARGET_ROOMS = ["์œ ์ฃผ๋ง˜/0808/์™„๋ฃŒ๊ธฐ/์šฉ์ธ"];

// ํ•ต์‹ฌ ๋ฐœ๊ฒฌ: msg.room์€ "๋ฐฉ ์ด๋ฆ„"์ด ์•„๋‹ˆ๋ผ "๋ฐœ์‹ ์ž ํ”„๋กœํ•„๋ช…"!
// โ†’ ๋ณธ์ธ ๋ฉ”์‹œ์ง€๋งŒ ํ•„ํ„ฐ ํ†ต๊ณผ, ๋‹ค๋ฅธ ์‚ฌ๋žŒ ๋ฉ”์‹œ์ง€๋Š” ๋ชจ๋‘ ์ฐจ๋‹จ 

๋ฐฐ๊ฒฝ: ์นด์นด์˜คํ†ก ์—…๋ฐ์ดํŠธ๋กœ ์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉ์˜ room ๊ฐ’์ด ์‹ค์ œ ๋ฐฉ ์ด๋ฆ„('์ปค๋ฎค๋‹ˆํ‹ฐ ์ด์œ ์ž‡๋‹ค')์ด ์•„๋‹Œ ๋ฐœ์‹ ์ž ํ”„๋กœํ•„๋ช…์œผ๋กœ ๋ฐ˜ํ™˜๋˜๋Š” ํ˜„์ƒ ๋ฐœ์ƒ

ํ•ด๊ฒฐ:

// โœ… 1์ค„ ์ˆ˜์ •์œผ๋กœ ํ•ด๊ฒฐ
var TARGET_ROOMS = [];  // ๋นˆ ๋ฐฐ์—ด = ๋ชจ๋“  ๋ฐฉ ๋ฉ”์‹œ์ง€ ์ˆ˜์ง‘

๊ฒ€์ฆ:

  • ์ฆ‰์‹œ ๋‹ค๋ฅธ ์ฐธ์—ฌ์ž ๋ฉ”์‹œ์ง€ ์ˆ˜์ง‘ ์‹œ์ž‘

  • DB ํ™•์ธ: ์œ ์ฃผ๋ง˜, ์ˆ˜์—ฐ๋ง˜, ํ—ฌ๋ฆฐ๋ง˜ ๊ฐ๊ฐ ๊ตฌ๋ถ„๋˜์–ด ์ €์žฅ

๊ตํ›ˆ:

"๋ณต์žกํ•œ ๊ธฐ์ˆ ์  ๋ฌธ์ œ๋กœ ๋ณด์ด๋Š” ๊ฒƒ์ด ์‚ฌ์‹ค์€ 1์ค„์งœ๋ฆฌ ์„ค์ • ๋ฌธ์ œ์ผ ์ˆ˜ ์žˆ๋‹ค"

์‹ค์ƒํ™œ ๋น„์œ ๋ฅผ ๋“ค๋ฉด, ์ด๊ฑด "์ž๋™์ฐจ๊ฐ€ ์‹œ๋™ ์•ˆ ๊ฑธ๋ฆด ๋•Œ"์™€ ๋น„์Šทํ•ด์š”:

  • ๋ณต์žกํ•œ ํ•ด๊ฒฐ์ฑ…: ์—”์ง„ ๋œฏ์–ด๋ณด๊ธฐ, ์ •๋น„์†Œ ๊ฐ€๊ธฐ, ๋ถ€ํ’ˆ ๊ต์ฒด

  • ์‹ค์ œ ์›์ธ: ์ฃผ์ฐจ ๋ธŒ๋ ˆ์ดํฌ๊ฐ€ ์˜ฌ๋ ค์ ธ ์žˆ์—ˆ์Œ ๐Ÿ˜…

ํ•ญ์ƒ ๊ฐ„๋‹จํ•œ ๊ฒƒ๋ถ€ํ„ฐ ํ™•์ธํ•ด์•ผ ํ•˜๋Š” ์ด์œ ์ฃ !

๐ŸŽ“ ํ•ต์‹ฌ ๊ตํ›ˆ 5๊ฐ€์ง€

1. Documentation-Driven Review (DDR)

๋ฐฉ๋ฒ•: ์ฝ”๋“œ ๋ฐ ๊ฐœ๋ฐœ ๊ณผ์ •์„ ํ•ญ์ƒ ๋ฌธ์„œ๋กœ ์ •๋ฆฌํ•˜๊ธฐ โ†’ ๋…ผ๋ฆฌ์  ์˜ค๋ฅ˜ ๋ฐœ๊ฒฌ ๊ฐ€๋Šฅ์„ฑ ํ–ฅ์ƒ!

<ChatCollector ํ”„๋กœ์ ํŠธ ๋ฌธ์„œ ๊ตฌ์กฐ>
ChatCollector/
โ”œโ”€โ”€ chat_collector.db              # SQLite DB (v2.1 ์Šคํ‚ค๋งˆ)
โ”œโ”€โ”€ chat_collector_schema_v2.1.sql # DB ์Šคํ‚ค๋งˆ ์ •์˜
โ”œโ”€โ”€ ChatCollector.js               # ๋ฉ”์‹ ์ €๋ด‡ ์ˆ˜์ง‘ ์Šคํฌ๋ฆฝํŠธ (์‹ ๋ขฐ์„ฑ ๋ณด๊ฐ•)
โ”œโ”€โ”€ fastapi/
โ”‚   โ”œโ”€โ”€ main.py                    # FastAPI ์ˆ˜์ง‘ ์„œ๋ฒ„
โ”‚   โ””โ”€โ”€ requirements.txt           # Python ์˜์กด์„ฑ
โ””โ”€โ”€ README.md                      # ์‹คํ–‰ ๊ฐ€์ด๋“œ
โ””โ”€โ”€ dev-history.md                 # ๊ฐœ๋ฐœ ํžˆ์Šคํ† ๋ฆฌ ์ •๋ฆฌ
โ””โ”€โ”€ lesson_learned.md              # ๋ฐฐ์šด์  ๋ฐ ์ธ์‚ฌ์ดํŠธ ์ •๋ฆฌ

์‹ค์ œ ์‚ฌ๋ก€

lesson_learned.md ํŒŒ์ผ์„ ๊ผผ๊ผผํžˆ ์‚ดํŽด๋ณด๋‹ค๊ฐ€, ๋ญ”๊ฐ€ ์ด์ƒํ•œ ์ ์„ ๋ฐœ๊ฒฌ...!

ํ•œ๊ตญ ์ปดํ“จํ„ฐ ํ™”๋ฉด์˜ ์Šคํฌ๋ฆฐ์ƒท
๋ฌธ์„œ ๋‚ด์šฉ: "ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ์ž๋™์œผ๋กœ ๋ฉ”์‹œ์ง€ ์นด์šดํŠธ๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋Š”๋ฐ..."
๊นจ๋‹ฌ์Œ: "์–ด? ๊ทธ๋Ÿผ ๋‚ด ์ฝ”๋“œ์—์„œ ์ˆ˜๋™์œผ๋กœ +1 ํ•˜๋Š” ๊ฑด ๋ญ์ง€?"
ํ™•์ธ: Room UPSERT์— message_count += 1 ๋ฐœ๊ฒฌ
๊ฒฐ๊ณผ: ํŠธ๋ฆฌ๊ฑฐ์™€ ์ค‘๋ณต! ์ฆ‰์‹œ ์ˆ˜์ •

๋‚ด๊ฐ€ ๋‹ค๊ทธ์น˜์ž ํด๋กœ๋“œ์ฝ”๋“œ๋„ ์ž์‹ ์˜ ์‹ค์ˆ˜๋ฅผ ์ธ์ •...! ๐Ÿ˜ 

ํ•œ๊ตญ์–ด๋กœ ๋œ ๋ฌธ์ž ๋ฉ”์‹œ์ง€์˜ ์Šคํฌ๋ฆฐ์ƒท

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

๋ฌธ์„œ ์ค‘์‹ฌ ๊ฐœ๋ฐœ์˜ ์Šคํฌ๋ฆฐ์ƒท

์ธ์‚ฌ์ดํŠธ

"AI๊ฐ€ ์–ด๋ จํžˆ ์•Œ์•„์„œ ์ž˜ ํ•ด์คฌ๊ฒ ์ง€โ€ฆ๋ผ๋Š” ์•ˆ์ผํ•œ ํƒœ๋„๋Š” ์œ„ํ—˜ํ•˜๋‹ค. ์˜๋„์ ์œผ๋กœ ์˜์‹ฌํ•˜์ž!"

2. ์ฒด๊ณ„์  ๋ฌธ์ œ ํ•ด๊ฒฐ ํ”„๋กœ์„ธ์Šค

ํ”„๋กœ์„ธ์Šค:

  1. ์ฆ์ƒ ๋ช…ํ™•ํžˆ ํŒŒ์•… ("์•ˆ ๋ผ์š”" โ†’ "์–ด๋–ค ์ƒํ™ฉ์—์„œ ์–ด๋–ป๊ฒŒ?")

  2. ๊ฐ€์„ค ์ˆ˜๋ฆฝ (๊ฐ€๋Šฅํ•œ ์›์ธ 3๊ฐ€์ง€ ์ด์ƒ)

  3. ์ฒด๊ณ„์  ํ…Œ์ŠคํŠธ (ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ ๋ณ€์ˆ˜ ๋ณ€๊ฒฝ)

  4. ๋กœ๊ทธ ํ™•์ธ (์ถ”์ธกํ•˜์ง€ ๋ง๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋ผ)

  5. ํ•ด๊ฒฐ ํ›„ ๋ฌธ์„œํ™” (๊ฐ™์€ ๋ฌธ์ œ ์žฌ๋ฐœ ๋ฐฉ์ง€)

์ฒดํฌ๋ฆฌ์ŠคํŠธ:

๋ฌธ์ œ ๋ฐœ์ƒ ์‹œ:
[ ] ๋กœ๊ทธ์—์„œ ์ •ํ™•ํ•œ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ํ™•์ธ
[ ] ์„ค์ • ํŒŒ์ผ/ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๊ฒ€ํ† 
[ ] ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์›์ธ๋ถ€ํ„ฐ ํ…Œ์ŠคํŠธ
[ ] ํ”Œ๋žซํผ์˜ ์‹ค์ œ ๋™์ž‘ ๋ฐฉ์‹ ํ™•์ธ
[ ] "๋‹น์—ฐํ•˜๋‹ค"๊ณ  ๊ฐ€์ •ํ•œ ๋ถ€๋ถ„ ์žฌ๊ฒ€์ฆ
[ ] ๋ณต์žกํ•œ ํ•ด๊ฒฐ์ฑ…์€ ๋งˆ์ง€๋ง‰ ์ˆ˜๋‹จ

3. ์ž๋™ํ™”์˜ ๊ฐ€์น˜

์›์น™: ๋‘ ๋ฒˆ ์ด์ƒ ํ•˜๋Š” ์ž‘์—…์€ ๋ฌด์กฐ๊ฑด ์Šคํฌ๋ฆฝํŠธ๋กœ ์ž๋™ํ™”

์ ์šฉ ์‚ฌ๋ก€:

  • ๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ: 30๋ถ„ โ†’ 2๋ถ„ (93% ์‹œ๊ฐ„ ์ ˆ์•ฝ)

  • ์ž๋™ ๋ฐฑ์—…: ๋งค์ผ 23:30 (์žŠ์–ด๋ฒ„๋ฆด ์ผ ์—†์Œ)

  • ๋ฉ”์‹œ์ง€ ์กฐํšŒ: ํ†ต๊ณ„ ์ž๋™ ๊ณ„์‚ฐ

ํšจ๊ณผ:

  1. ์‹œ๊ฐ„ ์ ˆ์•ฝ

  2. ํœด๋จผ ์—๋Ÿฌ ์ œ๊ฑฐ

  3. ๋ฌธ์„œํ™” ์ž๋™ ์™„์„ฑ (์Šคํฌ๋ฆฝํŠธ ์ž์ฒด๊ฐ€ ๋ฌธ์„œ)

  4. ์žฌํ˜„ ๊ฐ€๋Šฅ์„ฑ ๋ณด์žฅ

4. Happy Accident์˜ ๊ฐ€์น˜

API2 ์ „ํ™˜์€ ๋ถˆํ•„์š”ํ–ˆ์ง€๋งŒ:

  • null ์ฒดํฌ ๊ฐ•ํ™”

  • ์•ˆ์ „ํ•œ ํ•„๋“œ ์ ‘๊ทผ ํŒจํ„ด ํ™•๋ฆฝ

  • ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๊ฐœ์„ 

๊ตํ›ˆ:

"์‚ฝ์งˆ๋„ ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ฝ”๋“œ ํ’ˆ์งˆ ํ–ฅ์ƒ์— ๊ธฐ์—ฌํ•œ๋‹ค"

5. 3-2-1 ๋ฐฑ์—… ์ „๋žต

  • 3๊ฐœ์˜ ๋ณต์‚ฌ๋ณธ: ์›๋ณธ + ๋กœ์ปฌ ๋ฐฑ์—… + ์„œ๋ฒ„ ๋ฐฑ์—…

  • 2๊ฐœ์˜ ๋‹ค๋ฅธ ๋งค์ฒด: SSD(๋กœ์ปฌ) + ํด๋ผ์šฐ๋“œ

  • 1๊ฐœ๋Š” ์˜คํ”„์‚ฌ์ดํŠธ: DigitalOcean ์„œ๋ฒ„

์ธ์‚ฌ์ดํŠธ:

"๋ฐ์ดํ„ฐ๋Š” ์–ธ์ œ๋“  ์†์‹ค๋  ์ˆ˜ ์žˆ๋‹ค. ๋ฐฑ์—… ์—†๋Š” ๋ฐ์ดํ„ฐ๋Š” ์—†๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค."

๐Ÿ”ง ๊ธฐ์ˆ ์  ๋””ํ…Œ์ผ

๋ฉ”์‹ ์ €๋ด‡R ํ•ต์‹ฌ ํŒจํ„ด

// โœ… ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•
function response(room, msg, sender, isGroupChat, replier, imageDB, packageName) {
    // ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ ๋กœ์ง
}

// ์ฃผ์˜์‚ฌํ•ญ:
// - Rhino JavaScript ์—”์ง„ (ES5๋งŒ ์ง€์›)
// - var ํ‚ค์›Œ๋“œ ์‚ฌ์šฉ ํ•„์ˆ˜ (const, let ๋ถˆ๊ฐ€)
// - msg.room์€ ๋ฐฉ ์ด๋ฆ„์ด ์•„๋‹ˆ๋ผ ๋ฐœ์‹ ์ž ํ”„๋กœํ•„๋ช…

์ค‘๋ณต ๋ฐฉ์ง€ ๋ฉ”์ปค๋‹ˆ์ฆ˜

-- DB ๋ ˆ๋ฒจ์—์„œ ๊ฐ•์ œ
CREATE UNIQUE INDEX idx_messages_unique
ON messages(room_id, participant_id, sent_at, content);

ํŠธ๋ฆฌ๊ฑฐ๋กœ ํ†ต๊ณ„ ์ž๋™ํ™”

-- ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์นด์šดํŠธ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์Œ
-- ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ์ž๋™์œผ๋กœ message_count ๊ด€๋ฆฌ
CREATE TRIGGER increment_message_count
AFTER INSERT ON messages
BEGIN
    UPDATE rooms SET message_count = message_count + 1
    WHERE room_id = NEW.room_id;
END;

๐Ÿ“Š ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚            ์นด์นด์˜คํ†ก ๋ฉ”์‹œ์ง€                       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                 โ”‚
      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
      โ–ผ                     โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ ๋ฉ”์‹ ์ €๋ด‡R   โ”‚      โ”‚ ๋Œ€ํ™” ๋‚ด๋ณด๋‚ด๊ธฐ    โ”‚
โ”‚ (์‹ค์‹œ๊ฐ„)    โ”‚      โ”‚ (์ฃผ๊ธฐ์  ๋ฐฑ์—…)    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
       โ”‚                      โ”‚
       โ”‚ HTTP POST            โ”‚ ํŒŒ์ผ ์ „์†ก
       โ–ผ                      โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  DigitalOcean (159.89.197.142:8200)     โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚  โ”‚ FastAPI + SQLite                   โ”‚ โ”‚
โ”‚  โ”‚ - ์ค‘๋ณต ๋ฐฉ์ง€ (UNIQUE INDEX)         โ”‚ โ”‚
โ”‚  โ”‚ - ํŠธ๋ฆฌ๊ฑฐ ๊ธฐ๋ฐ˜ ํ†ต๊ณ„                 โ”‚ โ”‚
โ”‚  โ”‚ - 24/7 ๊ฐ€๋™                        โ”‚ โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
       โ”‚                      โ–ฒ
       โ”‚                      โ”‚
       โ–ผ                      โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ ์ž๋™ ๋ฐฑ์—…   โ”‚      โ”‚ ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง โ”‚
โ”‚ (๋งค์ผ)      โ”‚      โ”‚ (SSH)           โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜


๐ŸŽฏ Next Steps

๋‹จ๊ธฐ (1์ฃผ์ผ ๋‚ด)

  • ๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ (1๋…„ ๋ฐ˜์น˜)

  • ์„œ๋ฒ„ ์ž๋™ ๋ฐฑ์—… ์‹œ์Šคํ…œ ๊ตฌ์ถ•

  • ์‹ค์‹œ๊ฐ„ ์ˆ˜์ง‘ ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ

์ค‘๊ธฐ (1๊ฐœ์›” ๋‚ด)

  • ๋ฉ”์‹œ์ง€ ๋ถ„์„ ๊ธฐ๋Šฅ (์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ, ํŠธ๋ Œ๋“œ)

  • ์ฐธ์—ฌ์ž ์˜จ๋ณด๋”ฉ ์ž๋™ํ™”

  • ์ด๋ฉ”์ผ ์ž๋™ ๋ฐœ์†ก ์‹œ์Šคํ…œ

์žฅ๊ธฐ

  • AI ๊ธฐ๋ฐ˜ ๋ฉ”์‹œ์ง€ ๋ถ„๋ฅ˜ ๋ฐ ์š”์•ฝ

  • ๋Œ€์‹œ๋ณด๋“œ ๊ตฌ์ถ• (Streamlit/Gradio)

๐Ÿ’ก ํ•ต์‹ฌ ์ธ์‚ฌ์ดํŠธ

์™„๋ฒฝ์ฃผ์˜๋ฅผ ๋ฒ„๋ฆฌ๊ณ  ์‹คํ–‰ํ•˜์ž

์™„๋ฒฝํ•œ ์‹œ์Šคํ…œ์€ ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ง€์†์ ์œผ๋กœ ๊ฐœ์„ ํ•˜๋Š” ์‹œ์Šคํ…œ์€ ์™„๋ฒฝ์— ๊ฐ€๊นŒ์›Œ์ ธ์š”.

๊ฐœ๋ฐœ ๊ณผ์ •์„ ๊พธ์ค€ํžˆ ๋ฌธ์„œํ™”ํ•˜์ž

๋ฌธ์„œ๋Š” ์ž์‚ฐ์ด์ž ๋ฏธ๋ž˜์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ ์—ด์‡ ์ž…๋‹ˆ๋‹ค. ๋ฏธ๋ž˜์˜ ์ž์‹ ์„ ์œ„ํ•ด ๋ฌธ์„œ๋ฅผ ๋‚จ๊ธฐ์„ธ์š”.

๊ฐ€์ •์„ ์˜๋„์ ์œผ๋กœ ์˜์‹ฌํ•˜์ž

๋ณต์žกํ•œ ๋ฌธ์ œ๋Š” ๋Œ€๋ถ€๋ถ„ ๊ฐ„๋‹จํ•œ ์›์ธ์—์„œ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

Happy Accident๋„ ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค

์‚ฝ์งˆ๋„ ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ฝ”๋“œ ํ’ˆ์งˆ ํ–ฅ์ƒ์— ๊ธฐ์—ฌํ•ฉ๋‹ˆ๋‹ค. ๋Œ์•„๊ฐ„ ๊ธธ๋„ ์—ฌ์ •์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค.

๐Ÿ“š ์ฐธ๊ณ  ์ž๋ฃŒ


  • ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„: 2025-11-27 ~ 2025-11-30 (4์ผ)

  • ํ”„๋กœ์ ํŠธ ์ƒํƒœ: ๐ŸŸข ์šด์˜ ์ค‘ (์‹ค์‹œ๊ฐ„ ์ˆ˜์ง‘ ์ •์ƒ ์ž‘๋™)

1
2๊ฐœ์˜ ๋‹ต๊ธ€

๋‰ด์Šค๋ ˆํ„ฐ ๋ฌด๋ฃŒ ๊ตฌ๋…

๐Ÿ‘‰ ์ด ๊ฒŒ์‹œ๊ธ€๋„ ์ฝ์–ด๋ณด์„ธ์š”