뉴스레터 구독자 여러분 안녕하세요! 디지털정보처 데이터Hub팀 이수강 입니다.


 이번 호에서는 데이터Hub팀에서 서비스했던 AI선배의 내부 데이터 파이프라인을 소개하려합니다. 2번의 베타서비스 오픈, 리뉴얼 후 정식 오픈한 AI선배는 어떻게 작동할까요? 그 작동의 원리를 이해하기 위해 AI선배 내부에서 동작하는 "데이터 파이프라인"에 대해 한번 알아볼까요?


 구독자 여러분들은 ETL이라는 단어를 들어보셨나요? 우리 뉴스레터에서도 몇번 등장한 단어인데요, ETL은 추출(Extract), 변환(Transform), 적재(Load)의 줄임말입니다. 하나의 시스템에서 data를 추출하고 data를 변환하여 database에 적재하는 일련의 행위를 이러한 하나의 ETL 스트림이라 하면 "데이터 파이프라인"은 이러한 ETL을 서브셋으로 포함하는 광범위한 용어가 될 수 있겠습니다. 데이터 파이프라인은 하나의 시스템에서 또 다른 시스템으로 데이터를 옮기는 작업이 될 수 있으며, 시스템 내부의 다른 프로세스에 데이터를 전달하는 작업이 될 수 있습니다. 데이터를 그대로 복재하여 가져오는 경우도 있고 그렇지 않을 경우도 있으며 실시간성으로 처리하는 경우도 있고 배치성으로 처리할 수도 있습니다. 


 데이터Hub팀은 AI선배 서비스를 구축하기위해 여러가지 활용가능한 데이터 후보군을 탐색하였습니다. 그 데이터 후보군에서 데이터를 선택적으로 추출하여 변환하고 데이터허브에 적재한 후 (1)추천모델 제작을 위한 분석 데이터로, (2)제작된 추천모델의 학습을 위한 학습데이터로, (3)추천모델의 성능검증을 위한 검증데이터로, (4)최종적으로는 추천결과와 Join하여 시각화를 위한 데이터로 활용하였습니다.




 위 그림은 AI선배에 사용되는 데이터의 전처리작업, 추천모델 학습과 검증작업, 기타 시각화작업을 수행하는 파이프라인을 나타낸 것인데요, 현재 AI선배는 하나의 프로세스가 시작되면 각 모듈간의 선행작업 또는 의존성을 고려하여 설계해둔 데이터파이프라인을 따라 추천결과와 시각화데이터가 출력되게끔 구축이 완료된 상태입니다.

한두개의 모듈로 구성된 데이터파이프라인의 경우에는 그 구조가 간단하겠지만, AI선배는 수십개의 모듈로 구성되어있어 하나 혹은 다수의 일관된 흐름으로 설계하고 구축하는것이 쉽지않았습니다.


 데이터Hub팀에서는 파이프라인 설계 및 구축에 Luigi를 활용하기로 하였는데요, Luigi는 Spotify에서 개발한 오픈소스로, 복잡한 데이터 파이프라인을 파이썬으로 배치작업을 만들어 실행할 수 있게 하는데, 여러 모듈간의 종속성을 해결할 수 있으며 워크플로우 관리 및  모니터링 기능을 제공합니다.


 아래는 실제로 교내 마이그레이션 서버에서 동작중인 AI선배 파이프라인 대시보드 시각화 페이지입니다. Luigi를 이용하여 구축한 파이프라인의 내부 모듈의 상태들을 목록으로 확인할 수 있으며 모듈간의 종속성도 확인할 수 있는 그래프 형태의 시각화 페이지도 제공해줍니다.



 이번 호에서는 AI선배에서 추천서비스를 제공하기 위해 사용자에게는 보여지지 않는곳에서 데이터를 어떻게 다루고 결과를 얻어내는지 간단하게 소개해드렸는데요. 여러분들이 다른곳에서 접하는 많은 서비스들 내부에는 규모는 다르겠지만 이와 비슷한 방식으로 데이터 파이프라인이 동작하여 서비스가 될것입니다.


모두들 안전하고 따듯한 설 명절 보내시길 바랍니다. 감사합니다.