๋ณด์•ˆ๊ณผ DBMS: ๋ณด์•ˆ ๋„๊ตฌ๋ฅผ ์„ ํƒํ•  ๋•Œ ๊ธฐ์–ตํ•ด์•ผ ํ•  ์‚ฌํ•ญ

๋ณด์•ˆ๊ณผ DBMS: ๋ณด์•ˆ ๋„๊ตฌ๋ฅผ ์„ ํƒํ•  ๋•Œ ๊ธฐ์–ตํ•ด์•ผ ํ•  ์‚ฌํ•ญ

์ œ ์ด๋ฆ„์€ Denis Rozhkov์ด๊ณ  Gazinformservice ํšŒ์‚ฌ์˜ ์ œํ’ˆ ํŒ€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ์ฑ…์ž„์ž์ž…๋‹ˆ๋‹ค. ์žํ† ๋ฐ”. ๋ฒ•๋ฅ  ๋ฐ ๊ธฐ์—… ๊ทœ์ •์€ ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ณด์•ˆ์— ๋Œ€ํ•œ ํŠน์ • ์š”๊ตฌ ์‚ฌํ•ญ์„ ๋ถ€๊ณผํ•ฉ๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋„ ์ œXNUMX์ž๊ฐ€ ๊ธฐ๋ฐ€ ์ •๋ณด์— ์•ก์„ธ์Šคํ•˜๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์‹๋ณ„ ๋ฐ ์ธ์ฆ, ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๊ด€๋ฆฌ, ์‹œ์Šคํ…œ ์ •๋ณด ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ, ๋ณด์•ˆ ์ด๋ฒคํŠธ ๋กœ๊น… ๋“ฑ์˜ ๋ฌธ์ œ๋Š” ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์—์„œ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ €๋Š” DBMS ๋ณด์•ˆ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋ช‡ ๊ฐ€์ง€ ํฅ๋ฏธ๋กœ์šด ์ ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ด ๊ธฐ์‚ฌ๋Š” ๋‹ค์Œ์˜ ์—ฐ์„ค์„ ๋ฐ”ํƒ•์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. @DatabasesMeetup, ์กฐ์ง Mail.ru ํด๋ผ์šฐ๋“œ ์†”๋ฃจ์…˜. ์ฝ๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด ๋‹ค์Œ์„ ์‹œ์ฒญํ•˜์„ธ์š”.


์ด ๊ธฐ์‚ฌ๋Š” ์„ธ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  • ์—ฐ๊ฒฐ์„ ๋ณดํ˜ธํ•˜๋Š” ๋ฐฉ๋ฒ•.
  • ์ž‘์—… ๊ฐ์‚ฌ๋ž€ ๋ฌด์—‡์ด๋ฉฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธก์—์„œ ๋ฐœ์ƒํ•˜๊ณ  ์—ฐ๊ฒฐ๋˜๋Š” ์ƒํ™ฉ์„ ๊ธฐ๋กํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž์ฒด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ด์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋ณด์•ˆ๊ณผ DBMS: ๋ณด์•ˆ ๋„๊ตฌ๋ฅผ ์„ ํƒํ•  ๋•Œ ๊ธฐ์–ตํ•ด์•ผ ํ•  ์‚ฌํ•ญ
DBMS ๋ณด์•ˆ์˜ ์„ธ ๊ฐ€์ง€ ๊ตฌ์„ฑ ์š”์†Œ: ์—ฐ๊ฒฐ ๋ณดํ˜ธ, ํ™œ๋™ ๊ฐ์‚ฌ ๋ฐ ๋ฐ์ดํ„ฐ ๋ณดํ˜ธ

์—ฐ๊ฒฐ ๋ณด์•ˆ

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ†ตํ•ด ์ง์ ‘ ๋˜๋Š” ๊ฐ„์ ‘์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋น„์ฆˆ๋‹ˆ์Šค ์‚ฌ์šฉ์ž, ์ฆ‰ DBMS๋ฅผ ๋‹ค๋ฃจ๋Š” ์‚ฌ๋žŒ์€ ๊ฐ„์ ‘์ ์œผ๋กœ DBMS์™€ ์ƒํ˜ธ ์ž‘์šฉํ•ฉ๋‹ˆ๋‹ค.

