์ฝ˜ํ…์ธ  ๋Œ€ํ‘œ ์ด๋ฏธ์ง€ - ๐Ÿš€ Minio vs Ceph Object Gateway: ์˜ค๋ธŒ์ ํŠธ ์Šคํ† ๋ฆฌ์ง€์˜ ์„ฑ๋Šฅ๊ณผ ํ™•์žฅ์„ฑ ์™„๋ฒฝ ๋น„๊ต ๊ฐ€์ด๋“œ

๐Ÿš€ Minio vs Ceph Object Gateway: ์˜ค๋ธŒ์ ํŠธ ์Šคํ† ๋ฆฌ์ง€์˜ ์„ฑ๋Šฅ๊ณผ ํ™•์žฅ์„ฑ ์™„๋ฒฝ ๋น„๊ต ๊ฐ€์ด๋“œ

ํด๋ผ์šฐ๋“œ ์‹œ๋Œ€์˜ ํ•„์ˆ˜ ์ธํ”„๋ผ, ์–ด๋–ค ๊ฑธ ์„ ํƒํ•ด์•ผ ํ• ๊นŒ? ๐Ÿค”

์•ˆ๋…•! ์˜ค๋Š˜์€ ๊ฐœ๋ฐœ์ž๋“ค ์‚ฌ์ด์—์„œ ๋œจ๊ฑฐ์šด ๊ฐ์ž์ธ ์˜ค๋ธŒ์ ํŠธ ์Šคํ† ๋ฆฌ์ง€ ์†”๋ฃจ์…˜ ๋‘ ๊ฐ€์ง€๋ฅผ ๋น„๊ตํ•ด๋ณผ ๊ฑฐ์•ผ. ๐Ÿ˜Š

ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ํ™˜๊ฒฝ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ฑด ์ด์ œ ์„ ํƒ์ด ์•„๋‹ˆ๋ผ ํ•„์ˆ˜๊ฐ€ ๋์ง€? ํŠนํžˆ ์ด๋ฏธ์ง€, ๋™์˜์ƒ, ๋กœ๊ทธ ํŒŒ์ผ ๊ฐ™์€ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ๊ฐ€ ํญ๋ฐœ์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋ฉด์„œ ์˜ค๋ธŒ์ ํŠธ ์Šคํ† ๋ฆฌ์ง€์˜ ์ค‘์š”์„ฑ์€ ๋‚ ๋กœ ์ปค์ง€๊ณ  ์žˆ์–ด. ๐Ÿ’พ

Minio์™€ Ceph Object Gateway๋Š” ๊ฐ๊ฐ์˜ ์ฒ ํ•™๊ณผ ๊ฐ•์ ์„ ๊ฐ€์ง„ ์˜คํ”ˆ์†Œ์Šค ์†”๋ฃจ์…˜์ธ๋ฐ, ๋‘˜ ๋‹ค AWS S3 ํ˜ธํ™˜ API๋ฅผ ์ œ๊ณตํ•˜๋ฉด์„œ๋„ ์„ฑ๋Šฅ๊ณผ ํ™•์žฅ์„ฑ ์ธก๋ฉด์—์„œ๋Š” ๊ฝค ๋‹ค๋ฅธ ํŠน์ง•์„ ๋ณด์—ฌ์ค˜. ์ด ๊ธ€์„ ํ†ตํ•ด ๋„ˆ์˜ ํ”„๋กœ์ ํŠธ์— ๋”ฑ ๋งž๋Š” ์„ ํƒ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค„๊ฒŒ! ๐ŸŽฏ

Minio ๊ฒฝ๋Ÿ‰ ยท ๋น ๋ฅธ ๋ฐฐํฌ โšก ๋‹จ์ผ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์นœํ™”์  ๊ณ ์„ฑ๋Šฅ ์ฒ˜๋ฆฌ ๊ฐ„ํŽธํ•œ ์šด์˜ Ceph RGW ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ยท ํ™•์žฅ์„ฑ ๐Ÿข ํ†ตํ•ฉ ์Šคํ† ๋ฆฌ์ง€ ๋Œ€๊ทœ๋ชจ ํด๋Ÿฌ์Šคํ„ฐ ๋‹ค์–‘ํ•œ ํ”„๋กœํ† ์ฝœ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ธฐ๋Šฅ VS

๐Ÿ“š ์˜ค๋ธŒ์ ํŠธ ์Šคํ† ๋ฆฌ์ง€๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

๋ณธ๊ฒฉ์ ์ธ ๋น„๊ต์— ์•ž์„œ, ์˜ค๋ธŒ์ ํŠธ ์Šคํ† ๋ฆฌ์ง€๊ฐ€ ๋ญ”์ง€๋ถ€ํ„ฐ ์งš๊ณ  ๋„˜์–ด๊ฐ€์ž! ๐ŸŽ“

์ „ํ†ต์ ์ธ ํŒŒ์ผ ์‹œ์Šคํ…œ์ด๋‚˜ ๋ธ”๋ก ์Šคํ† ๋ฆฌ์ง€์™€ ๋‹ฌ๋ฆฌ, ์˜ค๋ธŒ์ ํŠธ ์Šคํ† ๋ฆฌ์ง€๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ์ฒด(Object) ๋‹จ์œ„๋กœ ๊ด€๋ฆฌํ•ด. ๊ฐ ๊ฐ์ฒด๋Š” ๋ฐ์ดํ„ฐ ์ž์ฒด, ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ, ๊ทธ๋ฆฌ๊ณ  ๊ณ ์œ  ์‹๋ณ„์ž๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์ง€.

์ด๋Ÿฐ ๊ตฌ์กฐ ๋•๋ถ„์— ์˜ค๋ธŒ์ ํŠธ ์Šคํ† ๋ฆฌ์ง€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์žฅ์ ์„ ๊ฐ€์ ธ:

โœจ ๋ฌด์ œํ•œ ํ™•์žฅ์„ฑ

ํŽ˜ํƒ€๋ฐ”์ดํŠธ ๊ทœ๋ชจ๊นŒ์ง€ ์ˆ˜ํ‰ ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•ด. ๋…ธ๋“œ๋งŒ ์ถ”๊ฐ€ํ•˜๋ฉด ์šฉ๋Ÿ‰๊ณผ ์„ฑ๋Šฅ์ด ํ•จ๊ป˜ ๋Š˜์–ด๋‚˜์ง€!

๐Ÿ” ํ’๋ถ€ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ

๊ฐ ๊ฐ์ฒด์— ์ปค์Šคํ…€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋ถ™์ผ ์ˆ˜ ์žˆ์–ด์„œ ๊ฒ€์ƒ‰๊ณผ ๊ด€๋ฆฌ๊ฐ€ ํ›จ์”ฌ ํŽธ๋ฆฌํ•ด.

๐Ÿ’ฐ ๋น„์šฉ ํšจ์œจ์„ฑ

์ €๋ ดํ•œ ํ•˜๋“œ์›จ์–ด๋กœ๋„ ๊ตฌ์ถ• ๊ฐ€๋Šฅํ•˜๊ณ , ์ค‘๋ณต ์ œ๊ฑฐ์™€ ์••์ถ•์œผ๋กœ ์Šคํ† ๋ฆฌ์ง€ ๋น„์šฉ์„ ์ ˆ๊ฐํ•  ์ˆ˜ ์žˆ์–ด.

๐ŸŒ HTTP ๊ธฐ๋ฐ˜ ์ ‘๊ทผ

RESTful API๋กœ ์–ด๋””์„œ๋“  ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๊ณ , S3 ํ˜ธํ™˜ API๋กœ ์ƒํƒœ๊ณ„๊ฐ€ ํ’๋ถ€ํ•˜์ง€.

๐ŸŽฏ Minio: ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์‹œ๋Œ€์˜ ๊ฒฝ๋Ÿ‰ ์ฑ”ํ”ผ์–ธ

Minio๋Š” 2014๋…„์— ๋“ฑ์žฅํ•œ ๋น„๊ต์  ์ Š์€ ํ”„๋กœ์ ํŠธ์•ผ. ํ•˜์ง€๋งŒ "ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ"๋ผ๋Š” ํ‚ค์›Œ๋“œ์— ๊ฐ€์žฅ ์ถฉ์‹คํ•œ ์˜ค๋ธŒ์ ํŠธ ์Šคํ† ๋ฆฌ์ง€ ์†”๋ฃจ์…˜์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์ง€. ๐Ÿš€

Go ์–ธ์–ด๋กœ ์ž‘์„ฑ๋˜์–ด ์žˆ์–ด์„œ ๋‹จ์ผ ๋ฐ”์ด๋„ˆ๋ฆฌ๋กœ ๋ฐฐํฌ๋˜๊ณ , ์˜์กด์„ฑ์ด ๊ฑฐ์˜ ์—†์–ด. ์ด๊ฒŒ ์–ผ๋งˆ๋‚˜ ํฐ ์žฅ์ ์ธ์ง€ ์•Œ์•„? ๋ณต์žกํ•œ ์„ค์ • ์—†์ด ๋ช‡ ๋ถ„ ๋งŒ์— ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฑฐ์•ผ!

โšก Minio์˜ ํ•ต์‹ฌ ํŠน์ง•

๐ŸŽช ์ดˆ๊ฐ„๋‹จ ๋ฐฐํฌ
Docker ์ปจํ…Œ์ด๋„ˆ ํ•˜๋‚˜๋ฉด ๋! ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ™˜๊ฒฝ์—์„œ๋Š” Helm ์ฐจํŠธ๋กœ ๋ช‡ ์ค„์˜ ๋ช…๋ น์–ด๋งŒ์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์–ด. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ํ…Œ์ŠคํŠธํ•˜๊ณ  ๊ทธ๋Œ€๋กœ ํ”„๋กœ๋•์…˜์— ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒŒ ์ •๋ง ๋งค๋ ฅ์ ์ด์ง€.
ํ•ญ๋ชฉ ์„ค๋ช… ์žฅ์ 
์–ธ์–ด Go (Golang) ๋†’์€ ๋™์‹œ์„ฑ, ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ
๋ฐฐํฌ ๋ฐฉ์‹ ๋‹จ์ผ ๋ฐ”์ด๋„ˆ๋ฆฌ ์˜์กด์„ฑ ์—†์Œ, ๋น ๋ฅธ ์‹œ์ž‘
์•„ํ‚คํ…์ฒ˜ ๋ถ„์‚ฐ Erasure Coding ๋ฐ์ดํ„ฐ ๋ณดํ˜ธ + ์Šคํ† ๋ฆฌ์ง€ ํšจ์œจ
API S3 ํ˜ธํ™˜ 100% ๊ธฐ์กด ๋„๊ตฌ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
๊ด€๋ฆฌ UI ๋‚ด์žฅ ์›น ์ฝ˜์†” ์ง๊ด€์ ์ธ ๋ชจ๋‹ˆํ„ฐ๋ง

๐Ÿ”ฅ Minio์˜ ์„ฑ๋Šฅ ๋น„๋ฐ€

Minio๊ฐ€ ์„ฑ๋Šฅ ๋ฉด์—์„œ ๋‹๋ณด์ด๋Š” ์ด์œ ๋Š” ๋ช‡ ๊ฐ€์ง€๊ฐ€ ์žˆ์–ด:

