๐Ÿ’ป/MLOps

[Pinot] Apache Pinot?

ruhz 2022. 11. 5. 19:10
Apache Pinot์˜ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์š”์•ฝํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.
https://docs.pinot.apache.org/

 

"Apache Pinot์€ ๋น ๋ฅธ ์‘๋‹ต์†๋„๋กœ ๋งŽ์€ ๋ถ„์„์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š”, ์‹ค์‹œ๊ฐ„ ๋ถ„์‚ฐ OLAP ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ"

 

Kafka, Kinesis ๊ฐ™์€ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋“ค์—์„œ ๋‹ค์ด๋ ‰ํŠธ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๊ณ , ์ฆ‰์‹œ ์ฟผ๋ฆฌ ์‹คํ–‰์„ ์œ„ํ•œ ์ด๋ฒคํŠธ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค. ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฟ ์•„๋‹ˆ๋ผ Hadoop, S3, ADLS, GCS์™€ ๊ฐ™์€ ๋ฐฐ์น˜ ๋ฐ์ดํ„ฐ ์†Œ์Šค์—์„œ๋„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

 

์ด ์‹œ์Šคํ…œ์˜ ์ค‘์‹ฌ ๋ถ€์—๋Š”, ๋น ๋ฅธ ์‘๋‹ต ์†๋„๋ฅผ ์œ„ํ•œ ์Šค๋งˆํŠธ ์ธ๋ฑ์‹ฑ, ๋ฐ์ดํ„ฐ ์‚ฌ์ „ ์ง‘๊ณ„ ๊ธฐ๋Šฅ์„ '๊ณ๋“ค์ธ' ์ปฌ๋Ÿผ ์ง€ํ–ฅ ์ €์žฅ์†Œ๊ฐ€ ์žˆ๋‹ค. ์ด ์ ์ด Pinot์„ ์‹ค์‹œ๊ฐ„ ๋ถ„์„ ์ œ๊ณต์— ์™„๋ฒฝํ•œ ๋„๊ตฌ๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค. ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, Pinot์€ ๋‚ด๋ถ€ ๋Œ€์‹œ๋ณด๋“œ, ์ด์ƒ ํƒ์ง€, ์• ๋“œํ˜น ๋ฐ์ดํ„ฐ ํƒ์ƒ‰๊ณผ ๊ฐ™์€ ๋ถ„์„ ๋„๋ฉ”์ธ์˜ ๋‹ค์–‘ํ•œ ์‚ฌ๋ก€์— ์ ํ•ฉํ•˜๋‹ค.

 

Pinot์€ LinkedIn๊ณผ Uber์˜ ์—”์ง€๋‹ˆ์–ด๋“ค์— ์˜ํ•ด ๋งŒ๋“ค์–ด์กŒ๊ณ , ๋ฌดํ•œํžˆ scale-up, scale-out ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„ ๋˜์—ˆ๋‹ค. ๋˜, ํ•ญ์ƒ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์‚ฌ์ด์ฆˆ์™€ ์˜ˆ์ƒ QPS ๊ธฐ์ค€๊ฐ’์— ์˜ํ•ด ์ผ์ •ํ•œ ํผํฌ๋จผ์Šค๋ฅผ ๋ณด์—ฌ์ค€๋‹ค. 

 

 

What is Apache Pinot?

๋”๋ณด๊ธฐ

[๋‚ด์šฉ ์š”์•ฝ]

1. ๋ถ„์„ ์ˆ˜์š”์˜ ๋Œ€์ค‘ํ™”

- ์˜ˆ์ „์—๋Š” ์‚ฌ์žฅ๋‹˜๋งŒ ๋ถ„์„๋œ ๋ณด๊ณ  ์ž๋ฃŒ๋ฅผ ๋ฐ›์•„๋ณด์•˜๋‹ค.
- ๊ธฐ์—… ๋‚ด๋ถ€์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์˜์‚ฌ ๊ฒฐ์ •์„ ํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉฐ ๋งŽ์€ ์ธ์›์ด ๋ถ„์„ ์ž๋ฃŒ๊ฐ€ ํ•„์š”ํ•ด์กŒ๋‹ค.
- ์ด์ œ๋Š” ๋Œ€์ค‘๋“ค์ด ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋ถ„์„ ์ž๋ฃŒ๋ฅผ ์š”๊ตฌํ•˜๊ณ  ์ด์šฉํ•œ๋‹ค.

 