์—ฐ๊ฒฐ ๋ณดํ˜ธ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ธฐ ์ „์— ๋ณด์•ˆ ์กฐ์น˜๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜๋Š”์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์ค‘์š”ํ•œ ์งˆ๋ฌธ์— ๋‹ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๋น„์ฆˆ๋‹ˆ์Šค ์‚ฌ์šฉ์ž XNUMX๋ช…์ด DBMS ์‚ฌ์šฉ์ž XNUMX๋ช…๊ณผ ๋™์ผํ•ฉ๋‹ˆ๊นŒ?
  • DBMS ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๊ฐ€ ๊ท€ํ•˜๊ฐ€ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹API๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์ œ๊ณต๋˜๋Š”์ง€, ์•„๋‹ˆ๋ฉด ํ…Œ์ด๋ธ”์— ์ง์ ‘ ์•ก์„ธ์Šค๋˜๋Š”์ง€ ์—ฌ๋ถ€
  • DBMS๊ฐ€ ๋ณ„๋„์˜ ๋ณดํ˜ธ ์„ธ๊ทธ๋จผํŠธ์— ํ• ๋‹น๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€, ๋ˆ„๊ฐ€ DBMS์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š”์ง€, ์–ด๋–ป๊ฒŒ
  • ํ’€๋ง/ํ”„๋ก์‹œ ๋ฐ ์ค‘๊ฐ„ ๋ ˆ์ด์–ด๊ฐ€ ์‚ฌ์šฉ๋˜๋Š”์ง€ ์—ฌ๋ถ€๋Š” ์—ฐ๊ฒฐ ๊ตฌ์ถ• ๋ฐฉ๋ฒ•๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ์—ฐ๊ฒฐ์„ ๋ณดํ˜ธํ•˜๋Š” ๋ฐ ์–ด๋–ค ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

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

    ์‚ฌ์šฉ์ž ํ‰๊ฐ€ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—, MS SQL ์ทจ์•ฝ์  ํ‰๊ฐ€์ž์— ๋Œ€ํ•ด์„œ๋„ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—

  3. ํ•„์š”ํ•œ ์ •๋ณด๋กœ ์„ธ์…˜์˜ ๋งฅ๋ฝ์„ ํ’๋ถ€ํ•˜๊ฒŒ ๋งŒ๋“œ์„ธ์š”. ์„ธ์…˜์ด ๋ถˆํˆฌ๋ช…ํ•˜๊ณ  ํ•ด๋‹น ํ”„๋ ˆ์ž„์›Œํฌ ๋‚ด์—์„œ ๋ˆ„๊ฐ€ DBMS์—์„œ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ์ˆ˜ํ–‰ ์ค‘์ธ ์ž‘์—… ํ”„๋ ˆ์ž„์›Œํฌ ๋‚ด์—์„œ ๋ˆ„๊ฐ€ ๋ฌด์—‡์„ ์™œ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ •๋ณด๋Š” ๊ฐ์‚ฌ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. DBMS์™€ ์ตœ์ข… ์‚ฌ์šฉ์ž ์‚ฌ์ด์— ๋„คํŠธ์›Œํฌ ๋ถ„๋ฆฌ๊ฐ€ ์—†๊ณ  ๋ณ„๋„์˜ VLAN์— ์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ SSL์„ ๊ตฌ์„ฑํ•˜์‹ญ์‹œ์˜ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ์†Œ๋น„์ž์™€ DBMS ์ž์ฒด ๊ฐ„์˜ ์ฑ„๋„์„ ๋ณดํ˜ธํ•˜๋Š” ๊ฒƒ์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ๋ณด์•ˆ ๋„๊ตฌ๋Š” ์˜คํ”ˆ ์†Œ์Šค์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด DBMS ์„ฑ๋Šฅ์— ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น˜๋‚˜์š”?

SSL์ด CPU ๋กœ๋“œ์— ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ณ , ํƒ€์ด๋ฐ์„ ๋Š˜๋ฆฌ๊ณ , TPS๋ฅผ ์ค„์ด๋Š”์ง€, ํ™œ์„ฑํ™”ํ•  ๊ฒฝ์šฐ ๋„ˆ๋ฌด ๋งŽ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์†Œ๋น„ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด PostgreSQL์˜ ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

pgbench๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ PostgreSQL์„ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์€ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ„๋‹จํ•œ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค. ๋ณ‘๋ ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ธ์…˜์—์„œ ๋‹จ์ผ ๋ช…๋ น ์‹œํ€€์Šค๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‹คํ–‰ํ•œ ๋‹ค์Œ ํ‰๊ท  ํŠธ๋žœ์žญ์…˜ ์†๋„๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

SSL ์—†์ด SSL์„ ์‚ฌ์šฉํ•˜๋Š” ํ…Œ์ŠคํŠธ 1 โ€” ๊ฐ ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•ด ์—ฐ๊ฒฐ์ด ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

pgbench.exe --connect -c 10 -t 5000 "host=192.168.220.129 dbname=taskdb user=postgres sslmode=require 
sslrootcert=rootCA.crt sslcert=client.crt sslkey=client.key"

vs

pgbench.exe --connect -c 10 -t 5000 "host=192.168.220.129 dbname=taskdb user=postgres"

SSL ์—†์ด SSL์„ ์‚ฌ์šฉํ•˜๋Š” ํ…Œ์ŠคํŠธ 2 โ€” ๋ชจ๋“  ํŠธ๋žœ์žญ์…˜์€ ํ•˜๋‚˜์˜ ์—ฐ๊ฒฐ์—์„œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

pgbench.exe -c 10 -t 5000 "host=192.168.220.129 dbname=taskdb user=postgres sslmode=require
sslrootcert=rootCA.crt sslcert=client.crt sslkey=client.key"

vs

pgbench.exe -c 10 -t 5000 "host=192.168.220.129 dbname=taskdb user=postgres"

๋‹ค๋ฅธ ์„ค์ •:

scaling factor: 1
query mode: simple
number of clients: 10
number of threads: 1
number of transactions per client: 5000
number of transactions actually processed: 50000/50000

ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ:

 
SSL ์—†์Œ
SSL

๋ชจ๋“  ๊ฑฐ๋ž˜์— ๋Œ€ํ•ด ์—ฐ๊ฒฐ์ด ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

๋Œ€๊ธฐ ์‹œ๊ฐ„ ํ‰๊ท 
171.915 MS
187.695 MS

์—ฐ๊ฒฐ ์„ค์ •์„ ํฌํ•จํ•œ tps
58.168112
53.278062

์—ฐ๊ฒฐ ์„ค์ •์„ ์ œ์™ธํ•œ tps
64.084546
58.725846