1. ๋ฉ”๋ชจ๋ฆฌ ์ค‘์‹ฌ ์„ค๊ณ„ ๐Ÿ’จ
Minio๋Š” ๊ฐ€๋Šฅํ•œ ํ•œ ๋งŽ์€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์บ์‹ฑํ•ด. ์ด ๋•๋ถ„์— ๊ฐ์ฒด ์กฐํšŒ ์†๋„๊ฐ€ ์—„์ฒญ๋‚˜๊ฒŒ ๋นจ๋ผ. ํŠนํžˆ ์ž‘์€ ํŒŒ์ผ์„ ๋งŽ์ด ๋‹ค๋ฃจ๋Š” ํ™˜๊ฒฝ์—์„œ ๊ทธ ์ฐจ์ด๊ฐ€ ํ™•์—ฐํžˆ ๋“œ๋Ÿฌ๋‚˜์ง€.

2. Erasure Coding ์ตœ์ ํ™” ๐Ÿ›ก๏ธ
๋ฐ์ดํ„ฐ ๋ณดํ˜ธ๋ฅผ ์œ„ํ•ด Erasure Coding์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ด๊ฒŒ RAID๋ณด๋‹ค ์Šคํ† ๋ฆฌ์ง€ ํšจ์œจ์ด ์ข‹์•„. ์˜ˆ๋ฅผ ๋“ค์–ด 16๊ฐœ ๋“œ๋ผ์ด๋ธŒ ๊ตฌ์„ฑ์—์„œ ์ตœ๋Œ€ 8๊ฐœ๊นŒ์ง€ ์žฅ์• ๋ฅผ ๊ฒฌ๋”œ ์ˆ˜ ์žˆ์œผ๋ฉด์„œ๋„ ์Šคํ† ๋ฆฌ์ง€ ์˜ค๋ฒ„ํ—ค๋“œ๋Š” 50%๋งŒ ๋ฐœ์ƒํ•ด.

3. ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ์˜ ๋‹ฌ์ธ โš™๏ธ
Go์˜ ๊ณ ๋ฃจํ‹ด(Goroutine)์„ ์ ๊ทน ํ™œ์šฉํ•ด์„œ ์ˆ˜์ฒœ ๊ฐœ์˜ ๋™์‹œ ์—ฐ๊ฒฐ์„ ๊ฐ€๋ณ๊ฒŒ ์ฒ˜๋ฆฌํ•ด. CPU ์ฝ”์–ด๋ฅผ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜๋Š” ๊ตฌ์กฐ๋ผ ๋ฉ€ํ‹ฐ์ฝ”์–ด ํ™˜๊ฒฝ์—์„œ ์„ ํ˜•์ ์œผ๋กœ ์„ฑ๋Šฅ์ด ์ฆ๊ฐ€ํ•˜์ง€.

โš ๏ธ ์ฃผ์˜ํ•  ์ 
Minio๋Š” ๋‹จ์ˆœํ•จ์„ ์ถ”๊ตฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ถ€ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ์€ ์ œ๊ณตํ•˜์ง€ ์•Š์•„. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ธ”๋ก ์Šคํ† ๋ฆฌ์ง€๋‚˜ ํŒŒ์ผ ์‹œ์Šคํ…œ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ง€์›ํ•˜์ง€ ์•Š์•„. ์˜ค์ง ์˜ค๋ธŒ์ ํŠธ ์Šคํ† ๋ฆฌ์ง€์—๋งŒ ์ง‘์ค‘ํ•œ๋‹ค๋Š” ์ฒ ํ•™์ด์ง€!

๐Ÿ“Š Minio ์„ฑ๋Šฅ ๋ฒค์น˜๋งˆํฌ

์‹ค์ œ ๋ฒค์น˜๋งˆํฌ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด Minio์˜ ์„ฑ๋Šฅ์ด ์–ผ๋งˆ๋‚˜ ์ธ์ƒ์ ์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ์–ด:

32๊ฐœ ๋…ธ๋“œ ํด๋Ÿฌ์Šคํ„ฐ ํ™˜๊ฒฝ์—์„œ:
โ€ข ์ฝ๊ธฐ ์ฒ˜๋ฆฌ๋Ÿ‰: ์ตœ๋Œ€ 325 GB/s ๐Ÿš„
โ€ข ์“ฐ๊ธฐ ์ฒ˜๋ฆฌ๋Ÿ‰: ์ตœ๋Œ€ 165 GB/s โœ๏ธ
โ€ข ๋™์‹œ ์—ฐ๊ฒฐ: 10,000+ connections ๋™์‹œ ์ฒ˜๋ฆฌ ๐Ÿ”—
โ€ข ์ง€์—ฐ์‹œ๊ฐ„: ํ‰๊ท  10ms ์ดํ•˜ (์ž‘์€ ๊ฐ์ฒด ๊ธฐ์ค€) โฑ๏ธ

๋ฌผ๋ก  ์ด๊ฑด ์ตœ์ ํ™”๋œ ํ™˜๊ฒฝ์—์„œ์˜ ๊ฒฐ๊ณผ์ง€๋งŒ, ์ค‘์†Œ ๊ทœ๋ชจ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ๋„ ์ถฉ๋ถ„ํžˆ ์ธ์ƒ์ ์ธ ์„ฑ๋Šฅ์„ ๋ณด์—ฌ์ค˜!

๐Ÿข Ceph Object Gateway (RGW): ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ์˜ ์„ ํƒ

Ceph๋Š” 2006๋…„์— ์‹œ์ž‘๋œ ์—ญ์‚ฌ๊ฐ€ ๊นŠ์€ ํ”„๋กœ์ ํŠธ์•ผ. ์›๋ž˜๋Š” ๋ถ„์‚ฐ ํŒŒ์ผ ์‹œ์Šคํ…œ์œผ๋กœ ์‹œ์ž‘ํ–ˆ์ง€๋งŒ, ์ง€๊ธˆ์€ ๋ธ”๋ก ์Šคํ† ๋ฆฌ์ง€, ํŒŒ์ผ ์‹œ์Šคํ…œ, ์˜ค๋ธŒ์ ํŠธ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๋ชจ๋‘ ์ œ๊ณตํ•˜๋Š” ํ†ตํ•ฉ ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋žซํผ์ด ๋์–ด. ๐ŸŽช

Ceph Object Gateway (RGW)๋Š” Ceph์˜ ์˜ค๋ธŒ์ ํŠธ ์Šคํ† ๋ฆฌ์ง€ ์ธํ„ฐํŽ˜์ด์Šค์ธ๋ฐ, RADOS๋ผ๋Š” ๊ฐ•๋ ฅํ•œ ๋ถ„์‚ฐ ๊ฐ์ฒด ์ €์žฅ์†Œ ์œ„์—์„œ ๋™์ž‘ํ•ด. ์ด๊ฒŒ ๋ฌด์Šจ ์˜๋ฏธ๋ƒ๋ฉด, ๊ฐ™์€ ์Šคํ† ๋ฆฌ์ง€ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋ธ”๋ก ์Šคํ† ๋ฆฌ์ง€(RBD)์™€ ์˜ค๋ธŒ์ ํŠธ ์Šคํ† ๋ฆฌ์ง€(RGW)๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฑฐ์ง€! ๐ŸŽฏ

๐ŸŒŸ Ceph RGW์˜ ํ•ต์‹ฌ ํŠน์ง•

ํ•ญ๋ชฉ ์„ค๋ช… ์žฅ์ 
์–ธ์–ด C++ ์ตœ์ ํ™”๋œ ์„ฑ๋Šฅ, ๋ฉ”๋ชจ๋ฆฌ ์ œ์–ด
์•„ํ‚คํ…์ฒ˜ RADOS ๊ธฐ๋ฐ˜ ํ†ตํ•ฉ ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋žซํผ
๋ณต์ œ ๋ฐฉ์‹ Replication + EC ์œ ์—ฐํ•œ ๋ฐ์ดํ„ฐ ๋ณดํ˜ธ ์ •์ฑ…
ํ”„๋กœํ† ์ฝœ S3, Swift, NFS ๋‹ค์–‘ํ•œ ํด๋ผ์ด์–ธํŠธ ์ง€์›
๋ฉ€ํ‹ฐํ…Œ๋„Œ์‹œ ์™„์ „ํ•œ ๊ฒฉ๋ฆฌ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ํ™˜๊ฒฝ ์ตœ์ ํ™”
๐Ÿ’ก RADOS์˜ ๋งˆ๋ฒ•
RADOS(Reliable Autonomic Distributed Object Store)๋Š” Ceph์˜ ํ•ต์‹ฌ์ด์•ผ. ์ด ๋…€์„์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ๋ถ„์‚ฐํ•˜๊ณ , ๋ณต์ œํ•˜๊ณ , ๋ณต๊ตฌํ•˜๋Š” ๋ชจ๋“  ์ผ์„ ์ฒ˜๋ฆฌํ•ด. ๊ด€๋ฆฌ์ž๊ฐ€ ์ผ์ผ์ด ์‹ ๊ฒฝ ์“ธ ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๊ฒŒ ํฐ ์žฅ์ ์ด์ง€!

๐Ÿ”ง Ceph์˜ ์•„ํ‚คํ…์ฒ˜ ์ดํ•ดํ•˜๊ธฐ

Ceph์˜ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๋ ค๋ฉด ๋ช‡ ๊ฐ€์ง€ ํ•ต์‹ฌ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์•Œ์•„์•ผ ํ•ด:

1. MON (Monitor) ๐Ÿ‘๏ธ
ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ๋งต(Map) ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•ด. ์ตœ์†Œ 3๊ฐœ ์ด์ƒ์˜ ํ™€์ˆ˜ ๊ฐœ๋กœ ๊ตฌ์„ฑํ•ด์„œ ์ฟผ๋Ÿผ์„ ์œ ์ง€ํ•˜์ง€.

2. OSD (Object Storage Daemon) ๐Ÿ’พ
์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ๋ชฌ์ด์•ผ. ๊ฐ ๋””์Šคํฌ๋งˆ๋‹ค ํ•˜๋‚˜์”ฉ ์‹คํ–‰๋˜๊ณ , ๋ฐ์ดํ„ฐ ๋ณต์ œ์™€ ๋ณต๊ตฌ๋ฅผ ๋‹ด๋‹นํ•ด.

3. RGW (RADOS Gateway) ๐ŸŒ
S3/Swift API๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒŒ์ดํŠธ์›จ์ด์•ผ. ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ๋„์›Œ์„œ ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑํ•  ์ˆ˜ ์žˆ์–ด.

4. MGR (Manager) ๐Ÿ“Š
๋ชจ๋‹ˆํ„ฐ๋ง, ๋Œ€์‹œ๋ณด๋“œ, ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ด€๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ๋น„๊ต์  ์ตœ๊ทผ์— ์ถ”๊ฐ€๋œ ์ปดํฌ๋„ŒํŠธ์•ผ.

Ceph ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์กฐ ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ S3 API ํ˜ธ์ถœ RGW ์˜ค๋ธŒ์ ํŠธ ๊ฒŒ์ดํŠธ์›จ์ด MON ํด๋Ÿฌ์Šคํ„ฐ ๋งต ์ƒํƒœ ๊ด€๋ฆฌ MGR ๋ชจ๋‹ˆํ„ฐ๋ง ๋Œ€์‹œ๋ณด๋“œ OSD 1 ๋””์Šคํฌ A OSD 2 ๋””์Šคํฌ B OSD 3 ๋””์Šคํฌ C ๋ฐ์ดํ„ฐ ๋ถ„์‚ฐ ์ €์žฅ

