Skip to main content

Posts

AI ํ’ˆ์งˆ ๋ณด์ •๊ณผ ๋ฐ์ดํ„ฐ ์žฌ์ƒ์‚ฐ ํŒŒ์ดํ”„๋ผ์ธ

AI ํ’ˆ์งˆ ๋ณด์ •๊ณผ ๋ฐ์ดํ„ฐ ์žฌ์ƒ์‚ฐ ํŒŒ์ดํ”„๋ผ์ธ 1. Translator-Agent 2.0์˜ ์„ค๊ณ„ ๋ชฉํ‘œ 9์›” ์ดˆ๋ถ€ํ„ฐ ์ˆ˜์ง‘๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ํญ์ฆํ•˜๋ฉด์„œ AI ๋ฒˆ์—ญ ํ’ˆ์งˆ์ด ์ผ๊ด€๋˜์ง€ ์•Š๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ๋ณด๊ณ ๋˜์—ˆ๋‹ค. ํ‰๊ท  BLEU ์ ์ˆ˜๋Š” 0.82 ์ˆ˜์ค€์ด์—ˆ์ง€๋งŒ ์–ธ์–ด ๊ฐ„ ํŽธ์ฐจ๊ฐ€ ์ปธ๊ณ , ํŠน์ • ๊ธฐ์ˆ  ๋ฌธ์„œ์—์„œ ์šฉ์–ด๊ฐ€ ๋ฐ˜๋ณต์ ์œผ๋กœ ์˜ค์—ญ๋˜์—ˆ๋‹ค. Translator-Agent 2.0์˜ ๋ชฉ์ ์€ AI๊ฐ€ ์Šค์Šค๋กœ ํ’ˆ์งˆ์„ ์˜ˆ์ธกํ•˜๊ณ , ๋‚ฎ์€ ํ’ˆ์งˆ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ์ƒ์‚ฐํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. BLEU, TER, Context Vector๋ฅผ ์ด์šฉํ•œ ํ’ˆ์งˆ ์ ์ˆ˜ํ™” ์ž๋™ ์žฌ๋ฒˆ์—ญ ๋ฃจํ”„ (Re-Translation Loop) Quality-Driven Event Routing (ํ’ˆ์งˆ ์ ์ˆ˜ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ…) ์ž๋™ ์Šน์ธ ๋ฐ ๊ฒ€์ฆ ๋ฆฌํฌํŠธ ์ƒ์„ฑ ์ด ์‹œ์Šคํ…œ์—์„œ "ํ’ˆ์งˆ ๋ณด์ •"์ด๋ผ ํ•จ์€ AI๊ฐ€ ์ƒ์„ฑํ•œ ๊ฒฐ๊ณผ๋ฌผ์„ AI๊ฐ€ ๋‹ค์‹œ ๊ฒ€์ฆํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ๋งํ•œ๋‹ค. ์‚ฌ๋žŒ์ด ๋ชจ๋“  ๋ฒˆ์—ญ ๊ฒฐ๊ณผ๋ฅผ ํ•˜๋‚˜์”ฉ ๊ฒ€ํ† ํ•˜๋Š” ๊ฒƒ์€ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ, AI๊ฐ€ 1์ฐจ ์ƒ์„ฑ ํ›„ ๋ณ„๋„์˜ ๊ฒ€์ฆ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ฑฐ์ณ ๊ธฐ์ค€์„ ์ถฉ์กฑํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ์žฌ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์„ ์ฑ„ํƒํ–ˆ๋‹ค. 2. ํ’ˆ์งˆ ํ‰๊ฐ€ ๋ฉ”์ปค๋‹ˆ์ฆ˜ Translator-Agent 2.0์€ ๋ฒˆ์—ญ์ด ์™„๋ฃŒ๋˜๋ฉด ์ฆ‰์‹œ BLEU์™€ TER์„ ๊ณ„์‚ฐํ•˜๊ณ , ํ’ˆ์งˆ ์ ์ˆ˜๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ด ์ ์ˆ˜๋Š” 0~1 ์‚ฌ์ด ์‹ค์ˆ˜๊ฐ’์œผ๋กœ ํ‘œํ˜„๋˜๋ฉฐ, 0.75 ๋ฏธ๋งŒ์ด๋ฉด ์žฌ๋ฒˆ์—ญ ํ์— ๋“ฑ๋ก๋œ๋‹ค. BLEU๋Š” ์˜๋ฏธ ์œ ์‚ฌ๋„, TER์€ ๋ฌธ์žฅ ์ˆ˜์ • ๋น„์œจ์„ ์ธก์ •ํ•œ๋‹ค. ํ’ˆ์งˆ ์ ์ˆ˜๋Š” Redis์˜ Sorted Set์— ์ €์žฅ๋˜์–ด ์šฐ์„ ์ˆœ์œ„ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. score = (bleu * 0.7 + (1 - ter) * 0.3) redis.zadd("i18n.quality", {key: score}) if score ...

