๐ Lyft์ Streaming Pipeline ํผํฌ๋จผ์ค ๊ฐ์ ํ๊ธฐ
์คํธ๋ฆฌ๋ฐ ํ์ดํ๋ผ์ธ์ ๊ตฌํํ ๋๋ ์ฑ๋ฅ์ด๋ ํ์ฅ์ฑ์ ๋ํ ๊ณ ๋ ค๋ ์ถฉ๋ถํ ๋์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๊ธฐ ์ํด์๋ ์ด๋ ๋ถ๋ถ์์ ๋ณ๋ชฉ์ด ๋ฐ์ํ๊ณ ์๋์ง ์์์ผ ํ๊ณ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ณ๋ชฉ๊ตฌ๊ฐ์ ํด๊ฒฐํด์ผ ํฉ๋๋ค. Lyft์์ ์คํธ๋ฆฌ๋ฐ ํ์ดํ๋ผ์ธ์ ๊ตฌํํ ๋ ์ด๋ป๊ฒ ํ๋กํ์ผ๋ง์ ํด์ ์ฑ๋ฅ์ ์ต์ ํํ ์ ์๋์ง, ๊ทธ๋ฆฌ๊ณ ์ผ๋ฐ์ ์ผ๋ก ์คํธ๋ฆฌ๋ฐ ํ์ดํ๋ผ์ธ์์ ๋ฐ์ํ๋ ์ฑ๋ฅ ๋ฌธ์ ๋ค์ด ์ด๋ค ๊ฒ๋ค์ด ์๋์ง, ํด๊ฒฐํ๋ผ๋ฉด ์ด๋ป๊ฒ ํด์ผํ๋์ง, ์ ์ค๋ช ํด์ค ๊ธ์ด ์์ด์ ๊ณต์ ํฉ๋๋ค. ๐ ํ์ดํ๋ผ์ธ ํ๋กํ์ผ๋ง 1. Memory & CPU profiler. ์์ ์ฝ๋ ํ๋๊ฐ ์ ์ฒด์ ํฐ ๋ณ๋ชฉ์ ๋ง๋ค ์ ์์, ๊ทธ๋ ๊ธฐ์ ํ๋กํ์ผ๋ฌ๋ฅผ ํตํด ์ ์ฒด ํ์ดํ๋ผ์ธ์ ๊ทธ๋ฆผ์ ์ดํดํ ์ ์์. Lyft์์ ๋ Apache Beam๊ณผ ํ์ด์ฌ์ ๋ง์ด ์ฌ์ฉํ๊ธฐ์ ํ์ฌ๋ deprecated๋ Pyflame์ ์ฌ์ฉํ๋ค๊ณ ํจ. 2. Flink Dashboard - ๊ฐ operator์ CPU utilization๋ ๋ชจ๋ํฐ๋งํ ์ ์์ด์, ์ด๋ค ์์ ์ด ์ ์ฌ์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํ ์ ์๋์ง ์ ์ ์์. 3. Flink Metric System - throughput, latency(watermark), JVM ์งํ(Heap ๋ฑ)์ ์ ์ ์์. ๐ ์์ฃผ ๋ฐ์ํ๋ ์ฑ๋ฅ ๋ฌธ์ ๋ค 1. Data skewness (hot shard) 2. Large window size 3. ๋ค๋ฅธ ์ธ๋ถ ์๋น์ค์์ ์ฐ๋ 4. ์ง๋ ฌํ & ์ญ์ง๋ ฌํ ๐ ์ผ๋ฐ์ ์ธ ๊ฐ์ด๋๋ผ์ธ๋ค 1. ์ค๋ณต ์์ ํผํ๊ธฐ 2. ๋ถํ์ํ Shuffling ํผํ๊ธฐ 3. ํ์ด์ฌ ์ฌ์ฉ์ Cython enableํ๊ธฐ 4. ๋ถํ์ํ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ ์์๋จ๊ณ์์ dropํ๊ธฐ 5. Protobuf ์ฌ์ฉํ๊ธฐ 6. Data skewness ํผํ๊ธฐ 7. Checkpoint size๋ ๋น๋ ์กฐ์ ํ๊ธฐ 8. ์์ ์ํ(State) ์ฌ์ด์ฆ 9. Network latency https://eng.lyft.com/gotchas-of-streaming-pipelines-profiling-performance-improvements-301439f46412