๐ŸŽฏ Ceph์˜ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ๋“ค

Ceph๊ฐ€ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ํ™˜๊ฒฝ์—์„œ ์‚ฌ๋ž‘๋ฐ›๋Š” ์ด์œ ๋Š” ํ’๋ถ€ํ•œ ๊ธฐ๋Šฅ ๋•Œ๋ฌธ์ด์•ผ:

๋ฉ€ํ‹ฐ์‚ฌ์ดํŠธ ๋ณต์ œ ๐ŸŒ
์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ์„ผํ„ฐ ๊ฐ„์— ์ž๋™์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์ œํ•  ์ˆ˜ ์žˆ์–ด. ์žฌํ•ด ๋ณต๊ตฌ(DR) ์‹œ๋‚˜๋ฆฌ์˜ค์— ์™„๋ฒฝํ•˜์ง€!

๋ฒ„ํ‚ท ๋ฒ„์ €๋‹ ๐Ÿ“š
๊ฐ์ฒด์˜ ๋ชจ๋“  ๋ฒ„์ „์„ ๋ณด๊ด€ํ•  ์ˆ˜ ์žˆ์–ด์„œ ์‹ค์ˆ˜๋กœ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ๋ฎ์–ด์“ด ๋ฐ์ดํ„ฐ๋„ ๋ณต๊ตฌ ๊ฐ€๋Šฅํ•ด.

๋ผ์ดํ”„์‚ฌ์ดํด ์ •์ฑ… โ™ป๏ธ
์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค๋กœ ์ด๋™์‹œํ‚ฌ ์ˆ˜ ์žˆ์–ด.

์•”ํ˜ธํ™” ๐Ÿ”
์„œ๋ฒ„ ์ธก ์•”ํ˜ธํ™”(SSE)๋ฅผ ์ง€์›ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ์ง€.

๋ฉ€ํ‹ฐํ…Œ๋„Œ์‹œ ๐Ÿ‘ฅ
์™„์ „ํžˆ ๊ฒฉ๋ฆฌ๋œ ์—ฌ๋Ÿฌ ํ…Œ๋„ŒํŠธ๋ฅผ ํ•˜๋‚˜์˜ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์šด์˜ํ•  ์ˆ˜ ์žˆ์–ด. ๊ฐ ํ…Œ๋„ŒํŠธ๋Š” ๋…๋ฆฝ์ ์ธ ์‚ฌ์šฉ์ž, ๋ฒ„ํ‚ท, ์ฟผํ„ฐ๋ฅผ ๊ฐ€์ ธ.

โš”๏ธ ์„ฑ๋Šฅ ๋น„๊ต: ๋ˆ„๊ฐ€ ๋” ๋น ๋ฅผ๊นŒ?

์ž, ์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋‘ ์†”๋ฃจ์…˜์˜ ์„ฑ๋Šฅ์„ ๋น„๊ตํ•ด๋ณผ ์‹œ๊ฐ„์ด์•ผ! ๐Ÿ
์„ฑ๋Šฅ์€ ๋‹จ์ˆœํžˆ "๋น ๋ฅด๋‹ค/๋А๋ฆฌ๋‹ค"๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์—†์–ด. ์›Œํฌ๋กœ๋“œ ํŠน์„ฑ, ํด๋Ÿฌ์Šคํ„ฐ ๊ทœ๋ชจ, ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ ๋“ฑ ๋งŽ์€ ๋ณ€์ˆ˜๊ฐ€ ์žˆ๊ฑฐ๋“ . ํ•˜์ง€๋งŒ ์ผ๋ฐ˜์ ์ธ ํŒจํ„ด์€ ๋ถ„๋ช…ํžˆ ์กด์žฌํ•ด!

๐Ÿ“ˆ ์ฒ˜๋ฆฌ๋Ÿ‰(Throughput) ๋น„๊ต

๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ ์ฒ˜๋ฆฌ (100MB ์ด์ƒ) ๐Ÿ“ฆ

Minio: ๋„คํŠธ์›Œํฌ ๋Œ€์—ญํญ์„ ๊ฑฐ์˜ 100% ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์–ด. 10GbE ๋„คํŠธ์›Œํฌ์—์„œ ๋…ธ๋“œ๋‹น 1GB/s ์ด์ƒ์˜ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๋ณด์—ฌ์ค˜. ํŠนํžˆ ์ˆœ์ฐจ ์“ฐ๊ธฐ์—์„œ ๊ฐ•์ ์„ ๋ณด์ด์ง€.

Ceph RGW: RADOS ๋ ˆ์ด์–ด๋ฅผ ๊ฑฐ์น˜๊ธฐ ๋•Œ๋ฌธ์— ์•ฝ๊ฐ„์˜ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์žˆ์–ด. ํ•˜์ง€๋งŒ ๋Œ€๊ทœ๋ชจ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ๋Š” OSD์˜ ๋ณ‘๋ ฌ์„ฑ ๋•๋ถ„์— ์ „์ฒด ์ฒ˜๋ฆฌ๋Ÿ‰์ด ์„ ํ˜•์ ์œผ๋กœ ์ฆ๊ฐ€ํ•ด. ๋…ธ๋“œ๋‹น 700-900MB/s ์ •๋„.

์Šน์ž: Minio๊ฐ€ ์•ฝ 10-20% ์•ž์„œ์ง€๋งŒ, ๋Œ€๊ทœ๋ชจ ํ™˜๊ฒฝ์—์„œ๋Š” ์ฐจ์ด๊ฐ€ ์ค„์–ด๋“ค์–ด. ๐Ÿ†

์ž‘์€ ํŒŒ์ผ ์ฒ˜๋ฆฌ (1MB ์ดํ•˜) ๐Ÿ“„

Minio: ๋ฉ”๋ชจ๋ฆฌ ์บ์‹ฑ๊ณผ ๊ฒฝ๋Ÿ‰ ์•„ํ‚คํ…์ฒ˜ ๋•๋ถ„์— ์ดˆ๋‹น ์ˆ˜๋งŒ ๊ฐœ์˜ ์ž‘์€ ๊ฐ์ฒด๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด. ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์กฐํšŒ๊ฐ€ ํŠนํžˆ ๋นจ๋ผ.

Ceph RGW: ์ž‘์€ ํŒŒ์ผ์—์„œ๋Š” RADOS์˜ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋” ๋‘๋“œ๋Ÿฌ์ ธ. ํŠนํžˆ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์กฐํšŒ์—์„œ ์ถ”๊ฐ€ ๋ ˆ์ดํ„ด์‹œ๊ฐ€ ๋ฐœ์ƒํ•ด. ํ•˜์ง€๋งŒ ์ตœ์‹  ๋ฒ„์ „์—์„œ๋Š” ๋งŽ์ด ๊ฐœ์„ ๋์–ด.

์Šน์ž: Minio๊ฐ€ ํ™•์‹คํžˆ ์•ž์„œ. ์ž‘์€ ํŒŒ์ผ์ด ๋งŽ๋‹ค๋ฉด Minio๊ฐ€ ์œ ๋ฆฌํ•ด! ๐Ÿฅ‡

โฑ๏ธ ์ง€์—ฐ์‹œ๊ฐ„(Latency) ๋น„๊ต

์ž‘์—… ์œ ํ˜• Minio (ํ‰๊ท ) Ceph RGW (ํ‰๊ท ) ๋น„๊ณ 
GET (1MB) 8-12ms 15-25ms Minio ์šฐ์„ธ
PUT (1MB) 10-15ms 20-30ms Minio ์šฐ์„ธ
LIST 5-10ms 15-30ms Minio ์••๋„์ 
DELETE 3-8ms 10-20ms Minio ์šฐ์„ธ
๋ฉ€ํ‹ฐํŒŒํŠธ ์—…๋กœ๋“œ ๋น„์Šท ๋น„์Šท ๋Œ€์šฉ๋Ÿ‰์—์„œ๋Š” ๋น„๋“ฑ
๐Ÿ’ก ์‹ค์ „ ํŒ
์ง€์—ฐ์‹œ๊ฐ„์ด ์ค‘์š”ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(์˜ˆ: ์‹ค์‹œ๊ฐ„ ์ด๋ฏธ์ง€ ์„œ๋น™)์ด๋ผ๋ฉด Minio๊ฐ€ ๋” ๋‚˜์€ ์„ ํƒ์ด์•ผ. ํ•˜์ง€๋งŒ ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ๋‚˜ ๋ฐฑ์—… ์šฉ๋„๋ผ๋ฉด ์ง€์—ฐ์‹œ๊ฐ„ ์ฐจ์ด๋Š” ํฌ๊ฒŒ ์ค‘์š”ํ•˜์ง€ ์•Š์•„!

๐Ÿ”„ ๋™์‹œ์„ฑ(Concurrency) ์ฒ˜๋ฆฌ

Minio์˜ ๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ โšก
Go์˜ ๊ณ ๋ฃจํ‹ด ๋•๋ถ„์— ์ˆ˜์ฒœ ๊ฐœ์˜ ๋™์‹œ ์—ฐ๊ฒฐ์„ ๊ฐ€๋ณ๊ฒŒ ์ฒ˜๋ฆฌํ•ด. ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰๋„ ํšจ์œจ์ ์ด์–ด์„œ ๋…ธ๋“œ๋‹น 10,000๊ฐœ ์ด์ƒ์˜ ๋™์‹œ ์—ฐ๊ฒฐ๋„ ๋ฌธ์ œ์—†์–ด. ํŠนํžˆ ์ฝ๊ธฐ ์ž‘์—…์—์„œ ๊ฐ•์ ์„ ๋ณด์ด์ง€.

Ceph RGW์˜ ๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ ๐Ÿ”ง
RGW๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์Šค๋ ˆ๋“œ ํ’€์„ ์‚ฌ์šฉํ•ด. ์„ค์ •์— ๋”ฐ๋ผ ๋‹ค๋ฅด์ง€๋งŒ ๋ณดํ†ต ๋…ธ๋“œ๋‹น ์ˆ˜๋ฐฑ~์ˆ˜์ฒœ ๊ฐœ์˜ ๋™์‹œ ์—ฐ๊ฒฐ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด. Beast ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋ผ.

๊ฒฐ๋ก : ๋†’์€ ๋™์‹œ์„ฑ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด Minio๊ฐ€ ๋” ์ ํ•ฉํ•ด. ํ•˜์ง€๋งŒ Ceph๋„ ์ ์ ˆํžˆ ํŠœ๋‹ํ•˜๋ฉด ์ถฉ๋ถ„ํ•œ ์„ฑ๋Šฅ์„ ๋‚ผ ์ˆ˜ ์žˆ์–ด! ๐ŸŽฏ

๐Ÿ“ ํ™•์žฅ์„ฑ(Scalability) ๋น„๊ต

