[LINE 개발팀 인터뷰 #1] LINE 광고 플랫폼을 담당하는 LINE ADS 팀을 소개합니다

LINE의 개발 팀을 소개하는 인터뷰 시리즈를 시작합니다. 첫 번째 인터뷰에서는 LINE의 광고 플랫폼 개발을 담당하고 있는 최성민 님, 권무근 님, 김영찬 님을 만나보았습니다. 

 

LINE ADS 팀이란?

LINE ADS 팀은 LINE의 광고 플랫폼을 담당하는 팀입니다. 광고에 필요한 모든 컴포넌트를 자체 개발하여 운영하고 있으며, 여러 글로벌 LINE 서비스에서 유입되는 대규모 트래픽을 문제 없이 처리하는 높은 기술력을 보유하고 있습니다.

Q. 안녕하세요. 각자 간단한 자기소개 부탁드립니다.

최성민(이하 성민): 저는 퍼포먼스 광고를 담당하는 DSP(Demand Side Platform)를 개발하고 있는 최성민입니다. 광고 쪽 시장을 모르시는 분들은 제가 어떤 일을 하는 것인지 전혀 감을 못잡을 수도 있으실 텐데요. 실시간으로 발생하는 트래픽에 대해 어떤 광고가 나가는 게 우리의 수익을 최대화할 수 있는지, 어떻게 광고주의 ROI(Return On Investment)를 최대화할 수 있는지, 어떻게 사용자의 경험을 극대화할 수 있는 광고를 내보낼 수 있는지 그때그때 선정해서 광고를 내보내는 일을 맡고 있습니다.

권무근(이하 무근): 저는 광고에 관한 다양한 문제를 ML(Machine Learning)을 통해 풀어내어 플랫폼의 매출과 사용자 경험을 극대화하는 일을 담당하고 있는 권무근입니다. 수많은 데이터를 바탕으로 사용자 행동 패턴 예측 혹은 광고주 집행 효율 최대화 등의 최적화 문제(Optimization Problem)들을 풀고 있습니다.

김영찬(이하 영찬): 저는 LINE ADS의 데이터 파이프라인을 맡고 있는 김영찬입니다. 데이터가 물이라면 수자원공사 같은 일을 맡고 있습니다. 과금을 하고 싶다거나, 장애 대응을 위해 로그와 여러 측정 수치를 수집하고 싶다거나, 또는 매출을 극대화하기 위한 연구에 이용하고 싶다는 등의 여러 요구에 맞게 LINE 내부 여기저기서 생성되는 데이터를 수집하고 정제하여 적재적소에 제공하는 역할을 합니다.

Q. 세 분 모두 광고 쪽 일을 처음하신다고 들었어요. 광고 플랫폼을 개발하려면 아무래도 광고에 대한 도메인 지식이 필요할텐데, 어떻게 공부하셨나요?

성민: 제일 처음에 아무것도 몰랐을 때에는 아무래도 용어 위주로 찾아가면서 많이 공부했던 것 같고요. 그 이후에는 내부적으로 스터디 그룹을 모집해서 광고 도메인에 관한 공부를 했었죠. 지금도 계속 그 스터디 그룹이 진행되고 있는데요. 첫 기수 때는 무근 님이랑 제가 스터디원으로 참여했었고, 다음 기수에서는 스터디 장을 맡아 스터디를 진행하기도 했습니다. 

Q. 한국에서 LINE 메신저를 보면 광고가 보이지는 않는데요. 주로 어디에 광고를 많이 노출하나요?

무근: 네. 사실 한국에서는 광고를 제공하지 않고 있어요. 서비스 같은 경우에는 LINE 메신저 앱 내에서 볼 수 있는 타임라인 광고와 채팅방 상단에 보이는 채팅방 광고, 이 두 개가 주요 광고고요. LINE 일본 사용자는 메신저 내에서 뉴스 탭을 볼 수 있는데 거기에도 광고가 나옵니다. 그 외에도 패밀리 앱인 LINE Wallet, LINE Manga 등에도 저희 광고를 제공하고 있습니다.

Q. 원래 외부 광고 플랫폼을 쓰다가 자체 개발로 넘어갔다고 들었어요. 그 과정에서 굉장히 바빴을 것 같은데 어땠나요?

무근: 저희 자체 광고 플랫폼인 LAP 같은 경우에는 작년 초에 CBT(Closed Beta Test) 단계에서 킥오프를 했고, 공식적으로 완전히 넘어온 것은 올해 초쯤인데요. 그 당시에 플랫폼을 옮겨오면서 전체 트래픽을 저희 쪽으로 확 넘기다 보니 약간, 지금 생각해보면 기우였는데 걱정이 있었어요. 트래픽이 과하게 유입되면 서버가 다운될 수 있다, 대응하기 위해 야근이 필요할지도 모른다고요. 그런데… 자랑도 좀 섞여 있지만, (웃음) 함께 일하는 분들의 개발 능력이 워낙 출중하셔서 저희 팀 같은 경우는 모든 트래픽이 넘어오는데 아무런 장애도 느끼지 못했고, 자고 일어나니까 모든 것이 끝나 있었습니다.

성민: 팀원 분들이 미리 모든 경우의 수를 다 대비해서 준비를 해놓은 상태였습니다. 올해 1월, 본격적으로 트래픽을 받기 시작했던 시기에 있었던 일인데요. LINE은 연말쯤에 코드 프리징 기간이 있는데 코드 프리징 기간 중에 트래픽을 받기 시작해야 하는 상황이었어요. 그래서 코드 프리징 전에 모든 준비를 끝내놓아야 했기 때문에 그 전에 평소보다 좀 더 바쁘게 일했던 것 같아요.

 

어떤 기술 스택을 사용하고 있나요?

Q. 지금 사용 중인 기술 스택은 무엇인가요? 알려주시면 LINE ADS 팀에 관심있는 분들께 도움이 될 것 같습니다.

영찬: 저희는 아무래도 데이터 다루기의 사실상 표준이라고 할 수 있는 Hadoop이나 Spark를 기반으로 쓰고 있고요. 데이터를 모으는 것뿐만 아니라 보여주기도 해야 하니까 Druid & imply나 Elasticsearch 등도 쓰고 있습니다. 그 이외에도 여러가지 ETL(extract, transform, load) 관련 프로덕트들, 그리고 저희가 직접 데이터를 보여줘야 할 땐 프론트엔드도 종종 다루기 때문에 기술 스택이 넓은 편입니다. 

무근: 저희 팀 같은 경우 개발할 때 주로 사용하는 언어는 Go입니다. 외부에서 들으면 신기할 수도 있는데요. 광고 퍼포먼스, 모델링을 주로 하는 팀에서 Go를 쓴다고 하면 종종 물음표를 띄우시더라고요. 저희가 이전에 신입 채용 홍보를 나갔을 때 머신러닝 관련 이야기를 하다보면 TensorFlow나 Torch에 대해서 많이 물어보셨습니다. 그런데 저희는 머신러닝 프레임워크를 쓰지 않고 저희가 직접 Go로 실제 사용 가능한 머신러닝 모델을 만들어서 사용하고 있어요. 그런데 당연히 Go만으로는 한계가 있잖아요. 저희 같은 경우는 쌓이는 데이터가 어마어마하다 보니까요. 그럴 때는 이제 Go가 아니라 Spark나 Hive 같은 것들도 이용해요. 

Q. 왜 그렇게 선택해서 쓰고 있나요? 아까 말씀하신대로 머신러닝 프레임워크를 사용하는 게 일반적일 텐데요.

무근: 저희 같은 경우에는 모델이 모델로만 존재할 수 없고 실제 서비스에 접목되어야 하는데요. 즉, DSP에 저희 모델이 들어가야 합니다. 예를 들어 DSP에서 SLA(Service-level agreement)를 요청(request) 레이턴시 100ms와 같은 식으로 정해 놓았는데, 그에 맞춰 외부 프레임워크에 넣으려면 맞추기가 빠듯하기도 했습니다. 그리고 아무래도 같이 개발할 때는 서로 언어가 동일해야 유지보수하기 편하잖아요. 이쪽 코드를 제가 볼 수 있고, 저쪽 코드도 볼 수 있고요. 만약 외부 프레임워크를 쓰게 되면 코드를 보는 게 어렵겠죠. 결론을 말하자면 1차적으로는 레이턴시를 맞추려고 했던 게 가장 컸고, 그 다음으로는 코드 일관성을 지키려는 목적이 컸습니다.

성민: 여기에 조금 덧붙이자면, 처음에는 모델 만드는 일과 서비스 코드 만드는 일을 한 팀에서 진행했어요. Go lang을 선택했던 이유는 처음에 프로젝트를 시작하기 전에 ‘우리 프로젝트를 위해 어떤 언어가 가장 적합할 것인가’에 대한 회의가 있었습니다. 첫 번째로 광고 쪽에서 엄격하게 지키고 있는 레이턴시 기준을 맞춰야 하는 이슈가 있었고요. 두 번째로는 여러 모델 파일, 광고 파일을 인스턴스 내 메모리 캐시를 많이 점유해서 사용해야 하는 이슈가 있었습니다. 이런 이슈와 관련해 GC 성능을 언어별로 테스트해 봤을 때 Go lang이 우리가 원하는 성능을 보여준다는 결론을 얻었습니다. 그래서 그때부터 Go lang을 모르던 사람들이 공부해 가면서 프로젝트를 시작하게 되었습니다.

Q. 그러면 당연히 채용 공고도 Go와 관련된 내용이 적혀있겠네요?

성민: 네. 채용 공고에도 ‘Go lang 우대’라고 적혀 있긴 한데요. 사실 저희 팀에 오시기 전부터 Go lang을 하셨던 분은 없고, 오셔서 새로 공부하는 경우가 많았어요. 또 Go lang이 워낙 문법이 간단하고 배우기 쉬운 언어여서 금방금방 적응하시는 것 같더라구요.

Q. 데이터 파이프라인은 어떻게 보면 거의 유일하게 Java를 주 언어로 사용하시겠네요.

영찬: 네. Java를 쓸 수 밖에 없는 환경입니다. 아무래도 Hadoop이 Java로 되어있으니까요. 그래도 Go lang의 성능 좋은 GC(Garbage Collector)와 같은 장점을 차용하기 위해서, 비즈니스 로직이 없거나 간단한 프로그램 같은 경우에는 저희도 Go lang을 사용해 보려고 시도하고 있습니다.

 

기억나는 에피소드가 있을까요?

Q. 혹시 일하면서 겪은 재미있는 에피소드가 있나요? 

무근: 저희 팀원 분들께서는 제가 처음 광고 쪽 일을 시작했을 때와 많이 달라졌다고 이야기를 해주시더라고요. 예를 들면, 제가 아무래도 퍼포먼스 팀이다보니 머신러닝 모델링이나 모델 성능에 대한 얘기를 자주하게 되는데요. 예전에는 기술적인 것에 초점을 맞춰서 이야기를 했다면 지금은 이 모델의 성능을 끌어올려서 얼마를 더 벌 수 있는지, 광고주가 원하는 행동을 얼만큼의 사용자가 수행했는지, 이런 식으로 광고와 관련해서 이야기한다고 하시더라고요. 이런 변화를 보면서 ‘광고인으로 무럭무럭 성장하고 있다’고 말씀해 주셨어요. (웃음) 

성민: 재미있는지는 잘 모르겠지만… DSP 같은 경우는 잠깐이라도 장애가 나면 매출 손실이 많이 발생할 수 있는 플랫폼이거든요. 그래서 밖에 어디 놀러가더라도 괜히 노트북을 챙겨다니는 것 같고, 알람 메시지를 다방면으로 걸어 놓는 것 같아요. 근데 그런 노력에 비해서 밖에 있을 때 장애가 발생했던 경험은 별로 없네요.

Q. 그럼 보통 사무실 안에 있을 때 장애가 발생했나요?

성민: 배포할 때 장애가 가끔…

영찬: 서버들도 고맙게 오후 6시 이럴 때 다운되니까… 새벽에는 안그러더라고요. 그래서 괜찮았어요.

(다들 머쓱한 미소…)

 

이런 분과 LINE에서 함께 일하고 싶습니다!

Q. 어떤 팀원을 찾고 있나요?

성민: 개발을 잘하시는 분은 당연히 좋고요. 더불어서 이야기를 많이 할 수 있는 분이면 좋을 것 같아요. 개발 이야기든 아니든, 대화를 많이 하면서 서로에게 긍정적인 영향을 줄 수 있는 분이 들어오셨으면 좋겠다고 생각합니다.

영찬: 확실히 파이프라인이다 보니까 정말 여기저기 연결되어 있거든요. 생각지도 못한 데에 연결되어 있어서 주간 회의를 하다 보면 같은 팀이 맞나 싶을 정도로 팀원들 각자 소통하는 부서가 많아요. 그래서 자기 도메인도 잘하면 좋지만, 여러 도메인에 걸쳐있는 지식을 기반으로 다른 팀과 커뮤니케이션할 때 자신 있게 잘 소통할 수 있는 분들이 오시면 좋지 않을까 생각합니다.

무근: 저희 팀 같은 경우는… 다른 곳에서는 이미지 분류기 모델을 만들어서 정확도가 80%에서 81%가 되었을 때 얼마나 파장이 있는지 잘 모를 수 있거든요. 그런데 저희 팀 같은 경우는 모델을 만들어서 서비스에 넣어보면 바로 매출이 달라지거든요. 1억 벌다가 1억 5천을 벌 수도 있어요. 이렇게 내가 만든 모델이 돈을 얼마나 잘 불리고 이 효과가 실제 경제랑 어떻게 연결되는지에 대한 호기심과 관심이 많은 분이라면 빠르게 적응할 수 있을 거라고 생각합니다.

Q. 세 분 모두 입사한 지 얼마 되지 않은 주니어이신데 일하면서 LINE은 어떤 곳이라고 느끼셨나요? 

성민: CTO인 의빈 님이 처음 신입 개발자들 오리엔테이션에서 말씀하셨던 얘기가 딱 맞는 것 같아요. 노력만 하면 누구보다 빠르게 성장할 수 있는 환경을 가지고 있다는 얘기였는데요. 그건 정말 확실히 보장되는 것 같아요. 주니어 레벨에서 겪기 힘든 일들도 많이 해볼 수 있기 때문에 정말 빠르게 성장할 수 있다는 생각이 들고요. 그렇게 하기 위한 복지나 자원이 굉장히 잘 준비되어 있는 것 같아요. 개발 장비나 서버 자원 등도 잘 구비되어 있고, 여러모로 제대로 지원받고 있다는 생각이 듭니다.

영찬: 아무래도 주니어는 혼자 하는 것에 한계가 있어서 시니어의 도움을 받아야 하는데요. Kafka와 같은 프로덕트의 경우도 옆 팀에 누가 거기 기여했다더라, 그 분한테 물어보면 잘 안다더라, 이런 분들이 많이 계십니다. 이렇게 물어볼 사람이 많다는 점도 성장할 수 있는 좋은 기회가 되는 것 같습니다.

무근: 제가 개인적으로 몇 달동안 만족하고 있는 게, 개발 장비로 iMac을 받았거든요. 화질이 진짜 너무 좋더라고요. 저는 Vim으로 개발하는데 Vim이 보통 기본 테마가 새까맣잖아요. 같은 까만 화면을 보는데도 ‘이것이 바로 트루 블랙이다. 이게 바로 4K다.’싶더라고요. (일동 웃음) 그러면서 개발에 집중할 수 있었어요.

Q. 그러면 개발 장비를 두 개 쓰시는 건가요?

무근: 네. 저는 MacBook 한 개랑 iMac 한 개 쓰고 있어요.

Q. 마지막으로 하고 싶은 말씀이 있다면?

성민: 광고 소개할 때 항상 하는 말인데요. 광고 쪽은 어떻게 보면 IT 회사의 돈줄이라고도 볼 수 있습니다. 그래서 지원도 꽤 많이 받기도 하고, 그만큼 기술을 선도해 나가는 팀이라고도 생각합니다. 예전에 무근 님 팀 중에 어떤 분이 하신 말씀이 기억에 남네요. 최근에 보면 머신러닝이 굉장히 핫한 키워드인데요. 머신러닝을 이용해서 뭔가를 하는 곳이 많은데 그중에서 그걸로 실제로 돈까지 벌고 있는 우리 팀이 짱이다!라고 하셨습니다.

영찬: 덧붙여서 데이터 다루는 입장에서도 ‘우리가 이렇게 열심히 데이터를 쌓아 놨는데 도대체 어디에 쓸 수 있는 거지?’ 이런 생각이 들면 정말 하기 싫을 수 있거든요. 그런데 바로 옆 무근 님 팀에서 데이터를 가공하고 모델링해서 돈으로 만들어 와요. 그런 아웃풋이 바로 내 눈 앞에 보이거든요. 데이터를 저장하고 제공하는 입장에서도 ‘내가 하는 일이 헛되지 않았구나’라고 생각할 수 있어서 좋습니다.

무근: 네. 앞으로도 잘 부탁드리겠습니다. (하하)

 

함께 일해요!

LINE ADS 팀에서 함께 일할 분들을 모시고 있습니다. 관심 있는 분들의 많은 지원 바랍니다 😊