๐ ์ปจํ ์ธ
์ ๋ขฐ์ฑ ์๋ ์นดํ์นด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋๋ 3๊ฐ์ง ๋ฐฉ๋ฒ / ์ 3ํ Kakao Tech Meet
โ๏ธ ๋ด์ฉ ์์ฝ
์ ๋ฌ ์ ๋ขฐ๋
- ์ ํํ ํ ๋ฒ : ์ด๋ฒคํธ ๋ฐ์ดํฐ๊ฐ ๋ฐํ๋๊ณ ๋ฐ์ดํฐ๋ฅผ ๋จ ํ ๋ฒ๋ง ์ฒ๋ฆฌํ๋๊ฒ
- ์ต๋ ํ ๋ฒ : ๊ด๋ จ ์ฅ์ ์ ์ํด ๋ฐ์ดํฐ๊ฐ ์ ์ค๋๋ ๊ฒ(์ค๋ณต์ ๋ฐ์ํ์ง ์์)
- ์ ์ด๋ ํ ๋ฒ : ๋คํธ์ํฌ ์ฅ์ ๋ฑ์ผ๋ก ์ธํด ๋ฐ์ดํฐ๊ฐ ์ค๋ณต์ผ๋ก ์ํ๋๊ฑฐ๋ ์ ์ฌ๋ ์ ์๋ ๊ฒ
⇒ ๋ง์ ๊ฐ๋ฐ์๋ค์ ์ ํํ ํ ๋ฒ์ ๋ฌ์ฑํ๊ธฐ ์ํด ๋ ธ๋ ฅ.
์ด๋ฒคํธ ๋๋ฆฌ๋ธ ์ํคํ ์ฒ์ ์คํธ๋ฆผ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ
- ์นดํ์นด๋?
- ์ด๋ฒคํธ ๋๋ฆฌ๋ธ ์ํคํ ์ฒ์ ์คํธ๋ฆผ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์์ ์ค์ํ ์ญํ ์ ์ํ
- ์คํธ๋ฆผ ์ด๋ฒคํธ๋ฅผ ๋ค๋ฃจ๋๋ฐ ํนํ ๋จ
- ์ค์๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋๋ฐ ์ ํฉ
- ์๊ฐ ๋จ์ ์ด๋ฒคํธ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํ ํ์์คํฌํ, ์์๋ฅผ ๋ณด์ฅํ๊ธฐ ์ํ ํํฐ์ ๊ณผ ๋ฉ์์ง ํค์ ๊ฐ์ ๊ธฐ๋ฅ์ด ์นดํ์นด์ ํฌํจ๋จ
- ๋คํธ์ํฌ ํต์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ๋ฉ์์ง ์ ๋ฌ ์ ๋ขฐ์ฑ์ด ๋ฐ๋์ ๊ณ ๋ คํด์ผ ํจ.
- ์ํ์น ์นดํ์นด๋ฅผ ๊ฐ๋ฐํ ๋, ์ด ๋ถ๋ถ์ ๊ฐ๊ณผํ๋ ๊ฒฝ์ฐ๊ฐ ์ข ์ข ์์ง๋ง ๊ผญ ๊ณ ๋ คํด์ผํจ.
Apache Kafka
- ๋ฐ๋ธ์์ ๊ธฐ์ ๋ธ๋ก๊ทธ : kafka ๊ณต๋ถํ ๋ ์ฐธ๊ณ ํ๊ธฐ
- Producer : ์นดํ์นด์์ ๋ค๋ฃจ๋ ๋ฐ์ดํฐ์ ์ต์ ๋จ์์ธ Record๋ฅผ Broker๋ก ๋ณด๋ด๋ ์ญํ
- Consumer : Broker์ ์ ์ฌ๋ ๋ฐ์ดํฐ๋ฅผ Consumer๊ฐ ๊ฐ์ ธ๊ฐ์ผ๋ก์จ ๋ง์ง๋ง์ผ๋ก ๋ฐ์ดํฐ๊ฐ ์ฒ๋ฆฌ๊ฐ ๋จ
- ๋ฐ์ดํฐ๊ฐ ์ ๋ฌ๋๊ณ ์ ์ฌ๋๋ ๊ณผ์ ์์ ์ ์์ ์ผ๋ก ์ ์ฌ, ์ํ๋๋์ง๊ฐ ๊ฐ๊ฐ Acknowledgement , Offset commit ์ด ํ์ธ
- ์ ์์ผ๋ก ์ ์ฌ๋์์์ ํ์ธ๋ฐ์์ผ์ง๋ง ๋ค์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๊ฐ๋ฅ
- Broker ์๋ Topic (๋ฐ์ดํฐ๋ฅผ ๋ด๋ ๊ณต๊ฐ) ์กด์ฌ. ๊ฐ๊ฐ์ ๋ ์ฝ๋์๋ Offset์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ ์์ฐจ์ ์ผ๋ก ์ฆ๊ฐํ๋ ๋ฒํธ๋ฅผ ํ ๋๋ก ์นดํ์นด ๋ด๋ถ์์ ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋์๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ์ฉ๋๋ก ์ฌ์ฉ
๋ฐฉ๋ฒ1) ํ๋ก๋์์ ๋ฉ์์ง ์ ๋ฌ ์ ๋ขฐ๋
- Producer → ํน์ Topic์ ํํฐ์ : ๋ ์ฝ๋ ๋ณด๋ด๊ธฐ
- Acknowledgement : ๋ค์ ๋๋ ค๋ฐ๊ฒ ๋๋๋ฐ ๋คํธ์ํฌ ์ฅ์ ๋ฑ์ผ๋ก Broker์ ํ ํฝ์ ์ ์ฌ๊ฐ ๋์์ง๋ง ์ ์ค๋๋ค๋ฉด?
- Producer๋ Record ๋ค์ ์ ์ก. → ์ค๋ณต ์ ์ฌ ๋ฐ์ ๊ฐ๋ฅ์ฑ ์๊น
- ์ ๊ณผ์ ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์นดํ์นด์์๋ ๋ฉฑ๋ฑ์ฑ ํ๋ก๋์ ์ฌ์ฉ
๋ฉฑ๋ฑ์ฑ ํ๋ก๋์
- ํ๋ก๋์๊ฐ ๋ณด๋ด๋ ๋ฐ์ดํฐ ์ค๋ณต ์ ์ฌ ๋ฐฉ์ง๋ฅผ ์ํด enable.idempotence ์ต์ ์ ๊ณต
- 3.0 ์ดํ๋ถํฐ๋ ์๋์ผ๋ก true ์ค์
- ๊ธฐ๋ณธ ํ๋ก๋์์ ๋ฌ๋ฆฌ ๋ ์ฝ๋๋ฅผ ๋ธ๋ก์ปค๋ก ์ ์กํ ๋, PID์ Seq๋ฅผ ํจ๊ป ์ ๋ฌ
- PID Seq๋ฅผ ๊ฐ์ง๊ณ ์๋ค๊ฐ ์ค๋ณต ์ ์ฌ ์์ฒญ์ด ์ค๋ฉด, ์ดํ ์์ฒญ๋ ์ค๋ณต ๋ ์ฝ๋๋ ์ ์ฌํ์ง ์์
- xor ๋ก ์ค์ … .? aync produce ๋ฐฉ์ call back ๋ฐฉ์์ผ๋ก ๋ง๋ค์ด์ผ์ง๋ง ์ํ๋ ์ฑใด๋ฅ์ ๊ฐ์ง ์ ์๋ค .. ์ด๋ ต๋ค
- ๋์๋ฐฉ์
๋ฐฉ๋ฒ2) ํ ํฝ to ํ ํฝ์ ๋ฉ์์ง ์ ๋ฌ
- ์ด๋ฒคํธ ๋๋ฆฌ๋ธ ์ํคํ ์ฒ๋ ์ด๋ฒคํธ๋ฅผ ๋ก๊ทธ๋ก ์ฒ๋ฆฌ
- ๋ก๊ทธ๋, ๋ณ๊ฒฝ์ด ๋์ง ์๊ณ ๊ณ์ append๊ฐ ๋๋ ๋ฐ์ดํฐ๋ฅผ ์๋ฏธ
- ์ ์ฌ๋ ์ด๋ฒคํธ๋ฅผ ํ ๋๋ก ์นดํ์นด์์ ์ง์์ ์ผ๋ก ์ปจ์๋จธ๊ฐ ํ์ํ๋งํผ ์ฐ์ฐ์ ์ํํ ์ ์๊ณ ๋์จํ ๊ฐ๋ฐ, ์ด๋ฒคํธ ์์ฑ๋น์ฉ ๊ฐ์์ ๊ฐ์ ํน์ง์ ๊ฐ์ง
๊ด๊ณ ์ถ์ฒํ์์ ์ฌ์ฉํ๋ ์ด๋ฒคํธ ๋๋ฆฌ๋ธ ์ํคํ ์ฒ ์์ - ๊ด๊ณ CPC
- ์ฌ์ฉ์์ ๊ด๊ณ ํด๋ฆญ ๋ก๊ทธ๋ฅผ ์ด์ฉํด ๊ด๊ณ ์ฃผ์๊ฒ๋ ๋น์ฉ์ ์ฒญ๊ตฌํ๊ณ ๋งค์ฒด์ฌ์๊ฒ๋ CPC ์์ต์ ์ ๊ณตํด์ผํ๋ ๋ก์ง์ด ์ํ ๋ฏนํ๊ฒ ์ฒ๋ฆฌํด์ผํ๋ ๊ฒฝ์ฐ๊ฐ ์์
- ๋ฌธ์ ๋ ํ ํฝ์ ๊ฐ์ ธ๊ฐ๋ ์ปจ์๋จธ์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด ํ๋์ ์ด๋ฒคํธ๊ฐ ๋๊ฐ์ ์ด๋ฒคํธ๋ก ๋ฐ์ํ ๋ ์ํ ๋ฏนํ๊ฒ ์งํ๋๋๊ฒ ์๋๋ผ ์ค๋ณต์ด ๋ฐ์ํ ์ ์์. ์ปค๋ฐ์ ํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ.
- ์ด๋ฅผ ํด๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋จ ํ๋. ์ฑ๊ณต์ ํ๊ฑฐ๋ ์คํจ๋ฅผ ํ๊ฑฐ๋ ํ๋๋ง ํด์ผํจ.
- ์นดํ์นด์์๋ ์ด๋ฐ ์ด๋ฒคํธ๋ฅผ ํ๋๋ก ๋ฌถ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก ํธ๋์ญ์ ์ฌ์ฉ.
๋ฐฉ๋ฒ3) ์ปจ์์ปค์ ์ค๋ณต ์ ์ฌ ๋ฐฉ์ง
์นดํ์นด ํ ํฝ์ ๋ฐ์ดํฐ๋ฅผ ์ปจ์๋จธ๋ก ๊ฐ์ ธ์ค๊ณ ์ด๋ค DB์ ์ ์ฌํ ๋, ์ปค๋ฐ๊ณผ ํ๋ก๋์๋ฅผ ํ๋์ ํธ๋์ญ์ ์ผ๋ก ๋ฌถ๋๋ค๋ฉด ์ข์ ๋ฐฉ๋ฒ์ด๊ฒ ์ง๋ง, ์ข ๋ฅ๊ฐ ๋ค๋ฅธ DB์ ๊ฒฝ์ฐ ํธ๋์ญ์ ์ผ๋ก ๋ฌถ๋ ๊ฒ์ ๊ฑฐ์ ๋ถ๊ฐ๋ฅ
๋ฐ์ดํฐ ์ ์ฌ์ ์ปค๋ฐ์ ๋์์ ์ํํด์ผ ํ๊ธฐ ๋๋ฌธ
์ด๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ
- ์ ๋ํฌ ํค๋ฅผ ํ์ฉํ ๋ฉฑ๋ฑ์ฑ ์ปจ์๋จธ
- Oracle์ด๋ MySQL๋ ์ด ๊ธฐ๋ฅ ์ ๊ณต
- ์ด ๋ ์ฝ๋๊ฐ ์ ์ผ๋ฌด์ดํ๋ค๋ Key ์ฌ์ฉ
- ex. ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ํ์์คํฌํ
- Upsert๋ฅผ ํ์ฉํ๋ ๋ฉฑ๋ฑ์ฑ ์ปจ์๋จธ
- ์ ์ฌ ์, ์ค๋ณต ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด UPDATE
- key๊ฐ ์์ผ๋ฉด INSERT
- MongoDB์์ ์ง์ํ๋ ๋ฐฉ์
- Write-ahead log๋ฅผ ํ์ฉํ ์ปจ์๋จธ
- ํธ๋์ญ์ ์ผ์ด๋๊ธฐ ์ ๋ก๊ทธ ๋ฏธ๋ฆฌ ๊ธฐ๋ก
- ํ๋์ ์ ์ฌ๊ณผ์ ์ ์์ ๋จ์๋ก ๋ฌถ๋ ๊ฒ
- ํ์ผ 2๊ฐ. ๊ฐ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฌํ๊ณ ์ด๋๊น์ง ์ ์ฌํ๋์ง ๊ธฐ๋กํ๋ WAL file์ ํตํด ๋จ ํ๋๋ง ์ ์ฌ๋๋ ๊ฒ์ ๊ด๋ฆฌ
๋ด๋ถ ํ์ฉ ์ฌ๋ก - ์ค๋งํธ ๋ฉ์์ง ์๋น์ค
- ํก ์ฑ๋์ ์์ฌ ์ต์ ํ, ํ๊ฒ ์ต์ ํ๋ฅผ ํตํด ์ ํฉํ ์ ์ ์๊ฒ ํน์ ๊ด๊ณ ์ ๊ณต
- ์นดํ์นด Streams์ MongoDB ํ์ฉ
๋ง๋ฌด๋ฆฌ
- Java์ ํด๋น๋๋ ๋ด์ฉ์. ๋ค๋ฅธ ์ธ์ด๋ ์ง์ ์ฌ๋ถ ํ์ธํ ๊ฒ
- ๋ฉ์์ง ์ ๋ฌ ์ ๋ขฐ์ฑ ํ ์คํธ๋ ์ค์ ์ํํ๊ธฐ ๊น๋ค๋ก์. ๋ ํ๋ฆฌ์ผ์ด์ ์๋, ์ปค๋ฐ ์์ , ํํฐ์ ๋ถ๋ฐฐ ๋ฑ
- ๋จ์ผ ์นดํ์นด ํด๋ฌ์คํฐ์์ ๋์ ๊ฐ๋ฅ, ์๋ก ๋ค๋ฅธ ์นดํ์นด ํด๋ฌ์คํฐ ์ฐ๋ ์์์๋ ๋ค๋ฅธ ๊ด์ ์ ๊ณ ๋ฏผ ํ์
- ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์ด๋ ์ ๋ ์ ๋ฌ ์ ๋ขฐ์ฑ์ ๊ฐ์ง ๊ฒ์ด๋. ์ ๋ง ํ์ํ๊ฐ. ์ฅ์ ๋ก ํ๋จํ๊ณ ๋์ด๊ฐ ์ ์๋๊ฐ.
๐ญ ์๊ฒฌ
๊ฒฝ๋งค ๊ธฐ๋ฅ ๊ตฌํ์ด ํ์ํ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ์นดํ์นด ๋์ ์ ์๋ ผํ๋ ์ ์ด ์๋ค. ๋ค๋ง 6์ฃผ๋ผ๋ ์งง์ ์๊ฐ๊ณผ ๋ค๋ฅธ ์ฃผ์ ๊ธฐ๋ฅ๋ค ๊ตฌํ์ ๋ฐ๋น ์ ์ฉํ์ง ๋ชปํด ์์ฌ์์ด ๋จ์์๋ค. ๊ธฐํ๊ฐ ๋๋ค๋ฉด ๊ผญ ๊ณต๋ถํด์ ๊ตฌํํด๋ด์ผํ์ง ํ๋ ์๊ฐ์ ๊ฐ์ง๋ ์ค, ์นด์นด์ค ํ ํฌ์์ ๊ฐ์ง ์นดํ์นด๋ฅผ ์ฃผ์ ๋กํ ๋ฐํ๋ฅผ ์ ํ๊ฒ ๋์ด ์ด์ฌํ ๋ด์ฉ ์ ๋ฆฌ๊น์ง ํ๋ฉฐ ๋ค์ด๋ดค๋ค.
์นดํ์นด๊ฐ ์ค์๊ฐ ์๋น์ค์ ์ ํฉํ ๊ธฐ์ ์ด๋ผ๋ ๋ฐฐ๊ฒฝ์ง์ ์ ๋๋ง ์๋ ๋์๊ฒ ๊ฝค๋ ์ด๋ ค์ด ๋ด์ฉ์ด์๋ค. ํ์ง๋ง ๋ฉ์์ง ์ ๋ฌ ์ ๋ขฐ๋๋ผ๋ ์ค์ํ ๊ฐ๋ ์ ๋ํด ์ ํ๊ณ ์ดํด๋ฅผ ๋ํ๊ฒ ๋์ด ์ข์๋ค. ์ค์ ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ๋ฉ์์ง๊ฐ ์ค๋ณต์ผ๋ก ์ ๋ฌ๋๋ ์ํฉ์ ์ ํ๊ธด ์ฝ์ง ์๋ค. ํ์ง๋ง ์๋ง์ ์ํฉ์ด ๋ฐ์๋๋ ์ค์ ์๋น์ค์์๋ ์ผ๋ง๋ ์ง ๊ฐ๋ฅํ ์ ์๊ฒ ์ผ๋ฉฐ, ๊ทธ๋ฌ์ ๋์ ํผํด๋ ๋จ์ํ ์ทจ์ ์ค๋น์์ผ๋ก์ ์งํํ๋ ํ๋ก์ ํธ์ ๋ผ์น๋ ์ํฅ๊ณผ๋ ์ฐจ์์ด ๋ค๋ฅผ ๊ฑฐ๋ผ๋ ์๊ฐ์ ํ๋ค. ๋ฐ๋ผ์ ๊ณ ๊ฐ๊ณผ ์ฌ์ ์ด ๊ฑธ๋ ค์๋ ์ค์ ์๋น์ค๋ผ๋ฉด, ๊ธ์ ์ ์ธ ๋ฌธ์ ๊ฐ ๊ฑธ๋ ค์๋ ๊ฒฝ์ฐ๋ผ๋ฉด, ์ด๋ฐ ๋ถ๋ถ์ ์ ๋ ๊ฐ๊ณผํด์๋ ์๋ ๊ฒ์ด๋ค.
'Reading > scrap' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ ๊ทธ๋ฆฌํ ํฌ (0) | 2022.12.18 |
---|---|
๊ตฌ๊ธ ํด๋ผ์ฐ๋ ๊ด๋ จ ๊ธฐ์ฌ(2022.11.22) (0) | 2022.11.24 |