CPU
24%
28%

๋ชจ๋“  ํŠธ๋žœ์žญ์…˜์€ ํ•˜๋‚˜์˜ ์—ฐ๊ฒฐ๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

๋Œ€๊ธฐ ์‹œ๊ฐ„ ํ‰๊ท 
6.722 MS
6.342 MS

์—ฐ๊ฒฐ ์„ค์ •์„ ํฌํ•จํ•œ tps
1587.657278
1576.792883

์—ฐ๊ฒฐ ์„ค์ •์„ ์ œ์™ธํ•œ tps
1588.380574
1577.694766

CPU
17%
21%

๊ฐ€๋ฒผ์šด ๋ถ€ํ•˜์—์„œ SSL์˜ ์˜ํ–ฅ์€ ์ธก์ • ์˜ค๋ฅ˜์™€ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ๋งค์šฐ ๋งŽ์œผ๋ฉด ์ƒํ™ฉ์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜๋‹น ํ•˜๋‚˜์˜ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๋Š” ๊ฒฝ์šฐ(๋“œ๋ฌธ ๊ฒฝ์šฐ, ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ์ž ๊ฐ„์— ์—ฐ๊ฒฐ์ด ๊ณต์œ ๋จ) ์—ฐ๊ฒฐ/์—ฐ๊ฒฐ ๋Š๊น€ ์ˆ˜๊ฐ€ ๋งŽ์•„ ์˜ํ–ฅ์ด ์กฐ๊ธˆ ๋” ์ปค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์„ฑ๋Šฅ ์ €ํ•˜์˜ ์œ„ํ—˜์ด ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ณดํ˜ธ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ์ •๋„๋กœ ์ฐจ์ด๋Š” ํฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ž‘๋™ ๋ชจ๋“œ๋ฅผ ๋น„๊ตํ•˜๋ฉด ํฐ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค. ๋™์ผํ•œ ์„ธ์…˜ ๋‚ด์—์„œ ์ž‘์—… ์ค‘์ด๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์„ธ์…˜์—์„œ ์ž‘์—… ์ค‘์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์—ฐ๊ฒฐ์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ๋ฆฌ์†Œ์Šค๊ฐ€ ์†Œ๋น„๋ฉ๋‹ˆ๋‹ค.

Zabbix๋ฅผ ์‹ ๋ขฐ ๋ชจ๋“œ๋กœ ์—ฐ๊ฒฐํ–ˆ์„ ๋•Œ, ์ฆ‰ md5๊ฐ€ ํ™•์ธ๋˜์ง€ ์•Š์•„ ์ธ์ฆ์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ณ ๊ฐ์€ md5 ์ธ์ฆ ๋ชจ๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋„๋ก ์š”์ฒญํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด CPU์— ๊ณผ๋„ํ•œ ๋ถ€ํ•˜๊ฐ€ ๊ฑธ๋ฆฌ๊ณ  ์„ฑ๋Šฅ์ด ์ €ํ•˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ตœ์ ํ™” ๋ฐฉ๋ฒ•์„ ์ฐพ๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ์— ๋Œ€ํ•œ ๊ฐ€๋Šฅํ•œ ํ•ด๊ฒฐ์ฑ… ์ค‘ ํ•˜๋‚˜๋Š” ๋„คํŠธ์›Œํฌ ์ œํ•œ์„ ๊ตฌํ˜„ํ•˜๊ณ , DBMS์— ๋Œ€ํ•ด ๋ณ„๋„์˜ VLAN์„ ๋งŒ๋“ค๊ณ , ๋ˆ„๊ฐ€ ์–ด๋””์„œ ์—ฐ๊ฒฐํ•˜๋Š”์ง€ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๋Š” ์„ค์ •์„ ์ถ”๊ฐ€ํ•˜๊ณ , ์ธ์ฆ์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ธ์ฆ ํ™œ์„ฑํ™” ์‹œ ๋น„์šฉ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ์ธ์ฆ ์„ค์ •์„ ์ตœ์ ํ™”ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์–‘ํ•œ ์ธ์ฆ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋ฉฐ DBMS์šฉ ์„œ๋ฒ„(ํ•˜๋“œ์›จ์–ด)์˜ ์ปดํ“จํŒ… ์„ฑ๋Šฅ์„ ์„ค๊ณ„ํ•  ๋•Œ ์ด๋Ÿฌํ•œ ์š”์†Œ๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๋ก : ์—ฌ๋Ÿฌ ์†”๋ฃจ์…˜์—์„œ ์ธ์ฆ์˜ ์ž‘์€ ์ฐจ์ด๋„ ํ”„๋กœ์ ํŠธ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ๊ตฌํ˜„๋  ๋•Œ๋งŒ ์ด๊ฒƒ์ด ๋ช…ํ™•ํ•ด์ง€๋ฉด ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์กฐ์น˜ ๊ฐ์‚ฌ

