Introduction
ํ๋์ ๋ถ์ฐ ์์คํ ํ๊ฒฝ์์ ์๋น์ค ๊ฐ์ ๋ฐ์ดํฐ ์ฐ๋ ๋ณต์ก์ฑ์ ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐํ๋๋ฐ, ์นดํ์นด๋ ์์คํ ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ณ ๋ฐ์ดํฐ ํ๋ฆ์ ์ฒด๊ณ์ ์ผ๋ก ๊ด๋ฆฌํด์ค๋ค.
์นดํ์นด ํต์ฌ ๊ฐ๋
์นดํ์นด๋ ๋ถ์ฐ ์ปค๋ฐ ๋ก๊ทธ(Distributed Commit Log)์ด์ ์ด๋ฒคํธ ์คํธ๋ฆฌ๋ฐ ํ๋ซํผ์ผ๋ก, ์ด๋ฒคํธ, ์คํธ๋ฆผ, ๊ทธ๋ฆฌ๊ณ ๋ถ์ฐ ์ปค๋ฐ ๋ก๊ทธ๋ฅผ ํต์ฌ ๊ฐ๋ ์ผ๋ก ํ๋ค.
์ด๋ฒคํธ(Event): ๊ณผ๊ฑฐ์ ๋ฐ์ํ ์ฌ๊ฑด์ ๋ํ ๋ถ๋ณ(Immutable)์ ์ฌ์ค ๊ธฐ๋ก์ผ๋ก, ๋น์ฆ๋์ค ํน์ ์์คํ ์ ์ํ ๋ณํ
์คํธ๋ฆผ(Stream): ์๊ฐ์ ๋ฐ๋ผ ์์๋๋ก ๋ฐ์ํ๋ ์ด๋ฒคํธ์ ์ฐ์์ ์ธ ํ๋ฆ
๋ถ์ฐ ์ปค๋ฐ ๋ก๊ทธ(Distributed Commit Log): ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ปค๋ฐ ๋ก๊ทธ์ฒ๋ผ, ๋ฐ์ดํฐ๋ ์ถ๊ฐ๋ง ๊ฐ๋ฅํ(Append-only) ํํ๋ก ์์๋๋ก ๊ธฐ๋ก(๋ถ๋ณ์ฑ
ํต์ฌ ์ํคํ
์ฒ ์์น
๋์ ์ฒ๋ฆฌ๋(High Throughput)
OS ๋ ๋ฒจ์ ์ต์ ํ๋ฅผ ํตํด ๋์ ์ฒ๋ฆฌ๋์ ๋ฌ์ฑ
๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํ ๋, ์์์ ์์น์ ์ฐ๋ ๋๋ค I/O๊ฐ ์๋ ๋์คํฌ์ ๋์ ์์ฐจ์ ์ผ๋ก ์ฐ๋ ์ํ์ I/O(Sequential I/O) ๋ฐฉ์ ์ฌ์ฉ
์ปจ์๋จธ์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ ์ ์ปค๋์์ ๋คํธ์ํฌ ์นด๋๋ก ์ง์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ์ ๋ก ์นดํผ(Zero-Copy) ๊ธฐ์ ์ ์ฌ์ฉ์ผ๋ก, ์ ์ก ์ฑ๋ฅ์ ๊ทน๋ํ
ํ์ฅ์ฑ๊ณผ ๋ณ๋ ฌ์ฒ๋ฆฌ(Scalability & Parallelism)
ํ๋์ ํ ํฝ์ ์ฌ๋ฌ ๊ฐ์ ํํฐ์ ์ผ๋ก ๋๋ ์ ์์ผ๋ฉฐ, ์ด ํํฐ์ ์ด ๋ณ๋ ฌ์ฒ๋ฆฌ์ ๊ธฐ๋ณธ ๋จ์
ํ๋ก๋์๋ ์ฌ๋ฌ ํํฐ์ ์ ๋์์ ๋ฐ์ดํฐ๋ฅผ ์ธ ์ ์๊ณ , ์ปจ์๋จธ ๊ทธ๋ฃน ๋ด์ ์ปจ์๋จธ๋ค์ ๊ฐ๊ธฐ ๋ค๋ฅธ ํํฐ์ ์ ํ ๋น๋ฐ์ ๋์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด๊ฐ ์ ์dma
์ฒ๋ฆฌ๋์ ๋์ด๊ณ ์ถ์ ๋ ํํฐ์ ์๋ฅผ ๋๋ฆฌ๊ณ ๊ทธ์ ๋ง์ถฐ ์ปจ์๋จธ ์๋ฅผ ์กฐ์ ํ๋ ๋ฐฉ์์ผ๋ก ์ํ์ ํ์ฅ ๊ฐ๋ฅ
๋ด๊ตฌ์ฑ๊ณผ ๊ณ ๊ฐ์ฉ์ฑ(Durability & Fault Tolerance)
๋ฆฌํ๋ฆฌ์ผ์ด์ (Replication)์ ํตํด ๋ด๊ตฌ์ฑ ๋ณด์ฅ
๊ฐ ํํฐ์ ์ ๋ฆฌ๋(Leader)์ ์ฌ๋ฌ ํ๋ก์(Follower) ๋ฆฌํ๋ฆฌ์นด๋ก ๊ตฌ์ฑ๋๋ฉฐ, ํ๋ก์๋ ๋ฆฌ๋์ ๋ฐ์ดํฐ๋ฅผ ๋น๋๊ธฐ์ ์ผ๋ก ๋ณต์
ํ๋ก๋์๊ฐ
acks=all์ต์ ์ผ๋ก ๋ฉ์์ง๋ฅผ ์ ์กํ๋ฉด, ๋ฆฌ๋๋ฟ๋ง ์๋๋ผ ํ๋ก์๊น์ง ๋ฐ์ดํฐ ์ ์ฅ์ ์๋ฃํ์์ ํ์ธํ ํ์์ผ ์ ์ก ์ฑ๊ณต ๊ฐ์ฃผ
๊ธฐ์กด ๋ฉ์์ง ์์คํ
๊ณผ์ ํจ๋ฌ๋ค์ ์ฐจ์ด
์นดํ์นด๋ ๊ธฐ์กด ๋ฉ์์ง ์์คํ (์: RabbitMQ)๊ณผ ๊ทผ๋ณธ์ ์ธ ํจ๋ฌ๋ค์์ ์ฐจ์ด๋ฅผ ๊ฐ์ง๋ค.
๊ธฐ์กด ๋ฉ์์ง ์์คํ ์ ๋ธ๋ก์ปค๊ฐ ๋ฉ์์ง๋ฅผ ์ปจ์๋จธ์๊ฒ ๋ฅ๋์ ์ผ๋ก ์ ๋ฌ(Push)ํ๊ณ , ์๋น๋ ๋ฉ์์ง๋ ํ์์ ์ ๊ฑฐํ๋ ๊ตฌ์กฐ
์นดํ์นด๋ ๋ธ๋ก์ปค๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ๋ง ํ๊ณ , ์ปจ์๋จธ๊ฐ ํ์ํ ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ๊ฐ๋(Pull) ๊ตฌ์กฐ
๋ธ๋ก์ปค๋ ๋จ์ํ ๋ฐ์ดํฐ๋ฅผ ์ปค๋ฐ ๋ก๊ทธ์ ์ ์ฅํ๋ ์ญํ ๋ง ์ํํ๋ฉฐ, ๋ฉ์์ง๋ฅผ ์ญ์ ํ์ง ์์(์ ์ฑ ์ ๋ฐ๋ผ ๋ค๋ฆ)
์ปจ์๋จธ๊ฐ ์์ ์ ํ์์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ๊ฐ๊ณ , ์ด๋๊น์ง ์ฝ์๋์ง๋ฅผ ๋ํ๋ด๋ ์คํ์ (Offset)์ ์ค์ค๋ก ๊ด๋ฆฌํ๊ณ ์ปค๋ฐ
Last updated
Was this helpful?