ํ™•์žฅ์„ฑ์€ ์˜ค๋ธŒ์ ํŠธ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์„ ํƒํ•  ๋•Œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์š”์†Œ ์ค‘ ํ•˜๋‚˜์•ผ. ์ฒ˜์Œ์—” ์ž‘๊ฒŒ ์‹œ์ž‘ํ•˜๋”๋ผ๋„ ๋‚˜์ค‘์— ํŽ˜ํƒ€๋ฐ”์ดํŠธ ๊ทœ๋ชจ๋กœ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋‹ˆ๊นŒ! ๐ŸŒฑโžก๏ธ๐ŸŒณ

๐Ÿ“Š ์ˆ˜ํ‰ ํ™•์žฅ(Scale-Out)

Minio ํ™•์žฅ ๋ฐฉ์‹

Erasure Set ๊ธฐ๋ฐ˜
Minio๋Š” ์„œ๋ฒ„ ํ’€(Server Pool) ๊ฐœ๋…์„ ์‚ฌ์šฉํ•ด. ์ตœ์†Œ 4๊ฐœ ๋…ธ๋“œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ๊ฐ™์€ ํฌ๊ธฐ์˜ ํ’€์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์–ด.

์˜ˆ๋ฅผ ๋“ค์–ด 16๋…ธ๋“œ๋กœ ์‹œ์ž‘ํ–ˆ๋‹ค๋ฉด, ๋‚˜์ค‘์— 16๋…ธ๋“œ ํ’€์„ ์ถ”๊ฐ€ํ•ด์„œ 32๋…ธ๋“œ๋กœ ํ™•์žฅํ•˜๋Š” ์‹์ด์ง€. ๊ฐ ํ’€์€ ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋ฉด์„œ๋„ ํ•˜๋‚˜์˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๊ณต์œ ํ•ด! ๐ŸŽช

Ceph ํ™•์žฅ ๋ฐฉ์‹

CRUSH ์•Œ๊ณ ๋ฆฌ์ฆ˜
Ceph๋Š” CRUSH(Controlled Replication Under Scalable Hashing) ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์‚ฐํ•ด. OSD๋ฅผ ํ•˜๋‚˜์”ฉ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๊ณ , ์ž๋™์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์žฌ๋ถ„์‚ฐ๋ผ.

์ด๋ก ์ ์œผ๋กœ๋Š” ์ˆ˜์ฒœ ๊ฐœ์˜ ๋…ธ๋“œ๊นŒ์ง€ ํ™•์žฅ ๊ฐ€๋Šฅํ•ด. ์‹ค์ œ๋กœ CERN ๊ฐ™์€ ๊ณณ์—์„œ๋Š” ์ˆ˜๋ฐฑ ํŽ˜ํƒ€๋ฐ”์ดํŠธ ๊ทœ๋ชจ๋กœ ์šด์˜ํ•˜๊ณ  ์žˆ์–ด! ๐Ÿ”ฌ

ํ™•์žฅ ์‹œ ๊ณ ๋ ค์‚ฌํ•ญ ๐Ÿค”

Minio:
โ€ข ํ’€ ๋‹จ์œ„๋กœ ํ™•์žฅํ•ด์•ผ ํ•ด์„œ ์ดˆ๊ธฐ ํˆฌ์ž ๋น„์šฉ์ด ํด ์ˆ˜ ์žˆ์–ด
โ€ข ํ•˜์ง€๋งŒ ํ™•์žฅ ๊ณผ์ •์ด ๋‹จ์ˆœํ•˜๊ณ  ์˜ˆ์ธก ๊ฐ€๋Šฅํ•ด
โ€ข ๋ฐ์ดํ„ฐ ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ์ด ํ•„์š” ์—†์–ด์„œ ํ™•์žฅ ์ค‘์—๋„ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๊ฑฐ์˜ ์—†์–ด

Ceph:
โ€ข ๋…ธ๋“œ๋ฅผ ํ•˜๋‚˜์”ฉ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์–ด์„œ ์œ ์—ฐํ•ด
โ€ข ํ™•์žฅ ์‹œ ๋ฐ์ดํ„ฐ ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ์ด ๋ฐœ์ƒํ•ด์„œ ์ผ์‹œ์ ์œผ๋กœ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์–ด
โ€ข ๋Œ€๊ทœ๋ชจ ํ™•์žฅ์— ๋” ์ ํ•ฉํ•œ ๊ตฌ์กฐ์•ผ

๐ŸŽš๏ธ ์ˆ˜์ง ํ™•์žฅ(Scale-Up)

์ˆ˜์ง ํ™•์žฅ์€ ๊ธฐ์กด ๋…ธ๋“œ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๋Š˜๋ฆฌ๋Š” ๊ฑฐ์•ผ. CPU, ๋ฉ”๋ชจ๋ฆฌ, ๋””์Šคํฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์‹์ด์ง€.

Minio๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋Š˜๋ฆฌ๋ฉด ์บ์‹ฑ ํšจ๊ณผ๊ฐ€ ์ปค์ ธ์„œ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋ผ. CPU ์ฝ”์–ด๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ์ด ์„ ํ˜•์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๊ณ .

Ceph๋Š” OSD๋‹น CPU์™€ ๋ฉ”๋ชจ๋ฆฌ ์š”๊ตฌ์‚ฌํ•ญ์ด ์žˆ์–ด. ํŠนํžˆ Erasure Coding์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” CPU ๋ฆฌ์†Œ์Šค๊ฐ€ ์ค‘์š”ํ•ด. ๋ฉ”๋ชจ๋ฆฌ๋Š” BlueStore ์บ์‹œ ํฌ๊ธฐ์— ์˜ํ–ฅ์„ ์ค˜.

๋‘ ์†”๋ฃจ์…˜ ๋ชจ๋‘ ์ˆ˜์ง ํ™•์žฅ์˜ ํšจ๊ณผ๊ฐ€ ์žˆ์ง€๋งŒ, ์˜ค๋ธŒ์ ํŠธ ์Šคํ† ๋ฆฌ์ง€์˜ ๋ณธ์งˆ์€ ์ˆ˜ํ‰ ํ™•์žฅ์ด๋ผ๋Š” ๊ฑธ ์žŠ์ง€ ๋งˆ! ๐ŸŽฏ

๐Ÿ› ๏ธ ์šด์˜ ๋ฐ ๊ด€๋ฆฌ ํŽธ์˜์„ฑ

์•„๋ฌด๋ฆฌ ์„ฑ๋Šฅ์ด ์ข‹์•„๋„ ์šด์˜์ด ์–ด๋ ค์šฐ๋ฉด ์‹ค์ „์—์„œ ์“ฐ๊ธฐ ํž˜๋“ค์ง€. ์‹ค์ œ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ฐฐํฌ, ๋ชจ๋‹ˆํ„ฐ๋ง, ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…์ด ์–ผ๋งˆ๋‚˜ ์‰ฌ์šด์ง€๊ฐ€ ์ •๋ง ์ค‘์š”ํ•ด! ๐Ÿ”ง

๐Ÿš€ ๋ฐฐํฌ ๋ฐ ์„ค์ •

Minio ๋ฐฐํฌ ๐ŸŽฏ

์ดˆ๊ฐ„๋‹จ ์‹œ์ž‘
Docker ํ•œ ์ค„์ด๋ฉด ๋!
docker run -p 9000:9000 minio/minio server /data

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ๋Š” Operator๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋” ์‰ฌ์›Œ. Helm ์ฐจํŠธ๋„ ์ž˜ ๊ด€๋ฆฌ๋˜๊ณ  ์žˆ์–ด์„œ ํ”„๋กœ๋•์…˜ ๋ฐฐํฌ๋„ ๊ธˆ๋ฐฉ์ด์•ผ! โšก

Ceph ๋ฐฐํฌ ๐Ÿ—๏ธ

์ฒด๊ณ„์ ์ธ ๊ตฌ์ถ•
Cephadm์ด๋‚˜ Rook์„ ์‚ฌ์šฉํ•˜๋ฉด ๋งŽ์ด ๊ฐ„ํŽธํ•ด์กŒ์–ด. ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ MON, MGR, OSD ๋“ฑ ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์„ค์ •ํ•ด์•ผ ํ•ด.

์ดˆ๊ธฐ ํ•™์Šต ๊ณก์„ ์ด ์žˆ์ง€๋งŒ, ํ•œ๋ฒˆ ์ตํžˆ๋ฉด ๊ฐ•๋ ฅํ•œ ์ œ์–ด๊ฐ€ ๊ฐ€๋Šฅํ•ด! ๐ŸŽ“

โš ๏ธ ์‹ค์ „ ์กฐ์–ธ
๋น ๋ฅด๊ฒŒ ์‹œ์ž‘ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด Minio๊ฐ€ ๋‹ต์ด์•ผ. ํ•˜์ง€๋งŒ ๋ณต์žกํ•œ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์š”๊ตฌ์‚ฌํ•ญ์ด ์žˆ๋‹ค๋ฉด Ceph์˜ ํ•™์Šต ํˆฌ์ž๊ฐ€ ๊ฐ€์น˜ ์žˆ์–ด!

๐Ÿ“Š ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๊ด€์ฐฐ์„ฑ

Minio ๋ชจ๋‹ˆํ„ฐ๋ง ๐Ÿ“ˆ
โ€ข ๋‚ด์žฅ ์›น ์ฝ˜์†”์ด ์ง๊ด€์ ์ด๊ณ  ์˜ˆ๋ป
โ€ข Prometheus ๋ฉ”ํŠธ๋ฆญ์„ ๊ธฐ๋ณธ ์ œ๊ณตํ•ด
โ€ข Grafana ๋Œ€์‹œ๋ณด๋“œ ํ…œํ”Œ๋ฆฟ์ด ์ž˜ ๋งŒ๋“ค์–ด์ ธ ์žˆ์–ด
โ€ข ๋กœ๊ทธ๊ฐ€ ๊ตฌ์กฐํ™”๋˜์–ด ์žˆ์–ด์„œ ๋ถ„์„ํ•˜๊ธฐ ์‰ฌ์›Œ
โ€ข Health check API๊ฐ€ ๊ฐ„๋‹จ๋ช…๋ฃŒํ•ด

Ceph ๋ชจ๋‹ˆํ„ฐ๋ง ๐Ÿ”
โ€ข MGR ๋Œ€์‹œ๋ณด๋“œ๊ฐ€ ๋งค์šฐ ์ƒ์„ธํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ด
โ€ข Prometheus ํ†ตํ•ฉ์ด ์ž˜ ๋˜์–ด ์žˆ์–ด
โ€ข ํด๋Ÿฌ์Šคํ„ฐ ์ƒํƒœ, OSD ์ƒํƒœ, PG ์ƒํƒœ ๋“ฑ ์„ธ๋ฐ€ํ•œ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐ€๋Šฅ
โ€ข ๊ฒฝ๊ณ  ์‹œ์Šคํ…œ์ด ์ž˜ ๊ตฌ์ถ•๋˜์–ด ์žˆ์–ด
โ€ข ํ•˜์ง€๋งŒ ์ •๋ณด๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์•„์„œ ์ฒ˜์Œ์—” ์••๋„๋  ์ˆ˜ ์žˆ์–ด ๐Ÿ˜…