๊ฐ์‚ฌ๋Š” DBMS๋ฟ๋งŒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ฐ์‚ฌ๋Š” ๋‹ค์–‘ํ•œ ๋ถ€๋ฌธ์—์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์–ป๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฉํ™”๋ฒฝ์ผ ์ˆ˜๋„ ์žˆ๊ณ  DBMS๊ฐ€ ๊ตฌ์ถ•๋œ ์šด์˜ ์ฒด์ œ์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ์—…์šฉ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์ˆ˜์ค€ DBMS์—์„œ๋Š” ๊ฐ์‚ฌ๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ด์ง€๋งŒ ์˜คํ”ˆ ์†Œ์Šค์—์„œ๋Š” ํ•ญ์ƒ ๊ทธ๋Ÿฐ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. PostgreSQL์˜ ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๊ธฐ๋ณธ ๋กœ๊ทธ - ๋‚ด์žฅ๋œ ๋กœ๊น…;
  • ํ™•์žฅ: pgaudit - ๊ธฐ๋ณธ ๋กœ๊น…์ด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ณ„๋„์˜ ์„ค์ •์„ ์‚ฌ์šฉํ•˜์—ฌ ์ผ๋ถ€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜์ƒ์˜ ๋ณด๊ณ ์„œ์— ์ถ”๊ฐ€:

"๊ธฐ๋ณธ ๋ช…๋ น๋ฌธ ๋กœ๊น…์€ log_statement = all์„ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œ์ค€ ๋กœ๊น… ๊ธฐ๋Šฅ์œผ๋กœ ์ œ๊ณต๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Š” ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๊ธฐํƒ€ ์šฉ๋„๋กœ ํ—ˆ์šฉ๋˜์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ์‚ฌ์— ํ•„์š”ํ•œ ์„ธ๋ถ€ ์ˆ˜์ค€์„ ์ œ๊ณตํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ๋ชจ๋“  ์ž‘์—…์˜ โ€‹โ€‹๋ชฉ๋ก์„ ๊ฐ–๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ฐ์‚ฌ์ธ์ด ๊ด€์‹ฌ์„ ๊ฐ€์งˆ ๋งŒํ•œ ํŠน์ • ์ง„์ˆ ์„ ์ฐพ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ‘œ์ค€ ๋กœ๊น…์€ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ ๋‚ด์šฉ์„ ๋ณด์—ฌ์ฃผ๊ณ , pgAudit์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๋ฐœ์ƒํ•œ ์„ธ๋ถ€ ์‚ฌํ•ญ์— ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฐ์‚ฌ์ž๋Š” ๋ฌธ์„œํ™”๋œ ์œ ์ง€ ๊ด€๋ฆฌ ๊ธฐ๊ฐ„ ๋‚ด์— ํŠน์ • ํ…Œ์ด๋ธ”์ด ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Š” ๊ธฐ๋ณธ ๊ฐ์‚ฌ ๋ฐ grep์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์ž‘์—…์ฒ˜๋Ÿผ ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€(์˜๋„์ ์œผ๋กœ ํ˜ผ๋ž€์Šค๋Ÿฌ์šด) ์˜ˆ์ œ๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?

DO$$
BEGIN
EXECUTE 'CREATE TABLE ๊ฐ€์ ธ์˜ค๊ธฐ' || 'ant_table(id int)';
์ข…๋ฃŒ$$;

ํ‘œ์ค€ ๋กœ๊น…์€ ๋‹ค์Œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋กœ๊ทธ: ๋ช…๋ น๋ฌธ: DO $$
BEGIN
EXECUTE 'CREATE TABLE ๊ฐ€์ ธ์˜ค๊ธฐ' || 'ant_table(id int)';
์ข…๋ฃŒ$$;

ํ…Œ์ด๋ธ”์ด ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ๊ฒฝ์šฐ ๊ด€์‹ฌ ์žˆ๋Š” ํ…Œ์ด๋ธ”์„ ์ฐพ์œผ๋ ค๋ฉด ์•ฝ๊ฐ„์˜ ์ฝ”๋“œ ์ง€์‹์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ์ˆœํžˆ ํ…Œ์ด๋ธ” ์ด๋ฆ„์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋ฐ”๋žŒ์งํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Š” ์ด์ƒ์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด pgAudit์ด ์œ ์šฉํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.

๋™์ผํ•œ ์ž…๋ ฅ์— ๋Œ€ํ•ด ๋กœ๊ทธ์— ๋‹ค์Œ ์ถœ๋ ฅ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌ: ์„ธ์…˜,33,1,๊ธฐ๋Šฅ,DO,,,"DO $$
BEGIN
EXECUTE 'CREATE TABLE ๊ฐ€์ ธ์˜ค๊ธฐ' || 'ant_table(id int)';
END$$;"
๊ฐ์‚ฌ: ์„ธ์…˜,33,2,DDL,CREATE TABLE,TABLE,public.important_table,CREATE TABLE important_table(ID INT)

DO ๋ธ”๋ก๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ช…๋ น๋ฌธ ์œ ํ˜•, ๊ฐ์ฒด ์œ ํ˜• ๋ฐ ์ „์ฒด ์ด๋ฆ„์ด ํฌํ•จ๋œ CREATE TABLE์˜ ์ „์ฒด ํ…์ŠคํŠธ๋„ ๊ธฐ๋ก๋˜๋ฏ€๋กœ ๊ฒ€์ƒ‰์ด ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค.

SELECT ๋ฐ DML ๋ฌธ์„ ๊ธฐ๋กํ•  ๋•Œ pgAudit์€ ๋ฌธ์—์„œ ์ฐธ์กฐ๋˜๋Š” ๊ฐ ๊ด€๊ณ„์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ํ•ญ๋ชฉ์„ ๊ธฐ๋กํ•˜๋„๋ก ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŠน์ • ํ…Œ์ด๋ธ”๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ๋ช…๋ น๋ฌธ์„ ์ฐพ๊ธฐ ์œ„ํ•ด ๊ตฌ๋ฌธ ๋ถ„์„์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(*). "

