SQLite ๊ธฐ๋ฐ˜ ๋ถ„์‚ฐ ๋‚ด๊ฒฐํ•จ์„ฑ DBMS์ธ rqlite 7.0 ์ถœ์‹œ

๋ถ„์‚ฐ DBMS rqlite 7.0์ด ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. SQLite๋ฅผ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋™๊ธฐํ™”๋œ ์Šคํ† ๋ฆฌ์ง€ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ž‘์—…์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. rqlite์˜ ์ฃผ์š” ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋Š” etcd ๋ฐ Consul๊ณผ ์œ ์‚ฌํ•œ ๋ถ„์‚ฐ ์žฅ์•  ํ—ˆ์šฉ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์‰ฝ๊ฒŒ ์„ค์น˜, ๋ฐฐํฌ ๋ฐ ์œ ์ง€ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ๋‹จ, ํ‚ค/๊ฐ’ ํ˜•์‹ ๋Œ€์‹  ๊ด€๊ณ„ํ˜• ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ๋Š” Go ์–ธ์–ด๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ MIT ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ๋…ธ๋“œ์˜ ๋™๊ธฐํ™”๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด Raft ํ•ฉ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. Rqlite๋Š” ๊ธฐ์กด SQLite ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ go-sqlite3 ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ๊ทธ ์œ„์— ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ , ๋‹ค๋ฅธ ๋…ธ๋“œ๋กœ ๋ณต์ œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ์„ ๋‘ ๋…ธ๋“œ ์„ ์ถœ์— ๋Œ€ํ•œ ํ•ฉ์˜ ๋‹ฌ์„ฑ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๊ณ„์ธต์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ณ€๊ฒฝ์€ ๋ฆฌ๋”๋กœ ์„ ํƒ๋œ ๋…ธ๋“œ์—์„œ๋งŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์“ฐ๊ธฐ ์ž‘์—…์ด ํฌํ•จ๋œ ์—ฐ๊ฒฐ์€ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋‹ค๋ฅธ ๋…ธ๋“œ๋กœ ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด ๊ฒฝ์šฐ ๋ฆฌ๋”์˜ ์ฃผ์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์—ฌ ์š”์ฒญ์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค(๋‹ค์Œ ๋ฒ„์ „์—์„œ๋Š” ๋ฆฌ๋”๋กœ์˜ ์ž๋™ ์š”์ฒญ ์ „๋‹ฌ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค). ์ฃผ์š” ์ดˆ์ ์€ ๋‚ด๊ฒฐํ•จ์„ฑ์ด๋ฏ€๋กœ DBMS๋Š” ์ฝ๊ธฐ ์ž‘์—…์— ์˜ํ•ด์„œ๋งŒ ํ™•์žฅ๋˜๋ฉฐ, ์“ฐ๊ธฐ ์ž‘์—…์€ ๋ณ‘๋ชฉ ํ˜„์ƒ์ž…๋‹ˆ๋‹ค. ๋‹จ์ผ ๋…ธ๋“œ์—์„œ rqlite ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Ÿฌํ•œ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‚ด๊ฒฐํ•จ์„ฑ์„ ์ œ๊ณตํ•˜์ง€ ์•Š๊ณ ๋„ HTTP๋ฅผ ํ†ตํ•ด SQLite์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ ๋…ธ๋“œ์˜ SQLite ๋ฐ์ดํ„ฐ๋Š” ํŒŒ์ผ์ด ์•„๋‹Œ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. Raft ํ”„๋กœํ† ์ฝœ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ณ„์ธต ์ˆ˜์ค€์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ชจ๋“  SQLite ๋ช…๋ น์˜ ๋กœ๊ทธ๊ฐ€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์ด ๋กœ๊ทธ๋Š” ๋ณต์ œ(๋‹ค๋ฅธ ๋…ธ๋“œ์—์„œ ์ฟผ๋ฆฌ๋ฅผ ์žฌํ˜„ํ•˜๋Š” ์ˆ˜์ค€์˜ ๋ณต์ œ), ์ƒˆ ๋…ธ๋“œ ์‹œ์ž‘ ์‹œ ๋˜๋Š” ์—ฐ๊ฒฐ ๋Š๊น€ ํ›„ ๋ณต๊ตฌ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋กœ๊ทธ ํฌ๊ธฐ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ์ž๋™ ํŒจํ‚น์ด ์‚ฌ์šฉ๋˜๋Š”๋ฐ, ์ด ํŒจํ‚น์€ ์ง€์ •๋œ ๊ฐœ์ˆ˜์˜ ๋ณ€๊ฒฝ ํ›„ ์‹œ์ž‘๋˜์–ด ์Šค๋ƒ…์ƒท์„ ์ˆ˜์ •ํ•˜๊ณ , ์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ƒˆ ๋กœ๊ทธ๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค(๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ƒํƒœ๋Š” ์Šค๋ƒ…์ƒท + ๋ˆ„์ ๋œ ๋ณ€๊ฒฝ ๋กœ๊ทธ์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค).