2. User-Facing

- ๊ธฐ์—… ๋‚ด๋ถ€ ๋ ˆ๋ฒจ์—์„œ๋Š” ์ด๋ฏธ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํˆด๋“ค์ด ๋งŽ์ด ์žˆ๋‹ค.(BigQuery, SnowFlake, Presto ๋“ฑ)
- ํ•˜์ง€๋งŒ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๊ฐ€ ๊ธฐ๋Œ€ํ•˜๋Š” ์ •๋„์—๋Š” ๋ฏธ์น˜์ง€ ๋ชปํ•œ๋‹ค. 
- ๋ณด๋‹ค ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๋ฐ์ดํ„ฐ์˜ ๋ถ„์„ ์ž๋ฃŒ๋ฅผ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‚ฌํ•ญ๋“ค์ด ์ถฉ์กฑ๋˜์–ด์•ผ ํ•œ๋‹ค.

"๋™์‹œ(Concurrency)์— ๋“ค์–ด์˜ค๋Š” ์—ฌ๋Ÿฌ ์š”์ฒญ์— ๋Œ€ํ•ด,
 ์ตœ์‹ (Freshness)์˜ ์ •๋ณด๊ฐ€ ๋ฐ˜์˜๋œ ๋ถ„์„ ์ž๋ฃŒ๋ฅผ,
 ๋น ๋ฅด๊ฒŒ(Latency) ์ „๋‹ฌํ•ด์•ผ ํ•œ๋‹ค."

 

3. Apache Pinot

- Pinot์€ ์ด๊ฒƒ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ด๊ฒฐํ–ˆ๋‹ค.

๋™์‹œ์„ฑ -> ๋™์ž‘ ๋ฐฉ๋ฒ•์„ ๋” ๋ด์•ผํ•  ๋“ฏ
์ตœ์‹  -> ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์†Œ์Šค(์ŠคํŠธ๋ฆฌ๋ฐ, ๋ฐฐ์น˜, ๋ฐ์ดํ„ฐ ๋ ˆ์ดํฌ ๋“ฑ)์—์„œ ์ง์ ‘ ๊ฐ€์ ธ์˜จ๋‹ค.
๋น ๋ฅด๊ฒŒ -> ์Šค๋งˆํŠธ ์ธ๋ฑ์‹ฑ, ์‚ฌ์ „ ์ง‘๊ณ„(pre-aggregation) + ์ „๋‹ฌ(SQL Query๋กœ ์ •๋ณด ์ œ๊ณต)

 

Building Latency Sensitive User Facing Analytics via Apache Pinot

๋”๋ณด๊ธฐ

[๋‚ด์šฉ ์š”์•ฝ]

1. Apache Pinot

- ์‹ค์‹œ๊ฐ„ ๋ถ„์„ ์ˆ˜์š” ์ฆ๊ฐ€  ex) LinkedIn ํ”ผ๋“œ๋žญํ‚น, UberEats ์Œ์‹์ ์ฃผ ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€
- LinkedIn, Uber, Teams, Slack, Weibo ๋“ฑ ๋‹ค์–‘ํ•œ ํšŒ์‚ฌ์—์„œ ์ ์šฉ์ค‘
- ์ดˆ๋‹น 100m ์ด์ƒ์˜ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ, Peak QPS 120k์ด์ƒ ms ๋‹จ์œ„์˜ Query Latency

 

2. Pinot์˜ ์•„ํ‚คํ…์ณ

<Pipelines>

- Realtime pipeline์€ Kafka ๋“ฑ๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ์†Œ์Šค์—์„œ ์ง์ ‘ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
- Batch pipeline์€ hdfs, s3์™€ ๊ฐ™์€ raw-data์—์„œ ๋Œ€๋Ÿ‰์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

์ด ๋‘ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ฐ™์€ ํ…Œ์ด๋ธ”์— ๋†“๊ณ  ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ณ  ์ด๊ฒƒ์€ ๊ฝค ํŽธ๋ฆฌํ•˜๋‹ค.
๊ฒฐ๊ตญ User์—๊ฒŒ ์ด๊ฒƒ์ด ํ•˜๋‚˜์˜ ํ†ตํ•ฉ๋œ view๋กœ ์ œ๊ณต๋œ๋‹ค. 

