๐ [๋ฐ์ดํฐ๋ ์ด๋ป๊ฒ ์ฐ๋ฒ์ ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑํ๋๊ฐ?] ๐ฌ Introduction ๋ฐ์ดํฐ๋ ์ฐ๋ฆฌ์ ํ๋ก๋ํธ์์ ์์ฃผ ์ค์ํฉ๋๋ค. ๋ฐ์ดํฐ ๋ถ์์ ์ฌ๋๋ค์ด ์ฐ๋ฆฌ์ ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ฉด์ ๋ง์ฐฐ์ด ์ ๋
๐ [๋ฐ์ดํฐ๋ ์ด๋ป๊ฒ ์ฐ๋ฒ์ ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑํ๋๊ฐ?] ๐ฌ Introduction ๋ฐ์ดํฐ๋ ์ฐ๋ฆฌ์ ํ๋ก๋ํธ์์ ์์ฃผ ์ค์ํฉ๋๋ค. ๋ฐ์ดํฐ ๋ถ์์ ์ฌ๋๋ค์ด ์ฐ๋ฆฌ์ ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ฉด์ ๋ง์ฐฐ์ด ์ ๋๋ก(frictionless), ์ฆ ์๋น์ค๋ฅผ ๋ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋๋ก ํฉ๋๋ค. ์ด๋ ์ฐ๋ฆฌ์ ์์ง๋์ด, ํ๋ก๋ํธ ๋งค๋์ , ๋ฐ์ดํฐ ๋ถ์๊ฐ, ๋ฐ์ดํฐ ์ฌ์ด์ธํฐ์คํธ๋ค์ด ์ ๋ณด ๊ธฐ๋ฐ์ ์์ฌ๊ฒฐ์ ์ ํ ์ ์๋๋ก ํฉ๋๋ค. ๋ฐ์ดํฐ ๋ถ์์ ์ํฅ์ ์ฐ๋ฒ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ ํ๋ฉด์์ ์ฐพ์๋ณผ ์ ์์ต๋๋ค. ํ ํ๋ฉด์ ๋ฌด์์ ๋ณด์ฌ์ค์ง, ์ด๋ค ์ํ์ ๋ณด์ฌ์ค์ง, ์ด๋ค ๋ฉ์ธ์ง๋ฅผ ์ ์ ์๊ฒ ๋ ธ์ถํ ์ง, ์ ์ ๋ค์ด ์ ์ฐจ๋์ ์ด์ฉํ๊ฑฐ๋ ํ์๊ฐ์ ์ ํ๋ ๋ฑ์ ์ก์ ์ค์ ์ค๋จ์ ํ๋์ง ๋ฑ๋ฑโฆ ์์ฒญ๋๊ฒ ๋ง์ ์ ์ ์ ์๋ง์ ํผ์ณ๋ค์ ๋ฐํ์ผ๋ก ๋ชจ๋ ์ง์ญ์ ์ง์ํ๋ ๊ฒ์ ๋ณต์กํ ๋ฌธ์ ์ ๋๋ค. ๊ฒ๋ค๊ฐ ์ฐ๋ฆฌ์ ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ณ์ํด์ ์๋ก์ด ํ๋ก๋ํธ๋ก ํ์ฅํด๋๊ฐ๊ณ ์๊ณ , ๊ธฐ์ ์ ์๋ ๊ธฐ์ ๋ค์ ์ด๋ฅผ ๋ฐ์ ์ํค๊ณ ์ง์ํ ํ์๊ฐ ์์ต๋๋ค. ๋ฐ์ดํฐ๋ ์ด๋ฐ ๊ฒ๋ค์ ๊ฐ๋ฅํ๊ฒ ํ๋ ์ค์ํ ๋๊ตฌ์ ๋๋ค. ์ด ๊ธ์์๋ ํนํ Rider Data์ ์ง์คํด๋ณด๊ณ ์ ํฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ด๋ป๊ฒ ๋ฐ์ดํฐ๋ฅผ ์์งํ๊ณ , ์ฒ๋ฆฌํ๋ฉฐ, ๋ผ์ด๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ด๋ค ๋ณํ๋ค์ ๊ฐ์ ธ์ค๋์ง๋ฅผ ์๊ฐํ๊ณ ์ ํฉ๋๋ค. ๐ฌ Rider Data Rider Data๋ Uber Rider APP๊ณผ Rider ์ฌ์ด์ ๋ชจ๋ ์ํธ์์ฉ๋ค์ ํฌํจํฉ๋๋ค. ์ด๋ ๋งค์ผ Uber์ ์จ๋ผ์ธ ์์คํ ์์ ๋ฐ์ํ๋ ๋ช ๋ฐฑ๋ง๊ฐ์ ์ด๋ฒคํธ๋ค์ ๋ํ ๊ฒ์ธ๋ฐ, Rider APP์ ํ์ฉํ๊ธฐ ์ํด ๋ช ๋ฐฑ๊ฐ์ Apache Hive ํ ์ด๋ธ๋ก ์ ์ฅ๋๊ณ ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ๋ฐ์ดํฐ ๋ถ์์ ํตํด ํ๊ณ ์ ํ๋ ์ฃผ์ ๋ฌธ์ ๋ก๋, ์ ์ ๋ ์ ์ ์ Action์ ์ด๋์ด๋ด๊ฑฐ๋, ์ ์ ์ ์ ์ ์ฆ๊ฐ์ํค๊ฑฐ๋, ๊ฐ์ธํ, ์ ์ ์ปค๋ฎค๋์ผ์ด์ ๋ฑ์ด ์์ต๋๋ค. ๐ฌ Online Data Collection [1] Mobile Event Logging Rider Data๋ ์ฌ๋ฌ ๊ฐ์ง ์์ค๋ฅผ ๊ฐ์ง๊ณ ์์ง๋ง, ๋ฉ์ธ์ ์ ์ ๊ฐ APP๊ณผ ์ด๋ป๊ฒ ์ํธ์์ฉํ๋๊ฐ๋ฅผ ์บ์นํ๋ ๊ฒ์ ๋๋ค. ์ ์ ์ํธ์์ฉ์ ๋ชจ๋ฐ์ผ์ Event Logging์ ๋ฐ๋ผ ๊ธฐ๋ก๋ฉ๋๋ค. Logging Architecture๋ ๋ช ๊ฐ์ง ์์น์ ๋ฐํ์ผ๋ก ์ค๊ณ๋ฉ๋๋ค. - Standardization of logs (๋ก๊ทธ์ ํ์คํ) - Consistency across platforms (iOS, Android, Web) (ํ๋ซํผ ๊ฐ์ ์ผ๊ด์ฑ) - Respecting user privacy settings (๊ฐ์ธ์ ๋ณด๋ณดํธ) - Optimizing network usage (๋คํธ์ํฌ ์ต์ ํ) - Reliable without degrading the user experience (์ ์ ์ ๊ฒฝํ์ ํด์น์ง ์์) [2] Standardizing Logs ์ ๋ฐฑ๋ช ์ ์์ง๋์ด๋ค์ด ๋ก๊ทธ๋ฅผ ์์ฑํ๊ณ ์์ ํ๋๋ฐ์ ๊ด์ฌํ๊ณ ์๊ธฐ ๋๋ฌธ์, ํ์คํ๋ ๋ก๊ทธ ์ฒ๋ฆฌ ๋ฐฉ์์ ๊ตฌ์ถํ๊ณ ์ด๋ฅผ ๋ฐ๋ฅด๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ํด๋ผ์ด์ธํธ์์ ๊ธฐ๋ก๋๋ ๋ก๊ทธ๋ค์ ์๋ํ(์ ์ ๊ฐ UI์ ์ํธ์์ฉํ๊ฑฐ๋, ๊ด๊ณ ์ ๋ ธ์ถ๋๊ฑฐ๋ ํ๋ ๋ฑ์ ์ด๋ฏธ ์ ์๋ ์ด๋ฒคํธ๋ค์ ๊ฒฝ์ฐ)๋๊ฑฐ๋, ๊ฐ๋ฐ์๋ค์ ์ํด ์๋์ ์ผ๋ก ์ถ๊ฐ๋๊ธฐ๋ ํฉ๋๋ค. ๋ฉํ๋ฐ์ดํฐ์ ๊ธฐ๋ณธ์ ์ผ๋ฐ์ ์ธ ํ์ด๋ก๋๋ก ๊ท์ ๋ฉ๋๋ค. ์ด๋ ์์น, ์ฑ ๋ฒ์ , ๊ธฐ๊ธฐ, ํ๋ฉด๋ช ๋ฑ๊ณผ ๊ฐ์ ๋ชจ๋ ์ด๋ฒคํธ๋ง๋ค ์ ์ก๋๋ ๋ฐ์ดํฐ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ด๋ ๋ฐฑ์๋์์ ์งํ๋ฅผ ๊ตฌ์ฑํ๋๋ฐ์ ์์ด ์์ฃผ ์ค์ํฉ๋๋ค. ๊ฒ๋ค๊ฐ, ํ๋ซํผ์ ์๊ด์์ด ์ด๋ฒคํธ๋ค์ด ์ผ๊ด์ฑ์ ๊ฐ๊ณ , ํ์คํ๋ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ธฐ ์ํด์ ์ฐ๋ฆฌ๋ ์ด๋ฒคํธ ๋ชจ๋ธ๋ค์ด ๊ฐ์์ ํ์ด๋ก๋๋ฅผ ์ ์ํ๋๋ก ํ๋ ์ ์ฝ์ ์ธ ๊ตฌ์กฐ๋ฅผ ์ ์ํ์ต๋๋ค. ์คํค๋ง๋ ๊ฐ ํ๋ซํผ์ ๋ฐ๋ผ ๋ค๋ฅธ Event ID๋ฅผ ๊ฐ๋ ์ด๊ฑฐ ์๋ฃํ(์๋ก ์ฐ๊ด๋ ์์๋ค์ ์งํฉ)์ ๋ง๋ค๊ณ , ์ด๋ฒคํธ์ ๋ฐ์์ ๋ฐ๋ฅธ ๋ฑ๋ก ์์ ์ ํ์ํ ํ์ด๋ก๋ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๊ณ , ์ด๋ฒคํธ ํ์ ์ ์ ์ํฉ๋๋ค. [3] Publishing Logs ์ด ๋ก๊ทธ๋ค์ ํตํฉ๋ ์์ง์ฒด๊ณ๋ก ์์ง๋๋๋ฐ, ์ด๋ ํด๋ผ์ด์ธํธ์์ ๋ง๋ค์ด์ง๋ ๋ชจ๋ ๋ฉ์ธ์ง๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ํ๋ ์์ํฌ์ ๋๋ค. ์ด ํตํฉ๋ ์์ง์ฒด๊ณ๋ ๋ฉ์ธ์ง๋ฅผ ํ๋์ ํ์ ์ ์ฅํ๊ณ , ๋ชจ์์, ๋ช ์ด์ ํ๋ฒ์ฉ ์ผ๊ด์ ์ธ ์์์ ๋ฐ๋ผ ๋ฐฑ์๋์ ์ด๋ฒคํธ ํ๋ก์ธ์๋ก ์ ์กํฉ๋๋ค. ์ด๋ฒคํธ๋ค์ ๊ณ์ํด์ ๊ท๋ชจ๊ฐ ์ปค์ง๊ฑฐ๋ ๋ณํ๋ฅผ ๋ฐ๋ณตํฉ๋๋ค. ์ค๋๋ ์ ๋ฐฑ๊ฐ์ง ํํ์ ์ด๋ฒคํธ๋ค์ด ์ฒ๋ฆฌ๋๊ณ ์์ต๋๋ค. ๋น ๋ฅธ ์ฑ์ฅ์ ๋ ๋ค๋ฅธ ๋ฌธ์ ๋ ๋ค๋ฅธ OS ์ฌ์ด์์ ๋ก๊ทธ๋ฅผ ๋ง์ถฐ๋๊ฐ๊ณ ํ์ ์์ค์ ์ ํธ ์ก์๋น๋ฅผ ์ ์งํด๋๊ฐ๋ ๊ฒ์ ๋๋ค. ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก, ์ด๋ฒคํธ๋ฅผ ์์ ํ๋ Event Processor๋ ์ด๊ฒ์ด ์ด๋ป๊ฒ ์ฒ๋ฆฌ๋๊ณ ์ ํ๋์ด์ผ ํ๋์ง๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. Event Processor๋ ๋ ์ด๋ฒคํธ๋ฅผ ๊ณ์ํด์ ๊ณต๊ธํ๊ณ , ๋ฉํ๋ฐ์ดํฐ์ ๋งคํ์ด ์ฌ์ฉ๋ถ๊ฐ๋ฅํ์ง ์๋ ํ ์ด๋ฒคํธ๋ฅผ ํ๋ถ๊ตฌ์กฐ๋ก ์ ํํ์ง ์์ต๋๋ค. ์ด๋ ์ ํธ ์ก์๋น๋ฅผ ํฅ์์ํค๊ธฐ ์ํ ๋ ธ๋ ฅ์ด๊ธฐ๋ ํฉ๋๋ค. [4] Backend Event Logging ์ ์ ์ํธ์์ฉ๊ณผ ํจ๊ป, ์ ์ ๋ค์๊ฒ ๋ฌด์์ ๋ณด์ฌ์ค์ง๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ๋ ์ค์ํฉ๋๋ค. ์ด๋ ๋ฐฑ์๋์ Service Layer๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ Loggingํ๋ ๊ฒ์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ค. ๋ฐฑ์๋์ Logging์ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์์ ๋ค๋ฃฐ ์ ์๊ฑฐ๋ ๋ค๋ฃจ๊ธฐ์๋ ๋๋ฌด ํฐ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. ๋ค๋ฅธ ์์คํ ์ด๋ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์์ ๋ฐฑ์๋๋ก์ ์์ฒญ์ด ์ด๋ฃจ์ด์ง ๋ ๋ง๋ค, ๋ก๊ทธ ๋ฐ์ดํฐ๊ฐ ์์ ๋๋ค. ๋งค ๋ ์ฝ๋๋ค์ ํ๋์ ๋ชจ๋ฐ์ผ ์ํธ์์ฉ์ผ๋ก ๋ฌถ์ด๋ Key๋ฅผ ๊ฐ์ต๋๋ค. ์ด๋ฌํ ๊ตฌ์กฐ๋ ๋ชจ๋ฐ์ผ ๋์ญํญ์ด ํจ์จ์ ์ผ๋ก ์ฌ์ฉ๋ ์ ์๋๋ก ํฉ๋๋ค. ๋ ์์ธํ ๋ด์ฉ์ ๋ณธ๋ฌธ์์ ํ์ธํด๋ณด์ธ์!