๐Ÿ’ก ๋ชจ๋‹ˆํ„ฐ๋ง ํŒ
๋‘ ์†”๋ฃจ์…˜ ๋ชจ๋‘ Prometheus + Grafana ์กฐํ•ฉ์„ ์ถ”์ฒœํ•ด! ์žฌ๋Šฅ๋„ท์—์„œ ์ธํ”„๋ผ ๊ด€๋ จ ์žฌ๋Šฅ์„ ๊ฑฐ๋ž˜ํ•  ๋•Œ๋„ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ตฌ์ถ• ๊ฒฝํ—˜์ด ์žˆ์œผ๋ฉด ํฐ ๊ฐ•์ ์ด ๋  ๊ฑฐ์•ผ. ๐Ÿ“Š

๐Ÿ”ง ์œ ์ง€๋ณด์ˆ˜ ๋ฐ ์—…๊ทธ๋ ˆ์ด๋“œ

Minio ์—…๊ทธ๋ ˆ์ด๋“œ ๐Ÿ”„
๋กค๋ง ์—…๋ฐ์ดํŠธ๊ฐ€ ๋งค์šฐ ์‰ฌ์›Œ. ๋ฐ”์ด๋„ˆ๋ฆฌ๋งŒ ๊ต์ฒดํ•˜๋ฉด ๋˜๊ฑฐ๋“ ! ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ™˜๊ฒฝ์—์„œ๋Š” Deployment๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ์ž๋™์œผ๋กœ ๋กค๋ง ์—…๋ฐ์ดํŠธ๊ฐ€ ์ง„ํ–‰๋ผ.

๋‹ค์šดํƒ€์ž„ ์—†์ด ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์žˆ๊ณ , ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ๋กค๋ฐฑ๋„ ๊ฐ„๋‹จํ•ด. ๋ฒ„์ „ ํ˜ธํ™˜์„ฑ๋„ ์ž˜ ์œ ์ง€๋˜๋Š” ํŽธ์ด์•ผ. โœ…

Ceph ์—…๊ทธ๋ ˆ์ด๋“œ ๐Ÿ”„
๋ฉ”์ด์ € ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ๋Š” ์‹ ์ค‘ํ•˜๊ฒŒ ๊ณ„ํšํ•ด์•ผ ํ•ด. MON โ†’ MGR โ†’ OSD โ†’ RGW ์ˆœ์„œ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๊ฒŒ ์ผ๋ฐ˜์ ์ด์•ผ.

Cephadm์„ ์‚ฌ์šฉํ•˜๋ฉด ์ž๋™ํ™”๋œ ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๋Œ€๊ทœ๋ชจ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ๋Š” ์‹œ๊ฐ„์ด ๊ฝค ๊ฑธ๋ ค. ํ•˜์ง€๋งŒ ์•ˆ์ •์„ฑ์€ ๊ฒ€์ฆ๋˜์–ด ์žˆ์–ด! ๐Ÿ›ก๏ธ

๐Ÿ’ฐ ๋น„์šฉ ๋ฐ ๋ฆฌ์†Œ์Šค ํšจ์œจ์„ฑ

TCO(Total Cost of Ownership)๋Š” ๊ธฐ์ˆ  ์„ ํƒ์—์„œ ๋นผ๋†“์„ ์ˆ˜ ์—†๋Š” ์š”์†Œ์•ผ. ๋ผ์ด์„ ์Šค ๋น„์šฉ์€ ์—†์ง€๋งŒ ํ•˜๋“œ์›จ์–ด, ์ „๋ ฅ, ์šด์˜ ์ธ๋ ฅ ๋น„์šฉ์„ ๊ณ ๋ คํ•ด์•ผ ํ•˜๊ฑฐ๋“ ! ๐Ÿ’ต

๐Ÿ–ฅ๏ธ ํ•˜๋“œ์›จ์–ด ์š”๊ตฌ์‚ฌํ•ญ

๊ตฌ์„ฑ์š”์†Œ Minio ๊ถŒ์žฅ์‚ฌ์–‘ Ceph ๊ถŒ์žฅ์‚ฌ์–‘
CPU ๋…ธ๋“œ๋‹น 8+ ์ฝ”์–ด OSD๋‹น 2+ ์ฝ”์–ด, MON/MGR 4+ ์ฝ”์–ด
๋ฉ”๋ชจ๋ฆฌ ๋…ธ๋“œ๋‹น 32GB+ OSD๋‹น 5GB+, MON/MGR 16GB+
๋„คํŠธ์›Œํฌ 10GbE ์ด์ƒ 10GbE ์ด์ƒ (ํ”„๋ก ํŠธ+๋ฐฑ์—”๋“œ ๋ถ„๋ฆฌ ๊ถŒ์žฅ)
๋””์Šคํฌ SSD/NVMe ๊ถŒ์žฅ HDD ๊ฐ€๋Šฅ, SSD/NVMe ๊ถŒ์žฅ

Minio์˜ ๋ฆฌ์†Œ์Šค ํšจ์œจ์„ฑ ๐Ÿ’š
โ€ข ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์ ์–ด์„œ ๊ฐ™์€ ํ•˜๋“œ์›จ์–ด๋กœ ๋” ๋งŽ์€ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ
โ€ข CPU ํšจ์œจ์ด ์ข‹์•„์„œ ์ €์ „๋ ฅ ํ”„๋กœ์„ธ์„œ๋กœ๋„ ๊ดœ์ฐฎ์€ ์„ฑ๋Šฅ
โ€ข ๋‹จ์ˆœํ•œ ์•„ํ‚คํ…์ฒ˜ ๋•๋ถ„์— ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ ์–ด

Ceph์˜ ๋ฆฌ์†Œ์Šค ํŠน์„ฑ ๐Ÿ”‹
โ€ข OSD๋‹น ๋ฉ”๋ชจ๋ฆฌ ์š”๊ตฌ๋Ÿ‰์ด ์žˆ์–ด์„œ ๋Œ€๊ทœ๋ชจ์—์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋น„์šฉ์ด ์ปค์งˆ ์ˆ˜ ์žˆ์–ด
โ€ข Erasure Coding ์‚ฌ์šฉ ์‹œ CPU ์‚ฌ์šฉ๋Ÿ‰์ด ์ฆ๊ฐ€ํ•ด
โ€ข ํ•˜์ง€๋งŒ HDD๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์–ด์„œ ์Šคํ† ๋ฆฌ์ง€ ๋น„์šฉ์€ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ์–ด

โšก ์ „๋ ฅ ํšจ์œจ์„ฑ

๋ฐ์ดํ„ฐ์„ผํ„ฐ ์šด์˜์—์„œ ์ „๋ ฅ ๋น„์šฉ์€ ๋ฌด์‹œํ•  ์ˆ˜ ์—†์–ด. ํŠนํžˆ ๋Œ€๊ทœ๋ชจ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ๋Š” ๋ง์ด์•ผ! ๐Ÿ”Œ

Minio๋Š” ๊ฒฝ๋Ÿ‰ ์•„ํ‚คํ…์ฒ˜ ๋•๋ถ„์— ์™€ํŠธ๋‹น ์ฒ˜๋ฆฌ๋Ÿ‰์ด ๋†’์•„. ๊ฐ™์€ ์ „๋ ฅ์œผ๋กœ ๋” ๋งŽ์€ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์ง€.

Ceph๋Š” ๋” ๋งŽ์€ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋Œ์•„๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ ์ „๋ ฅ ์†Œ๋น„๊ฐ€ ๋†’์•„. ํ•˜์ง€๋งŒ HDD๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด SSD ๋Œ€๋น„ ์ „๋ ฅ ํšจ์œจ์ด ์ข‹์„ ์ˆ˜ ์žˆ์–ด.

๊ฒฐ๋ก ์ ์œผ๋กœ ์„ฑ๋Šฅ ์ค‘์‹ฌ์ด๋ฉด Minio, ์šฉ๋Ÿ‰ ์ค‘์‹ฌ์ด๋ฉด Ceph๊ฐ€ ์ „๋ ฅ ํšจ์œจ ๋ฉด์—์„œ ์œ ๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด! โš–๏ธ

๐Ÿ”’ ๋ณด์•ˆ ๋ฐ ๋ฐ์ดํ„ฐ ๋ณดํ˜ธ

๋ฐ์ดํ„ฐ ๋ณด์•ˆ์€ ํƒ€ํ˜‘ํ•  ์ˆ˜ ์—†๋Š” ์˜์—ญ์ด์•ผ. ์•”ํ˜ธํ™”, ์ ‘๊ทผ ์ œ์–ด, ๊ฐ์‚ฌ ๋กœ๊ทธ ๋“ฑ ๋‹ค์–‘ํ•œ ์ธก๋ฉด์„ ์‚ดํŽด๋ณด์ž! ๐Ÿ›ก๏ธ

๐Ÿ” ์•”ํ˜ธํ™” ๊ธฐ๋Šฅ

Minio ์•”ํ˜ธํ™”

โ€ข ์ „์†ก ์ค‘ ์•”ํ˜ธํ™”: TLS 1.3 ์ง€์›
โ€ข ์ €์žฅ ์•”ํ˜ธํ™”: SSE-S3, SSE-C, SSE-KMS
โ€ข Key Management: KES(Key Encryption Service) ํ†ตํ•ฉ
โ€ข ์ž๋™ ์•”ํ˜ธํ™”: ๋ฒ„ํ‚ท ์ •์ฑ…์œผ๋กœ ๊ฐ•์ œ ๊ฐ€๋Šฅ
โ€ข Vault, AWS KMS ๋“ฑ๊ณผ ํ†ตํ•ฉ ๊ฐ€๋Šฅ ๐Ÿ”‘

Ceph ์•”ํ˜ธํ™”

โ€ข ์ „์†ก ์ค‘ ์•”ํ˜ธํ™”: TLS/SSL ์ง€์›
โ€ข ์ €์žฅ ์•”ํ˜ธํ™”: OSD ๋ ˆ๋ฒจ ์•”ํ˜ธํ™” (dmcrypt)
โ€ข ๊ฐ์ฒด ์•”ํ˜ธํ™”: SSE-S3, SSE-C, SSE-KMS
โ€ข ํ‚ค ๊ด€๋ฆฌ: Barbican, Vault ํ†ตํ•ฉ
โ€ข ๋ธ”๋ก ์Šคํ† ๋ฆฌ์ง€๋„ ์•”ํ˜ธํ™” ๊ฐ€๋Šฅ ๐Ÿ”

๐Ÿ‘ค ์ ‘๊ทผ ์ œ์–ด ๋ฐ ์ธ์ฆ

Minio IAM ๐ŸŽซ
โ€ข AWS IAM๊ณผ ํ˜ธํ™˜๋˜๋Š” ์ •์ฑ… ์‹œ์Šคํ…œ
โ€ข LDAP/Active Directory ํ†ตํ•ฉ
โ€ข OpenID Connect ์ง€์›
โ€ข ์„ธ๋ฐ€ํ•œ ๋ฒ„ํ‚ท ์ •์ฑ… ์„ค์ • ๊ฐ€๋Šฅ
โ€ข STS(Security Token Service) ์ง€์›

Ceph RGW ์ธ์ฆ ๐Ÿ”‘
โ€ข S3 ์Šคํƒ€์ผ ์•ก์„ธ์Šค ํ‚ค/์‹œํฌ๋ฆฟ ํ‚ค
โ€ข Keystone ํ†ตํ•ฉ (OpenStack ํ™˜๊ฒฝ)
โ€ข LDAP ์ธ์ฆ ์ง€์›
โ€ข ๋ฉ€ํ‹ฐํ…Œ๋„Œ์‹œ๋กœ ์™„์ „ํ•œ ๊ฒฉ๋ฆฌ
โ€ข Role-based access control (RBAC)

