Java

LINE ๊ด‘๊ณ  ํ”Œ๋žซํผ์˜ MSA ํ™˜๊ฒฝ์—์„œ Zipkin์„ ํ™œ์šฉํ•ด ๋กœ๊ทธ ํŠธ๋ ˆ์ด์‹ฑํ•˜๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š”. LINE Ads์—์„œ DSP Manager๋ฅผ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ๋Š” ๊น€์šฉํ›ˆ์ž…๋‹ˆ๋‹ค. LINE Ads๋Š” ์ผ๋ณธ๊ณผ ํƒœ๊ตญ, ๋Œ€๋งŒ ๋“ฑ ์ „ ์„ธ๊ณ„ LINE ์‚ฌ์šฉ์ž๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๊ธ€๋กœ๋ฒŒ ๊ด‘๊ณ  ํ”Œ๋žซํผ์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. LINE์˜ ๊ด‘๊ณ  ํ”Œ๋žซํผ์€ ๋Œ€๋Ÿ‰์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉฐ ์‚ฌ์šฉ์ž๋“ค์ด ๊ด€์‹ฌ์„ ๊ฐ€์งˆ ๊ด‘๊ณ ๋ฅผ ์˜ˆ์ธกํ•ด์„œ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. DSP(Demand Side Platform) Manager๋Š” ๊ฐ„๋‹จํžˆ ์ด์•ผ๊ธฐํ•˜๋ฉด ๊ด‘๊ณ ์ฃผ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๊ด‘๊ณ  ๊ด€๋ฆฌ ๋„๊ตฌ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ด‘๊ณ  ๋“ฑ๋ก๊ณผ ๋“ฑ๋กํ•œ ๊ด‘๊ณ ์— ๋Œ€ํ•œ ์‹ฌ์‚ฌ, ์‹ฌ์‚ฌ ์™„๋ฃŒ ํ›„ ์ง‘ํ–‰๋œ ๊ด‘๊ณ ์˜ ํšจ๊ณผ์™€ ๋น„์šฉ์— ๋Œ€ํ•œ ์ฒญ๊ตฌ ์ •๋ณด ํ™•์ธ ๋“ฑ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.

์ €ํฌ๋Š” ์ด๋Ÿฐ ์š”๊ตฌ ์‚ฌํ•ญ์„ ํšจ์œจ์ ์œผ๋กœ ์ ์šฉํ•ด ๋‚˜๊ฐ€๊ธฐ ์œ„ํ•ด์„œ ๋งŽ์€ ์ธ์›์ด ํšจ์œจ์ ์œผ๋กœ ํ˜‘์—…ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ํŒ๋‹จ, MSA๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐ ์„œ๋น„์Šค๋ฅผ ๊ฒŒ์ดํŠธ์›จ์ด์™€ ์• ๋“œ์„œ๋น„์Šค, ๋ฆฌํฌํŠธ, ๋นŒ๋ง, ๋ฆฌ๋ทฐ ๋“ฑ์˜ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์„ ํƒ์€ ์„œ๋น„์Šค๊ฐ€ ์„ฑ์žฅํ•˜๋ฉด์„œ ์ธ์›์ด ๋Š˜์–ด๋‚ฌ์„ ๋•Œ ํšจ์œจ์ ์œผ๋กœ ํ˜‘์—…ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ข‹์€ ์˜ํ–ฅ์„ ์ฃผ์—ˆ์ง€๋งŒ ์„œ๋น„์Šค๊ฐ€ ์•ˆ์ •ํ™”๋˜๊ธฐ๊นŒ์ง€๋Š” ๋ฐœ์ƒํ•œ ๋ฌธ์ œ๋“ค์„ ํ™•์ธํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ MSA ํ™˜๊ฒฝ์—์„œ ํšจ์œจ์ ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ €ํฌ๊ฐ€ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ๋“ค์„ ๊ณต์œ ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

Armeria์˜ ์„œํ‚ท ๋ธŒ๋ ˆ์ด์ปค ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š”. LINE์—์„œ OpenChat ์„œ๋น„์Šค์˜ ๋ฐฑ์—”๋“œ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋Š” ์ฃผ์Šนํ™˜์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ ์˜ˆ์ œ์™€ ํ•จ๊ป˜ Armeria์˜ ์„œํ‚ท ๋ธŒ๋ ˆ์ด์ปค ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด ๋ณด๋ฉฐ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์„ ๊ณต์œ ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

Armeria๋กœ Reactive Streams์™€ ๋†€์ž! – 2

์•ˆ๋…•ํ•˜์„ธ์š”. LINE+์—์„œ ์˜คํ”ˆ์†Œ์Šค Armeria์™€ Central Dogma๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋Š” ์—„์ตํ›ˆ์ž…๋‹ˆ๋‹ค. ์ง€๋‚œ ํฌ์ŠคํŒ…์—์„  Reactive Streams์˜ ๊ฐœ๋…์„ ์‚ดํŽด๋ณด์•˜๋Š”๋ฐ์š”. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„  Reactive Streams๋ฅผ ์˜คํ”ˆ ์†Œ์Šค ๋น„๋™๊ธฐ HTTP/2, RPC, REST ํด๋ผ์ด์–ธํŠธ/์„œ๋ฒ„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ Armeria์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ณต์œ ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

Armeria๋กœ Reactive Streams์™€ ๋†€์ž! – 1

LINE+์—์„œ ์˜คํ”ˆ์†Œ์Šค Armeria์™€ Central Dogma๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋Š” ์—„์ตํ›ˆ์ž…๋‹ˆ๋‹ค. ์ €๋Š” Reactive Streams์˜ ๊ฐœ๋…๊ณผ, Reactive Streams๋ฅผ ์˜คํ”ˆ ์†Œ์Šค ๋น„๋™๊ธฐ HTTP/2, RPC, REST ํด๋ผ์ด์–ธํŠธ/์„œ๋ฒ„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ Armeria์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ณต์œ ํ•˜๋ ค๊ณ  ํ•˜๋Š”๋ฐ์š”. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„  ๋จผ์ € Reactive Streams์˜ ๊ฐœ๋…์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Java์™€ Armeria๋กœ ๊ธฐ๋ณธ์ ์ธ ์›น ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š”. LINE Developer Relations ํŒ€์˜ Developer Advocate ์œค์ธ์„ฑ์ž…๋‹ˆ๋‹ค. LINE์€ Armeria, Central Dogma ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ์˜คํ”ˆ์†Œ์Šค๋ฅผ ์ฃผ๋„์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜์€ Armeria์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ณ , Armeria๋ฅผ ์‚ฌ์šฉํ•ด ๊ธฐ๋ณธ์ ์ธ ์›น ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•ด๋ณด๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์€ Java์™€ IntelliJ๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค์น˜๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ „์ œ๋กœ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.