์™ธ๋ถ€ ๋ฐ์ดํ„ฐ ํฌ๋กค๋ง๊ณผ ๋‹ค๊ตญ์–ด ์ฒ˜๋ฆฌ ์ž๋™ํ™”

์™ธ๋ถ€ ๋ฐ์ดํ„ฐ ํฌ๋กค๋ง๊ณผ ๋‹ค๊ตญ์–ด ์ฒ˜๋ฆฌ ์ž๋™ํ™” 1. ๋ฐฐ๊ฒฝ — ์™ธ๋ถ€ ์—ฐ๋™ ๋Œ€์‹  ํฌ๋กค๋ง ์„ ํƒ์˜ ์ด์œ  REINDEERS ํ”Œ๋žซํผ์€ ๊ฐ๊ตญ์˜ ํ‘œ์ค€, ์ธ์ฆ, ๊ด€์„ธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒํ’ˆ ์ •๋ณด๋ฅผ ๊ตฌ์กฐํ™”ํ•ด์•ผ ํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐ ๊ธฐ๊ด€์˜ ๊ณต๊ฐœ API๋Š” ์กด์žฌํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ ‘๊ทผ์ด ์ œํ•œ์ ์ด์—ˆ๋‹ค. ํƒœ๊ตญ TISI, ํ•œ๊ตญ UNIPASS, ์ค‘๊ตญ GBํ‘œ์ค€, ๋ง๋ ˆ์ด์‹œ์•„ SIRIM ๋“ฑ์€ ๋ชจ๋‘ ์›น ๊ธฐ๋ฐ˜ HTML ๊ตฌ์กฐ๋งŒ ์ œ๊ณตํ–ˆ๋‹ค. ์ด์— ๋”ฐ๋ผ API ์—ฐ๋™ ๋Œ€์‹  ํฌ๋กค๋ง ๊ตฌ์กฐ๋ฅผ ๋„์ž…ํ–ˆ๋‹ค. ํฌ๋กค๋ง์€ ์ธ์ฆ/ํ‘œ์ค€ ๋ฐ์ดํ„ฐ๋ฟ ์•„๋‹ˆ๋ผ ํ™˜์œจ๊ณผ ํ•ด์šด ์Šค์ผ€์ค„์—๋„ ์ ์šฉ๋˜์—ˆ๋‹ค. ํ™˜์œจ์€ 4๊ฐœ ์€ํ–‰(๋ฐฉ์ฝ•์€ํ–‰, ํ•˜๋‚˜์€ํ–‰, ์ค‘๊ตญ์€ํ–‰, ๋ฉ”์ด๋ฑ…ํฌ)์—์„œ ๋งค์ผ ์ˆ˜์ง‘๋˜๋ฉฐ, ํ•ด์šด ์Šค์ผ€์ค„์€ HMM, KMTC, SM Line ์„ธ ๊ฐœ ์„ ์‚ฌ์—์„œ ํฌ๋กค๋ง๋œ๋‹ค. ์ด ๋ชจ๋“  ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ๊ฐ€ ํ”Œ๋žซํผ์˜ ๊ฐ€๊ฒฉ ๊ณ„์‚ฐ, ๋ฌผ๋ฅ˜ ์ผ์ •, ์ธ์ฆ ๊ฒ€์ฆ์˜ ๊ธฐ์ดˆ๊ฐ€ ๋œ๋‹ค. 2. ๊ตญ๊ฐ€๋ณ„ ์Šคํฌ๋ž˜ํผ ์•„ํ‚คํ…์ฒ˜ ํฌ๋กค๋Ÿฌ๋Š” ๊ตญ๊ฐ€๋ณ„๋กœ ๋…๋ฆฝ์ ์ธ ์„ค์ •์„ ๊ฐ€์ง„๋‹ค. ๊ฐ ํฌ๋กค๋Ÿฌ๋Š” Cloud Function์—์„œ ์ฃผ๊ธฐ์ ์œผ๋กœ ํ˜ธ์ถœ๋˜๋ฉฐ, ์ˆ˜์ง‘ ์ฃผ๊ธฐ๋Š” ๋ฐ์ดํ„ฐ์˜ ์„ฑ๊ฒฉ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค. ํ™˜์œจ ๋ฐ์ดํ„ฐ๋Š” ๋งค์ผ 1ํšŒ, ํ•ด์šด ์Šค์ผ€์ค„์€ ์›” 1ํšŒ, ์ธ์ฆ ๋ฐ์ดํ„ฐ๋Š” ์ฃผ 1ํšŒ ์ˆ˜์ง‘๋œ๋‹ค. ์Šคํฌ๋ž˜ํผ๋Š” ๊ณ„์ธต ๊ตฌ์กฐ๋กœ ์„ค๊ณ„๋˜์–ด ์žˆ๋‹ค. ์ตœ์ƒ์œ„์— ๊ณตํ†ต ์ธํ„ฐํŽ˜์ด์Šค(Scraper Layer)๊ฐ€ ์žˆ๊ณ , ๊ทธ ์•„๋ž˜์— ๊ตญ๊ฐ€๋ณ„ ๊ตฌํ˜„์ด ์กด์žฌํ•œ๋‹ค. ๊ณตํ†ต ์ธํ„ฐํŽ˜์ด์Šค๋Š” HTTP ์š”์ฒญ, ์‘๋‹ต ํŒŒ์‹ฑ, ๋ฐ์ดํ„ฐ ์ •๊ทœํ™”, ์—๋Ÿฌ ํ•ธ๋“ค๋ง์˜ ํ‘œ์ค€์„ ์ •์˜ํ•œ๋‹ค. ๊ตญ๊ฐ€๋ณ„ ๊ตฌํ˜„์€ ํ•ด๋‹น ์‚ฌ์ดํŠธ์˜ HTML ๊ตฌ์กฐ์™€ ์ธ์ฆ ๋ฐฉ์‹์— ๋งž์ถฐ ๊ตฌ์ฒด์ ์ธ ํŒŒ์‹ฑ ๋กœ์ง์„ ๋‹ด๋‹นํ•œ๋‹ค. # Scraper architecture example class BaseScraper: def fetch(self, url): ... def parse(self, html):...

