Skip to main content

Posts

ํŒ€์„ ๋„ค ๋ฒˆ ๊ต์ฒดํ•˜๋ฉฐ ๋ฐฐ์šด ๊ฒƒ๋“ค — ์ง„์งœ ๊ธ€๋กœ๋ฒŒ ํŒ€์„ ๋งŒ๋“ค๊ธฐ๊นŒ์ง€

1. ์ฒซ ๋ฒˆ์งธ ํŒ€ -- ์™ธ์ฃผ ๊ฐœ๋ฐœ์‚ฌ์˜ ํ•œ๊ณ„ REINDEERS์˜ ์ฒซ ๋ฒˆ์งธ ํŒ€์€ ์™ธ๋ถ€ ๊ฐœ๋ฐœ์‚ฌ์˜€๋‹ค. ๊ณ„์•ฝ์€ ๋‹จ์ˆœํ–ˆ๊ณ , ๋ชฉํ‘œ๋Š” "๋ฌด์—ญ ํ”Œ๋žซํผ์˜ MVP ๊ตฌ์ถ•"์ด์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ˜„์‹ค์€ ๋‹ฌ๋ž๋‹ค. ๊ฐœ๋ฐœ์‚ฌ๋Š” ๋ฌด์—ญ์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ๊ณ , ์ œ์กฐ ์œ ํ†ต์˜ ํ๋ฆ„์„ ์ „์ž์ƒ๊ฑฐ๋ž˜์ฒ˜๋Ÿผ ์ฒ˜๋ฆฌํ•˜๋ ค ํ–ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๊ฒฌ์ (Quote), ์ฃผ๋ฌธ(Order), ๋ฌผ๋ฅ˜(Logistics), ๊ฒฐ์ œ(Payment)๊ฐ€ ๊ฐ™์€ ํ…Œ์ด๋ธ”์— ์–ฝํ˜€ ์žˆ์—ˆ๋‹ค. ๊ฐœ๋ฐœ์€ ๋นจ๋ž์ง€๋งŒ, ๊ตฌ์กฐ๋Š” ์œ„ํ—˜ํ–ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ํŒ€์€ "์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์—ˆ์ง€๋งŒ, ํ”Œ๋žซํผ์€ ๋งŒ๋“ค์ง€ ๋ชปํ–ˆ๋‹ค." ๋ฌด์—ญ์—์„œ๋Š” ๊ฒฌ์  ํ•˜๋‚˜๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐœ์ฃผ์„œ๋กœ ๋ถ„๋ฆฌ๋˜๊ธฐ๋„ ํ•˜๊ณ , ํ•˜๋‚˜์˜ ๋ฐœ์ฃผ๊ฐ€ ๋ณต์ˆ˜์˜ ์„ ์ ์œผ๋กœ ๋‚˜๋‰˜๊ธฐ๋„ ํ•œ๋‹ค. ๊ฒฐ์ œ ์กฐ๊ฑด์€ T/T, L/C, D/A ๋“ฑ ๊ฑฐ๋ž˜ ์ƒ๋Œ€์™€ ํ’ˆ๋ชฉ์— ๋”ฐ๋ผ ์™„์ „ํžˆ ๋‹ฌ๋ผ์ง„๋‹ค. ์™ธ์ฃผ ๊ฐœ๋ฐœ์‚ฌ๋Š” ์ด ๋ชจ๋“  ๊ฒƒ์„ ํ•˜๋‚˜์˜ "์ฃผ๋ฌธ-๊ฒฐ์ œ" ํ…Œ์ด๋ธ”๋กœ ์ฒ˜๋ฆฌํ•˜๋ ค ํ–ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ์‡ผํ•‘๋ชฐ์ด๋ผ๋ฉด ๊ฐ€๋Šฅํ•œ ์„ค๊ณ„์˜€์ง€๋งŒ, B2B ๋ฌด์—ญ์—์„œ๋Š” ์ฒซ ์ฃผ๋ถ€ํ„ฐ ๋ฌธ์ œ๊ฐ€ ๋“œ๋Ÿฌ๋‚ฌ๋‹ค. ๊ฐ€์žฅ ์น˜๋ช…์ ์ด์—ˆ๋˜ ๊ฒƒ์€ ํ†ตํ™”(Currency) ์ฒ˜๋ฆฌ์˜€๋‹ค. ํƒœ๊ตญ ๋ฐ”ํŠธ๋กœ ๊ฒฌ์ ์„ ๋‚ด๊ณ , ์ค‘๊ตญ ์œ„์•ˆ์œผ๋กœ ๊ฒฐ์ œํ•˜๊ณ , ํ•œ๊ตญ ์›ํ™”๋กœ ์ •์‚ฐํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ์™ธ์ฃผํŒ€์€ ์ „ํ˜€ ๊ณ ๋ คํ•˜์ง€ ์•Š์•˜๋‹ค. ํ™˜์œจ ๋ณ€๋™์— ๋”ฐ๋ฅธ ๋งˆ์ง„ ๊ณ„์‚ฐ, ์„ ์  ์‹œ์ ๊ณผ ๊ฒฐ์ œ ์‹œ์ ์˜ ํ™˜์ฐจ์† -- ์ด๋Ÿฐ ๊ฒƒ๋“ค์€ ์‚ฌ์–‘์„œ์— ํ•œ ์ค„๋กœ ์ ํ˜€ ์žˆ์—ˆ์ง€๋งŒ, ์‹ค์ œ๋กœ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด ์™„์ „ํžˆ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์ด ํ•„์š”ํ–ˆ๋‹ค. ์™ธ์ฃผํŒ€์—๊ฒŒ ์ด๊ฒƒ์€ "์ถ”๊ฐ€ ์š”๊ตฌ์‚ฌํ•ญ"์ด์—ˆ์ง€๋งŒ, ์šฐ๋ฆฌ์—๊ฒŒ๋Š” ํ”Œ๋žซํผ์˜ ๋ณธ์งˆ์ด์—ˆ๋‹ค. 2. ๋‘ ๋ฒˆ์งธ ํŒ€ -- ๋‚ด๋ถ€ํ™”์˜ ์ฒซ ์‹œ๋„ ๋‘ ๋ฒˆ์งธ ์‹œ๋„๋Š” "๋‚ด๋ถ€ ๊ฐœ๋ฐœํŒ€ ๊ตฌ์„ฑ"์ด์—ˆ๋‹ค. ์™ธ์ฃผ๊ฐ€ ์‹คํŒจํ•œ ์ด์œ ๋ฅผ ์™ธ๋ถ€ ํƒ“์œผ๋กœ ๋Œ๋ฆด ์ˆ˜ ์—†๋‹ค๊ณ  ํŒ๋‹จํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ด€๋ฆฌ ์ธ๋ ฅ๊ณผ ๋ช‡ ๋ช…์˜ ํ’€์Šคํƒ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•ฉ๋ฅ˜ํ•ด, ์ง์ ‘ ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฌธ์ œ๋Š”...

