์๋ก์ด ํ๋ฆ์ ์ถ์๋ฅผ ๊ธฐ๋ํ๋ฉด์
๊ฒํ
์ฐ๋ฆฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฌ๋ฌ ๋ฐ์ดํฐ ์ ์ฅ์๋ฅผ ์ฌ์ฉํ๋ ๋งค์ฐ ์ผ๋ฐ์ ์ธ ํจํด์ ๋ํด ์ด์ผ๊ธฐํ ๊ฒ์ ๋๋ค. ์ฌ๊ธฐ์ ๊ฐ ์ ์ฅ์๋ ํ์ค ํ์์ ๋ฐ์ดํฐ(MySQL ๋ฑ)๋ฅผ ์ ์ฅํ๊ณ ๊ณ ๊ธ ๊ฒ์ ๊ธฐ๋ฅ(ElasticSearch, etc.) .), ์บ์ฑ(Memcached ๋ฑ) ๋ฐ ๊ธฐํ. ์ผ๋ฐ์ ์ผ๋ก ์ฌ๋ฌ ๋ฐ์ดํฐ ์ ์ฅ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๊ทธ ์ค ํ๋๋ ๊ธฐ๋ณธ ์ ์ฅ์ ์ญํ ์ ํ๊ณ ๋ค๋ฅธ ์ ์ฅ์๋ ํ์ ์ ์ฅ์ ์ญํ ์ ํฉ๋๋ค. ์ ์ผํ ๋ฌธ์ ๋ ์ด๋ฌํ ๋ฐ์ดํฐ ์ ์ฅ์๋ฅผ ๋๊ธฐํํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
์ฐ๋ฆฌ๋ ์ด์ค ์ฐ๊ธฐ, ๋ถ์ฐ ํธ๋์ญ์
๋ฑ๊ณผ ๊ฐ์ ์ฌ๋ฌ ์ ์ฅ์ ๋๊ธฐํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์๋ํ ๋ค์ํ ํจํด์ ์ดํด๋ณด์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ ์ค์ ์ฌ์ฉ, ์ ๋ขฐ์ฑ ๋ฐ ์ ์ง ๊ด๋ฆฌ ์ธก๋ฉด์์ ์๋นํ ํ๊ณ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋ฐ์ดํฐ ๋๊ธฐํ ์ธ์๋ ์ผ๋ถ ์ ํ๋ฆฌ์ผ์ด์
์ ์ธ๋ถ ์๋น์ค๋ฅผ ํธ์ถํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฐํํด์ผ ํฉ๋๋ค.
Delta๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ฐ๋ฐ๋์์ต๋๋ค. Delta๋ ๊ถ๊ทน์ ์ผ๋ก ๋ฐ์ดํฐ ๋๊ธฐํ ๋ฐ ๊ฐํ๋ฅผ ์ํ ์ผ๊ด๋ ์ด๋ฒคํธ ์ค์ฌ ํ๋ซํผ์ ์ ๊ณตํฉ๋๋ค.
๊ธฐ์กด ์๋ฃจ์
์ด์ค ํญ๋ชฉ
๋ ๊ฐ์ ๋ฐ์ดํฐ ์ ์ฅ์๋ฅผ ๋๊ธฐํ๋ ์ํ๋ก ์ ์งํ๋ ค๋ฉด ํ ์ ์ฅ์์ ์ด ํ ์ฆ์ ๋ค๋ฅธ ์ ์ฅ์์ ์ฐ๋ ์ด์ค ์ฐ๊ธฐ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ ๋ น์์ ๋ค์ ์๋ํ ์ ์์ผ๋ฉฐ, ์๋ ํ์๊ฐ ์์ง๋ ํ ์ฒซ ๋ฒ์งธ ๋ น์์ด ์คํจํ๋ฉด ๋ ๋ฒ์งธ ๋ น์์ด ์ค๋จ๋ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ ๋ฒ์งธ ์ ์ฅ์์ ์ฐ๊ธฐ๊ฐ ์คํจํ๋ฉด ๋ ๋ฐ์ดํฐ ์ ์ฅ์๊ฐ ๋๊ธฐํ๋์ง ์์ ์ ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ ์ผ๋ฐ์ ์ผ๋ก ์ฒซ ๋ฒ์งธ ์ ์ฅ์์์ ๋ ๋ฒ์งธ ์ ์ฅ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์ฌ์ ์กํ ์ ์๋ ๋ณต๊ตฌ ์ ์ฐจ๋ฅผ ์์ฑํ๊ฑฐ๋ ๋ฐ์ดํฐ์์ ์ฐจ์ด์ ์ด ๋ฐ๊ฒฌ๋ ๊ฒฝ์ฐ์๋ง ์ด๋ฅผ ์ํํจ์ผ๋ก์จ ํด๊ฒฐ๋ฉ๋๋ค.
๋ฌธ์ :
๋ณต๊ตฌ ์ ์ฐจ๋ฅผ ์ํํ๋ ๊ฒ์ ์ฌ์ฌ์ฉํ ์ ์๋ ํน์ ์์ ์ ๋๋ค. ๋ํ ๋ณต์ ์ ์ฐจ๊ฐ ์ํ๋ ๋๊น์ง ์ ์ฅ ์์น ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ๋๊ธฐํ๋์ง ์์ ์ํ๋ก ์ ์ง๋ฉ๋๋ค. ์ธ ๊ฐ ์ด์์ ๋ฐ์ดํฐ ์ ์ฅ์๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ฃจ์ ์ด ๋ ๋ณต์กํด์ง๋๋ค. ๋ง์ง๋ง์ผ๋ก ๋ณต์ ์ ์ฐจ๋ ์๋ ๋ฐ์ดํฐ ์์ค์ ๋ก๋๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
๋ณ๊ฒฝ ๋ก๊ทธ ํ ์ด๋ธ
ํ ์ด๋ธ ์งํฉ์ ๋ณ๊ฒฝ ์ฌํญ(์: ๋ ์ฝ๋ ์ฝ์ , ์ ๋ฐ์ดํธ, ์ญ์ ๋ฑ)์ด ๋ฐ์ํ๋ฉด ๋ณ๊ฒฝ ๋ ์ฝ๋๊ฐ ๋์ผํ ํธ๋์ญ์ ์ ์ผ๋ถ๋ก ๋ก๊ทธ ํ ์ด๋ธ์ ์ถ๊ฐ๋ฉ๋๋ค. ๋ค๋ฅธ ์ค๋ ๋๋ ํ๋ก์ธ์ค๋ ์ง์์ ์ผ๋ก ๋ก๊ทธ ํ ์ด๋ธ์ ์ด๋ฒคํธ๋ฅผ ์์ฒญํ๊ณ ์ด๋ฅผ ํ๋ ์ด์์ ๋ฐ์ดํฐ ์ ์ฅ์์ ๊ธฐ๋กํฉ๋๋ค. ํ์ํ ๊ฒฝ์ฐ ๋ชจ๋ ์ ์ฅ์์์ ๊ธฐ๋ก์ด ํ์ธ๋ ํ ๋ก๊ทธ ํ ์ด๋ธ์์ ์ด๋ฒคํธ๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
๋ฌธ์ :
์ด ํจํด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๊ตฌํ๋์ด์ผ ํ๋ฉฐ ์ด์์ ์ผ๋ก๋ ์ด๋ฅผ ์ฌ์ฉํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ง ์์์ผ ํฉ๋๋ค. ๋ค์ค ์ธ์ด ํ๊ฒฝ์์๋ ์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ตฌํ์ด ํ์ํ ์ธ์ด๋ก ์กด์ฌํด์ผ ํ์ง๋ง ์ธ์ด ์ ๋ฐ์ ๊ฑธ์ณ ๊ธฐ๋ฅ๊ณผ ๋์์ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๋ ๊ฒ์ ๋งค์ฐ ์ด๋ ต์ต๋๋ค.
๋ ๋ค๋ฅธ ๋ฌธ์ ๋ MySQL๊ณผ ๊ฐ์ด ํธ๋์ญ์ ์คํค๋ง ๋ณ๊ฒฝ์ ์ง์ํ์ง ์๋ ์์คํ [1][2]์์ ์คํค๋ง ๋ณ๊ฒฝ์ ์ป๋ ๋ฐ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ณ๊ฒฝ(์: ์คํค๋ง ๋ณ๊ฒฝ)์ ์ํํ๊ณ ์ด๋ฅผ ๋ณ๊ฒฝ ๋ก๊ทธ ํ ์ด๋ธ์ ํธ๋์ญ์ ๋ฐฉ์์ผ๋ก ๊ธฐ๋กํ๋ ํจํด์ด ํญ์ ์๋ํ๋ ๊ฒ์ ์๋๋๋ค.
๋ถ์ฐ ํธ๋์ญ์
๋ถ์ฐ ํธ๋์ญ์ ์ ์ฌ์ฉํ๋ฉด ํธ๋์ญ์ ์ ์ฌ๋ฌ ์ด๊ธฐ์ข ๋ฐ์ดํฐ ์ ์ฅ์๋ก ๋ถํ ํ์ฌ ์์ ์ด ์ฌ์ฉ๋ ๋ชจ๋ ๋ฐ์ดํฐ ์ ์ฅ์์ ์ปค๋ฐ๋๊ฑฐ๋ ๊ทธ ์ค ์ด๋ ๊ฒ์๋ ์ปค๋ฐ๋์ง ์๋๋ก ํ ์ ์์ต๋๋ค.
๋ฌธ์ :
๋ถ์ฐ ํธ๋์ญ์ ์ ์ด๊ธฐ์ข ๋ฐ์ดํฐ ์ ์ฅ์์ ๋งค์ฐ ํฐ ๋ฌธ์ ์ ๋๋ค. ๋ณธ์ง์ ์ผ๋ก ๊ด๋ จ ์์คํ ์ ๊ฐ์ฅ ๋ฎ์ ๊ณตํต ๋ถ๋ชจ์๋ง ์์กดํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ค๋น ๋จ๊ณ์์ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก์ธ์ค๊ฐ ์คํจํ๋ฉด XA ํธ๋์ญ์ ์ด ์คํ์ ์ฐจ๋จํฉ๋๋ค. ๋ํ XA๋ ๊ต์ฐฉ ์ํ ๊ฐ์ง ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์๊ฑฐ๋ ๋๊ด์ ๋์์ฑ ์ ์ด ์ฒด๊ณ๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. ๋ํ ElasticSearch์ ๊ฐ์ ์ผ๋ถ ์์คํ ์ XA ๋๋ ๊ธฐํ ์ด๊ธฐ์ข ํธ๋์ญ์ ๋ชจ๋ธ์ ์ง์ํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ค์ํ ๋ฐ์ดํฐ ์ ์ฅ ๊ธฐ์ ์์ ์ฐ๊ธฐ ์์์ฑ์ ๋ณด์ฅํ๋ ๊ฒ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ด ๋งค์ฐ ์ด๋ ค์ด ์์ ์ผ๋ก ๋จ์ ์์ต๋๋ค[3].
๋ธํ
Delta๋ ๊ธฐ์กด ๋ฐ์ดํฐ ๋๊ธฐํ ์๋ฃจ์ ์ ํ๊ณ๋ฅผ ํด๊ฒฐํ๊ณ ์ฆ๊ฐ์ ์ธ ๋ฐ์ดํฐ ๊ฐํ๋ฅผ ์ง์ํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ฐ๋ฆฌ์ ๋ชฉํ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์๊ฐ ๋น์ฆ๋์ค ๊ธฐ๋ฅ ๊ตฌํ์ ์ ์ ์ผ๋ก ์ง์คํ ์ ์๋๋ก ์ด๋ฌํ ๋ชจ๋ ๋ณต์ก์ฑ์ ์ถ์ํํ๋ ๊ฒ์ด์์ต๋๋ค. ๋ค์์ผ๋ก Netflix Delta์ ์ค์ ์ฌ์ฉ ์ฌ๋ก์ธ "Movie Search"์ ๋ํด ์ค๋ช ํ๊ฒ ์ต๋๋ค.
Netflix๋ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ๋ฅผ ๋๋ฆฌ ์ฌ์ฉํ๋ฉฐ ๊ฐ ๋ง์ดํฌ๋ก์๋น์ค๋ ์ผ๋ฐ์ ์ผ๋ก ํ ๊ฐ์ง ์ ํ์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ํ์ ๋ํ ๊ธฐ๋ณธ ์ ๋ณด๋ Movie Service๋ผ๋ ๋ง์ดํฌ๋ก์๋น์ค์ ํฌํจ๋์ด ์์ผ๋ฉฐ, ์ ์์, ๋ฐฐ์ฐ, ๊ณต๊ธ์
์ฒด ๋ฑ์ ๋ํ ์ ๋ณด์ ๊ฐ์ ๊ด๋ จ ๋ฐ์ดํฐ๋ ๋ค๋ฅธ ์ฌ๋ฌ ๋ง์ดํฌ๋ก์๋น์ค(์ฆ, Deal Service, Talent Service ๋ฐ Vendor Service)์์ ๊ด๋ฆฌ๋ฉ๋๋ค.
Netflix Studios์ ๋น์ฆ๋์ค ์ฌ์ฉ์๋ ๋ค์ํ ์ํ ๊ธฐ์ค์ ๊ฒ์ํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ผ๋ฏ๋ก ๋ชจ๋ ์ํ ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ์ ์๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํฉ๋๋ค.
Delta ์ด์ ์๋ ์ํ ๊ฒ์ ํ์ด ์ํ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ฑ์ฑํ๊ธฐ ์ ์ ์ฌ๋ฌ ๋ง์ดํฌ๋ก์๋น์ค์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ผ ํ์ต๋๋ค. ๋ํ ํ์ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ํ ์๋๋ผ๋ ๋ค๋ฅธ ๋ง์ดํฌ๋ก์๋น์ค์ ๋ณ๊ฒฝ ์ฌํญ์ ์์ฒญํ์ฌ ์ฃผ๊ธฐ์ ์ผ๋ก ๊ฒ์ ์์ธ์ ์ ๋ฐ์ดํธํ๋ ์์คํ ์ ๊ฐ๋ฐํด์ผ ํ์ต๋๋ค. ์ด ์์คํ ์ ๋น ๋ฅด๊ฒ ๋ณต์กํด์ง๊ณ ์ ์ง ๊ด๋ฆฌ๊ฐ ์ด๋ ค์์ก์ต๋๋ค.
๊ทธ๋ฆผ 1. Delta์ ๋ํ ํด๋ง ์์คํ
Delta๋ฅผ ์ฌ์ฉํ ํ ์์คํ
์ ๋ค์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ด๋ฒคํธ ์ค์ฌ ์์คํ
์ผ๋ก ๋จ์ํ๋์์ต๋๋ค. CDC(Change-Data-Capture) ์ด๋ฒคํธ๋ Delta-Connector๋ฅผ ์ฌ์ฉํ์ฌ Keystone Kafka ์ฃผ์ ๋ก ์ ์ก๋ฉ๋๋ค. Delta ์คํธ๋ฆผ ์ฒ๋ฆฌ ํ๋ ์์ํฌ(Flink ๊ธฐ๋ฐ)๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ถ๋ Delta ์ ํ๋ฆฌ์ผ์ด์
์ ์ฃผ์ ์์ CDC ์ด๋ฒคํธ๋ฅผ ์์ ํ๊ณ , ๋ค๋ฅธ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ํธ์ถํ์ฌ ์ด๋ฅผ ๊ฐํํ๊ณ , ๋ง์ง๋ง์ผ๋ก ๊ฐํ๋ ๋ฐ์ดํฐ๋ฅผ Elasticsearch์ ๊ฒ์ ์ธ๋ฑ์ค์ ์ ๋ฌํฉ๋๋ค. ์ ์ฒด ํ๋ก์ธ์ค๋ ๊ฑฐ์ ์ค์๊ฐ์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ค. ์ฆ, ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค์ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ์ฉ๋์๋ง์ ๊ฒ์ ์์ธ์ด ์
๋ฐ์ดํธ๋ฉ๋๋ค.
๊ทธ๋ฆผ 2. Delta๋ฅผ ์ฌ์ฉํ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ
๋ค์ ์น์
์์๋ ์คํ ๋ฆฌ์ง์ ์ฐ๊ฒฐํ๊ณ CDC ์ด๋ฒคํธ๋ฅผ Kafka ์ฃผ์ ๋ก ๋ผ์ฐํ
ํ๋ ์ค์๊ฐ ๋ฐ์ดํฐ ์ ์ก ์ธํ๋ผ์ธ ์ ์ก ๊ณ์ธต์ CDC ์ด๋ฒคํธ๋ฅผ ๊ฒ์ํ๋ Delta-Connector์ ์๋์ ๋ํด ์ค๋ช
ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์๋ ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐ ๊ฐํ ๋
ผ๋ฆฌ์ ์ฌ์ฉํ ์ ์๋ Delta ์คํธ๋ฆผ ์ฒ๋ฆฌ ํ๋ ์์ํฌ์ ๋ํด ์ค๋ช
ํ๊ฒ ์ต๋๋ค.
CDC(๋ณ๊ฒฝ ๋ฐ์ดํฐ ์บก์ฒ)
์ฐ๋ฆฌ๋ ๋ฐ์ดํฐ ์ ์ฅ์์์ ์ปค๋ฐ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ค์๊ฐ์ผ๋ก ์บก์ฒํ์ฌ ์คํธ๋ฆผ์ ์ธ ์ ์๋ Delta-Connector๋ผ๋ CDC ์๋น์ค๋ฅผ ๊ฐ๋ฐํ์ต๋๋ค. ์ค์๊ฐ ๋ณ๊ฒฝ ์ฌํญ์ ํธ๋์ญ์ ๋ก๊ทธ ๋ฐ ์คํ ๋ฆฌ์ง ๋คํ์์ ๊ฐ์ ธ์ต๋๋ค. ๋คํ๋ ์ผ๋ฐ์ ์ผ๋ก ํธ๋์ญ์ ๋ก๊ทธ๊ฐ ์ ์ฒด ๋ณ๊ฒฝ ๋ด์ญ์ ์ ์ฅํ์ง ์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ๋ฉ๋๋ค. ๋ณ๊ฒฝ ์ฌํญ์ ์ผ๋ฐ์ ์ผ๋ก ๋ธํ ์ด๋ฒคํธ๋ก ์ง๋ ฌํ๋๋ฏ๋ก ์์ ์๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์ด๋์ ์ค๋์ง ๊ฑฑ์ ํ ํ์๊ฐ ์์ต๋๋ค.
Delta-Connector๋ ๋ค์๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ์ถ๊ฐ ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค.
- Kafka ์ดํ์ ์ฌ์ฉ์ ์ ์ ์ถ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋ ๊ธฐ๋ฅ.
- ๋ชจ๋ ํ ์ด๋ธ, ํน์ ํ ์ด๋ธ ๋๋ ํน์ ๊ธฐ๋ณธ ํค์ ๋ํด ์ธ์ ๋ ์ง ์๋ ๋คํ๋ฅผ ํ์ฑํํ๋ ๊ธฐ๋ฅ.
- ๋คํ๋ ์ฒญํฌ๋ก ๊ฒ์ํ ์ ์์ผ๋ฏ๋ก ์คํจ ์ ์ฒ์๋ถํฐ ๋ค์ ์์ํ ํ์๊ฐ ์์ต๋๋ค.
- ํ ์ด๋ธ์ ์ ๊ธ์ ์ค์ ํ ํ์๊ฐ ์์ต๋๋ค. ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ธฐ ํธ๋ํฝ์ด ์ฐ๋ฆฌ ์๋น์ค์ ์ํด ์ฐจ๋จ๋์ง ์๋๋ก ํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
- AWS ๊ฐ์ฉ ์์ญ์ ์ค๋ณต ์ธ์คํด์ค๋ก ์ธํ ๊ณ ๊ฐ์ฉ์ฑ.
ํ์ฌ AWS RDS ๋ฐ Aurora ๋ฐฐํฌ๋ฅผ ํฌํจํ์ฌ MySQL ๋ฐ Postgres๋ฅผ ์ง์ํฉ๋๋ค. Cassandra(๋ค์ค ๋ง์คํฐ)๋ ์ง์ํฉ๋๋ค. ์ฌ๊ธฐ์์ Delta-Connector์ ๋ํ ์์ธํ ๋ด์ฉ์ ํ์ธํ ์ ์์ต๋๋ค.
Kafka์ ์ ์ก ๊ณ์ธต
Delta์ ์ด๋ฒคํธ ์ ์ก ๊ณ์ธต์ ํ๋ซํผ์ ๋ฉ์์ง ์๋น์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋์์ต๋๋ค.
์ญ์ฌ์ ์ผ๋ก Netflix์ ๊ฒ์ํ๋ ๊ฒ์ ์๋ช
๋ณด๋ค๋ ์ ๊ทผ์ฑ์ ์ต์ ํ๋์์ต๋๋ค(์๋ ์ฐธ์กฐ).
Delta๋ฅผ ํตํด ์ฐ๋ฆฌ๋ ํ์ ๋งค์ฅ์ CDC ์ด๋ฒคํธ๋ฅผ ์ ๋ฌํ ์ ์๋๋ก ๋ ๊ฐ๋ ฅํ ๋ด๊ตฌ์ฑ ๋ณด์ฅ์ ์ํ์ต๋๋ค. ์ด๋ฅผ ์ํด ์ฐ๋ฆฌ๋ ํน๋ณํ ์ค๊ณ๋ Kafka ํด๋ฌ์คํฐ๋ฅผ ์ผ๊ธ ๊ฐ์ฒด๋ก ์ ์ํ์ต๋๋ค. ์๋ ํ์์ ์ผ๋ถ ๋ธ๋ก์ปค ์ค์ ์ ํ์ธํ ์ ์์ต๋๋ค.
Keystone Kafka ํด๋ฌ์คํฐ์์๋ ๋ถ์ ํ ์ง๋์ ์ ๊ฑฐ ์ผ๋ฐ์ ์ผ๋ก ๊ฒ์์ ์ ๊ทผ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ํฌํจ๋ฉ๋๋ค. ๋๊ธฐํ๋์ง ์์ ๋ณต์ ๋ณธ์ด ๋ฆฌ๋๋ก ์ ํ๋๋ฉด ๋ฉ์์ง๊ฐ ์์ค๋ ์ ์์ต๋๋ค. ์๋ก์ด ๊ณ ๊ฐ์ฉ์ฑ Kafka ํด๋ฌ์คํฐ์ ๊ฒฝ์ฐ ์ต์
๋ถ์ ํ ์ง๋์ ์ ๊ฑฐ ๋ฉ์์ง ์์ค์ ๋ฐฉ์งํ๊ธฐ ์ํด ๊บผ์ก์ต๋๋ค.
์ฐ๋ฆฌ๋ ๋์์ด์ ๋ณต์ ์ธ์ 2์์ 3๊น์ง ๊ทธ๋ฆฌ๊ณ ์ต์ ๋น๋๊ธฐ ๋ณต์ ๋ณธ 1 ๋ 2. ์ด ํด๋ฌ์คํฐ์ ์ฐ๋ ๊ฒ์์๋ ๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ ์๋ต์ด ํ์ํ๋ฏ๋ก ๋ณต์ ๋ณธ 2๊ฐ ์ค 3๊ฐ๊ฐ ๊ฒ์์๊ฐ ๋ณด๋ธ ์ต์ ๋ฉ์์ง๋ฅผ ๊ฐ๋๋ก ํด์ผ ํฉ๋๋ค.
๋ธ๋ก์ปค ์ธ์คํด์ค๊ฐ ์ข ๋ฃ๋๋ฉด ์ ์ธ์คํด์ค๊ฐ ์ด์ ์ธ์คํด์ค๋ฅผ ๋์ฒดํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ ๋ธ๋ก์ปค๋ ๋๊ธฐํ๋์ง ์์ ๋ณต์ ๋ณธ์ ๋ฐ๋ผ์ก์์ผ ํ๋ฉฐ ์ด๋ ๋ช ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค. ์ด ์๋๋ฆฌ์ค์ ๋ณต๊ตฌ ์๊ฐ์ ์ค์ด๊ธฐ ์ํด ๋ก์ปฌ ๋ธ๋ก์ปค ๋์คํฌ ๋์ ๋ธ๋ก ๋ฐ์ดํฐ ์คํ ๋ฆฌ์ง(Amazon Elastic Block Store)๋ฅผ ์ฌ์ฉํ๊ธฐ ์์ํ์ต๋๋ค. ์ข ๋ฃ๋ ๋ธ๋ก์ปค ์ธ์คํด์ค๋ฅผ ์ ์ธ์คํด์ค๊ฐ ๊ต์ฒดํ๋ฉด ์ข ๋ฃ๋ ์ธ์คํด์ค์ ์๋ EBS ๋ณผ๋ฅจ์ ์ฐ๊ฒฐํ๊ณ ์ ๋ฉ์์ง๋ฅผ ๋ฐ๋ผ์ก๊ธฐ ์์ํฉ๋๋ค. ์ด ํ๋ก์ธ์ค๋ ์ ์ธ์คํด์ค๊ฐ ๋ ์ด์ ๋น ์ํ์์ ๋ณต์ ํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ฐฑ๋ก๊ทธ ์ ๋ฆฌ ์๊ฐ์ ๋ช ์๊ฐ์์ ๋ช ๋ถ์ผ๋ก ์ค์ฌ์ค๋๋ค. ์ ๋ฐ์ ์ผ๋ก ๋ณ๋์ ์คํ ๋ฆฌ์ง ๋ฐ ๋ธ๋ก์ปค ์๋ช ์ฃผ๊ธฐ๋ ๋ธ๋ก์ปค ์ ํ์ ์ํฅ์ ํฌ๊ฒ ์ค์ ๋๋ค.
๋ฐ์ดํฐ ์ ๋ฌ ๋ณด์ฅ์ ๋์ฑ ๋์ด๊ธฐ ์ํด ์ฐ๋ฆฌ๋
์คํธ๋ฆผ ์ฒ๋ฆฌ ํ๋ ์์ํฌ
Delta์ ์ฒ๋ฆฌ ๊ณ์ธต์ Netflix ์ํ๊ณ์ Apache Flink ํตํฉ์ ์ ๊ณตํ๋ Netflix SPaaS ํ๋ซํผ ์์ ๊ตฌ์ถ๋์์ต๋๋ค. ์ด ํ๋ซํผ์ Titus ์ปจํ ์ด๋ ๊ด๋ฆฌ ํ๋ซํผ์ ๊ธฐ๋ฐ์ผ๋ก Flink ์์ ๋ฐฐํฌ์ Flink ํด๋ฌ์คํฐ ์กฐ์ ์ ๊ด๋ฆฌํ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ํ ์ด ์ธํฐํ์ด์ค๋ ์์ ๊ตฌ์ฑ์ ๊ด๋ฆฌํ๊ณ ์ฌ์ฉ์๊ฐ Flink ์์ ์ ๋ค์ ์ปดํ์ผํ์ง ์๊ณ ๋ ๋์ ์ผ๋ก ๊ตฌ์ฑ์ ๋ณ๊ฒฝํ ์ ์๋๋ก ํด์ค๋๋ค.
Delta๋ Flink ๋ฐ SPaaS๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์คํธ๋ฆผ ์ฒ๋ฆฌ ํ๋ ์์ํฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ฃผ์ ๊ธฐ๋ฐ ๊ธฐ์ ์ ์ธ๋ถ ์ฌํญ์ ์ถ์ํํ๋ DSL(๋๋ฉ์ธ ํน์ ์ธ์ด)์ ๋๋ค. ์๋ฅผ ๋ค์ด ์ธ๋ถ ์๋น์ค๋ฅผ ํธ์ถํ์ฌ ์ด๋ฒคํธ๊ฐ ๊ฐํ๋๋ ๋จ๊ณ๋ฅผ ์ ์ํ๋ ค๋ฉด ์ฌ์ฉ์๋ ๋ค์ DSL์ ์์ฑํด์ผ ํ๋ฉฐ ํ๋ ์์ํฌ๋ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Flink์์ ์คํ๋๋ ๋ชจ๋ธ์ ์์ฑํฉ๋๋ค.
๊ทธ๋ฆผ 3. Delta์ DSL ๊ฐํ ์
์ฒ๋ฆฌ ํ๋ ์์ํฌ๋ ํ์ต ๊ณก์ ์ ์ค์ผ ๋ฟ๋ง ์๋๋ผ ์ค๋ณต ์ ๊ฑฐ, ์คํค๋งํ, ์ ์ฐ์ฑ ๋ฐ ํ๋ ฅ์ฑ๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ ์คํธ๋ฆผ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ์ผ๋ฐ์ ์ธ ์ด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
๋ธํ ์คํธ๋ฆผ ์ฒ๋ฆฌ ํ๋ ์์ํฌ๋ DSL ๋ฐ API ๋ชจ๋๊ณผ ๋ฐํ์ ๋ชจ๋์ด๋ผ๋ ๋ ๊ฐ์ง ํต์ฌ ๋ชจ๋๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. DSL & API ๋ชจ๋์ ์ฌ์ฉ์๊ฐ ์์ฒด ์ฒ๋ฆฌ ๋ก์ง(์: ํํฐ๋ง ๋๋ ๋ณํ)์ ์์ฑํ ์ ์๋๋ก DSL ๋ฐ UDF(์ฌ์ฉ์ ์ ์ ๊ธฐ๋ฅ) API๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ฐํ์ ๋ชจ๋์ DAG ๋ชจ๋ธ์ ์ฒ๋ฆฌ ๋จ๊ณ์ ๋ํ ๋ด๋ถ ํํ์ ๊ตฌ์ถํ๋ DSL ํ์ ๊ตฌํ์ ์ ๊ณตํฉ๋๋ค. ์คํ ๊ตฌ์ฑ์์๋ DAG ๋ชจ๋ธ์ ํด์ํ์ฌ ์ค์ Flink ๋ฌธ์ ์ด๊ธฐํํ๊ณ ๊ถ๊ทน์ ์ผ๋ก Flink ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํฉ๋๋ค. ํ๋ ์์ํฌ์ ์ํคํ ์ฒ๋ ๋ค์ ๊ทธ๋ฆผ์ ์ค๋ช ๋์ด ์์ต๋๋ค.
๊ทธ๋ฆผ 4. ๋ธํ ์คํธ๋ฆผ ์ฒ๋ฆฌ ํ๋ ์์ํฌ ์ํคํ
์ฒ
์ด ์ ๊ทผ ๋ฐฉ์์๋ ๋ค์๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ์ฅ์ ์ด ์์ต๋๋ค.
- ์ฌ์ฉ์๋ Flink ๋๋ SPaaS ๊ตฌ์กฐ์ ์ธ๋ถ ์ฌํญ์ ์กฐ์ฌํ ํ์ ์์ด ๋น์ฆ๋์ค ๋ก์ง์ ์ง์คํ ์ ์์ต๋๋ค.
- ์ต์ ํ๋ ์ฌ์ฉ์์๊ฒ ํฌ๋ช ํ ๋ฐฉ์์ผ๋ก ์ํ๋ ์ ์์ผ๋ฉฐ, ์ฌ์ฉ์ ์ฝ๋(UDF)๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ ์ค๋ฅ๋ฅผ ์์ ํ ์ ์์ต๋๋ค.
- ํ๋ซํผ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ฐ์ฑ๊ณผ ํ๋ ฅ์ฑ์ ์ ๊ณตํ๊ณ ๊ฒฝ๊ณ ์ ์ฌ์ฉํ ์ ์๋ ๋ค์ํ๊ณ ์์ธํ ์งํ๋ฅผ ์์งํ๋ฏ๋ก Delta ์ ํ๋ฆฌ์ผ์ด์ ํ๊ฒฝ์ ์ฌ์ฉ์์๊ฒ ๋จ์ํ๋ฉ๋๋ค.
์์ฐ์ฉ
Delta๋ XNUMX๋ ๋๊ฒ ์ ์๋์ด ์์ผ๋ฉฐ ๋ง์ Netflix Studio ์ ํ๋ฆฌ์ผ์ด์ ์์ ํต์ฌ์ ์ธ ์ญํ ์ ๋ด๋นํ๊ณ ์์ต๋๋ค. ๊ทธ๋ ๋ ํ์ด ๊ฒ์ ์ธ๋ฑ์ฑ, ๋ฐ์ดํฐ ์ ์ฅ, ์ด๋ฒคํธ ๊ธฐ๋ฐ ์ํฌํ๋ก์ ๊ฐ์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๊ตฌํํ๋๋ก ๋์์ต๋๋ค. ๋ค์์ Delta ํ๋ซํผ์ ์์ ์์ค ์ํคํ ์ฒ์ ๋ํ ๊ฐ์์ ๋๋ค.
๊ทธ๋ฆผ 5. Delta์ ์์ ์์ค ์ํคํ
์ฒ
๊ฐ์ฌ์ ๋ง
Netflix์์ Delta์ ์ ์ ๋ฐ ๊ฐ๋ฐ์ ์ฐธ์ฌํ ๋ค์ ๋ถ๋ค๊ป ๊ฐ์ฌ์ ๋ง์์ ์ ํฉ๋๋ค. Allen Wang, Charles Zhao, ์ค์ฌ๋น, Josh Snyder, Kasturi Chatterjee, Mark Cho, Olof Johansson, Piyush Goyal, Prashanth Ramdas, Raghuram Onti Srinivasan, Sandeep Gupta, Steven Wu, Tharanga Gamaethige, Yun Wang ๋ฐ Zhenzhong Xu.
์์ค
dev.mysql.com/doc/refman/5.7/en/implicit-commit.html dev.mysql.com/doc/refman/5.7/en/cannot-roll-back.html - Martin Kleppmann, Alastair R. Beresford, Boerge Svingen: ์จ๋ผ์ธ ์ด๋ฒคํธ ์ฒ๋ฆฌ. ์ปค๋ฎค๋์ผ์ดํฐ ACM 62(5): 43โ49(2019). DOI:
doi.org/10.1145/3312527
์ถ์ฒ : habr.com