MQ + Redis ๊ธฐ๋ฐ˜ ๊ธ€๋กœ๋ฒŒ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ๊ตฌ์กฐ

MQ + Redis ๊ธฐ๋ฐ˜ ๊ธ€๋กœ๋ฒŒ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ๊ตฌ์กฐ 1. ๋ฌธ์ œ ์ธ์‹ — ๋‹ค๊ตญ๊ฐ€ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์˜ ๋ณต์žก์„ฑ 8์›” ์ดˆ, ํ™์ฝฉ(HK), ์„œ์šธ(KR), ์ฟ ์•Œ๋ผ๋ฃธํ‘ธ๋ฅด(MY), ๋ฐฉ์ฝ•(TH)์˜ ๋„ค ๊ฐœ ๋ฆฌ์ „์ด ๋™์‹œ์— ์„œ๋น„์Šค๋˜๋ฉด์„œ ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ๋Š” ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์ด์—ˆ๋‹ค. ๊ฐ ๋ฆฌ์ „์˜ Redis ์บ์‹œ์™€ MySQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ํƒ€์ž„์Šคํƒฌํ”„๋กœ ์—…๋ฐ์ดํŠธ๋˜์–ด, ๋™์ผ ์ƒํ’ˆ์˜ ์žฌ๊ณ  ์ˆ˜๋Ÿ‰, ์„ธ์…˜, ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ถˆ์ผ์น˜ํ•˜๋Š” ํ˜„์ƒ์ด ์ž์ฃผ ๋ฐœ์ƒํ–ˆ๋‹ค. ๊ธฐ์กด ๋ณต์ œ(Replication) ๋ฐฉ์‹์€ ์ง€์—ฐ์ด 300~800ms ์ˆ˜์ค€์œผ๋กœ ๋ถˆ์•ˆ์ •ํ–ˆ๊ณ , Redis async replication์€ ํŠธ๋ž˜ํ”ฝ ํ”ผํฌ ์‹œ ๋ณต์ œ ์†์‹ค์ด ๋ฐœ์ƒํ–ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ๋‹จ์ˆœ ๋ฐ์ดํ„ฐ ๋ณต์ œ๊ฐ€ ์•„๋‹ˆ๋ผ ์ด๋ฒคํŠธ ๋ ˆ๋ฒจ์—์„œ์˜ ๋ณด์ •(Event-level Consistency) ์œผ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ–ˆ๋‹ค. ํŠนํžˆ B2B ๋ฌด์—ญ ํ”Œ๋žซํผ์—์„œ๋Š” ์žฌ๊ณ  ๋ฐ์ดํ„ฐ์˜ ๋ถˆ์ผ์น˜๊ฐ€ ์‹ค์ œ ์ฃผ๋ฌธ ์˜ค๋ฅ˜๋กœ ์ง๊ฒฐ๋œ๋‹ค. ํ•œ ๋ฆฌ์ „์—์„œ ์žฌ๊ณ ๊ฐ€ 0์ธ ์ƒํ’ˆ์ด ๋‹ค๋ฅธ ๋ฆฌ์ „์—์„œ๋Š” ์žฌ๊ณ ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ํ‘œ์‹œ๋˜๋ฉด, ์ฃผ๋ฌธ์ด ์ ‘์ˆ˜๋œ ํ›„ ์ทจ์†Œ๋˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋Š” ๊ณต๊ธ‰์‚ฌ์™€ ๋ฐ”์ด์–ด ์–‘์ชฝ ๋ชจ๋‘์—๊ฒŒ ์‹ ๋ขฐ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์€ ๋‹จ์ˆœ ๊ธฐ์ˆ  ๊ณผ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ ๋น„์ฆˆ๋‹ˆ์Šค ์‹ ๋ขฐ๋„์˜ ๋ฌธ์ œ์˜€๋‹ค. 2. MQ ํ† ํด๋กœ์ง€ ์„ค๊ณ„ — Topic Exchange์™€ Routing Key ์šฐ๋ฆฌ๋Š” Redis ๋ณต์ œ ๋Œ€์‹  MQ ๊ธฐ๋ฐ˜์˜ "Event-driven Sync" ๊ตฌ์กฐ๋กœ ์ „ํ™˜ํ–ˆ๋‹ค. LavinMQ์˜ Topic Exchange๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฒคํŠธ๋ฅผ ๋ผ์šฐํŒ…ํ•œ๋‹ค. ๊ฐ ๋ฆฌ์ „์˜ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์ด๋ฒคํŠธ๋Š” data.sync ํ† ํ”ฝ์œผ๋กœ ๋ฐœํ–‰๋˜๋ฉฐ, routing key๋Š” data.sync.{source_region}.{data_type} ํ˜•์‹์„ ๋”ฐ๋ฅธ๋‹ค. # Routing key examp...