<Controll plane>

- Apache helix๋กœ ํด๋Ÿฌ์Šคํ„ฐ ๋ช…๋ น(ํŒŒํ‹ฐ์…”๋‹, ๋ณต์ œ, ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ, ์ธ์Šคํ„ด์Šค ํ• ๋‹น ๋“ฑ)์„ ์กฐ์ •ํ•œ๋‹ค.
- Controller๊ฐ€ ๋”ฐ๋กœ ์žˆ์–ด์„œ, ์„ฑ๋Šฅ ํ™•์žฅ์„ ์œ„ํ•ด์„œ๋Š” machine๋งŒ ์ถ”๊ฐ€ํ•˜๋ฉด ๋˜๋Š” ํ™•์žฅ์— ์šฉ์ดํ•œ ๊ตฌ์กฐ์ด๋‹ค.

<Data plane>

๋“ค์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , ์ปฌ๋Ÿผ ์ง€ํ–ฅ ํฌ๋งท์œผ๋กœ ์กฐ์งํ™”ํ•ด ์ฟผ๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋„๋ก ๋งŒ๋“ค์–ด ๋†“๋Š”๋‹ค.

 

3. Pinot์˜ ์ฒ˜๋ฆฌ ๊ณผ์ •

(1) kafka ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ fetch ํ•œ๋‹ค
-> "4๊ฐœ์˜ ํŒŒํ‹ฐ์…˜์ด ์žˆ๊ตฌ๋‚˜, 4๊ฐœ์˜ segment๋ฅผ ์ƒ์„ฑํ•ด์•ผ ๊ฒ ๋‹ค"

(2) 4๊ฐœ์˜ segment๋ฅผ 4๊ฐœ์˜ ์„œ๋ฒ„์— ํ• ๋‹นํ•œ๋‹ค.
-> Apache helix๋กœ ํ•ด๋‹น ์ž‘์—…์ด ์ด๋ฃจ์–ด์ง€๋ฉฐ, Zookeeper์— ideal state๋ฅผ ๊ธฐ๋กํ•œ๋‹ค.

(3) ์„œ๋ฒ„๋“ค์€ Kafka์— ์ƒ์‘ํ•˜๋Š” ํŒŒํ‹ฐ์…˜์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ค๊ณ , ๋กœ์ปฌ segment๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

(4) segment๊ฐ€ ์‹œ๊ฐ„์ด ์ง€๋‚˜์„œ ์™„๋ฃŒ๋˜๋ฉด controller๊ฐ€ ๋‹ค์Œ segment๋“ค์„ ์ƒ์„ฑํ•˜๊ณ , ์ด๊ฒƒ์ด ๋ฐ˜๋ณต๋œ๋‹ค.

ํ•˜๋‚˜์”ฉ ๋‚˜๋ˆ ๊ฐ–๋Š” ๊ฒฝ์šฐ๋Š” ๊ฑฐ์˜ ์—†๋‹ค. replication์ด ์ผ์–ด๋‚œ๋‹ค.

<segment>

- raw-data๋Š” segment๋กœ ๋ณ€ํ™˜๋œ๋‹ค.
- segment๋Š” ์ปฌ๋Ÿผ ํ˜•์‹ ํฌ๋งท์œผ๋กœ ๋กœ๋“œํ•  ๋ฐ์ดํ„ฐ๋ฅผ ์ค„์—ฌ์ค€๋‹ค.
- Inverted, Sorted, Star-Tree ๋“ฑ์˜ ๋ฏธ๋ฆฌ ์ง‘๊ณ„๋œ ๋ฐ์ดํ„ฐ๋“ค์„ ํ†ตํ•ด key-value ๊ธ‰ ์กฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. 

 

4. p99th ๋ฌธ์ œ

- p99๋Š” ํ•ด๋‹น ๊ฐ’ ์•„๋ž˜์— ์ „์ฒด ํ‘œ๋ณธ ์ค‘ 99%๊ฐ€ ํ•ด๋‹น๋จ์„ ์˜๋ฏธํ•˜๋Š” ๊ฐ’์ด๋‹ค.
- p50๊ฐ’ ๋Œ€๋น„ p99๊ฐ’์ด ์ง€๋‚˜์น˜๊ฒŒ ๋†’๋‹ค๋ฉด, ์ „์ฒด ์ค‘ ๋ช‡ ๋ช… ๋•Œ๋ฌธ์— ์‹œ๊ฐ„์ด ํ•„์š” ์ด์ƒ์œผ๋กœ ๋งŽ์ด ๊ฑธ๋ฆฐ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.  