์ด๊ฒƒ์ด DBMS ์„ฑ๋Šฅ์— ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น˜๋‚˜์š”?

์ „์ฒด ๊ฐ์‚ฌ๋ฅผ ํ™œ์„ฑํ™”ํ•œ ์ƒํƒœ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  PostgreSQL ์„ฑ๋Šฅ์— ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ์ตœ๋Œ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋กœ๊น…์„ ํ™œ์„ฑํ™”ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ๋Š” ๊ฑฐ์˜ ์•„๋ฌด๊ฒƒ๋„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ตœ๋Œ€ ์ •๋ณด๋ฅผ ์–ป์œผ๋ ค๋ฉด debug5 ๋ชจ๋“œ๋ฅผ ์ผœ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

postgresql.conf

log_destination = 'stderr'
๋กœ๊น…_์ˆ˜์ง‘๊ธฐ = ์ผœ์ง
log_truncate_on_rotation = ์ผœ์ง
log_rotation_age = 1์ผ
log_rotation_size = 10MB
log_min_messages = ๋””๋ฒ„๊ทธ5
log_min_error_statement = ๋””๋ฒ„๊ทธ5
log_min_duration_statement = 0
debug_print_parse = ์ผœ์ง
debug_print_rewrite = ์ผœ์ง
debug_print_plan = ์ผœ์ง
debug_pretty_print = ์ผœ์ง
log_checkpoints = ์ผœ์ง
log_connections = ์ผœ์ง
log_disconnections = ์ผœ์ง
log_duration = ์ผœ์ง
log_hostname = ์ผœ์ง
log_lock_waits = ์ผœ์ง
log_replication_commands = ์ผœ์ง
log_temp_files = 0
log_timezone = '์œ ๋Ÿฝ/๋ชจ์Šคํฌ๋ฐ”'

๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ CPU 1๊ฐœ, 2,8GHz, 2GB RAM, 40GB HDD์ธ PostgreSQL DBMS์—์„œ ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ธ ๊ฐ€์ง€ ๋กœ๋“œ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

$ pgbench -p 3389 -U postgres -i -s 150 benchmark
$ pgbench -p 3389 -U postgres -c 50 -j 2 -P 60 -T 600 benchmark
$ pgbench -p 3389 -U postgres -c 150 -j 2 -P 60 -T 600 benchmark

์‹œํ—˜ ๊ฒฐ๊ณผ:

๋กœ๊น… ์—†์Œ
๋กœ๊น… ํฌํ•จ

์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฑ„์šฐ๊ธฐ ์‹œ๊ฐ„
43,74 ์ดˆ
53,23 ์ดˆ

๋žจ
24%
40%

CPU
72%
91%

ํ…Œ์ŠคํŠธ 1(50๊ฐœ ์—ฐ๊ฒฐ)

10๋ถ„ ๋™์•ˆ์˜ ๊ฑฐ๋ž˜ ์ˆ˜
74169
32445

ํŠธ๋žœ์žญ์…˜/์ดˆ
123
54

ํ‰๊ท  ์ง€์—ฐ ์‹œ๊ฐ„
405 ๋ฐ€๋ฆฌ ์ดˆ
925 ๋ฐ€๋ฆฌ ์ดˆ

ํ…Œ์ŠคํŠธ 2(150๊ฐœ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅ, 100๊ฐœ ๊ฐ€๋Šฅ)

10๋ถ„ ๋™์•ˆ์˜ ๊ฑฐ๋ž˜ ์ˆ˜
81727
31429

ํŠธ๋žœ์žญ์…˜/์ดˆ
136
52

ํ‰๊ท  ์ง€์—ฐ ์‹œ๊ฐ„
550 ๋ฐ€๋ฆฌ ์ดˆ
1432 ๋ฐ€๋ฆฌ ์ดˆ

์‚ฌ์ด์ฆˆ ์ •๋ณด

DB ํฌ๊ธฐ
2251 MB
2262 MB

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋กœ๊ทธ ํฌ๊ธฐ
0 ะœะฑ
4587 ะœะฑ

๊ฒฐ๋ก : ์ „์ฒด ๊ฐ์‚ฌ๋Š” ๊ทธ๋‹ค์ง€ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ๋ฐ์ดํ„ฐ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž์ฒด์˜ ๋ฐ์ดํ„ฐ๋งŒํผ ํฌ๊ฑฐ๋‚˜ ๊ทธ ์ด์ƒ์ž…๋‹ˆ๋‹ค. DBMS ์ž‘์—… ์‹œ ์ƒ์„ฑ๋˜๋Š” ๋กœ๊น…์˜ ์–‘์€ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ํ”ํžˆ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ์†๋„๋Š” ํฌ๊ฒŒ ๋ณ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋กœ๊น… ์—†์Œ - 43,74์ดˆ, ๋กœ๊น… ํฌํ•จ - 53,23์ดˆ.
  • ๊ฐ์‚ฌ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋ฏ€๋กœ RAM ๋ฐ CPU ์„ฑ๋Šฅ์ด ์ €ํ•˜๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ƒ์‚ฐ์„ฑ ์ธก๋ฉด์—์„œ๋„ ๋‘๋“œ๋Ÿฌ์ง‘๋‹ˆ๋‹ค.