AI ํ˜‘์—… ํ™˜๊ฒฝ ๊ตฌ์ถ•๊ณผ ์ฝ”๋“œ ์ž๋™ํ™” ์‹œ์Šคํ…œ

AI ํ˜‘์—… ํ™˜๊ฒฝ ๊ตฌ์ถ•๊ณผ ์ฝ”๋“œ ์ž๋™ํ™” ์‹œ์Šคํ…œ 1. AI ํ˜‘์—… ํ™˜๊ฒฝ ๋„์ž… ๋ฐฐ๊ฒฝ 8์›” ์ดˆ, ์ „์ฒด ๊ฐœ๋ฐœ ์†๋„๋Š” ์•„ํ‚คํ…์ฒ˜ ์•ˆ์ •ํ™”์™€ ํ•จ๊ป˜ ๊ธ‰๊ฒฉํžˆ ๋А๋ ค์กŒ๋‹ค. ๋‹ค๊ตญ์–ด ์ฝ”๋“œ๋ฒ ์ด์Šค, ์„œ๋น„์Šค ๊ฐ„ ์ธํ„ฐํŽ˜์ด์Šค ๋ณต์žก๋„, ๋ฆด๋ฆฌ์ฆˆ ๊ฐ„ ์ถฉ๋Œ ๋“ฑ์œผ๋กœ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ๊ด€๋ฆฌํ•ด์•ผ ํ•  ์˜์—ญ์ด ์ง€๋‚˜์น˜๊ฒŒ ๋งŽ์•˜๋‹ค. ๋‹จ์ˆœ ๋ฐ˜๋ณต์ ์ธ ํ…Œ์ŠคํŠธ, ๋ฆฌ๋ทฐ, ๋นŒ๋“œ ์ž‘์—…์„ ์‚ฌ๋žŒ ๋Œ€์‹  AI์—๊ฒŒ ๋งก๊ธฐ๊ธฐ๋กœ ํ–ˆ๋‹ค. ๋ชฉํ‘œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•˜๋‹ค. AI๊ฐ€ ์ฝ”๋“œ ๋ฌธ๋งฅ์„ ์ดํ•ดํ•˜๊ณ  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์š”์•ฝ ๋ฐ ๋ฆฌ๋ทฐ CI/CD ํŒŒ์ดํ”„๋ผ์ธ๊ณผ ์ง์ ‘ ์—ฐ๋™ํ•˜์—ฌ ์ฝ”๋“œ ํ’ˆ์งˆ ํ‰๊ฐ€ Prompt Repository๋ฅผ ํ†ตํ•œ ์ฝ”๋“œ ์ˆ˜์ • ์ž๋™ํ™” Telegram์„ ํ†ตํ•œ ๋นŒ๋“œ/๋ฐฐํฌ ๋ช…๋ น ๋ฐ ์ƒํƒœ ๋ณด๊ณ  ํ•ต์‹ฌ ์›์น™์€ ํ•˜๋‚˜์˜€๋‹ค. AI๋Š” ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ˆ˜์ •ํ•˜์ง€๋งŒ, ์ตœ์ข… ๋ณ‘ํ•ฉ๊ณผ ๋ฐฐํฌ๋Š” ๋ฐ˜๋“œ์‹œ ์‚ฌ๋žŒ์ด ์Šน์ธํ•œ๋‹ค. ์–ด๋–ค ์ƒํ™ฉ์—์„œ๋„ AI๊ฐ€ ๋‹จ๋…์œผ๋กœ ํ”„๋กœ๋•์…˜์— ์ฝ”๋“œ๋ฅผ ๋ฐ˜์˜ํ•˜๋Š” ์ผ์€ ์—†๋„๋ก ์„ค๊ณ„ํ–ˆ๋‹ค. ์ด ์›์น™์€ ์ดํ›„ ๋ชจ๋“  ์ž๋™ํ™” ์‹œ์Šคํ…œ์˜ ๊ธฐ๋ณธ ์ „์ œ๊ฐ€ ๋˜์—ˆ๋‹ค. 2. ํ™˜๊ฒฝ ๊ตฌ์„ฑ — Cursor & Claude Code ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ ์ฒด๊ณ„ ๋ชจ๋“  ๊ฐœ๋ฐœ ์ž‘์—…์€ Cursor ์—๋””ํ„ฐ๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ํ†ตํ•ฉํ–ˆ๋‹ค. Cursor๋Š” ํ”„๋กœ์ ํŠธ์˜ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ์™€ ๋ฌธ๋งฅ์„ ์ธ์‹ํ•˜์—ฌ Claude Code API์™€ ์—ฐ๊ฒฐ๋œ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ๋ช…๋ น์„ ์ง์ ‘ ๋‚ด๋ฆฌ์ง€ ์•Š๊ณ , "์˜๋„(Prompt)"๋งŒ ์ž‘์„ฑํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด "์ƒํ’ˆ ๋“ฑ๋ก API์˜ ์ค‘๋ณต ๊ฒ€์ฆ ๋กœ์ง ์ตœ์ ํ™”"๋ผ๊ณ  ๋ช…์‹œํ•˜๋ฉด, Claude Code๊ฐ€ Git ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ˆ˜์ •๋œ diff๋ฅผ ์ž๋™์œผ๋กœ ์ปค๋ฐ‹ํ•œ๋‹ค. # Example of AI-generated commit feat(product): optimize duplicate validation logic - a...

