์ค๋ ์ง์์ ์๊ฐ์ด ์ข ์์ด์ if kakao ์์์ค ๊ด์ฌ์๋ ๊ฑธ ๋ณด๋ค๊ฐ ๋ ์๊ฐ๋ค์ ๋จ๊ธด๋ค.
์นด์นด์ค์ MongoDB
- RDBMS๋ ์ค๋ฉ์ด ๋๊ณ (Vitess, Citus, ์๋๋ฉด cloud์์๋ Google Cloud Spanner, Azure CosmosDB ๋ฑ), NoSQL๋ก ๊ฐ๋ฉด Hbase, Cassandra ๊ฐ์ ์๋ง์ ๊ฒ์ฆ๋ ์๋ฃจ์
์ด ์๋๋ฐ ๊ตณ์ด mongodb๋ฅผ ์จ์ผํ๋? ํ๋ ์๋ฌธ์ด ์์ ๋ถํฐ ์์ด์๋ค.
- ๋ฐํ๋ฅผ ๋ฃ๊ณ ์กฐ๊ธ ๋ ์๊ฐํด๋ณด๋ ๋ชฝ๊ณ ๋๋น๊ฐ ์์ ์ต์
๋ณด๋ค ๋งค๋ ฅ์ ์ธ ์ํฉ์ด ์๊ธฐ๋ ํ๋ค.
- Managed DB๋ฅผ ๋ชป ์ฐ๋ ํ๊ฒฝ์ด๋ค.
- ๋ณ๋์ ์ค๋ฉ ์๋ฃจ์
์ ํ์ต/์ด์ํ ํ์ ์์ด ์ค๋ฉ์ด ๋ด์ฅ๋์ด ์์ผ๋ฉด ์ข๊ฒ ๋ค
- ๋จ์ํ Key-Value๊ฐ ์๋๋ผ ๋ค์ํ ์ธ๋ฑ์ฑ (GIS, Secondary Index) ์ ์ง์ํ์ผ๋ฉด ์ข๊ฒ ๋ค.
- ์ฒ์์ ์ธ๊ธํ๋ ์ต์
๋ค ์ค์์ ์ด๋ค ๊ฒ๋ ์ ์ธ๊ฐ์ง ์กฐ๊ฑด์ ๋ง์กฑํ์ง ๋ชปํ๊ณ , ๋ฐ๋ฉด ๋ชฝ๊ณ ๋๋น๋ ์ด๋ฅผ ๋ค ๋ง์กฑํ๋ค.
- ๊ฐ์ธ์ ์ผ๋ก๋ vitess๊ฐ ์ ๋งํ๋ค๊ณ ์๊ฐํ๋๋ฐ DDL ํ ์๊ฐ์ ํ๋ (๋ฌผ๋ก gh-ost ๊ฐ์ ํด์ ์ง์ํ๋ค์ง๋ง) ๊ตณ์ดโฆ? ์ถ๊ธฐ๋ ํ๋ค.
ClickHouse - analytical database
- ํ์ฌ ๋ฐํ์๋ Clickhouse๊ฐ ์์ฃผ ๋์ค๋๋ฐ Druid๋ณด๋ค ํจ์ฌ ๋ฆฌ์์ค๋ฅผ ๋ ๋จน์ผ๋ฉด์ ๋ ๋ค์ํ ์ง๊ณ ๊ธฐ๋ฅ์ ์ง์ํ๋ค๊ณ ํ๋ค (์ผ๋จ Druid๋ moving parts๊ฐ ๋๋ ๋ง๋ค)
- ํ์ํ ๊ธฐ๋ฅ ํจ์นํ๊ณ ๋จธ์งํ์
จ๋ค๋ ๋ถ๋ถ์์ ์น์๋ค.
- ๊ทธ๋ฌ๋ฉด Clickhouse ์ฐ๋ฉด Druid๋ ์์จ๋ ๋๋โฆ?์ธ๋ฐ Clickhouse๋ก ์ถฉ๋ถํ๋ฉด ๊ทธ๋ ๋ค๊ณ ํ๋ค (Andy Pavlo ์์ ์จ๊ฐ ๊ทธ๋ ๋ค๊ณ ํ๋ฉด ๊ทธ๋ฐ๊ฒ์ด๋ค).
์ด์ธ
- ๊ณณ๊ณณ์์ Flink ์๊ธฐ๊ฐ ๋์์ ๋ค์์ ์คํธ๋ฆฌ๋ฐ์ผ๋ก ๋ญ๊ฐ ํ ์ผ์ด ์์ผ๋ฉด ๊ฒํ ๋ฅผ ํด๋ด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ๋ค.
- KSQL / Spark DataFrame์ผ๋ก ํํํ๊ธฐ ํ๋ค๊ณ , Statefulํ ์์
์ด๋ฉด ๊ทธ๋ฅ Spring ์ฑ์ผ๋ก ์ง๋๊ฐ, Kafka streams ๊ฐ์๊ฑธ ์จ์ผ ํ ํ
๋ฐ ๊ฐ์ธ์ ์ผ๋ก๋ Flink๊ฐ ์ต๊ทผ ๋ ํ๋ฐํ ์ธ๊ธ๋๋ ๊ฒ์ผ๋ก ๋๊ปด์ง๋ค.
- MySQL on K8S, ๋ฉ๋ก CDC ์๊ธฐ๋ ์ด๋ ๊ฒ ํ๋ค ์๊ธฐ ์์ฃผ์ด๊ณ ์์ธํ ์๊ธฐ๊ฐ ์์ด์ ๋ค์ ์์ฌ์ ๋ค. ์๋ ๋จ ๊ณ ์ํ ์๊ธฐ๊ฐ ์ ์ผ ์ฌ๋ฐ๋๋ฒ์ด๋ค.