<pinot ๋ฐ์ดํ„ฐ ๋ ˆ์ด์•„์›ƒ ์ตœ์ ํ™”>

- query span์„ ์ œํ•œํ•œ๋‹ค.
replica group์„ config๋กœ ์ง€์ • ๊ฐ€๋Šฅํ•˜๋‹ค. replica group์€ ํ…Œ์ด๋ธ”์˜ segement๋“ค์ด ์ „๋ถ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๊ทธ๋ฃน

- ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๋Š” ๊ฒƒ๋“ค์˜ ์ˆ˜๋ฅผ ์ค„์ธ๋‹ค.
์„œ๋ฒ„์™€ ํŒŒํ‹ฐ์…˜์ด ๋งค์นญ๋˜๋Š” ์ƒค๋”ฉํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด, ํ•ด๋‹น ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ์–ด๋Š ์„œ๋ฒ„๋กœ ๊ฐ€์•ผ ์žˆ์„ ์ง€ ๋ฏธ๋ฆฌ ๋ชฉ๋ก์„ ์ถ•์†Œํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

ํŠน์ง•

  • ๋‹ค์–‘ํ•œ ์••์ถ• ๊ธฐ๋Šฅ(run length, fixed bit length)์„ ๊ฐ€์ง„ ์ปฌ๋Ÿผ ์ง€ํ–ฅ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
  • ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ฐ€๋Šฅํ•œ ๋‹ค์–‘ํ•œ ์ธ๋ฑ์‹ฑ(Sorted, Bitmap, Inverted, StarTree, BloomFilter, Range, TextSearch, JSON, Geospatial, ...)
  • ์ฟผ๋ฆฌ์™€ ์„ธ๊ทธ๋จผํŠธ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•œ ์ฟผ๋ฆฌ ๋ฐ ์‹คํ–‰ ์ตœ์ ํ™”
  • ๊ฑฐ์˜ ์‹ค์‹œ๊ฐ„์— ๊ฐ€๊นŒ์šด ์ŠคํŠธ๋ฆผ ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ(Kafka ๋“ฑ)์™€, ๋ฐฐ์น˜ ๋ฐ์ดํ„ฐ(Hadoop, Azure ๋“ฑ) ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
  • select, groupby, orderby, ์ง‘๊ณ„ ํ•จ์ˆ˜ ๋“ฑ SQL ๋ฅ˜์˜ ์–ธ์–ด๋กœ ๋ฐ์ดํ„ฐ ์กฐํšŒ
  • ๋‹ค์ค‘๊ฐ’ ์†์„ฑ ์ง€์›
  • ์ˆ˜ํ‰์  ํ™•์žฅ์„ฑ ๋ฐ fault-tolerant

 

์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผํ• ๊นŒ?

Pinot์€ OLAP ์ฟผ๋ฆฌ๋ฅผ ๋น ๋ฅธ ์‘๋‹ต ์†๋„๋กœ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„ ๋˜์—ˆ๋‹ค. ์ •์  ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋น ๋ฅธ ๋ถ„์„(aggregation) ๋˜๋Š” ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ์ด ํ•„์š”ํ•œ ์ƒํ™ฉ์— ์ ํ•ฉํ•˜๋‹ค.

 

- User-Facing ๋ถ„์„ ์ œ๊ณต
์• ์ดˆ์— Who Viewed Profile, Company Analytics, Talent Insights ์™€ ๊ฐ™์€ user-facing ์„œ๋น„์Šค๋“ค์„ ์œ„ํ•ด ๊ฐœ๋ฐœ๋˜์—ˆ๋‹ค. LinkedIn์—์„œ ์ด๋ฏธ 50๊ฐœ๊ฐ€ ๋„˜๋Š” ์‚ฌ์šฉ์ž ์„œ๋น„์Šค์— ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์œผ๋ฉฐ, ์ดˆ๋‹น ์ˆ˜๋ฐฑ๋งŒ๊ฐœ์˜ ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ์ดˆ๋‹น 10๋งŒ๊ฐœ์˜ ์ฟผ๋ฆฌ๋ฅผ ๋ฐ€๋ฆฌ์„ธ์ปจ๋“œ ์ˆ˜์ค€์˜ ์‘๋‹ต์†๋„๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค.

 