์ด๋ฏธ์ง€ ์ตœ์ ํ™”์™€ COS ๊ธฐ๋ฐ˜ CDN ์ž๋™ํ™”

1. ๋ฌธ์ œ ์ธ์‹ — ์ด๋ฏธ์ง€ ํŠธ๋ž˜ํ”ฝ๊ณผ ํ’ˆ์งˆ์˜ ๋ถˆ๊ท ํ˜• 8์›” ์ดˆ, ์ƒํ’ˆ ์ด๋ฏธ์ง€ ์š”์ฒญ๋Ÿ‰์ด ํ•˜๋ฃจ ํ‰๊ท  1200๋งŒ ๊ฑด์„ ๋„˜์–ด์„œ๋ฉด์„œ CDN ํŠธ๋ž˜ํ”ฝ ๋น„์šฉ์ด ๊ธ‰๊ฒฉํžˆ ์ฆ๊ฐ€ํ–ˆ๋‹ค. ์›์ธ์€ ๋Œ€๋ถ€๋ถ„ ๋น„ํšจ์œจ์ ์ธ ์ด๋ฏธ์ง€ ํฌ๊ธฐ์™€ ์ค‘๋ณต ์š”์ฒญ์ด์—ˆ๋‹ค. ํฌ๋กค๋ง ๋‹จ๊ณ„์—์„œ ์›๋ณธ ์ด๋ฏธ์ง€๋Š” ๊ณ ํ•ด์ƒ๋„ ์ƒํƒœ๋กœ ์ €์žฅ๋˜์—ˆ๊ณ , ํ”„๋ŸฐํŠธ์—”๋“œ๋Š” ๋‹จ์ผ ์‚ฌ์ด์ฆˆ ์ด๋ฏธ์ง€๋ฅผ ๋ชจ๋“  ๊ธฐ๊ธฐ์—์„œ ๊ณตํ†ต ์‚ฌ์šฉํ–ˆ๋‹ค. REINDEERS ํ”Œ๋žซํผ์—๋Š” 4,300๊ฐœ ์ด์ƒ์˜ ํŒŒํŠธ๋„ˆ์‚ฌ๊ฐ€ ๋“ฑ๋ก๋˜์–ด ์žˆ๊ณ , ๊ฐ ๊ณต๊ธ‰์‚ฌ๊ฐ€ ์˜ฌ๋ฆฌ๋Š” ์ƒํ’ˆ ์ด๋ฏธ์ง€๋Š” ํ‰๊ท  5~8์žฅ์ด๋‹ค. ์ด ์ด๋ฏธ์ง€๋“ค์ด ๋ฐ”์ด์–ด 2,500๊ฐœ ์ด์ƒ์˜ ๊ฒ€์ƒ‰๊ณผ ์กฐํšŒ๋ฅผ ํ†ตํ•ด ์š”์ฒญ๋˜๋ฉด์„œ ํŠธ๋ž˜ํ”ฝ์ด ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ์ฆ๊ฐ€ํ–ˆ๋‹ค. ํŠนํžˆ ํƒœ๊ตญ, ๋ง๋ ˆ์ด์‹œ์•„, ์ค‘๊ตญ ๋“ฑ ์—ฌ๋Ÿฌ ๊ตญ๊ฐ€์—์„œ ๋™์‹œ์— ์ ‘์†ํ•˜๋Š” ๊ตฌ์กฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ง€์—ญ๋ณ„ CDN ๋ถ„์‚ฐ๋„ ํ•„์ˆ˜์˜€๋‹ค. ์ดˆ๊ธฐ์—๋Š” Cloud Function์„ ์ด์šฉํ•œ ์ด๋ฏธ์ง€ ๋ฆฌ์‚ฌ์ด์ง• API๋ฅผ ์ง์ ‘ ์šด์˜ํ–ˆ์œผ๋‚˜, ์ฒ˜๋ฆฌ๋Ÿ‰ ๋Œ€๋น„ ๋น„์šฉ์ด ๋†’๊ณ , ์ฝœ๋“œ ์Šคํƒ€ํŠธ ์ง€์—ฐ์ด ์žฆ์•˜๋‹ค. ํ‰๊ท  ์‘๋‹ต ์‹œ๊ฐ„์ด 200ms๋ฅผ ๋„˜์—ˆ๊ณ , ๋™์‹œ ์š”์ฒญ์ด ๋ชฐ๋ฆฌ๋Š” ์‹œ๊ฐ„๋Œ€์—๋Š” 500ms๊นŒ์ง€ ์น˜์†Ÿ์•˜๋‹ค. ๋”ฐ๋ผ์„œ Tencent COS์˜ ๋‚ด์žฅ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•œ ์„œ๋ฒ„๋ฆฌ์Šค ๊ตฌ์กฐ๋กœ ์ „ํ™˜ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค. 2. COS ์„œ๋ฒ„๋ฆฌ์Šค ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ๊ตฌ์กฐ ์„ค๊ณ„ COS(Cloud Object Storage)๋Š” ๋ณ„๋„์˜ ์„œ๋ฒ„๋‚˜ Lambda ์—†์ด๋„ URL ํŒŒ๋ผ๋ฏธํ„ฐ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด๋ฏธ์ง€ ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜๋ฉด ๋‹จ ํ•œ ๋ฒˆ์˜ ์—…๋กœ๋“œ๋กœ ๋ชจ๋“  ๋ณ€ํ™˜ ๋ฒ„์ „์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 800x800 ์ธ๋„ค์ผ์„ webp๋กœ ๋ณ€ํ™˜ํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์š”์ฒญํ•œ๋‹ค. https://cdn.reindeers.com/images/p/12345.jpg?imageMogr2/thumbnail/800x800/quality/90/for...