๐Ÿ’ก ๋ณด์•ˆ ๋ฒ ์ŠคํŠธ ํ”„๋ž™ํ‹ฐ์Šค
์–ด๋–ค ์†”๋ฃจ์…˜์„ ์„ ํƒํ•˜๋“  ์ตœ์†Œ ๊ถŒํ•œ ์›์น™์„ ๋”ฐ๋ฅด๊ณ , ์ •๊ธฐ์ ์œผ๋กœ ์•ก์„ธ์Šค ๋กœ๊ทธ๋ฅผ ๊ฒ€ํ† ํ•˜๊ณ , ์•”ํ˜ธํ™”๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒŒ ์ค‘์š”ํ•ด! ์žฌ๋Šฅ๋„ท์—์„œ ๋ณด์•ˆ ์ปจ์„คํŒ… ์žฌ๋Šฅ์„ ์ฐพ์•„๋ณด๋Š” ๊ฒƒ๋„ ์ข‹์€ ๋ฐฉ๋ฒ•์ด์•ผ. ๐Ÿ”’

๐Ÿ›ก๏ธ ๋ฐ์ดํ„ฐ ๋‚ด๊ตฌ์„ฑ ๋ฐ ๋ณต๊ตฌ

Minio Erasure Coding ๐Ÿ“Š
โ€ข Reed-Solomon ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉ
โ€ข ์ตœ๋Œ€ 50% ๋“œ๋ผ์ด๋ธŒ ์žฅ์•  ํ—ˆ์šฉ (16๋“œ๋ผ์ด๋ธŒ ๊ตฌ์„ฑ ์‹œ 8๊ฐœ)
โ€ข Bit rot ๋ณดํ˜ธ ๊ธฐ๋Šฅ ๋‚ด์žฅ
โ€ข ์ž๋™ healing ํ”„๋กœ์„ธ์Šค
โ€ข 11 nines (99.999999999%) ๋‚ด๊ตฌ์„ฑ ๋‹ฌ์„ฑ ๊ฐ€๋Šฅ

Ceph ๋ฐ์ดํ„ฐ ๋ณดํ˜ธ ๐Ÿ›ก๏ธ
โ€ข Replication (2x, 3x) ๋˜๋Š” Erasure Coding
โ€ข CRUSH ๊ทœ์น™์œผ๋กœ ์žฅ์•  ๋„๋ฉ”์ธ ์„ค์ •
โ€ข Scrubbing์œผ๋กœ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์ฆ
โ€ข ์ž๋™ ๋ณต๊ตฌ ๋ฐ ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ
โ€ข ๋ฉ€ํ‹ฐ์‚ฌ์ดํŠธ ๋ณต์ œ๋กœ ์ง€๋ฆฌ์  ์ค‘๋ณต์„ฑ ํ™•๋ณด

๋ฐ์ดํ„ฐ ๋ณดํ˜ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๋น„๊ต Minio Erasure Coding ๋ฐ์ดํ„ฐ ๋ฐ์ดํ„ฐ ๋ฐ์ดํ„ฐ ๋ฐ์ดํ„ฐ ํŒจ๋ฆฌํ‹ฐ ํŒจ๋ฆฌํ‹ฐ ํŒจ๋ฆฌํ‹ฐ ํŒจ๋ฆฌํ‹ฐ ์ตœ๋Œ€ 50% ๋“œ๋ผ์ด๋ธŒ ์†์‹ค ํ—ˆ์šฉ ๋น ๋ฅธ ๋ณต๊ตฌ ์†๋„ Ceph Replication ์›๋ณธ ๋ฐ์ดํ„ฐ ๋ณต์ œ๋ณธ 1 ๋ฐ์ดํ„ฐ ๋ณต์ œ๋ณธ 2 ๋ฐ์ดํ„ฐ 3x ๋ณต์ œ = 2๊ฐœ ๋…ธ๋“œ ์†์‹ค ํ—ˆ์šฉ ๋†’์€ ์ฝ๊ธฐ ์„ฑ๋Šฅ ์Šคํ† ๋ฆฌ์ง€ ํšจ์œจ ๋‚ฎ์Œ (200% ์˜ค๋ฒ„ํ—ค๋“œ)

๐ŸŽฏ ์‹ค์ „ ์‚ฌ์šฉ ์‚ฌ๋ก€ ๋ฐ ์ถ”์ฒœ

์ด๋ก ์€ ์ถฉ๋ถ„ํžˆ ๋ดค์œผ๋‹ˆ, ์ด์ œ ์‹ค์ œ๋กœ ์–ด๋–ค ์ƒํ™ฉ์—์„œ ์–ด๋–ค ์†”๋ฃจ์…˜์„ ์„ ํƒํ•ด์•ผ ํ• ์ง€ ์•Œ์•„๋ณด์ž! ๐Ÿค”

โœ… Minio๋ฅผ ์„ ํƒํ•ด์•ผ ํ•  ๋•Œ

1. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋„ค์ดํ‹ฐ๋ธŒ ํ™˜๊ฒฝ โ˜ธ๏ธ
์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ํ™˜๊ฒฝ์—์„œ Minio๋Š” ์ตœ๊ณ ์˜ ์„ ํƒ์ด์•ผ. Operator๊ฐ€ ์ž˜ ๋งŒ๋“ค์–ด์ ธ ์žˆ๊ณ , StatefulSet์œผ๋กœ ์•ˆ์ •์ ์œผ๋กœ ์šด์˜ํ•  ์ˆ˜ ์žˆ์–ด.

2. ๋น ๋ฅธ ํ”„๋กœํ† ํƒ€์ดํ•‘ ๋ฐ ๊ฐœ๋ฐœ ๐Ÿš€
MVP๋ฅผ ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค์–ด์•ผ ํ•˜๊ฑฐ๋‚˜, ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ S3 ํ˜ธํ™˜ ์Šคํ† ๋ฆฌ์ง€๊ฐ€ ํ•„์š”ํ•  ๋•Œ Minio๋งŒ ํ•œ ๊ฒŒ ์—†์–ด. ๋ช‡ ๋ถ„์ด๋ฉด ๋กœ์ปฌ์—์„œ ๋„์šธ ์ˆ˜ ์žˆ๊ฑฐ๋“ !

3. ๊ณ ์„ฑ๋Šฅ์ด ์ค‘์š”ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ โšก
์‹ค์‹œ๊ฐ„ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ, ๋น„๋””์˜ค ์ŠคํŠธ๋ฆฌ๋ฐ, ๋กœ๊ทธ ์ˆ˜์ง‘ ๋“ฑ ์ง€์—ฐ์‹œ๊ฐ„์ด ์ค‘์š”ํ•œ ๊ฒฝ์šฐ Minio์˜ ์„ฑ๋Šฅ์ด ๋น›์„ ๋ฐœํ•ด.

4. ์ค‘์†Œ ๊ทœ๋ชจ ํด๋Ÿฌ์Šคํ„ฐ ๐Ÿ“Š
์ˆ˜์‹ญ TB ~ ์ˆ˜๋ฐฑ TB ๊ทœ๋ชจ๋ผ๋ฉด Minio๊ฐ€ ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฝ๊ณ  ๋น„์šฉ ํšจ์œจ์ ์ด์•ผ.

5. AI/ML ์›Œํฌ๋กœ๋“œ ๐Ÿค–
ํ•™์Šต ๋ฐ์ดํ„ฐ์…‹์„ ์ €์žฅํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ์ฝ์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, Minio์˜ ๋†’์€ ์ฒ˜๋ฆฌ๋Ÿ‰์ด ์œ ๋ฆฌํ•ด.

๐Ÿ’ก ์‹ค์ œ ์‚ฌ๋ก€
ํ•œ ์Šคํƒ€ํŠธ์—…์—์„œ ์ด๋ฏธ์ง€ ๊ธฐ๋ฐ˜ SNS๋ฅผ ๋งŒ๋“ค ๋•Œ Minio๋ฅผ ์„ ํƒํ–ˆ์–ด. 3๊ฐœ ๋…ธ๋“œ๋กœ ์‹œ์ž‘ํ•ด์„œ ์‚ฌ์šฉ์ž๊ฐ€ ๋Š˜์–ด๋‚˜์ž 6๊ฐœ ๋…ธ๋“œ๋กœ ํ™•์žฅํ–ˆ๋Š”๋ฐ, ๋‹ค์šดํƒ€์ž„ ์—†์ด ์ง„ํ–‰๋์ง€. ๊ฐœ๋ฐœ์ž๋“ค๋„ S3 SDK๋ฅผ ๊ทธ๋Œ€๋กœ ์“ธ ์ˆ˜ ์žˆ์–ด์„œ ๋งŒ์กฑ๋„๊ฐ€ ๋†’์•˜์–ด! ๐Ÿ˜Š

โœ… Ceph๋ฅผ ์„ ํƒํ•ด์•ผ ํ•  ๋•Œ

1. ๋Œ€๊ทœ๋ชจ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ํ™˜๊ฒฝ ๐Ÿข
ํŽ˜ํƒ€๋ฐ”์ดํŠธ ๊ทœ๋ชจ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๊ฑฐ๋‚˜, ์ˆ˜๋ฐฑ ๊ฐœ์˜ ๋…ธ๋“œ๋ฅผ ์šด์˜ํ•ด์•ผ ํ•œ๋‹ค๋ฉด Ceph์˜ ๊ฒ€์ฆ๋œ ํ™•์žฅ์„ฑ์ด ํ•„์š”ํ•ด.

2. ํ†ตํ•ฉ ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋žซํผ ๐ŸŽช
๋ธ”๋ก ์Šคํ† ๋ฆฌ์ง€(RBD), ํŒŒ์ผ ์‹œ์Šคํ…œ(CephFS), ์˜ค๋ธŒ์ ํŠธ ์Šคํ† ๋ฆฌ์ง€(RGW)๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋ฉด Ceph๊ฐ€ ์œ ์ผํ•œ ์„ ํƒ์ด์•ผ.

3. OpenStack ํ™˜๊ฒฝ โ˜๏ธ
OpenStack๊ณผ์˜ ํ†ตํ•ฉ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด Ceph๊ฐ€ ์‚ฌ์‹ค์ƒ ํ‘œ์ค€์ด์•ผ. Cinder, Glance, Nova ๋ชจ๋‘์™€ ๋„ค์ดํ‹ฐ๋ธŒ ํ†ตํ•ฉ๋ผ.

4. ๋ฉ€ํ‹ฐ์‚ฌ์ดํŠธ ๋ณต์ œ ๐ŸŒ
์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ์„ผํ„ฐ ๊ฐ„ ์ž๋™ ๋ณต์ œ๊ฐ€ ํ•„์š”ํ•œ DR ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ Ceph์˜ ๋ฉ€ํ‹ฐ์‚ฌ์ดํŠธ ๊ธฐ๋Šฅ์ด ๊ฐ•๋ ฅํ•ด.