- ๋น„์ฆˆ๋‹ˆ์Šค metric์„ ์œ„ํ•œ ์‹ค์‹œ๊ฐ„ ๋Œ€์‹œ๋ณด๋“œ
slice, dice, drill down, roll up, pivot ๋“ฑ ๋Œ€์šฉ๋Ÿ‰ ๋‹ค ์ฐจ์›์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์ „ํ˜•์ ์ธ ๋ถ„์„์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ์—๋„ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค. Pinot์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ Superset, Tableau, PowerBI ๋“ฑ์˜ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

- Anomaly Detection
๋จธ์‹  ๋Ÿฌ๋‹ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด pinot์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์ด์ƒ ํƒ์ง€๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ThirdEye๊ฐ€ ๊ทธ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

 

 

์ž์ฃผ ๋ฐ›๋Š” ์งˆ๋ฌธ

- Pinot์€ ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค์ธ๊ฐ€์š”, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ธ๊ฐ€์š”?
Pinot์€ ๊ธฐ์กด์˜ ํ‹€์—์„œ ์™„์ „ํžˆ ๋ฒ—์–ด๋‚œ ์ œํ’ˆ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์„ค๋ช…ํ•˜๊ธฐ ์–ด๋ ต๋‹ค.

 

- ๊ธฐ์—…์šฉ BI
๋ฐ์ดํ„ฐ ๋ถ„์„๊ฐ€, ์‚ฌ์ด์–ธํ‹ฐ์ŠคํŠธ๋“ค์—๊ฒŒ, Pinot์˜ BI(Business Intelligence)๋ฅผ ์œ„ํ•œ ํ™•์žฅ ๊ฐ€๋Šฅ์„ฑ์ด ๋งค๋ ฅ์ผ ๊ฒƒ์ด๋‹ค. Pinot์€ ๋น…๋ฐ์ดํ„ฐ ํ”Œ๋žซํผ๋“ค์„ ํ†ตํ•ฉํ•˜๋ฉด์„œ๋„ ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ, ๋ถ„์„๊ณผ ๋ณด๊ณ ๋ฅผ ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด์ค€๋‹ค.

 

- ๊ธฐ์—…์šฉ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ
์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž์—๊ฒŒ, Pinot๋Š” Kafka์™€ ๊ฐ™์€ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ ์†Œ์Šค์— ๋Œ€ํ•˜์—ฌ immutableํ•œ ๋ฐ์ดํ„ฐ์˜ ์ง‘๊ณ„, ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์„ SQL๋กœ ์ฟผ๋ฆฌํ•˜๋Š” ์ ์ด ๋งค๋ ฅ์œผ๋กœ ๋‹ค๊ฐ€์˜ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค. MSA์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ๋ฐ์ดํ„ฐ ์บก์Šํ™”๋Š” ํ•˜๋‚˜์˜ OLTP ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ฝ๊ณ  ์“ฐ๋Š” ๊ฒƒ์—์„œ -> ๊ฐ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๊ฐ๊ฐ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์œผ๋กœ ์™„์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ํฉ์–ด์ ธ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ํ˜ผ์„ ์„ ๊ฒช์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ์„ฑ๋Šฅ์˜ ์ธก๋ฉด์—์„œ๋„, ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋“ค ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ธํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Pinot์€ MSA์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ SQL ๋กœ ์‰ฝ๊ฒŒ ์ฟผ๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

pinot tenants๋Š” ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค ํŒ€์— ์žˆ์–ด์„œ, ์†Œ์œ ๊ถŒ์„ ๊ณต์œ ํ•˜๋Š” ๊ทธ ์–ด๋–ค ๊ฐ€๋Šฅ์„ฑ๋„ ๋ง‰์•„์ค๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ๋ชจ๋ธ์€ ํ•ญ์ƒ ๋ถˆ๋ณ€์˜ ์ƒ์ˆ˜์ž…๋‹ˆ๋‹ค.

 

์ฐธ๊ณ