์นดํ…Œ๊ณ ๋ฆฌ ๋งคํ•‘ ์—”์ง„๊ณผ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์ž๋™ํ™”

1. ๊ฐœ๋ฐœ ๋ฐฐ๊ฒฝ ๋ฐ ๋ฌธ์ œ ์ธ์‹ Translator-Agent๊ฐ€ ๋‹ค๊ตญ์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์ƒ์„ฑํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด์„œ, ๋‹ค์Œ ๋ณ‘๋ชฉ์€ "์ƒํ’ˆ ๋ถ„๋ฅ˜"์˜€๋‹ค. ์•ฝ 25๋งŒ ๊ฑด์˜ ์ƒํ’ˆ์ด ๋ฒˆ์—ญ๋˜์—ˆ์ง€๋งŒ, ์นดํ…Œ๊ณ ๋ฆฌ ์ฝ”๋“œ๊ฐ€ ๋ˆ„๋ฝ๋˜๊ฑฐ๋‚˜ ์„œ๋กœ ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ ๋‹ค๋ฅธ ํŠธ๋ฆฌ ๋…ธ๋“œ๋กœ ๋งคํ•‘๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ๊ธฐ์กด์˜ ์ˆ˜๋™ ๋ถ„๋ฅ˜๋Š” ๊ตญ๊ฐ€๋ณ„ ๊ธฐ์ค€์ด ๋‹ฌ๋ผ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์–ด๋ ค์› ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, AI ๊ธฐ๋ฐ˜ ์นดํ…Œ๊ณ ๋ฆฌ ์ž๋™ ๋ถ„๋ฅ˜ ์—”์ง„(Classifier-Agent)์„ ๊ฐœ๋ฐœํ–ˆ๋‹ค. REINDEERS ํ”Œ๋žซํผ์€ ํ•œ๊ตญ, ํƒœ๊ตญ, ๋ง๋ ˆ์ด์‹œ์•„, ์ค‘๊ตญ 4๊ฐœ๊ตญ์— ๊ฑธ์ณ 4,300๊ฐœ ์ด์ƒ์˜ ํŒŒํŠธ๋„ˆ์‚ฌ๊ฐ€ ๋“ฑ๋ก๋˜์–ด ์žˆ๊ณ , 25,000๊ฑด ์ด์ƒ์˜ ์‹ค๊ฑฐ๋ž˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ถ•์ ๋˜์–ด ์žˆ๋‹ค. ๊ณต๊ธ‰์‚ฌ 1,800๊ฐœ ์ด์ƒ์ด ๊ฐ์ž์˜ ์นดํ…Œ๊ณ ๋ฆฌ ์ฒด๊ณ„๋กœ ์ƒํ’ˆ์„ ๋“ฑ๋กํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋™์ผํ•œ "์•Œ๋ฃจ๋ฏธ๋Š„ ํ”„๋กœํŒŒ์ผ"์ด ํ•œ๊ตญ์—์„œ๋Š” "๊ธˆ์† ๊ฐ€๊ณต์žฌ", ํƒœ๊ตญ์—์„œ๋Š” "๊ฑด์ถ• ์ž์žฌ", ์ค‘๊ตญ์—์„œ๋Š” "์‚ฐ์—…์šฉ ๋น„์ฒ ๊ธˆ์†"์œผ๋กœ ๋ถ„๋ฅ˜๋˜๋Š” ์ผ์ด ๋นˆ๋ฒˆํ–ˆ๋‹ค. ๋ฐ”์ด์–ด 2,500๊ฐœ ์ด์ƒ์ด ๊ฒ€์ƒ‰๊ณผ ๋น„๊ต๋ฅผ ํ•  ๋•Œ ์ด ๋ถˆ์ผ์น˜๊ฐ€ ์ง์ ‘์ ์œผ๋กœ ์ „ํ™˜์œจ์„ ๋–จ์–ด๋œจ๋ ธ๋‹ค. ๋ชฉํ‘œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•˜๋‹ค. ์ƒํ’ˆ๋ช…·์„ค๋ช…·์ŠคํŽ™·๋ธŒ๋žœ๋“œ๋ฅผ ์ด์šฉํ•œ ์ž๋™ ์นดํ…Œ๊ณ ๋ฆฌ ์˜ˆ์ธก ์–ธ์–ด ์ค‘๋ฆฝ์ ์ธ ๋ฒกํ„ฐ ์ž„๋ฒ ๋”ฉ ๊ธฐ๋ฐ˜ ๋ถ„๋ฅ˜ ๋ถ„๋ฅ˜ ํ™•์‹ ๋„(confidence score)์— ๋”ฐ๋ฅธ ์Šน์ธ/๋ณด๋ฅ˜ ์ฒด๊ณ„ MQ ํŒŒ์ดํ”„๋ผ์ธ ๊ธฐ๋ฐ˜์˜ ๋น„๋™๊ธฐ ๋™์ž‘ ๋ฐ ์ž๋™ ์žฌ๋งคํ•‘ 2. ์ดˆ๊ธฐ ๊ตฌ์กฐ ์„ค๊ณ„ Classifier-Agent๋Š” Translator-Agent๊ฐ€ ์ƒ์„ฑํ•œ i18n ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›๋Š”๋‹ค. product.normalized ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์‹ ํ•˜๋ฉด ๋ฌธ์žฅ ์ž„๋ฒ ๋”ฉ์„ ์ƒ์„ฑํ•˜๊ณ , ์นดํ…Œ๊ณ ๋ฆฌ ๋ฒกํ„ฐ DB์—์„œ ๊ฐ€์žฅ ์œ ์‚ฌํ•œ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ํƒ์ƒ‰ํ•œ๋‹ค. SentenceTransfo...