์—ฐ๊ฒฐ ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚˜๋ฉด ๋‹น์—ฐํžˆ ์„ฑ๋Šฅ์ด ์กฐ๊ธˆ์”ฉ ์ €ํ•˜๋ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌ๋ฅผ ๋ฐ›๋Š” ๊ธฐ์—…์—์„œ๋Š” ๋”์šฑ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์•„์š”.
  • SIEM์˜ syslog๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํŒŒ์ผ์—์„œ๋„ ๊ฐ์‚ฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. syslog์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๊ฐ€๊นŒ์šด ํŒŒ์ผ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋งŽ์€ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๋ฏ€๋กœ I/O ๋””์Šคํฌ๋ฅผ ๋‚ญ๋น„ํ•˜์ง€ ์•Š๋„๋ก ๊ฐ์‚ฌ๋ฅผ ์œ„ํ•ด ๋ณ„๋„์˜ ์„ ๋ฐ˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ •๋ณด ๋ณด์•ˆ ์ง์›์€ ์–ด๋””์—์„œ๋‚˜ GOST ํ‘œ์ค€์ด ํ•„์š”ํ•˜๋ฉฐ ๊ตญ๊ฐ€ ์‹๋ณ„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ์ œํ•œ

์ƒ์šฉ DBMS์™€ ์˜คํ”ˆ์†Œ์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•˜๊ณ  ์ ‘๊ทผํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ์ˆ ์„ ์‚ดํŽด๋ณด์ž.

์ผ๋ฐ˜์ ์œผ๋กœ ๋ฌด์—‡์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

  1. ํ”„๋กœ์‹œ์ € ๋ฐ ํ•จ์ˆ˜์˜ ์•”ํ˜ธํ™” ๋ฐ ๋‚œ๋…ํ™”(๋ž˜ํ•‘) - ์ฆ‰, ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์ฝ์„ ์ˆ˜ ์—†๊ฒŒ ๋งŒ๋“œ๋Š” ๋ณ„๋„์˜ ๋„๊ตฌ ๋ฐ ์œ ํ‹ธ๋ฆฌํ‹ฐ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ๋‹ค์‹œ ๋ฆฌํŒฉํ† ๋งํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ์ ์–ด๋„ DBMS ์ธก์—์„œ๋Š” ๋•Œ๋•Œ๋กœ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ผ์ด์„ผ์Šค ์ œํ•œ ๋…ผ๋ฆฌ ๋˜๋Š” ๊ถŒํ•œ ๋ถ€์—ฌ ๋…ผ๋ฆฌ๋Š” ํ”„๋กœ์‹œ์ € ๋ฐ ๊ธฐ๋Šฅ ์ˆ˜์ค€์—์„œ ์ •ํ™•ํ•˜๊ฒŒ ์•”ํ˜ธํ™”๋ฉ๋‹ˆ๋‹ค.
  2. ๋ฐ์ดํ„ฐ ๊ฐ€์‹œ์„ฑ์„ ํ–‰(RLS)์œผ๋กœ ์ œํ•œํ•˜๋Š” ๊ฒƒ์€ ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์„ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ ๊ทธ ์•ˆ์˜ ํ–‰ ๊ตฌ์„ฑ์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ, ์ฆ‰ ํ–‰ ์ˆ˜์ค€์—์„œ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ๋ฌด์–ธ๊ฐ€๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.
  3. ํ‘œ์‹œ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํŽธ์ง‘(๋งˆ์Šคํ‚น)ํ•˜๋Š” ๊ฒƒ์€ ํ…Œ์ด๋ธ”์˜ ํ•œ ์—ด์— ์žˆ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ฑฐ๋‚˜ ๋ณ„ํ‘œ๋งŒ ๋ณด๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์ผ๋ถ€ ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ ์ •๋ณด๊ฐ€ ๋‹ซํž™๋‹ˆ๋‹ค. ์ด ๊ธฐ์ˆ ์€ ์•ก์„ธ์Šค ์ˆ˜์ค€์— ๋”ฐ๋ผ ์–ด๋–ค ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฌด์—‡์„ ํ‘œ์‹œํ• ์ง€ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
  4. ๋ณด์•ˆ DBA/์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ DBA/DBA ์ ‘๊ทผ ์ œ์–ด๋Š” ์˜คํžˆ๋ ค DBMS ์ž์ฒด์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ œํ•œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์ •๋ณด๋ณด์•ˆ ๋‹ด๋‹น์ž๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์ž์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ด€๋ฆฌ์ž๋กœ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜คํ”ˆ์†Œ์Šค์—๋Š” ๊ทธ๋Ÿฌํ•œ ๊ธฐ์ˆ ์ด ๊ฑฐ์˜ ์—†์ง€๋งŒ ์ƒ์šฉ DBMS์—๋Š” ๊ทธ๋Ÿฌํ•œ ๊ธฐ์ˆ ์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„ ์ž์ฒด์— ์•ก์„ธ์Šคํ•˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์„ ๋•Œ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  5. ํŒŒ์ผ ์‹œ์Šคํ…œ ์ˆ˜์ค€์—์„œ ํŒŒ์ผ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๊ด€๋ฆฌ์ž๊ฐ€ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ์—๋งŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋Œ€ํ•œ ๊ถŒํ•œ๊ณผ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  6. ํ•„์ˆ˜ ์•ก์„ธ์Šค ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์ง€์šฐ๊ธฐ - ์ด๋Ÿฌํ•œ ๊ธฐ์ˆ ์€ ๊ฑฐ์˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  7. DBMS์—์„œ ์ง์ ‘ ์ˆ˜ํ–‰ํ•˜๋Š” ์ข…๋‹จ ๊ฐ„ ์•”ํ˜ธํ™”๋Š” ์„œ๋ฒ„ ์ธก์—์„œ ํ‚ค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก ์•”ํ˜ธํ™”์ž…๋‹ˆ๋‹ค.
  8. ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”. ์˜ˆ๋ฅผ ๋“ค์–ด, ์—ด ๊ธฐ๋ฐ˜ ์•”ํ˜ธํ™”๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋‹จ์ผ ์—ด์„ ์•”ํ˜ธํ™”ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด DBMS์˜ ์„ฑ๋Šฅ์— ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น˜๋‚˜์š”?

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

