PayPal์€ JunoDB DBMS ์ฝ”๋“œ๋ฅผ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค.

PayPal์€ ํ‚ค-๊ฐ’ ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๋‚ด๊ฒฐํ•จ์„ฑ DBMS์ธ JunoDB์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ณต๊ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์‹œ์Šคํ…œ์€ ์›๋ž˜ ๋†’์€ ๋ณด์•ˆ, ์ˆ˜ํ‰ ํ™•์žฅ์„ฑ, ๋‚ด๊ฒฐํ•จ์„ฑ ๋ฐ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์ง€์—ฐ์„ ์—ผ๋‘์— ๋‘๊ณ  ์ˆ˜์‹ญ๋งŒ ๊ฐœ์˜ ๋™์‹œ ์—ฐ๊ฒฐ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์—ผ๋‘์— ๋‘๊ณ  ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. PayPal์—์„œ๋Š” ์‚ฌ์šฉ์ž ๋กœ๊ทธ์ธ๋ถ€ํ„ฐ ๊ธˆ์œต ๊ฑฐ๋ž˜ ์ฒ˜๋ฆฌ๊นŒ์ง€ ๊ฑฐ์˜ ๋ชจ๋“  ์„œ๋น„์Šค๊ฐ€ JunoDB์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ๋Š” Go(Java ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ Apache 2.0 ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ๊ฐœ๋ฐœ์—์„œ๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์ˆ˜์ •, ๊ฐœ์„  ๋ฐ ๋ณ€๊ฒฝ์ด ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.

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

PayPal์€ JunoDB DBMS ์ฝ”๋“œ๋ฅผ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค.

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

PayPal์€ JunoDB DBMS ์ฝ”๋“œ๋ฅผ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค.

์Šคํ† ๋ฆฌ์ง€ ๋…ธ๋“œ์—์„œ ๋ฐ์ดํ„ฐ๋Š” RocksDB ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” RAM ๋˜๋Š” ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์— ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค. ์˜๊ตฌ ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์•”ํ˜ธํ™”๋œ ํ˜•์‹์œผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค(์•”ํ˜ธํ™” ํ‚ค๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ ๊ฒฐ์ •ํ•˜๊ณ  ํ”„๋ก์‹œ ์ˆ˜์ค€์—์„œ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Œ).

PayPal์€ JunoDB DBMS ์ฝ”๋“œ๋ฅผ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•ด Java, Go ๋ฐ C++ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์šฉ API๋ฅผ ์ œ๊ณตํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ๋ถ€๋ถ„์€ ์ตœ๋Œ€ํ•œ ๋‹จ์ˆœํ™”ํ•˜๊ณ , ๋ณต์žกํ•œ ๋กœ์ง๊ณผ ์„ค์ •์€ ๊ฐ€๋Šฅํ•˜๋ฉด DBMS ์ชฝ์œผ๋กœ ์˜ฎ๊ฒผ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ์™€ ๋ฐธ๋Ÿฐ์„œ ๋˜๋Š” ํ”„๋ก์‹œ ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ์€ ์•”ํ˜ธํ™”๋œ ํ†ต์‹  ์ฑ„๋„์„ ํ†ตํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ API์˜ ์ „์ฒด ๊ธฐ๋Šฅ์„ ๋ชจ๋ฐฉํ•˜๋Š” ๋ช…๋ น์ค„ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญ์„ ๊ด€๋ฆฌํ•˜๊ณ  ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์‹œ์Šคํ…œ์€ n1-highmem-32 ํ™˜๊ฒฝ(Intel Xeon 32GHz CPU 2.30๊ฐœ, 214G RAM ๋ฐ 450G SSD ๊ธฐ๋ฐ˜ ์Šคํ† ๋ฆฌ์ง€)์—์„œ ํ˜•์„ฑ๋œ 2.5๊ฐœ์˜ ์Šคํ† ๋ฆฌ์ง€ ๋…ธ๋“œ์™€ 95๊ฐœ์˜ ํ”„๋ก์‹œ๋กœ ๊ตฌ์„ฑ๋œ ํด๋Ÿฌ์Šคํ„ฐ์™€ ๊ฐ™์ด ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ณ  ์งง์€ ๋Œ€๊ธฐ ์‹œ๊ฐ„์œผ๋กœ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. , 16๋งŒ ๊ฐœ์˜ ๋™์‹œ TLS ์—ฐ๊ฒฐ ๋ฐ ์ดˆ๋‹น 99๊ฐœ์˜ ์š”์ฒญ ํ๋ฆ„(200๊ฐœ์˜ ๋™์‹œ ์—ฐ๊ฒฐ ๋ฐ 15๊ฐœ์˜ ์š”์ฒญ ํ๋ฆ„)์„ ์ฒ˜๋ฆฌํ•  ๋•Œ 3000%์˜ ๊ฒฝ์šฐ 80ms, 6%์˜ ๊ฒฝ์šฐ 95ms๋ฅผ ์ดˆ๊ณผํ•˜์ง€ ์•Š๋Š” ๊ณ ์ • ์ง€์—ฐ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ดˆ๋‹น ์ง€์—ฐ์€ 15%์˜ ๊ฒฝ์šฐ 99ms๋ฅผ ์ดˆ๊ณผํ•˜์ง€ ์•Š์•˜๊ณ  350%์˜ ๊ฒฝ์šฐ XNUMXms๋ฅผ ์ดˆ๊ณผํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค). PayPal์˜ JunoDB ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค๋Š” ํ•˜๋ฃจ์— ์•ฝ XNUMX์–ต ๊ฑด์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

PayPal์€ JunoDB DBMS ์ฝ”๋“œ๋ฅผ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค.


์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€