Translator-Agent์™€ ๋ฐ์ดํ„ฐ ํ’ˆ์งˆ ๊ด€๋ฆฌ ์ฒด๊ณ„

Translator-Agent์™€ ๋ฐ์ดํ„ฐ ํ’ˆ์งˆ ๊ด€๋ฆฌ ์ฒด๊ณ„ 1. ์ดˆ๊ธฐ Translator-Agent ๋„์ž… ๋ฐฐ๊ฒฝ 7์›” ์ดˆ, ํ”Œ๋žซํผ ๋‚ด ๋“ฑ๋ก๋œ ์ƒํ’ˆ ์ˆ˜๊ฐ€ 20๋งŒ ๊ฑด์„ ์ดˆ๊ณผํ•˜๋ฉด์„œ ๋‹ค๊ตญ์–ด ๋ฐ์ดํ„ฐ ํ’ˆ์งˆ ๋ฌธ์ œ๊ฐ€ ์‹ฌ๊ฐํ•˜๊ฒŒ ๋“œ๋Ÿฌ๋‚ฌ๋‹ค. ๊ธฐ์กด์—๋Š” ์™ธ๋ถ€ ๋ฒˆ์—ญ API๋ฅผ ํ˜ธ์ถœํ•ด ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๋Š” ๋‹จ์ˆœ ๊ตฌ์กฐ์˜€๋‹ค. ํ•˜์ง€๋งŒ ์–ธ์–ด๋ณ„ ํ’ˆ์งˆ ํŽธ์ฐจ๊ฐ€ ์‹ฌํ–ˆ๊ณ , ์นดํ…Œ๊ณ ๋ฆฌ๋ช…, ๋‹จ์œ„, ๋ธŒ๋žœ๋“œ๋ช… ๋“ฑ์ด ์ž˜๋ชป ๋ฒˆ์—ญ๋˜๋Š” ์‚ฌ๋ก€๊ฐ€ ๋ˆ„์ ๋˜์—ˆ๋‹ค. "Steel Pipe"๊ฐ€ ํƒœ๊ตญ์–ด๋กœ "์ฒ  ๋‹ด๋ฐฐ ํŒŒ์ดํ”„"๋กœ ๋ฒˆ์—ญ๋˜๊ฑฐ๋‚˜, "12V DC Motor"์˜ "DC"๊ฐ€ "์ง๋ฅ˜"๊ฐ€ ์•„๋‹Œ "์›Œ์‹ฑํ„ด D.C."๋กœ ํ•ด์„๋˜๋Š” ์‚ฌ๋ก€๊ฐ€ ์‹ค์ œ๋กœ ๋ฐœ์ƒํ–ˆ๋‹ค. ์‚ฐ์—… ์ž์žฌ ๋ถ„์•ผ์˜ ์ „๋ฌธ ์šฉ์–ด๋Š” ์ผ๋ฐ˜ ๋ฒˆ์—ญ ๋ชจ๋ธ๋กœ๋Š” ์ •ํ™•๋„๊ฐ€ ๋‚ฎ๋‹ค. ์ˆ˜๋™ ๊ต์ • ์ธ๋ ฅ์„ ํˆฌ์ž…ํ•˜์ง€ ์•Š์œผ๋ฉด์„œ๋„ ๋ฒˆ์—ญ ํ’ˆ์งˆ์„ ํ™•๋ณดํ•˜๊ธฐ ์œ„ํ•ด "Translator-Agent"๋ฅผ ๋‚ด๋ถ€์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค. Translator-Agent์˜ ์„ค๊ณ„ ๋ชฉํ‘œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•˜๋‹ค. ๋ฒˆ์—ญ ํ’ˆ์งˆ ์ž๋™ ํ‰๊ฐ€ ๋ฐ ๋“ฑ๊ธ‰ํ™” (MACHINE / HUMAN / APPROVED) ๋‹ค๊ตญ์–ด ํ…์ŠคํŠธ ์บ์‹œ ๋ฐ ์ค‘๋ณต ์š”์ฒญ ์ œ๊ฑฐ ๋ฌธ์žฅ ๋‹จ์œ„๊ฐ€ ์•„๋‹Œ ๋ฌธ๋งฅ ๋‹จ์œ„ ๋ฒˆ์—ญ ์ฒ˜๋ฆฌ — ์ƒํ’ˆ ์นดํ…Œ๊ณ ๋ฆฌ, ์ŠคํŽ™, ๋‹จ์œ„๋ฅผ ํ•จ๊ป˜ ๊ณ ๋ ค MQ ๊ธฐ๋ฐ˜ ๋ณ‘๋ ฌ ๋ฒˆ์—ญ ๋ฐ ํ’ˆ์งˆ ํ”ผ๋“œ๋ฐฑ ๋ฃจํ”„ ์ž๋™ํ™” ์‚ฐ์—… ์ž์žฌ ์ „๋ฌธ ์šฉ์–ด ์‚ฌ์ „(Glossary) ์ ์šฉ 2. ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„ — AI ๋ชจ๋ธ ํ˜ผํ•ฉ ์ „๋žต Translator-Agent๋Š” MQ ์ด๋ฒคํŠธ ์†Œ๋น„์ž๋กœ ๋™์ž‘ํ•œ๋‹ค. product.created ๋˜๋Š” i18n.missing ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์‹ ํ•˜๋ฉด ํ•ด๋‹น ์ƒํ’ˆ์˜ ๊ธฐ๋ณธ ์–ธ์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜...