๐’๐ญ๐ฎ๐๐ฒ

์ด ๊ธ€์€ ๋””์Šค์ฝ”๋“œ ๋ธ”๋กœ๊ทธ์˜ 'How Discord Scaled Elixir to 5,000,000 Concurrent Users?'๋ฅผ ์ฝ๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ์ €์˜ ์ดํ•ด๋ฅผ ์œ„ํ•ด ์›๋ฌธ์—๋Š” ์—†๋Š” ์ถ”๊ฐ€์ ์ธ ๋‚ด์šฉ์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ž˜๋ชป ํ•ด์„ํ•œ ๋ถ€๋ถ„์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 0. ๋“ค์–ด๊ฐ€๊ธฐ์— ์•ž์„œ๋””์Šค์ฝ”๋“œ๋ž€?์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ… ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜. ์Œ์„ฑ ์ฑ„ํŒ…, ํ…์ŠคํŠธ ์ฑ„ํŒ… ๋“ฑ์ด ๊ฐ€๋Šฅ๋†’์€ ๋™์‹œ์„ฑ์ด ํ•„์š”ํ•œ ์‹ค์‹œ๊ฐ„ ์‹œ์Šคํ…œ โ†’ Elixir์™€ Erlang VM์„ ์„ ํƒElixir์™€ Erlang VM์ด๋ž€?Elixir(์—˜๋ฆญ์„œ): ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ์ผ์ข…์œผ๋กœ, ๋Œ€์šฉ๋Ÿ‰ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์„ ๋งŒ๋“œ๋Š” ๋ฐ ์ ํ•ฉํ•˜๋‹ค.Elixir๋Š” ๋™์‹œ์„ฑ์„ ์ง€์›ํ•˜๋ฉฐ, ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ์‹œ์Šคํ…œ์ด ๋ฉˆ์ถ”์ง€ ์•Š๊ณ  ๋™์ž‘ํ•œ๋‹ค.Java๊ฐ€ JVM ์œ„์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, Elixir๋Š” Erlang V..
์ด๋ฒˆ ์ฃผ์—๋Š” ์Šคํ„ฐ๋””์—์„œ Spring ๊ด€๋ จ ๋ชจ์˜๋ฉด์ ‘์„ ์ง„ํ–‰ํ–ˆ๋‹ค. ํŒ€ ๊ณต์šฉ ๋…ธ์…˜์—๋„ ์ •๋ฆฌ๋˜์–ด ์žˆ๊ธด ํ•˜์ง€๋งŒ, ๋‹ต๋ณ€์ž๋ณ„๋กœ ์ •๋ฆฌ๋˜์–ด ์žˆ์–ด์„œ ์Šคํ„ฐ๋””์›๋“ค๊ณผ ๋‚ด๊ฐ€ ๋ฐ›์•˜๋˜ ์งˆ๋ฌธ๊ณผ ๊ทธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์„ ์ฃผ์ œ๋ณ„๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ•ด๋ดค๋‹ค :) ํ‹€๋ฆฐ ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์ง€์ ์€ ์–ธ์ œ๋‚˜ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค๐Ÿซถ 1. DI / IoC ๐Ÿ‘‰ DI๋ž€? Dependency Injection์˜ ์•ฝ์ž๋กœ, ์˜์กด๊ด€๊ณ„ ์ฃผ์ž…์„ ์˜๋ฏธํ•œ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ์ฃผ์ž…๋ฐ›์•„์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ DI๋ผ ํ•œ๋‹ค. ๐Ÿ‘‰ ์˜์กด๊ด€๊ณ„ ์ฃผ์ž…์˜ ์žฅ์  ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ์˜ ์ˆ˜์ • ์—†์ด ๊ตฌํ˜„์ฒด๋ฅผ ๊ฐˆ์•„๋ผ์šธ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ฝ”๋“œ์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ์ฆ๊ฐ€ํ•œ๋‹ค. ๐Ÿ‘‰ Spring์—์„œ ์˜์กด๊ด€๊ณ„๋ฅผ ์ฃผ์ž…ํ•˜๋Š” 3๊ฐ€์ง€ ๋ฐฉ๋ฒ• 1. ์ƒ์„ฑ์ž ์ฃผ์ž…: ์ƒ์„ฑ์ž๋ฅผ ์ด์šฉํ•ด์„œ ์˜์กด๊ด€๊ณ„๋ฅผ ์ฃผ์ž…ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ, ๊ตฌํ˜„์ฒด๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•˜..