pgcrypto๋กœ ํ…Œ์ŠคํŠธํ•ด๋ณด์ž. ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ์™€ ์ผ๋ฐ˜ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๋Š” ๋ช…๋ น์ž…๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” DBMS ๋“ฑ๋ก์„ ํ†ตํ•ด ํ™•์žฅ ์ž์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์œ ์šฉํ•œ ๋ช…๋ น์ด ์žˆ์Šต๋‹ˆ๋‹ค.

CREATE EXTENSION pgcrypto;
CREATE TABLE t1 (id integer, text1 text, text2 text);
CREATE TABLE t2 (id integer, text1 bytea, text2 bytea);
INSERT INTO t1 (id, text1, text2)
VALUES (generate_series(1,10000000), generate_series(1,10000000)::text, generate_series(1,10000000)::text);
INSERT INTO t2 (id, text1, text2) VALUES (
generate_series(1,10000000),
encrypt(cast(generate_series(1,10000000) AS text)::bytea, 'key'::bytea, 'bf'),
encrypt(cast(generate_series(1,10000000) AS text)::bytea, 'key'::bytea, 'bf'));

๋‹ค์Œ์œผ๋กœ, ๊ฐ ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ ์ƒ˜ํ”Œ์„ ๋งŒ๋“ค์–ด ์‹คํ–‰ ํƒ€์ด๋ฐ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์•”ํ˜ธํ™” ๊ธฐ๋Šฅ์ด ์—†๋Š” ํ…Œ์ด๋ธ”์—์„œ ์„ ํƒ:

psql -c "timing" -c "select * from t1 limit 1000;" "host=192.168.220.129 dbname=taskdb
user=postgres sslmode=disable" > 1.txt

์Šคํ†ฑ์›Œ์น˜๊ฐ€ ์ผœ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

  ์•„์ด๋”” | ํ…์ŠคํŠธ1 | ํ…์ŠคํŠธ2
โ€”โ€”+โ€”โ€”-+โ€”โ€”-
1 | 1 | 1
2 | 2 | 2
3 | 3 | 3
...
997 | 997 | 997
998 | 998 | 998
999 | 999 | 999
1000 | 1000 | 1000
(1000๋ผ์ธ)

์‹œ๊ฐ„: 1,386ms

์•”ํ˜ธํ™” ๊ธฐ๋Šฅ์ด ์žˆ๋Š” ํ…Œ์ด๋ธ”์—์„œ ์„ ํƒ:

psql -c "timing" -c "select id, decrypt(text1, 'key'::bytea, 'bf'),
decrypt(text2, 'key'::bytea, 'bf') from t2 limit 1000;"
"host=192.168.220.129 dbname=taskdb user=postgres sslmode=disable" > 2.txt

์Šคํ†ฑ์›Œ์น˜๊ฐ€ ์ผœ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

  ์•„์ด๋”” | ํ•ด๋… | ํ•ด๋…ํ•˜๋‹ค
โ€”โ€”+โ€”โ€”โ€”โ€”โ€”+โ€”โ€”โ€”โ€”
1 | x31 | x31
2 | x32 | x32
3 | x33 | x33
...
999 | x393939 | x393939
1000 | x31303030 | x31303030
(1000๋ผ์ธ)

์‹œ๊ฐ„: 50,203ms

ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ:

 
์•”ํ˜ธํ™” ์—†์ด
Pgcrypto(์•”ํ˜ธํ•ด๋…)

1000๊ฐœ ํ–‰ ์ƒ˜ํ”Œ๋ง
1,386 ๋ฐ€๋ฆฌ ์ดˆ
50,203 ๋ฐ€๋ฆฌ ์ดˆ

CPU
15%
35%

๋žจ
 
5%

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

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

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

๋ณด์•ˆ๊ณผ DBMS: ๋ณด์•ˆ ๋„๊ตฌ๋ฅผ ์„ ํƒํ•  ๋•Œ ๊ธฐ์–ตํ•ด์•ผ ํ•  ์‚ฌํ•ญ
MongoDB์—์„œ ์ด๋Ÿฌํ•œ ์•”ํ˜ธํ™”์˜ ์˜ˆ

์ƒ์šฉ ๋ฐ ์˜คํ”ˆ ์†Œ์Šค DBMS์˜ ๋ณด์•ˆ ๊ธฐ๋Šฅ

๊ธฐ๋Šฅ
์œ ํ˜•
์•”ํ˜ธ ์ •์ฑ…
ํšŒ๊ณ„ ๊ฐ์‚ฌ
ํ”„๋กœ์‹œ์ € ๋ฐ ํ•จ์ˆ˜์˜ ์†Œ์Šค ์ฝ”๋“œ ๋ณดํ˜ธ
RLS
์•”ํ˜ธํ™”