REINDEERS, 4๋…„์˜ ์—ฌ์ • — ๋™๋‚จ์•„ ์ œ์กฐ์—… ํ˜์‹ ์„ ํ–ฅํ•œ ์ถœ๋ฐœ์ 

1. ์ถœ๋ฐœ -- 2015๋…„, ํƒœ๊ตญ์—์„œ ์‹œ์ž‘ํ•˜๋‹ค 2015๋…„, IMARKET Thailand๊ฐ€ ํƒœ๊ตญ ๋ฐฉ์ฝ•์—์„œ ์„ค๋ฆฝ๋˜์—ˆ๋‹ค. ์™œ ํƒœ๊ตญ์ด์—ˆ๋Š”๊ฐ€. CEO ๊น€๋ช…ํ›ˆ ๋Œ€ํ‘œ๊ฐ€ 20๋…„ ์ด์ƒ ๋™๋‚จ์•„์—์„œ ์‚ฌ์—…์„ ํ•ด์˜จ ๊ฒฝํ—˜์—์„œ ๋‚˜์˜จ ์„ ํƒ์ด์—ˆ๋‹ค. ํƒœ๊ตญ์€ ASEAN์—์„œ ์ œ์กฐ์—… ๊ธฐ๋ฐ˜์ด ํƒ„ํƒ„ํ•œ ๊ตญ๊ฐ€ ์ค‘ ํ•˜๋‚˜์˜€๊ณ , ํ•œ๊ตญ ๊ธฐ์—…์˜ ์ง„์ถœ์ด ํ™œ๋ฐœํ–ˆ์œผ๋ฉฐ, MRO(์œ ์ง€๋ณด์ˆ˜/์ˆ˜๋ฆฌ/์šด์˜) ์‚ฐ์—…์žฌ ์œ ํ†ต์— ๋ช…ํ™•ํ•œ ์ˆ˜์š”๊ฐ€ ์žˆ์—ˆ๋‹ค. ์ดˆ๊ธฐ ์‚ฌ์—… ๋ชจ๋ธ์€ ํ”Œ๋žซํผ์ด ์•„๋‹ˆ์—ˆ๋‹ค. ํƒœ๊ตญ ๋‚ด ์ œ์กฐ์—…์ฒด์— ์‚ฐ์—…์žฌ๋ฅผ ๊ณต๊ธ‰ํ•˜๋Š” MRO ์œ ํ†ต ์‚ฌ์—…์ด์—ˆ๋‹ค. ๊ณต์žฅ์—์„œ ํ•„์š”ํ•œ ๋ฒ ์–ด๋ง, ๊ณต๊ตฌ, ์•ˆ์ „์žฅ๋น„, ํ™”ํ•™์ œํ’ˆ ๋“ฑ์„ ํ•œ๊ตญ, ์ค‘๊ตญ, ์ผ๋ณธ ๊ณต๊ธ‰์‚ฌ๋กœ๋ถ€ํ„ฐ ์กฐ๋‹ฌํ•ด์„œ ํƒœ๊ตญ ํ˜„์ง€ ๊ณต์žฅ์— ๋‚ฉํ’ˆํ–ˆ๋‹ค. ์ „ํ™”, ์ด๋ฉ”์ผ, ์—‘์…€๋กœ ์šด์˜ํ–ˆ๋‹ค. ๋‹น์‹œ์—๋Š” ๊ทธ๊ฒƒ์ด ์—…๊ณ„ ํ‘œ์ค€์ด์—ˆ๋‹ค. 2. 2016-2019: ๊ณ ๊ฐ ๊ธฐ๋ฐ˜ ๊ตฌ์ถ•, ์‹œ์žฅ์˜ ํ˜„์‹ค ํ•™์Šต 4๋…„๊ฐ„ ํƒœ๊ตญ ํ˜„์ง€์—์„œ ์ง์ ‘ ์˜์—…ํ•˜๊ณ , ๋‚ฉํ’ˆํ•˜๊ณ , ํด๋ ˆ์ž„์„ ์ฒ˜๋ฆฌํ•˜๋ฉฐ ์‚ฐ์—…์žฌ B2B ๋ฌด์—ญ์˜ ์‹ค์ƒ์„ ๋ฐฐ์› ๋‹ค. ๊ณ ๊ฐ ์ˆ˜๋Š” ์ ์ง„์ ์œผ๋กœ ๋Š˜์–ด 2,500๊ฐœ ์ด์ƒ์˜ ๋ฐ”์ด์–ด ๊ด€๊ณ„๊ฐ€ ํ˜•์„ฑ๋˜์—ˆ๋‹ค. ๋™์‹œ์— ํ•œ๊ตญ, ์ค‘๊ตญ์˜ ๊ณต๊ธ‰์‚ฌ ๋„คํŠธ์›Œํฌ๋„ 1,800๊ฐœ ์ด์ƒ์œผ๋กœ ํ™•์žฅ๋˜์—ˆ๋‹ค. ์ด ์ˆซ์ž๋Š” ๋งˆ์ผ€ํŒ…์œผ๋กœ ๋ชจ์€ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์‹ค์ œ ๊ฑฐ๋ž˜๋ฅผ ํ†ตํ•ด ์Œ“์ธ ๊ฒƒ์ด๋‹ค. ํ•œ ๊ฑด ํ•œ ๊ฑด์˜ ๊ฒฌ์ , PO, ์ธ๋ณด์ด์Šค, ๋‚ฉํ’ˆ์„ ๊ฑฐ์น˜๋ฉฐ ์‹ ๋ขฐ๊ฐ€ ๋งŒ๋“ค์–ด์กŒ๋‹ค. ์ด ์‹œ๊ธฐ์— ๋ฐฐ์šด ๊ฒƒ๋“ค์ด ๋‚˜์ค‘์— ํ”Œ๋žซํผ ์„ค๊ณ„์˜ ํ•ต์‹ฌ์ด ๋˜์—ˆ๋‹ค. ์ฒซ์งธ, ๋™๋‚จ์•„ ์‚ฐ์—…์žฌ ๋ฌด์—ญ์˜ ๋น„ํšจ์œจ์€ ๊ตฌ์กฐ์ ์ด๋ผ๋Š” ๊ฒƒ. ๋ฐ”์ด์–ด๊ฐ€ ๊ณต๊ธ‰์‚ฌ๋ฅผ ์ฐพ์œผ๋ ค๋ฉด ์ „์‹œํšŒ์— ๊ฐ€๊ฑฐ๋‚˜ ์ง€์ธ์„ ํ†ตํ•ด์•ผ ํ–ˆ๋‹ค. ๊ฐ€๊ฒฉ ๋น„๊ต๋Š” ๋‹ด๋‹น์ž๊ฐ€ ๊ณต๊ธ‰์‚ฌ๋ณ„๋กœ ์ „ํ™”๋ฅผ ๋Œ๋ ค ์—‘์…€์— ์ •๋ฆฌํ–ˆ๋‹ค. ๋ฌผ๋ฅ˜ ์ถ”์ ์€ ํฌ์›Œ๋”์—๊ฒŒ ๋งค๋ฒˆ ์ „ํ™”ํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ์ด ๋น„ํšจ์œจ์€ ๊ฐœ๋ณ„ ๊ธฐ์—…์˜ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ ์‚ฐ์—… ์ „์ฒด์˜ ๋ฌธ์ œ์˜€๋‹ค. ๋‘˜์งธ, ๊ตญ๊ฐ€๋งˆ๋‹ค ๊ทœ์ œ์™€ ๊ด€ํ–‰์ด ์™„์ „ํžˆ ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ....