rqlite์˜ ํŠน์ง•:

  • ๋ณ„๋„์˜ SQLite ์„ค์น˜๊ฐ€ ํ•„์š” ์—†์ด ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‹ ์†ํ•˜๊ฒŒ ๋ณต์ œ๋œ SQL ์Šคํ† ๋ฆฌ์ง€๋ฅผ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ
  • ์ƒ์‚ฐ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(์ƒ์‚ฐ ๋“ฑ๊ธ‰).
  • HTTP(S) API๋ฅผ ํ†ตํ•ด ์ผ๊ด„ ๋ชจ๋“œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ํด๋Ÿฌ์Šคํ„ฐ์˜ ์„ ๋‘ ๋…ธ๋“œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์œ„ํ•œ ๋ช…๋ น์ค„ ์ธํ„ฐํŽ˜์ด์Šค์™€ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
  • ๋‹ค๋ฅธ ๋…ธ๋“œ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ๋…ธ๋“œ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ตํ™˜ ์•”ํ˜ธํ™” ์ง€์›
  • ์ฝ์„ ๋•Œ ๋ฐ์ดํ„ฐ ๊ด€๋ จ์„ฑ ๋ฐ ์ผ๊ด€์„ฑ ๊ฒ€์‚ฌ ์ˆ˜์ค€์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ.
  • ํ•ฉ์˜ ๊ฒฐ์ •์— ์ฐธ์—ฌํ•˜์ง€ ์•Š๊ณ  ์ฝ๊ธฐ ์ž‘์—…์„ ์œ„ํ•œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ํ™•์žฅ์„ฑ์„ ๋†’์ด๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ฝ๊ธฐ ์ „์šฉ ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์„ ํƒ์  ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.
  • ๋‹จ์ผ ์š”์ฒญ์—์„œ ๋ช…๋ น์„ ๊ฒฐํ•ฉํ•˜๋Š” ๋ฐฉ์‹์˜ ๊ธฐ๋ณธ ํŠธ๋žœ์žญ์…˜ ํ˜•์‹ ์ง€์›(BEGIN, COMMIT, ROLLBACK, SAVEPOINT, RELEASE ๊ธฐ๋ฐ˜ ํŠธ๋žœ์žญ์…˜์€ ์ง€์›๋˜์ง€ ์•Š์Œ).
  • ํ•ซ ๋ฐฑ์—… ์ƒ์„ฑ ์ง€์›

์ƒˆ ๋ฆด๋ฆฌ์Šค์—์„œ:

  • Consul ๋ฐ etcd์™€ ๊ฐ™์€ ๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด ๋…ธ๋“œ ๊ฒ€์ƒ‰ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋™ rqlite ํด๋Ÿฌ์Šคํ„ฐ๋ง์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ด rqlite ๋…ธ๋“œ๋Š” ์ž๋™์œผ๋กœ ์„œ๋กœ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ด€๋ฆฌ์ž๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์„œ๋ฒ„์— ์—ฌ๋Ÿฌ ๋…ธ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„Consul ๋˜๋Š” etcd ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ณต์œ  ์ฃผ์†Œ(์˜ˆ: "example.com:8500")๋ฅผ ์ง€์ •ํ•˜๋ฉด ๋…ธ๋“œ๊ฐ€ ์ž๋™์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ์— ์ฐธ์—ฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ๋” ๋…ธ๋“œ๋Š” Consul ๋˜๋Š” etcd ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅ๋œ ์ฃผ์†Œ ์ •๋ณด๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋ฏ€๋กœ, ๋‹ค๋ฅธ ๋…ธ๋“œ๋ฅผ ์žฌ๊ตฌ์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ๋‚˜์ค‘์— ๋ฆฌ๋”๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฆฌ๋”๊ฐ€ ๋ณ€๊ฒฝ๋œ ํ›„์—๋„ ์ƒˆ ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AWS Lambda ๊ธฐ๋ฐ˜์˜ ๊ธฐ์กด ๋…ธ๋“œ ๊ฒ€์ƒ‰ ์„œ๋น„์Šค(Discovery ๋ชจ๋“œ)๋Š” ๋” ์ด์ƒ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • CLI ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ ํ˜ธ์ŠคํŠธ๋ฅผ ๋™์‹œ์— ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ ํ˜ธ์ŠคํŠธ์— ์ ‘์†ํ•ฉ๋‹ˆ๋‹ค.
  • rqlited ๋ช…๋ น์ค„ ์ธ์ˆ˜๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ์ž‘์—…ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋” ์ด์ƒ ์ง€์›๋˜์ง€ ์•Š๋Š” protobuf ํŒจํ‚ค์ง€๊ฐ€ ๋” ์ด์ƒ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Raft ํ”„๋กœํ† ์ฝœ ๊ตฌํ˜„์— ์‚ฌ์šฉ๋œ BoltDB ์Šคํ† ๋ฆฌ์ง€๋Š” etcd ํ”„๋กœ์ ํŠธ์˜ ํฌํฌ์ธ bbolt๋กœ ๋Œ€์ฒด๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

DDoS ๋ณดํ˜ธ, VPS VDS ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ์œ„ํ•œ ์•ˆ์ •์ ์ธ ํ˜ธ์ŠคํŒ… ๊ตฌ์ž… ๐Ÿ”ฅ DDoS ๊ณต๊ฒฉ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ์ด ํƒ‘์žฌ๋œ ์•ˆ์ •์ ์ธ ์›น์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ…, VPS ๋ฐ VDS ์„œ๋ฒ„๋ฅผ ๊ตฌ๋งคํ•˜์„ธ์š” | ProHoster