์‹ ํƒ
์ƒ์—…์šฉ
+
+
+
+
+

MsSQL
์ƒ์—…์šฉ
+
+
+
+
+

์žํ† ๋ฐ”
์ƒ์—…์šฉ
+
+
+
+
ํ™•์žฅ

PostgreSQL
๋ฌด๋ฃŒ
ํ™•์žฅ
ํ™•์žฅ
-
+
ํ™•์žฅ

๋ชฝ๊ณ DB
๋ฌด๋ฃŒ
-
+
-
-
MongoDB Enterprise์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

ํ‘œ๋Š” ์™„์ „ํ•˜์ง€ ์•Š์ง€๋งŒ ์ƒํ™ฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ƒ์šฉ ์ œํ’ˆ์—์„œ๋Š” ๋ณด์•ˆ ๋ฌธ์ œ๊ฐ€ ์˜ค๋žซ๋™์•ˆ ํ•ด๊ฒฐ๋˜์—ˆ์œผ๋ฉฐ ์˜คํ”ˆ ์†Œ์Šค์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ณด์•ˆ์„ ์œ„ํ•ด ์ผ์ข…์˜ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์ด ์‚ฌ์šฉ๋˜๋ฉฐ ๋งŽ์€ ๊ธฐ๋Šฅ์ด ๋ˆ„๋ฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. , ๋•Œ๋กœ๋Š” ๋ญ”๊ฐ€๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•  ๋•Œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋น„๋ฐ€๋ฒˆํ˜ธ ์ •์ฑ… - PostgreSQL์—๋Š” ๋‹ค์–‘ํ•œ ํ™•์žฅ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค(1, 2, 3, 4, 5), ๋น„๋ฐ€๋ฒˆํ˜ธ ์ •์ฑ…์„ ๊ตฌํ˜„ํ•˜์ง€๋งŒ ์ œ ์ƒ๊ฐ์—๋Š” ๊ทธ ์ค‘ ์–ด๋Š ๊ฒƒ๋„ ๊ตญ๋‚ด ๊ธฐ์—… ๋ถ€๋ฌธ์˜ ๋ชจ๋“  ์š”๊ตฌ๋ฅผ ์ถฉ์กฑํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

์–ด๋””์—๋„ ํ•„์š”ํ•œ ๊ฒƒ์ด ์—†๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”?? ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ณ ๊ฐ์ด ์š”๊ตฌํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์—†๋Š” ํŠน์ • DBMS๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ Crypto DB ๋˜๋Š” Garda DB์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ DBMS์—์„œ ์ž‘๋™ํ•˜๋Š” ํƒ€์‚ฌ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตญ๋‚ด ๋ถ€๋ฌธ์˜ ์†”๋ฃจ์…˜์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์˜คํ”ˆ ์†Œ์Šค๋ณด๋‹ค GOST์— ๋Œ€ํ•ด ๋” ์ž˜ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ์˜ต์…˜์€ ํ•„์š”ํ•œ ๊ฒƒ์„ ์ง์ ‘ ์ž‘์„ฑํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ”„๋กœ์‹œ์ € ์ˆ˜์ค€์—์„œ ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๋ฐ ์•”ํ˜ธํ™”๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ์‹ค, GOST๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋” ์–ด๋ ค์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ผ๋ฐ˜์ ์œผ๋กœ ํ•„์š”์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆจ๊ธฐ๊ณ  DBMS์— ๋„ฃ์€ ๋‹ค์Œ ํ•„์š”์— ๋”ฐ๋ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ˆ˜์ค€์—์„œ ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ํ•ด๋…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์‹œ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ด๋Ÿฌํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์–ด๋–ป๊ฒŒ ๋ณดํ˜ธํ•  ๊ฒƒ์ธ์ง€ ์ฆ‰์‹œ ์ƒ๊ฐํ•ด ๋ณด์‹ญ์‹œ์˜ค. ์šฐ๋ฆฌ ์ƒ๊ฐ์—๋Š” ์ด ์ž‘์—…์ด ๋” ๋น ๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— DBMS ์ˆ˜์ค€์—์„œ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ณด๊ณ ์„œ๋Š” ์—์„œ ์ฒ˜์Œ ๋ฐœํ‘œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. @๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชจ์ž„ Mail.ru ํด๋ผ์šฐ๋“œ ์†”๋ฃจ์…˜ ์ œ๊ณต. ๋ฐ”๋ผ๋ณด๋‹ค ๋น„๋””์˜ค ๊ธฐํƒ€ ๊ณต์—ฐ ๋ฐ ํ…”๋ ˆ๊ทธ๋žจ ์ด๋ฒคํŠธ ๊ณต์ง€์‚ฌํ•ญ ๊ตฌ๋… Mail.ru ๊ทธ๋ฃน์˜ Kubernetes ๊ด€๋ จ.

์ฃผ์ œ์— ๋Œ€ํ•ด ๋” ์ฝ์„ ๋‚ด์šฉ:

  1. Ceph ๊ทธ ์ด์ƒ: MCS ํด๋ผ์šฐ๋“œ ๋ธ”๋ก ์Šคํ† ๋ฆฌ์ง€.
  2. ๋‹ค์‹œ ์„ ํƒํ•  ํ•„์š”๊ฐ€ ์—†๋„๋ก ํ”„๋กœ์ ํŠธ์šฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•.

์ถœ์ฒ˜ : habr.com

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