Armeria

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์˜ ๊ฐœ๋…์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

GitHub Contributions ๊ทธ๋ž˜ํ”„๋ฅผ ํ‘ธ๋ฆ‡ํ‘ธ๋ฆ‡ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด๋ณด์•„์š”(feat. Armeria Sprint)

์•ˆ๋…•ํ•˜์„ธ์š”. ํ˜น์‹œ ๋…์ž๋ถ„๋“ค ์ค‘์—์„œ GitHub contribution graph์— ๊ฐ€๋ญ„์ด ์˜จ ๋ถ„๋“ค์ด ๊ณ„์‹ ๊ฐ€์š”? ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๊ฐ€๋ญ„์„ ๋ฌผ๋Ÿฌ๊ฐ€๊ฒŒ ํ•  Armeria Sprint ํ–‰์‚ฌ๋ฅผ ์†Œ๊ฐœํ•˜๊ณ  ๊ทธ ํ›„๊ธฐ๋ฅผ ๊ณต์œ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์˜คํ”ˆ์†Œ์Šค Armeria์˜ ๊ธฐ์—ฌ์ž๋ฅผ ์œ„ํ•œ ์ด๋ฒคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค

์•ˆ๋…•ํ•˜์„ธ์š”. LINE์—์„œ ์˜คํ”ˆ์†Œ์Šค๋ฅผ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ๋Š” ์ด์„œ์—ฐ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” LINE์—์„œ ์ด๋ฒˆ์— ์ฒ˜์Œ ์‹œํ–‰ํ•œ ์ด๋ฒคํŠธ์ธ ‘Armeria contributor reward’๋ฅผ ์†Œ๊ฐœํ•˜๊ณ  ๊ทธ ํ›„๊ธฐ๋ฅผ ๊ณต์œ ๋“œ๋ฆฌ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

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

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

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

Armeria ์˜คํ”ˆ์†Œ์Šคํ™” ์ด์•ผ๊ธฐ

Armeria๋Š” Java 8 ๋ฐ Netty ์ƒ์— ๋น„๋™๊ธฐ RPC/API ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. LINE์€ ์ž‘๋…„ 11์›” Armeria๋ฅผ Apache License 2.0์ด ์ ์šฉ๋˜๋Š” ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋กœ ๋ฐฐํฌํ–ˆ์Šต๋‹ˆ๋‹ค. Armeria๋Š” HTTP/2๋ฅผ ์„ธ์…˜ ๋ ˆ์ด์–ด ํ”„๋กœํ† ์ฝœ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ณ ์„ฑ๋Šฅ์˜ ๋น„๋™๊ธฐ Thrift ํด๋ผ์ด์–ธํŠธ/์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“  ํ”„๋กœ์ ํŠธ์ด์ง€๋งŒ, ๊ธฐ๋ณธ์ ์œผ๋กœ ํ”„๋กœํ† ์ฝœ์˜ ์ œ์•ฝ์„ ๋ฐ›์ง€ ์•Š์œผ๋ฉฐ ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค. (์˜ˆ๋ฅผ ๋“ค์–ด, HTTP/2๋ฅผ ํ†ตํ•ด ์ •์  ํŒŒ์ผ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋™์‹œ์— Java EE ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

์ด ๋ธ”๋กœ๊ทธ์—์„œ๋Š” ๊ธฐ์ˆ ์  ์ธก๋ฉด์— ์ดˆ์ ์„ ๋งž์ถ”๊ธฐ ๋ณด๋‹ค๋Š” ๋‚ด๋ถ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์˜คํ”ˆ์†Œ์Šค๋กœ ๋งŒ๋“ค์–ด๊ฐ€๋ฉด์„œ ๊ฒช์—ˆ๋˜ ๊ณผ์ •์„ ์†Œ๊ฐœํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. Armeria์˜ ๊ธฐ์ˆ ์  ๋‚ด์šฉ์„ ์•Œ๊ณ  ์‹ถ์œผ์‹œ๋‹ค๋ฉด ์ง€๋‚œ 2์›” ๊ฐœ๋ฐœ์ž๋“ค์„ ๋Œ€์ƒ์œผ๋กœ ๊ฐœ์ตœํ•œ ์ œ14ํšŒ LINE Developer Meetup์—์„œ ๋ฐœํ‘œํ•œ ์Šฌ๋ผ์ด๋“œ ์ž๋ฃŒ๋ฅผ ์ฐธ๊ณ  ๋ฐ”๋ž๋‹ˆ๋‹ค.