2017๋
์๋ Alfa-Bank ํฌ์์ฌ์
์ ๊ฑฐ๋ํต์ฌ ๊ฐ๋ฐ ๊ณต๋ชจ์ ์์ ์ฐ์นํ์ฌ ์์
์ ์์ํ์์ต๋๋ค. (HighLoad++ 2018์์ ํฌ์์ฌ์
์ ํต์ฌ์ ๋ํ ๋ณด๊ณ ์ ๋ฐํ)
๊ฐ๋ฐ ๊ณผ์ ์์ ์์คํ
์ ๋ฐ์ ํ๊ณ ๊ธฐ๋ฅ์ ํ๋ํ์ผ๋ฉฐ ์ด๋ ์์ ์์ ์ฐ๋ฆฌ๋ ์๊ฒฉํ๊ฒ ์ ์๋ ์์
๋ฒ์๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ์์ฉ ํ๋ก๊ทธ๋จ ์ํํธ์จ์ด ์ด์์ ๊ฒ์ ๊ฒฐ์ ํํ๊ณ ์๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ฑ๊ณตํ์ต๋๋ค. ์๊ตฌ ์คํ ๋ฆฌ์ง๋ฅผ ๊ฐ์ถ ๋ถ์ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ถํ๊ธฐ ์ํ ์์คํ
. ์ฐ๋ฆฌ๊ฐ ์ป์ ๊ฒฝํ์ ์๋ก์ด ์ ํ์ ๊ธฐ์ด๋ฅผ ํ์ฑํ์ต๋๋ค.
์ ๋ TDG ์ํคํ
์ฒ์ ๊ฐ๋ฐ ๊ณผ์ ์์ ์ฐ๋ฆฌ๊ฐ ์ฐพ์๋ธ ์๋ฃจ์
์ ๋ํด ์ด์ผ๊ธฐํ๊ณ , ์ฃผ์ ๊ธฐ๋ฅ์ ์๊ฐํ๊ณ , ์ฐ๋ฆฌ ์ ํ์ด ์ด๋ป๊ฒ ์์ ํ ์๋ฃจ์
๊ตฌ์ถ์ ๊ธฐ์ด๊ฐ ๋ ์ ์๋์ง ๋ณด์ฌ์ฃผ๊ณ ์ถ์ต๋๋ค.
๊ตฌ์กฐ์ ์ผ๋ก ์ฐ๋ฆฌ๋ ์์คํ
์ ์ฌ๋ฌ ๋ถ๋ถ์ผ๋ก ๋๋์์ต๋๋ค. ์ญํ , ๊ฐ๊ฐ์ ํน์ ๋ฒ์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ญํ ์ ํฉ๋๋ค. ์คํ ์ค์ธ ๋จ์ผ ์ ํ๋ฆฌ์ผ์ด์
์ธ์คํด์ค๋ ํ๋ ์ด์์ ์ญํ ์ ํ์ ๊ตฌํํฉ๋๋ค. ํด๋ฌ์คํฐ์๋ ๋์ผํ ์ ํ์ ์ฌ๋ฌ ์ญํ ์ด ์์ ์ ์์ต๋๋ค.
์ปค๋ฅํฐ
์ปค๋ฅํฐ๋ ์ธ๋ถ ์ธ๊ณ์์ ํต์ ์ ๋ด๋นํฉ๋๋ค. ๊ทธ ์๋ฌด๋ ์์ฒญ์ ์๋ฝํ๊ณ ๊ตฌ๋ฌธ ๋ถ์ํ ๋ค์, ์ด๊ฒ์ด ์ฑ๊ณตํ๋ฉด ์ฒ๋ฆฌํ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅ ํ๋ก์ธ์๋ก ๋ณด๋ด๋ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ๋ HTTP, SOAP, Kafka, FIX ํ์์ ์ง์ํฉ๋๋ค. ์ํคํ ์ฒ๋ฅผ ์ฌ์ฉํ๋ฉด IBM MQ์ ๋ํ ์ง์์ด ๊ณง ์ ๊ณต๋ ์์ ์ด๋ฏ๋ก ์๋ก์ด ํ์์ ๋ํ ์ง์์ ๊ฐ๋จํ ์ถ๊ฐํ ์ ์์ต๋๋ค. ์์ฒญ ๊ตฌ๋ฌธ ๋ถ์์ ์คํจํ๋ฉด ์ปค๋ฅํฐ๋ ์ค๋ฅ๋ฅผ ๋ฐํํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ถ๊ฐ ์ฒ๋ฆฌ ์ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋๋ผ๋ ์์ฒญ์ด ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌ๋์๋ค๊ณ ์๋ตํฉ๋๋ค. ์ด๋ ์์ฒญ์ ๋ฐ๋ณตํ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด๊ฑฐ๋ ๋ฐ๋๋ก ๋๋ฌด ์ง์์ ์ผ๋ก ์ํํ๋ ์์คํ ๊ณผ ์์ ํ๊ธฐ ์ํด ํน๋ณํ ์ํ๋์์ต๋๋ค. ๋ฐ์ดํฐ ์์ค์ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ณต๊ตฌ ๋๊ธฐ์ด์ด ์ฌ์ฉ๋ฉ๋๋ค. ๊ฐ์ฒด๋ ๋จผ์ ๊ฐ์ฒด์ ๋ค์ด๊ฐ๊ณ ์ฑ๊ณต์ ์ธ ์ฒ๋ฆฌ๊ฐ ๊ฐ์ฒด์์ ์ ๊ฑฐ๋ ํ์๋ง ๊ฐ๋ฅํฉ๋๋ค. ๊ด๋ฆฌ์๋ ์๋ฆฌ ๋๊ธฐ์ด์ ๋จ์ ์๋ ๊ฐ์ฒด์ ๋ํ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ์ ์ ์์ผ๋ฉฐ, ์ํํธ์จ์ด ์ค๋ฅ๋ ํ๋์จ์ด ์ค๋ฅ๋ฅผ ์ ๊ฑฐํ ํ ๋ค์ ์๋ํ ์ ์์ต๋๋ค.
์ ๋ ฅ ํ๋ก์ธ์
์ ๋ ฅ ํ๋ก์ธ์๋ ์์ ๋ ๋ฐ์ดํฐ๋ฅผ ํน์ฑ์ ๋ฐ๋ผ ๋ถ๋ฅํ๊ณ ์ ์ ํ ํ๋ก์ธ์๋ฅผ ํธ์ถํฉ๋๋ค. ํธ๋ค๋ฌ๋ ์๋๋ฐ์ค์์ ์คํ๋๋ Lua ์ฝ๋์ด๋ฏ๋ก ์์คํ ๊ธฐ๋ฅ์ ์ํฅ์ ์ค ์ ์์ต๋๋ค. ์ด ๋จ๊ณ์์๋ ๋ฐ์ดํฐ๋ฅผ ํ์ํ ํ์์ผ๋ก ์ค์ผ ์ ์์ผ๋ฉฐ, ํ์ํ ๊ฒฝ์ฐ ํ์ํ ๋ ผ๋ฆฌ๋ฅผ ๊ตฌํํ ์ ์๋ ์์์ ์์ ์์ ์ ์์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, Tarantool Data Grid๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋ MDM(๋ง์คํฐ ๋ฐ์ดํฐ ๊ด๋ฆฌ) ์ ํ์์๋ ์ ์ฌ์ฉ์๋ฅผ ์ถ๊ฐํ ๋ ์์ฒญ ์ฒ๋ฆฌ ์๋๋ฅผ ๋ฆ์ถ์ง ์๊ธฐ ์ํด ๊ณจ๋ ๋ ์ฝ๋ ์์ฑ์ ๋ณ๋์ ์์ ์ผ๋ก ์์ํฉ๋๋ค. ์๋๋ฐ์ค๋ ๋ฐ์ดํฐ ์ฝ๊ธฐ, ๋ณ๊ฒฝ ๋ฐ ์ถ๊ฐ์ ๋ํ ์์ฒญ์ ์ง์ํ๊ณ , ์ ์ฅ์ ์ ํ์ ๋ชจ๋ ์ญํ ๊ณผ ๊ฒฐ๊ณผ ์ง๊ณ(๋งต/๊ฐ์)์ ๋ํด ์ผ๋ถ ๊ธฐ๋ฅ์ ์ํํ ์ ์๋๋ก ํด์ค๋๋ค.
ํธ๋ค๋ฌ๋ ํ์ผ๋ก ์ค๋ช ํ ์ ์์ต๋๋ค.
sum.lua
local x, y = unpack(...)
return x + y
๊ทธ๋ฐ ๋ค์ ๊ตฌ์ฑ์์ ์ ์ธํฉ๋๋ค.
functions:
sum: { __file: sum.lua }
์ ๋ฃจ์์ธ๊ฐ? Lua๋ ๋งค์ฐ ๊ฐ๋จํ ์ธ์ด์ ๋๋ค. ์ฐ๋ฆฌ์ ๊ฒฝํ์ ๋ฐ๋ฅด๋ฉด ์ฌ๋๋ค์ ๋ฌธ์ ๋ฅผ ์๊ฒ ๋ ์ง ๋ช ์๊ฐ ํ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์์ํฉ๋๋ค. ์ด๋ค์ ์ ๋ฌธ ๊ฐ๋ฐ์๋ฟ๋ง ์๋๋ผ ์๋ฅผ ๋ค์ด ๋ถ์๊ฐ์ ๋๋ค. ๊ฒ๋ค๊ฐ jit ์ปดํ์ผ๋ฌ ๋๋ถ์ Lua๋ ๋งค์ฐ ๋น ๋ฅด๊ฒ ์คํ๋ฉ๋๋ค.
์คํ ๋ฆฌ์ง
์คํ ๋ฆฌ์ง๋ ์๊ตฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค. ์ ์ฅํ๊ธฐ ์ ์ ๋ฐ์ดํฐ ์คํค๋ง์ ๋ํด ๋ฐ์ดํฐ์ ์ ํจ์ฑ์ ๊ฒ์ฌํฉ๋๋ค. ํ๋ก๋ฅผ ์ค๋ช
ํ๊ธฐ ์ํด ํ์ฅ ํ์์ ์ฌ์ฉํฉ๋๋ค.
{
"name": "User",
"type": "record",
"logicalType": "Aggregate",
"fields": [
{ "name": "id", "type": "string"},
{"name": "first_name", "type": "string"},
{"name": "last_name", "type": "string"}
],
"indexes": ["id"]
}
์ด๋ฌํ ์ค๋ช
์ ๋ฐํ์ผ๋ก Tarantula DBMS์ ๋ํ DDL(Data Definition Language)์ด ์๋ ์์ฑ๋๋ฉฐ,
๋น๋๊ธฐ์ ๋ฐ์ดํฐ ๋ณต์ ๊ฐ ์ง์๋ฉ๋๋ค(๋๊ธฐ์ ์ถ๊ฐ ๊ณํ ์์).
์ถ๋ ฅ ํ๋ก์ธ์
๋๋ก๋ ์๋ก์ด ๋ฐ์ดํฐ์ ๋์ฐฉ์ ์ธ๋ถ ์๋น์์๊ฒ ์๋ ค์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ, ์ด๋ฅผ ์ํด ์ถ๋ ฅ ํ๋ก์ธ์ ์ญํ ์ด ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ํ ํด๋น ํธ๋ค๋ฌ์ ์ ๋ฌ(์: ์๋น์๊ฐ ์๊ตฌํ๋ ํ์์ผ๋ก ๊ฐ์ ธ์ค๊ธฐ)ํ ๋ค์ ์ ์ก์ ์ํด ์ปค๋ฅํฐ์ ์ ๋ฌํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์์๋ ์๋ฆฌ ๋๊ธฐ์ด๋ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฌด๋ ๊ฐ์ฒด๋ฅผ ์๋ฝํ์ง ์์ผ๋ฉด ๊ด๋ฆฌ์๋ ๋์ค์ ๋ค์ ์๋ํ ์ ์์ต๋๋ค.
์ค์ผ์ผ๋ง
์ปค๋ฅํฐ, ์
๋ ฅ ํ๋ก์ธ์ ๋ฐ ์ถ๋ ฅ ํ๋ก์ธ์ ์ญํ ์ ์ํ ๋น์ ์ฅ์ด๋ฏ๋ก ์ํ๋ ์ญํ ์ ํ์ด ํ์ฑํ๋ ์ ์ ํ๋ฆฌ์ผ์ด์
์ธ์คํด์ค๋ฅผ ์ถ๊ฐํ๊ธฐ๋ง ํ๋ฉด ์์คํ
์ ์ํ์ผ๋ก ํ์ฅํ ์ ์์ต๋๋ค. ์คํ ๋ฆฌ์ง๋ ์ํ ํ์ฅ์ ์ฌ์ฉ๋ฉ๋๋ค.
๋ฐ์ดํฐ ์์ฑ
๊ฐ์ฒด๋ ๋งค์ฐ ํด ์ ์์ผ๋ฉฐ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ํฌํจํ ์ ์์ต๋๋ค. ํ๋์ ๊ฐ์ ๋ฒํท์ ๋ชจ๋ ์ข ์์ฑ์ด ํฌํจ๋ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ์ฌ ๋ฐ์ดํฐ ์ถ๊ฐ ๋ฐ ์ ๋ฐ์ดํธ์ ์์์ฑ์ ๋ณด์ฅํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๊ฐ์ฒด๊ฐ ์ฌ๋ฌ ๋ฌผ๋ฆฌ์ ์๋ฒ์ "ํ์ฐ"๋๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
๋ฒ์ ๊ด๋ฆฌ๊ฐ ์ง์๋ฉ๋๋ค. ๊ฐ์ฒด๋ฅผ ์ ๋ฐ์ดํธํ ๋๋ง๋ค ์ ๋ฒ์ ์ด ์์ฑ๋๋ฉฐ, ์ธ์ ๋ ์ง ์๊ฐ ์กฐ๊ฐ์ ๊ฐ์ ธ์ ๋น์ ์ธ์์ด ์ด๋ป๊ฒ ๋ณด์๋์ง ํ์ธํ ์ ์์ต๋๋ค. ๊ธด ๊ธฐ๋ก์ด ํ์ํ์ง ์์ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ ๋ฒ์ ์๋ฅผ ์ ํํ๊ฑฐ๋ ์ต์ ๋ฒ์ ๋ง ์ ์ฅํ ์๋ ์์ต๋๋ค. ์ฆ, ํน์ ์ ํ์ ๋ํ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํํ ์ ์์ต๋๋ค. ๋ํ ๊ธฐ๋ก์ ์๊ฐ๋ณ๋ก ์ ํํ ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด 1๋ ์ด ๋์ ํน์ ์ ํ์ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ์ญ์ ํฉ๋๋ค. ๋ณด๊ด๋ ์ง์๋ฉ๋๋ค. ์ง์ ๋ ์๊ฐ๋ณด๋ค ์ค๋๋ ๊ฐ์ฒด๋ฅผ ์ธ๋ก๋ํ์ฌ ํด๋ฌ์คํฐ์ ๊ณต๊ฐ์ ํ๋ณดํ ์ ์์ต๋๋ค.
์์
ํฅ๋ฏธ๋ก์ด ๊ธฐ๋ฅ ์ค์๋ ์ผ์ ์ ๋ฐ๋ผ, ์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ๋ผ ๋๋ ์๋๋ฐ์ค์์ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ์์ ์ ์์ํ๋ ๊ธฐ๋ฅ์ด ์๋ค๋ ์ ์ ์ฃผ๋ชฉํ ๊ฐ์น๊ฐ ์์ต๋๋ค.
์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ ๋ ๋ค๋ฅธ ์ญํ ์ธ ๋ฌ๋๋ฅผ ๋ด
๋๋ค. ์ด ์ญํ ์ ์ํ ๋น์ ์ฅ์ด๋ฉฐ ํ์์ ๋ฐ๋ผ ์ด ์ญํ ์ด ์๋ ์ถ๊ฐ ์ ํ๋ฆฌ์ผ์ด์
์ธ์คํด์ค๋ฅผ ํด๋ฌ์คํฐ์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ์ฃผ์์ ์ฑ
์์ ์์
์ ์๋ฃํ๋ ๊ฒ์
๋๋ค. ์ธ๊ธํ ๋๋ก ์๋๋ฐ์ค์์ ์ ์์
์ ์์ฑํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค. ์ ์ฅ์์ ๋๊ธฐ์ด์ ์ ์ฅ๋ ๋ค์ ์คํ๊ธฐ์์ ์คํ๋ฉ๋๋ค. ์ด๋ฌํ ์ ํ์ ์์
์ ์์
์ด๋ผ๊ณ ํฉ๋๋ค. ๋ํ ์์
์ด๋ผ๋ ์์
์ ํ๋ ์์ต๋๋ค. ์ด๋ ์ผ์ ์ ๋ฐ๋ผ(cron ๊ตฌ๋ฌธ ์ฌ์ฉ) ๋๋ ์์ฒญ ์ ์คํ๋๋ ์ฌ์ฉ์ ์ ์ ์์
์
๋๋ค. ์ด๋ฌํ ์์
์ ์์ํ๊ณ ์ถ์ ํ๊ธฐ ์ํด ํธ๋ฆฌํ ์์
๊ด๋ฆฌ์๊ฐ ์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ค๋ฉด ์ค์ผ์ค๋ฌ ์ญํ ์ ํ์ฑํํด์ผ ํฉ๋๋ค. ์ด ์ญํ ์๋ ์ํ๊ฐ ์์ผ๋ฏ๋ก ํ์ฅํ ์๋ ์์ง๋ง ํ์๋ ์๋๋๋ค. ๋์์ ๋ค๋ฅธ ๋ชจ๋ ์ญํ ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ง์คํฐ๊ฐ ๊ฐ์๊ธฐ ๊ฑฐ๋ถํ๋ฉด ์๋์ ์์ํ๋ ๋ณต์ ๋ณธ์ ๊ฐ์ง ์ ์์ต๋๋ค.
๋ก๊ฑฐ
๋ ๋ค๋ฅธ ์ญํ ์ ๋ก๊ฑฐ(logger)๋ผ๊ณ ํฉ๋๋ค. ํด๋ฌ์คํฐ์ ๋ชจ๋ ๊ตฌ์ฑ์์ผ๋ก๋ถํฐ ๋ก๊ทธ๋ฅผ ์์งํ๊ณ ์น ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ด๋ฅผ ์ ๋ก๋ํ๊ณ ๋ณผ ์ ์๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
์๋น์ค
์์คํ ์ ํตํด ์๋น์ค ์์ฑ์ด ์ฌ์์ง๋ค๋ ์ ์ ์ธ๊ธํ ๊ฐ์น๊ฐ ์์ต๋๋ค. ๊ตฌ์ฑ ํ์ผ์์ ์๋๋ฐ์ค์์ ์คํ๋๋ ์ฌ์ฉ์ ์์ฑ ํธ๋ค๋ฌ๋ก ์ ์ก๋๋ ์์ฒญ์ ์ง์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ด ์ฒ๋ฆฌ๊ธฐ์์๋ ์ผ์ข ์ ๋ถ์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ ์ ์์ต๋๋ค.
์๋น์ค๋ ๊ตฌ์ฑ ํ์ผ์ ์ค๋ช ๋์ด ์์ต๋๋ค.
services:
sum:
doc: "adds two numbers"
function: sum
return_type: int
args:
x: int
y: int
GraphQL API๊ฐ ์๋์ผ๋ก ์์ฑ๋๊ณ ์๋น์ค๋ฅผ ํธ์ถํ ์ ์๊ฒ ๋ฉ๋๋ค.
query {
sum(x: 1, y: 2)
}
๊ทธ๋ฌ๋ฉด ํธ๋ค๋ฌ๊ฐ ํธ์ถ๋ฉ๋๋ค. sum
๊ทธ๋ฌ๋ฉด ๊ฒฐ๊ณผ๊ฐ ๋ฐํ๋ฉ๋๋ค.
3
์ฟผ๋ฆฌ ํ๋กํ์ผ๋ง ๋ฐ ์ธก์ ํญ๋ชฉ
์์คํ ์๋ ๋ฐ ์์ฒญ ํ๋กํ์ผ๋ง์ ์ดํดํ๊ธฐ ์ํด OpenTracing ํ๋กํ ์ฝ์ ๋ํ ์ง์์ ๊ตฌํํ์ต๋๋ค. ์์คํ ์ ํ์์ ๋ฐ๋ผ ์ด ํ๋กํ ์ฝ์ ์ง์ํ๋ ๋๊ตฌ(์: Zipkin)์ ์ ๋ณด๋ฅผ ๋ณด๋ผ ์ ์์ผ๋ฉฐ ์ด๋ฅผ ํตํด ์์ฒญ์ด ์ด๋ป๊ฒ ์คํ๋์๋์ง ์ดํดํ ์ ์์ต๋๋ค.
๋น์ฐํ ์์คํ
์ Prometheus๋ฅผ ์ฌ์ฉํ์ฌ ์์งํ๊ณ Grafana๋ฅผ ์ฌ์ฉํ์ฌ ์๊ฐํํ ์ ์๋ ๋ด๋ถ ์ธก์ ํญ๋ชฉ์ ์ ๊ณตํฉ๋๋ค.
๋ฐฐํฌ
Tarantool Data Grid๋ ๋ฐฐํฌ ๋๋ Ansible์ ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ์ฌ RPM ํจํค์ง ๋๋ ์์นด์ด๋ธ์์ ๋ฐฐํฌํ ์ ์์ผ๋ฉฐ Kubernetes(
๋น์ฆ๋์ค ๋ก์ง(๊ตฌ์ฑ, ํธ๋ค๋ฌ)์ ๊ตฌํํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ UI๋ฅผ ํตํด ๋๋ ์ฐ๋ฆฌ๊ฐ ์ ๊ณตํ๋ API๋ฅผ ํตํด ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ ์์นด์ด๋ธ ํํ๋ก ๋ฐฐํฌ๋ Tarantool Data Grid ํด๋ฌ์คํฐ์ ๋ก๋๋ฉ๋๋ค.
์ํ ์ ํ๋ฆฌ์ผ์ด์
Tarantool Data Grid๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ค ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๊น? ์ค์ ๋ก ๋๋ถ๋ถ์ ๋น์ฆ๋์ค ์์ ์ ๋ฐ์ดํฐ ํ๋ฆ์ ์ฒ๋ฆฌ, ์ ์ฅ ๋ฐ ์ก์ธ์ค์ ์ด๋ ์ ๋ ๊ด๋ จ๋์ด ์์ต๋๋ค. ๋ฐ๋ผ์ ์์ ํ๊ฒ ์ ์ฅํ๊ณ ์ก์ธ์คํด์ผ ํ๋ ๋๊ท๋ชจ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ด ์๋ ๊ฒฝ์ฐ ๋น์ฌ ์ ํ์ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ ์๊ฐ์ ๋ง์ด ์ ์ฝํ๊ณ ๋น์ฆ๋์ค ๋ ผ๋ฆฌ์ ์ง์คํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์ฐ๋ฆฌ๋ ๋ถ๋์ฐ ์์ฅ์ ๋ํ ์ ๋ณด๋ฅผ ์์งํ์ฌ ๋ฏธ๋์ ์ต๊ณ ์ ์ ์์ ๋ํ ์ ๋ณด๋ฅผ ์ป์ ์ ์๊ธฐ๋ฅผ ์ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ ๋ค์ ์์ ์ ๊ฐ์กฐํ๊ฒ ์ต๋๋ค.
- ์คํ ์์ค์์ ์ ๋ณด๋ฅผ ์์งํ๋ ๋ก๋ด์ด ์ฐ๋ฆฌ์ ๋ฐ์ดํฐ ์์ค๊ฐ ๋ฉ๋๋ค. ๊ธฐ์ฑ ์๋ฃจ์ ์ ์ฌ์ฉํ๊ฑฐ๋ ์ด๋ค ์ธ์ด๋ก๋ ์ฝ๋๋ฅผ ์์ฑํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
- ๋ค์์ผ๋ก Tarantool Data Grid๋ ๋ฐ์ดํฐ๋ฅผ ์๋ฝํ๊ณ ์ ์ฅํฉ๋๋ค. ๋ค์ํ ์์ค์ ๋ฐ์ดํฐ ํ์์ด ๋ค๋ฅธ ๊ฒฝ์ฐ Lua์์ ๋จ์ผ ํ์์ผ๋ก ๋ณํ์ ์ํํ๋ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์ฌ์ ์ฒ๋ฆฌ ๋จ๊ณ์์๋ ์๋ฅผ ๋ค์ด ์ค๋ณต ์ ์์ ํํฐ๋งํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์์ฅ์์ ์ผํ๋ ์์ด์ ํธ์ ๋ํ ์ ๋ณด๋ฅผ ์ถ๊ฐ๋ก ์ ๋ฐ์ดํธํ ์๋ ์์ต๋๋ค.
- ์ด์ ํด๋ฌ์คํฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฑ์ฐ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ ํํ ์ ์๋ ํ์ฅ ๊ฐ๋ฅํ ์๋ฃจ์ ์ด ์ด๋ฏธ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์๋ก์ด ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๊ณ ํ๋ฃจ์ ๊ฐ์ฅ ์ ๋ฆฌํ ์ ์์ ์ ๊ณตํ๋ ์๋น์ค๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์ด๋ฅผ ์ํด์๋ ๊ตฌ์ฑ ํ์ผ์ ๋ช ์ค๊ณผ ์ฝ๊ฐ์ Lua ์ฝ๋๊ฐ ํ์ํฉ๋๋ค.
๋ค์์ ๋ญ์ง?
์ฐ๋ฆฌ์ ์ฐ์ ์์๋ ๋ค์์ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ์ ์ฉ์ด์ฑ์ ํฅ์์ํค๋ ๊ฒ์
๋๋ค.
์์ ๋ฌธ์ ์๋ ๋ง์ ๊ด์ฌ์ ๊ธฐ์ธ์ด๊ณ ์์ต๋๋ค. ํ์ฌ ๋น์ฌ๋ ๊ฐ์ธ์ ๋ณด์์คํ
๋ฐ ์ ๋ถ์ ๋ณด์์คํ
์ ์ฌ์ฉ๋๋ ์ํํธ์จ์ด ์ ํ์ ๋ํ ๋์ ๋ณด์ ์์ค์ ํ์ธํ๊ณ ์ธ์ฆ ์๊ตฌ์ฌํญ์ ์ถฉ์กฑํ๊ธฐ ์ํด ๋ฌ์์ FSTEC์ผ๋ก๋ถํฐ ์ธ์ฆ์ ์งํ ์ค์
๋๋ค.
์ถ์ฒ : habr.com