5. ๋ ˆ๊ฑฐ์‹œ ํ†ตํ•ฉ ๐Ÿ”ง
๊ธฐ์กด์— Ceph๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ฑฐ๋‚˜, Red Hat ์ƒํƒœ๊ณ„๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด Ceph๋ฅผ ๊ณ„์† ์“ฐ๋Š” ๊ฒŒ ํ•ฉ๋ฆฌ์ ์ด์•ผ.

๐Ÿ’ก ์‹ค์ œ ์‚ฌ๋ก€
ํ•œ ๋Œ€ํ•™ ์—ฐ๊ตฌ์†Œ์—์„œ ๊ณผํ•™ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ Ceph๋ฅผ ์„ ํƒํ–ˆ์–ด. ๋ธ”๋ก ์Šคํ† ๋ฆฌ์ง€๋กœ VM ๋””์Šคํฌ๋ฅผ ์ œ๊ณตํ•˜๊ณ , CephFS๋กœ ๊ณต์œ  ํŒŒ์ผ ์‹œ์Šคํ…œ์„, RGW๋กœ ๋ฐ์ดํ„ฐ ์•„์นด์ด๋น™์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ–ˆ์ง€. ํ•˜๋‚˜์˜ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๋ชจ๋“  ๊ฑธ ํ•ด๊ฒฐํ•œ ๊ฑฐ์•ผ! ๐ŸŽ“

โš–๏ธ ์˜์‚ฌ๊ฒฐ์ • ์ฒดํฌ๋ฆฌ์ŠคํŠธ

์งˆ๋ฌธ Minio ์„ ํ˜ธ Ceph ์„ ํ˜ธ
ํด๋Ÿฌ์Šคํ„ฐ ๊ทœ๋ชจ๋Š”? < 100TB > 100TB
๋ฐฐํฌ ์†๋„๊ฐ€ ์ค‘์š”ํ•œ๊ฐ€? ๋งค์šฐ ์ค‘์š” ์‹œ๊ฐ„ ์—ฌ์œ  ์žˆ์Œ
์šด์˜ ์ธ๋ ฅ์€? ์†Œ๊ทœ๋ชจ ํŒ€ ์ „๋‹ด ์ธํ”„๋ผ ํŒ€
์„ฑ๋Šฅ vs ๊ธฐ๋Šฅ? ์„ฑ๋Šฅ ์šฐ์„  ๊ธฐ๋Šฅ ์šฐ์„ 
๋‹ค๋ฅธ ์Šคํ† ๋ฆฌ์ง€ ํƒ€์ž… ํ•„์š”? ์˜ค๋ธŒ์ ํŠธ๋งŒ ๋ธ”๋ก/ํŒŒ์ผ๋„ ํ•„์š”
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์‚ฌ์šฉ? ์˜ˆ ์„ ํƒ์‚ฌํ•ญ
์˜ˆ์‚ฐ์€? ์ œํ•œ์  ์ถฉ๋ถ„ํ•จ

๐Ÿ”ฎ ๋ฏธ๋ž˜ ์ „๋ง ๋ฐ ์ƒํƒœ๊ณ„

Minio์˜ ๋ฏธ๋ž˜ ๐Ÿš€
Minio๋Š” ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ํŠธ๋ Œ๋“œ์™€ ํ•จ๊ป˜ ์„ฑ์žฅํ•˜๊ณ  ์žˆ์–ด. ํŠนํžˆ ์—ฃ์ง€ ์ปดํ“จํŒ…๊ณผ IoT ์˜์—ญ์—์„œ ์ฃผ๋ชฉ๋ฐ›๊ณ  ์žˆ์ง€. ๊ฒฝ๋Ÿ‰์„ฑ๊ณผ ๋‹จ์ˆœํ•จ์ด ์—ฃ์ง€ ํ™˜๊ฒฝ์— ์™„๋ฒฝํ•˜๊ฒŒ ๋งž์•„๋–จ์–ด์ง€๊ฑฐ๋“ !

์ตœ๊ทผ์—๋Š” AI/ML ์›Œํฌ๋กœ๋“œ๋ฅผ ์œ„ํ•œ ์ตœ์ ํ™”์—๋„ ์ง‘์ค‘ํ•˜๊ณ  ์žˆ์–ด. ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ์…‹์„ ๋น ๋ฅด๊ฒŒ ์ฝ๋Š” ๊ฒŒ ์ค‘์š”ํ•œ ์˜์—ญ์ด๋‹ˆ๊นŒ.

Ceph์˜ ๋ฏธ๋ž˜ ๐Ÿข
Ceph๋Š” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์‹œ์žฅ์—์„œ ์ž…์ง€๋ฅผ ๋”์šฑ ๊ฐ•ํ™”ํ•˜๊ณ  ์žˆ์–ด. Red Hat์˜ ์ง€์›์„ ๋ฐ›์œผ๋ฉด์„œ ์•ˆ์ •์„ฑ๊ณผ ๊ธฐ๋Šฅ์ด ๊ณ„์† ๊ฐœ์„ ๋˜๊ณ  ์žˆ์ง€.

์ตœ๊ทผ์—๋Š” ์„ฑ๋Šฅ ๊ฐœ์„ ์— ๋งŽ์€ ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์ด๊ณ  ์žˆ์–ด. BlueStore์˜ ์ตœ์ ํ™”, RGW์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ ๋“ฑ์ด ํ™œ๋ฐœํ•˜๊ฒŒ ์ง„ํ–‰ ์ค‘์ด์•ผ.

๋‘ ํ”„๋กœ์ ํŠธ ๋ชจ๋‘ ํ™œ๋ฐœํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ์ƒ์—…์  ์ง€์›์„ ๋ฐ›๊ณ  ์žˆ์–ด์„œ ์žฅ๊ธฐ์ ์œผ๋กœ ์•ˆ์‹ฌํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด! ๐Ÿ’ช

๐ŸŽ“ ํ•™์Šต ๋ฆฌ์†Œ์Šค ๋ฐ ์ปค๋ฎค๋‹ˆํ‹ฐ

Minio ํ•™์Šต ์ž๋ฃŒ

โ€ข ๊ณต์‹ ๋ฌธ์„œ๊ฐ€ ๋งค์šฐ ์ž˜ ์ •๋ฆฌ๋˜์–ด ์žˆ์–ด
โ€ข YouTube์— ํŠœํ† ๋ฆฌ์–ผ ์˜์ƒ ๋งŽ์Œ
โ€ข Slack ์ปค๋ฎค๋‹ˆํ‹ฐ ํ™œ๋ฐœ
โ€ข GitHub Issues ์‘๋‹ต ๋น ๋ฆ„
โ€ข ํ•œ๊ตญ์–ด ์ž๋ฃŒ๋„ ์ ์  ๋Š˜์–ด๋‚˜๋Š” ์ค‘! ๐Ÿ“š

Ceph ํ•™์Šต ์ž๋ฃŒ

โ€ข ๊ณต์‹ ๋ฌธ์„œ๊ฐ€ ๋ฐฉ๋Œ€ํ•จ (์••๋„์ ์ผ ์ˆ˜ ์žˆ์Œ)
โ€ข Ceph Days ์ปจํผ๋Ÿฐ์Šค ์ž๋ฃŒ
โ€ข ๋ฉ”์ผ๋ง ๋ฆฌ์ŠคํŠธ ํ™œ๋ฐœ
โ€ข Red Hat ๊ต์œก ๊ณผ์ • ์ œ๊ณต
โ€ข ํ•œ๊ตญ Ceph ์‚ฌ์šฉ์ž ๋ชจ์ž„ ์žˆ์Œ! ๐Ÿ‡ฐ๐Ÿ‡ท

๐Ÿ’ก ํ•™์Šต ํŒ
์žฌ๋Šฅ๋„ท์—์„œ ์˜ค๋ธŒ์ ํŠธ ์Šคํ† ๋ฆฌ์ง€ ๊ด€๋ จ ๋ฉ˜ํ† ๋ง์ด๋‚˜ ์ปจ์„คํŒ… ์žฌ๋Šฅ์„ ์ฐพ์•„๋ณด๋Š” ๊ฒƒ๋„ ์ข‹์€ ๋ฐฉ๋ฒ•์ด์•ผ! ์‹ค๋ฌด ๊ฒฝํ—˜์ž์—๊ฒŒ ์ง์ ‘ ๋ฐฐ์šฐ๋ฉด ์‹œํ–‰์ฐฉ์˜ค๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๊ฑฐ๋“ . ๐ŸŽฏ

๐Ÿ› ๏ธ ์‹ค์ „ ๊ตฌ์ถ• ๊ฐ€์ด๋“œ

๐Ÿš€ Minio ๋น ๋ฅธ ์‹œ์ž‘

๋‹จ์ผ ๋…ธ๋“œ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ
๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด๋ณด์ž:

# Docker๋กœ ์‹คํ–‰
docker run -p 9000:9000 -p 9001:9001 \
  -e "MINIO_ROOT_USER=admin" \
  -e "MINIO_ROOT_PASSWORD=password123" \
  minio/minio server /data --console-address ":9001"

# ๋ธŒ๋ผ์šฐ์ €์—์„œ http://localhost:9001 ์ ‘์†
# admin / password123 ์œผ๋กœ ๋กœ๊ทธ์ธ

๋ถ„์‚ฐ ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์„ฑ
ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์„ ์œ„ํ•œ 4๋…ธ๋“œ ํด๋Ÿฌ์Šคํ„ฐ:

# ๊ฐ ๋…ธ๋“œ์—์„œ ์‹คํ–‰ (node1~node4)
minio server \
  http://node{1...4}/data{1...4} \
  --console-address ":9001"

# ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด 16๊ฐœ ๋“œ๋ผ์ด๋ธŒ๋กœ ๊ตฌ์„ฑ๋œ ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ๋งŒ๋“ค์–ด์ ธ!
# Erasure Coding์œผ๋กœ ์ตœ๋Œ€ 8๊ฐœ ๋“œ๋ผ์ด๋ธŒ ์žฅ์•  ํ—ˆ์šฉ
๐Ÿ’ก ํ”„๋กœ ํŒ
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ๋Š” Minio Operator๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ›จ์”ฌ ์‰ฌ์›Œ! Tenant CRD๋กœ ์„ ์–ธ์ ์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด. ๐ŸŽฏ

๐Ÿ—๏ธ Ceph ๊ตฌ์ถ• ๊ฐ€์ด๋“œ

Cephadm์„ ์ด์šฉํ•œ ์„ค์น˜
์ตœ์‹  ๋ฐฉ์‹์ธ Cephadm์„ ์‚ฌ์šฉํ•˜๋ฉด ๋น„๊ต์  ๊ฐ„๋‹จํ•ด:

# Bootstrap ๋…ธ๋“œ์—์„œ
cephadm bootstrap --mon-ip 192.168.1.10

# ๋‹ค๋ฅธ ๋…ธ๋“œ ์ถ”๊ฐ€
ceph orch host add node2 192.168.1.11
ceph orch host add node3 192.168.1.12

# OSD ์ถ”๊ฐ€ (์ž๋™์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋””์Šคํฌ ๊ฐ์ง€)
ceph orch apply osd --all-available-devices

# RGW ๋ฐฐํฌ
ceph orch apply rgw myrgw --placement="3"

RGW ์‚ฌ์šฉ์ž ์ƒ์„ฑ
S3 API๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์‚ฌ์šฉ์ž๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ด:

# S3 ์‚ฌ์šฉ์ž ์ƒ์„ฑ
radosgw-admin user create --uid=testuser --display-name="Test User"

# ์•ก์„ธ์Šค ํ‚ค ํ™•์ธ
radosgw-admin user info --uid=testuser

# ์ด์ œ S3 ํด๋ผ์ด์–ธํŠธ๋กœ ์ ‘์† ๊ฐ€๋Šฅ!
โš ๏ธ ์ฃผ์˜์‚ฌํ•ญ
Ceph๋Š” ์ตœ์†Œ 3๊ฐœ์˜ MON์ด ํ•„์š”ํ•ด. ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ๋Š” 5๊ฐœ๋ฅผ ๊ถŒ์žฅํ•˜๊ณ ! ๊ทธ๋ฆฌ๊ณ  ๋„คํŠธ์›Œํฌ ๋ถ„๋ฆฌ(ํ”„๋ก ํŠธ์—”๋“œ/๋ฐฑ์—”๋“œ)๋ฅผ ๊ผญ ๊ณ ๋ คํ•ด์•ผ ํ•ด.

๐Ÿ“Š ์„ฑ๋Šฅ ํŠœ๋‹ ํŒ

โšก Minio ์ตœ์ ํ™”

1. ๋„คํŠธ์›Œํฌ ํŠœ๋‹ ๐ŸŒ
โ€ข MTU๋ฅผ 9000(Jumbo Frame)์œผ๋กœ ์„ค์ •
โ€ข TCP ์œˆ๋„์šฐ ํฌ๊ธฐ ์ฆ๊ฐ€
โ€ข ๋„คํŠธ์›Œํฌ ์นด๋“œ ์˜คํ”„๋กœ๋”ฉ ํ™œ์„ฑํ™”

2. ๋””์Šคํฌ ์ตœ์ ํ™” ๐Ÿ’พ
โ€ข XFS ํŒŒ์ผ์‹œ์Šคํ…œ ์‚ฌ์šฉ (ext4๋ณด๋‹ค ๋น ๋ฆ„)
โ€ข noatime ๋งˆ์šดํŠธ ์˜ต์…˜
โ€ข SSD/NVMe ์‚ฌ์šฉ ์‹œ TRIM ํ™œ์„ฑํ™”

3. ๋ฉ”๋ชจ๋ฆฌ ์„ค์ • ๐Ÿง 
โ€ข ์ถฉ๋ถ„ํ•œ ํŽ˜์ด์ง€ ์บ์‹œ ํ™•๋ณด
โ€ข ์Šค์™‘ ๋น„ํ™œ์„ฑํ™” ๊ถŒ์žฅ
โ€ข MINIO_CACHE ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ ๋””์Šคํฌ ์บ์‹œ ํ™œ์„ฑํ™”

4. ๋™์‹œ์„ฑ ํŠœ๋‹ โš™๏ธ
โ€ข GOMAXPROCS ์„ค์ • (๊ธฐ๋ณธ๊ฐ’์€ CPU ์ฝ”์–ด ์ˆ˜)
โ€ข ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ ํ’€ ํฌ๊ธฐ ์กฐ์ •

๐Ÿ”ง Ceph ์ตœ์ ํ™”

1. OSD ํŠœ๋‹ ๐Ÿ’พ
โ€ข BlueStore ์บ์‹œ ํฌ๊ธฐ ์ฆ๊ฐ€
โ€ข osd_op_threads ์กฐ์ •
โ€ข osd_max_backfills ์ œํ•œ (๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ ์†๋„ ์กฐ์ ˆ)

2. RGW ์ตœ์ ํ™” ๐ŸŒ
โ€ข Beast ํ”„๋ก ํŠธ์—”๋“œ ์‚ฌ์šฉ (Civetweb๋ณด๋‹ค ๋น ๋ฆ„)
โ€ข rgw_thread_pool_size ์ฆ๊ฐ€
โ€ข rgw_num_rados_handles ์กฐ์ •

3. ๋„คํŠธ์›Œํฌ ๋ถ„๋ฆฌ ๐Ÿ”€
โ€ข ํด๋ผ์ด์–ธํŠธ ๋„คํŠธ์›Œํฌ์™€ ํด๋Ÿฌ์Šคํ„ฐ ๋„คํŠธ์›Œํฌ ๋ถ„๋ฆฌ
โ€ข 10GbE ์ด์ƒ ์‚ฌ์šฉ
โ€ข LACP ๋ณธ๋”ฉ์œผ๋กœ ๋Œ€์—ญํญ ํ™•์žฅ

4. PG ์ˆ˜ ์ตœ์ ํ™” ๐Ÿ“Š
โ€ข ์ ์ ˆํ•œ PG ์ˆ˜ ๊ณ„์‚ฐ (OSD๋‹น 100-200๊ฐœ)
โ€ข ์˜คํ† ์Šค์ผ€์ผ๋Ÿฌ ํ™œ์„ฑํ™”

์„ฑ๋Šฅ ํŠœ๋‹ ์ฒดํฌ๋ฆฌ์ŠคํŠธ Minio ์ตœ์ ํ™” ํฌ์ธํŠธ ๋„คํŠธ์›Œํฌ: Jumbo Frame ํ™œ์„ฑํ™” ๋””์Šคํฌ: XFS + noatime ๋งˆ์šดํŠธ ๋ฉ”๋ชจ๋ฆฌ: ์ถฉ๋ถ„ํ•œ RAM ํ• ๋‹น CPU: GOMAXPROCS ์ตœ์ ํ™” ์บ์‹ฑ: ๋””์Šคํฌ ์บ์‹œ ํ™œ์„ฑํ™” ๋ชจ๋‹ˆํ„ฐ๋ง: Prometheus ์—ฐ๋™ ๋ณด์•ˆ: TLS 1.3 ์‚ฌ์šฉ Ceph ์ตœ์ ํ™” ํฌ์ธํŠธ ๋„คํŠธ์›Œํฌ: ํ”„๋ก ํŠธ/๋ฐฑ์—”๋“œ ๋ถ„๋ฆฌ OSD: BlueStore ์บ์‹œ ์ฆ๊ฐ€ RGW: Beast ํ”„๋ก ํŠธ์—”๋“œ ์‚ฌ์šฉ PG: ์ ์ ˆํ•œ PG ์ˆ˜ ์„ค์ • ๋ณต์ œ: EC vs Replication ์„ ํƒ ๋ชจ๋‹ˆํ„ฐ๋ง: MGR ๋Œ€์‹œ๋ณด๋“œ ํ™œ์šฉ ๋ฐฑํ•„: ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ ์†๋„ ์กฐ์ ˆ

๐Ÿ’ฌ ๋งˆ๋ฌด๋ฆฌํ•˜๋ฉฐ

์ž, ์—ฌ๊ธฐ๊นŒ์ง€ Minio์™€ Ceph Object Gateway๋ฅผ ๊นŠ์ด ์žˆ๊ฒŒ ๋น„๊ตํ•ด๋ดค์–ด! ๐ŸŽ‰

๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜์ž๋ฉด, "์ •๋‹ต์€ ์—†๋‹ค"์•ผ. ๊ฐ์ž์˜ ์ƒํ™ฉ๊ณผ ์š”๊ตฌ์‚ฌํ•ญ์— ๋”ฐ๋ผ ์ตœ์„ ์˜ ์„ ํƒ์ด ๋‹ฌ๋ผ์ง€๊ฑฐ๋“ .

๋น ๋ฅธ ๋ฐฐํฌ์™€ ๋†’์€ ์„ฑ๋Šฅ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด Minio๋ฅผ, ๋Œ€๊ทœ๋ชจ ํ™•์žฅ๊ณผ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด Ceph๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒŒ ์ผ๋ฐ˜์ ์ด์•ผ.

ํ•˜์ง€๋งŒ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฑด ์‹ค์ œ๋กœ ํ…Œ์ŠคํŠธํ•ด๋ณด๋Š” ๊ฒƒ์ด์•ผ! ๋‘ ์†”๋ฃจ์…˜ ๋ชจ๋‘ ์˜คํ”ˆ์†Œ์Šค๋‹ˆ๊นŒ ๋ถ€๋‹ด ์—†์ด PoC(Proof of Concept)๋ฅผ ์ง„ํ–‰ํ•ด๋ณผ ์ˆ˜ ์žˆ์–ด. ๐Ÿงช

์žฌ๋Šฅ๋„ท์—์„œ ๊ด€๋ จ ์ „๋ฌธ๊ฐ€์˜ ๋„์›€์„ ๋ฐ›๋Š” ๊ฒƒ๋„ ์ข‹์€ ๋ฐฉ๋ฒ•์ด์•ผ. ์‹ค๋ฌด ๊ฒฝํ—˜์ด ํ’๋ถ€ํ•œ ์‚ฌ๋žŒ์˜ ์กฐ์–ธ์€ ์ •๋ง ๊ฐ’์ง€๊ฑฐ๋“ ! ๐Ÿ’Ž

์˜ค๋ธŒ์ ํŠธ ์Šคํ† ๋ฆฌ์ง€๋Š” ์ด์ œ ๋ชจ๋“  ํ˜„๋Œ€์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ•„์ˆ˜ ์ธํ”„๋ผ๊ฐ€ ๋์–ด. ์ด ๊ธ€์ด ๋„ˆ์˜ ์„ ํƒ์— ๋„์›€์ด ๋˜์—ˆ์œผ๋ฉด ์ข‹๊ฒ ์–ด! ๐Ÿ˜Š

๊ถ๊ธˆํ•œ ์ ์ด ์žˆ๋‹ค๋ฉด ๊ฐ ํ”„๋กœ์ ํŠธ์˜ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์งˆ๋ฌธํ•ด๋ณด๋Š” ๊ฒƒ๋„ ์žŠ์ง€ ๋งˆ! ์˜คํ”ˆ์†Œ์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ์ƒ๊ฐ๋ณด๋‹ค ์นœ์ ˆํ•˜๊ณ  ๋„์›€์„ ๋งŽ์ด ์ค˜. ๐Ÿค

๊ทธ๋Ÿผ ํ–‰๋ณตํ•œ ์ฝ”๋”ฉ ๋˜๊ธธ ๋ฐ”๋ผ! Happy Hacking! ๐Ÿš€โœจ

๐ŸŽฏ ํ•ต์‹ฌ ์š”์•ฝ

Minio: ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์นœํ™”์ , ๋น ๋ฅธ ์„ฑ๋Šฅ, ๊ฐ„ํŽธํ•œ ์šด์˜ โšก
Ceph: ๋Œ€๊ทœ๋ชจ ํ™•์žฅ์„ฑ, ํ†ตํ•ฉ ํ”Œ๋žซํผ, ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ธฐ๋Šฅ ๐Ÿข

๋‹น์‹ ์˜ ํ”„๋กœ์ ํŠธ์— ๋งž๋Š” ์„ ํƒ์„ ํ•˜์„ธ์š”! ๐ŸŽช

๋Œ“๊ธ€ ์ž‘์„ฑ

์ด ๊ธ€์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ๋ถ„์˜ ์ƒ๊ฐ์„ ๋“ค๋ ค์ฃผ์„ธ์š”

๋Œ“๊ธ€ 0