๋ฒ ํƒ€ ์˜คํ”ˆ ์ค€๋น„: ๊ตญ๊ฐ€๋ณ„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜๊ณผ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ž๋™ํ™”

๋ฒ ํƒ€ ์˜คํ”ˆ ์ค€๋น„: ๊ตญ๊ฐ€๋ณ„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜๊ณผ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ž๋™ํ™” 1. ํ…Œ์ŠคํŠธ ๋ชฉ์ ๊ณผ ์‹œ๋‚˜๋ฆฌ์˜ค ์„ค๊ณ„ ๋ฒ ํƒ€ ์˜คํ”ˆ์„ ์•ž๋‘๊ณ  ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒ€์ฆ ํ•ญ๋ชฉ์€ ์„ธ ๊ฐ€์ง€์˜€๋‹ค. 1) ๋‹ค๊ตญ๊ฐ€ ์ ‘์† ๋ถ€ํ•˜ ๋ถ„์‚ฐ — ๊ฐ๊ตญ DNS ๋ฐ CDN ๋ผ์šฐํŒ… ๊ฒ€์ฆ 2) ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ — Redis์™€ MQ์˜ ๋ณต์ œ ์ง€์—ฐ ๊ฒ€์ฆ 3) ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ๋ฐ ์žฅ์•  ๋ณต๊ตฌ — Cloud Function์˜ ์ž์œจ ํšŒ๋ณต ํ…Œ์ŠคํŠธ ํ…Œ์ŠคํŠธ๋Š” AI Ops-Agent๊ฐ€ ์ƒ์„ฑํ•œ ๊ฐ€์ƒ ์„ธ์…˜์„ ์ด์šฉํ•ด ์ˆ˜ํ–‰๋๋‹ค. ๊ฐ๊ตญ์˜ ํ‰๊ท  ์‚ฌ์šฉ ํ™˜๊ฒฝ(๋„คํŠธ์›Œํฌ ์†๋„, ์–ธ์–ด, ๊ธฐ๊ธฐ ๋น„์œจ)์„ ๊ธฐ๋ฐ˜์œผ๋กœ 50,000๋ช…์˜ ๊ฐ€์ƒ ์‚ฌ์šฉ์ž๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์‹ค์ œ ์ฃผ๋ฌธ, ๊ฒฌ์ , ์ฑ„ํŒ…, ๊ฒฐ์ œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋ฐ˜๋ณต ์‹คํ–‰ํ–ˆ๋‹ค. ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ๋‹จ์ˆœ ํŽ˜์ด์ง€ ์กฐํšŒ๋ถ€ํ„ฐ ๋ณตํ•ฉ ํŠธ๋žœ์žญ์…˜๊นŒ์ง€ 5๋‹จ๊ณ„๋กœ ๊ตฌ์„ฑ๋˜์—ˆ๋‹ค. 1๋‹จ๊ณ„๋Š” ์ƒํ’ˆ ๊ฒ€์ƒ‰๊ณผ ์นดํƒˆ๋กœ๊ทธ ์กฐํšŒ, 2๋‹จ๊ณ„๋Š” ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ถ”๊ฐ€์™€ ๊ฒฌ์  ์š”์ฒญ, 3๋‹จ๊ณ„๋Š” ๊ฒฐ์ œ ์ฒ˜๋ฆฌ, 4๋‹จ๊ณ„๋Š” ์ฃผ๋ฌธ ์ƒํƒœ ๋ณ€๊ฒฝ๊ณผ MQ ์ด๋ฒคํŠธ ์ „ํŒŒ, 5๋‹จ๊ณ„๋Š” ๋ฐฐ์†ก ์ถ”์ ๊ณผ ์„ธ์…˜ ์œ ์ง€ ๊ฒ€์ฆ์ด๋‹ค. ๊ฐ ๋‹จ๊ณ„์˜ ์„ฑ๊ณต/์‹คํŒจ ๊ธฐ์ค€๊ณผ ํ—ˆ์šฉ ์‘๋‹ต ์‹œ๊ฐ„์ด ์‚ฌ์ „์— ์ •์˜๋˜์—ˆ๋‹ค. 2. ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•๋ก ๊ณผ ๋ฆฌ์ „๋ณ„ ํŠธ๋ž˜ํ”ฝ ๋ถ„๋ฐฐ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๋„๊ตฌ๋กœ๋Š” k6 ๊ธฐ๋ฐ˜์˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. ๊ฐ ๋ฆฌ์ „๋ณ„๋กœ ๋…๋ฆฝ์ ์ธ ํ…Œ์ŠคํŠธ ๋Ÿฌ๋„ˆ๊ฐ€ ๋ฐฐ์น˜๋˜์–ด, ํ•ด๋‹น ๋ฆฌ์ „์˜ DNS๋ฅผ ํ†ตํ•ด ์‹ค์ œ ์„œ๋น„์Šค ๊ฒฝ๋กœ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ๋ฐœ์ƒ์‹œ์ผฐ๋‹ค. ํŠธ๋ž˜ํ”ฝ์€ Cloud Function์—์„œ MQ, Redis, DB๊นŒ์ง€ ์‹ค์ œ ์„œ๋น„์Šค ๊ฒฝ๋กœ๋ฅผ ๊ทธ๋Œ€๋กœ ํ†ต๊ณผํ•œ๋‹ค. { "country": "TH", "user_id": "TH_839210", "actions": ["login","view_product"...

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...