데이터 분석가로 일한 엔라이즈에서의 1년

신민용 profile

안녕하세요. 엔라이즈 데이터 분석팀의 신민용입니다. 시간이 참 빠르게 흘러간다고 생각이 되는게 제가 벌써 입사한지 1년이 다 되었습니다… 물론 욕심도 많고 호기심도 많기에 입사해서 지금까지도 정신없이 달려가고 있습니다. 1년 동안 배운 것도 많았으며, 느낀점도 굉장히 많았는데 이러한 생각에 대해서 정리하고 공유하면 좋을 것 같다는 생각을 하던 찰나 좋은 기회가 생겨서 이렇게 글을 쓰게 되었습니다.

배울 것도, 느낄 것도 많았던 엔라이즈 데이터 분석가로써의 1년을 이야기 해 볼까 합니다.

“SQL의 중요성”

“유저의, 유저에 의한, 유저를 위한 실험”

“데이터만 잘 다룰 수 있는 사람은 좋은 분석가일까?"

SQL의 중요성

위의 언어들은 분석가라면 한번쯤은 접했을 언어들입니다. 이 중 SQL 은 주니어 분석가분들께서 그 중요성에 대해 알고 있는 비율이 상당히 적을 것이라 생각합니다. 저 또한 학부 때 SQL에 대해서 배웠으나 실제 비즈니스에서 어떻게 쓰이고, 실 분석에 사용되는 쿼리가 어느정도의 난도를 가지고 있는지에 대해서는 배우지 못했습니다. 데이터 분석가라면 꼭 배워야하는 R, Python, Scala 등등에 대해서는 중요성을 느껴온 반면 정작 SQL의 중요성은 왜 느끼지 못했는지에 대해 스스로 고민을 해 본 결과 크게 다음 이유들을 찾을 수 있었습니다.

  • 학부에서 사용하거나 대회 및 공모전에서 제공하는 데이터는 정형화된 CSV, XLSX 상태로 제공됩니다.
  • 학부 때 예제로 접하게 되는 데이터베이스는 작은 수의 테이블, 심지어 단일화된 테이블인 경우가 대다수여서 JOIN 등의 복잡한 SQL 을 사용할 필요가 없는 환경이 대부분이었습니다.

학부 시절 혹은 다양한 공모전, 대회 등에서 제공되는 데이터는 대부분 CSV, XLSX 형태이기 때문에 SQL 이 전혀 필요치 않습니다. 이러한 환경에서 데이터 분석 경험을 쌓다보니 자연스럽게 SQL에 멀어질 수 밖에 없었으며 실제로 SQL 없이도 데이터를 분석하는데 큰 어려움이 없었습니다. 하지만 분석하고 결과를 도출하는 과정을 빠르게 수행해야하는 실 서비스 환경에서는 파일 형태의 데이터를 분석하는 것이 오히려 비효율적일 것입니다.

여기 SQL의 중요성을 나타낼 수 있는 두 가지 예를 들어 보겠습니다.

  • “개발자에게 요청해서 원하는 조건에 맞는 데이터 CSV를 받는 것”
  • “데이터베이스에 직접 접근하여 필요한 데이터를 쿼리를 통해 추출하는 것”

이 두 가지 예 중에 더 효율적인 것이 무엇인지는 바로 알아채실거라 생각합니다. 특히 첫번째 경우는 개발자에게 데이터 추출 조건을 잘못 전달할 수도 있으며, 무엇보다 개발자의 일정에 종속되어 버리는 문제가 발생할 위험이 존재합니다. 두 번째의 경우는 개발자에 종속됨 없이 단시간에 필요한 데이터를 추출해 분석을 진행할 수 있게됩니다.

다음으로 입사전 SQL에 대해서 배울 때는 SELECT, FROM, WHERE 정도의 기초적인 SQL 구문만 익혔으며 JOIN 및 고급 질의문에 대해서는 자세히 다루지 않았습니다. 또한 데이터베이스가 있어도 내부에 단일 테이블처럼 존재하는 경우가 대부분이여서 단순 추출 용도로만 알고 있었습니다. 그렇기 때문에 SQL로 분석을 한다는 생각은 일체 하지 못했으며, 엔라이즈에 입사하면서 들었던 “R 과 Python 이 아닌, SQL만으로도 데이터 분석이 가능하다” 라는 말을 크게 신뢰하지 않았습니다.

하지만 분석을 진행할수록 SQL문법을 자연스럽게 익히고 활용하다보니 결과에 필요한 지표를 SQL로 바로 추출하여 통계적으로 비교하거나 시각화 분석을 하는게 자연스러워졌습니다. 그러면서 “SQL만으로도 분석이 가능하다” 라는 말에 대한 신뢰가 계속 높아졌습니다. 비정형 데이터를 데이터레이크에 정제하는 작업이나 고급통계 분석 진행 및 각종 모델링 작업을 진행할 때에 한하여 Python 을 사용하며, 대부분의 분석 작업은 SQL 을 이용하고 있습니다. 다음은 Zeppelin 으로 구성한 저희 데이터 분석 챠트의 일부분입니다.

저희 데이터 분석팀은 Redshift 를 이용하여 데이터 분석을 진행합니다. Python, R, SQL 모두를 사용해 본 경험으로 비추어 보았을 때, 데이터를 탐색하고 빠르게 필요한 지표 추출을 할 수 있는 도구로 SQL 만한게 없다고 생각합니다. SQL 도 파고 들다 보면 어려운 문법들도 많고, 아직 알지 못하는 다양한 기능들이 존재하기에 지금도 하나씩 배우고 있습니다.

이처럼 SQL 을 활용할 수 있는 것이 업무 과정의 효율도 대폭 상승시킬 수 있으며, 내가 필요한 데이터를 적시적소에 추출하여 분석할 수 있으니 분석의 가장 기초이면서 동시에 매우 중요한 것이라고 말할 수 있습니다.

사용자의, 사용자에 의한, 사용자를 위한 실험

엔라이즈 내에서 업무를 하다보면 여기가 연구소인가 착각이 들 정도로 많은 실험을 진행하고 있음을 깨닫게 됩니다. 이 실험이 끝나면 다음 실험 또 다음 실험… 도무지 끝을 알 수 없는 실험을 진행하면서 “왜 이렇게 실험을 많이하고 우리는 실험을 통해서 무엇을 얻을 수 있는거지?” 라는 근본적인 질문을 가지게 되었습니다.

먼저 우리는 지속적인 실험을 통해 기능을 만들고, 각종 로직을 수정함으로써 사용자들의 반응이 계속 바뀌는 것을 확인할 수 있습니다. 어찌 보면 너무나도 당연한 말처럼 보일 수 있습니다. 하지만 사용자들의 반응을 데이터로 축적하고, 축적한 데이터를 분석함으로써 사용자들의 반응이 “왜” 다른지를 알 수 있게 되면, 이 실험을 통해 또 다른 가설을 만들어 낼 수 있게 됩니다. 그리고 이는 또 다른 실험을 이끌어 냅니다. 이러한 일련의 과정을 반복함으로써 우리는 지속적으로 실험을 진행하며 인사이트를 얻습니다. 이렇게 우리가 얻은 인사이트들은 사용자 경험을 개선하는데 큰 도움이 됩니다. 결국 사용자의 경험을 더욱 좋게 만들기 위해서는 반복적인 실험을 해야 하며, 이러한 실험을 통해 얻은 인사이트들은 앱 성장에 영향을 미치므로 제품을 성장시키기 위해서는 지속적인 실험이 반드시 필요하다는 것을 깨닫게 되었습니다.

저의 첫 실험을 이야기 해 볼까 합니다. 당시 저는 단순히 상품의 가격을 변경 하였을 때 사용자가 어떻게 반응하는지 실험해보고 싶었던 적이 있었습니다. 이 실험을 진행하려 할 때 무수히 많은 질문을 받았는데요,

“가격을 변경하는 이유가 어떤것인가?”

“가격을 변경했을 때 유저가 어떻게 반응할지에 대한 가설이 있는가?”

“왜” 라는 것에 대해 고민 해보지 않고 무작정 실험을 진행하려 하다보니 저런 질문들에 대해서 명확히 답변할 수가 없었습니다. 실험을 진행할 때 이 실험을 “왜” 해야 하는지에 대해 명확히 깨닫고, 이를 통해 가격 변경을 통한 KPI 및 예상 가설들에 대해 명확히 설정하고 가격을 변경했을 때 유저들의 행동 예측에 대한 데이터를 분석한 후 실험을 진행할 수 있었습니다. 이 실험을 통해 성공적으로 인사이트를 얻을 수 있었음은 물론입니다.

해당 경험을 계기로 실험을 진행할 때는 감으로 하는 것이 아닌, 사전 분석을 통해서 정확히 문제를 정의한 뒤 가설을 수립하고 그 가설을 검증하기 위한 실험을 진행하면서 유저 경험을 높이는 것에 의의가 있다는 것을 알게 되었습니다.

좋은 가설이 좋은 실험을 만들고, 좋은 실험은 좋은 사용자 경험을 만들고, 좋은 사용자 경험은 앱 성장을 만드는 선순환 구조를 기반으로 “사용자의, 사용자에 의한, 사용자를 위한 실험"을 반복합니다. 이와 같은 과정은 좋은 제품을 만드는데 있어서 지속적인 피드백으로 실행하고 있습니다. 이처럼 실험은 사용자를 만족시키고, 앱을 성장시킬 수 있는 주요한 인자로 작용하고 있습니다.

데이터만 잘 다룰 수 있는 사람은 좋은 분석가일까?

데이터 분석가를 채용할 때 공통적으로 등장하는 요구사항이 있습니다.

“Hadoop, Spark, Hive 등의 빅데이터 시스템을 잘 다룰 수 있는 분”

“SQL, Python, R을 통해서 전처리 및 분석 역량이 뛰어나신 분”

“ML, Tensorflow, Keras, Pytorch 등의 프레임워크를 다루면서 예측 모델링을 수행할 수 있는 분”

이러한 공고문을 보면서 느끼는 것은 많은 회사가 데이터 분석가를 채용할 때에 있어 기술적인 부분만을 중점적으로 고려하고 있는 것 같습니다. 저도 물론 엔라이즈에 입사하기 전 분석가로써의 직무를 맡기 위해 기술적인 역량만을 채우는데 급급했으며, 엔라이즈에서 제가 배웠던 기술들과 역량들을 어떻게 하면 활용할 수 있고 적용할 수 있는지에 대해 많은 집중을 하고자 했습니다. 하지만 데이터 분석 업무를 진행하다보니 아무리 결과가 좋은 분석이라고 하더라도 그 내용을 올바르게 전달하지 못하거나 팀원들을 논리적으로 설득하지 못한다면 전혀 도움이 되지 않는 분석을 하게 된 것과 다르지 않음을 깨닫게 되었습니다. 또한 아무리 트렌디한 기술을 이용하여 분석을 하더라도 결국 타당한 내용과 생각을 전달하지 못한다면 그 모든 것들은 수포가 되어버립니다.

사람들은 같은 데이터를 보고도 제각각 다른 결론을 도출합니다(흔히 주관에 편향된다고들 합니다.) 그렇기 때문에 분석가는 같은 결과에 대해서 주관에 편향되지 않고 데이터를 객관적으로 바라보고 결정할 수 있도록 이정표와 같은 역할을 해야합니다. 더불어 흩어져 있는 생각들이 발산되지 않고 하나로 수렴될 수 있도록 하는 것 역시 분석가의 역할이라고 생각 합니다. 만약 객관적인 데이터를 통해 편향된 결과를 도출하게 된다면 데이터의 분석과 관계 없이 다른 결론으로 결정이 날 위험이 있습니다.

이러한 이유들로 실제로 분석 업무를 수행할 때 결과에 대해서 항상 다음과 같은 생각을 합니다.

“내가 도출한 결과는 KPI를 고려했을 때 타당한 결과가 맞는가?"

“숫자 및 지표에 친숙하지 않은 구성원에게 어떻게 설명을 해야 하는가, 또한 결과를 객관적으로 설명하려면 어떻게 해야하는가?"

“분석결과를 공유하기 위해서 준비하지 못한 추가적인 지표가 있는가?"

엔라이즈 데이터 분석팀은 이런 주관적 편향을 최대한 제거하고자 항상 “KPI”, “객관성”, “타당성” 이 세 가지 키워드를 유념하며 분석을 진행합니다. 실제로 이 키워드들만 유념해도 데이터 분석가 겪을 수 있는 확증편향 을 많이 줄일 수 있습니다.

마지막으로 엔라이즈 제품 팀은 기능을 반영할 때 항상 실험을 통해 반영합니다. 그리고 그 결과를 검증하기 위해 축적된 데이터를 이용 합니다. 그리고 분석가는 쌓인 데이터를 이용하여 실험 결과에 대한 분석을 진행하여 분석 결과 도출 및 KPI를 어떤 방식으로 달성했는지를 구성원들이 이해하기 쉽게 설명할 수 있어야 합니다. 따라서 데이터 분석가는 단순히 데이터만 잘 다룰 수 있는지를 넘어서 분석 결과를 잘 전달할 수 있는 역량, 그리고 핵심 의사 결정에 도움이 될 수 있도록 구성원들을 설득할 수 있는 역량을 가지는 것이 매우 중요하다고 생각합니다.

결국 최종 결정에 직접적인 역할을 하는 의사 결정자로써 자신의 분석결과를 보다 객관적, 논리적, 그리고 효율적으로 전달해야 한다는 것을 꼭 알고 있어야 합니다. 이러한 훈련은 경험을 통한 훈련이 최고라고 생각하며 저 또한 지금도 항상 연습하고 있습니다.

마치며

1 년 동안 엔라이즈 데이터 분석가로써 무엇을 배웠고, 어떻게 사고를 변화하고 개선하게 되었는지, 그리고 신입 데이터 분석가로써 가져야할 핵심적인 역량들에 대해서 정리를 해 보았습니다. 저 또한 이 글을 쓰면서 스스로 생각을 정리할 수 있었으며, 배웠던 것들을 되새겨 보는 좋은 계기가 되었습니다. 이 글이 신입 데이터 분석가 분들에게 작게나마 도움이 될 수 있기를 바랍니다. 감사합니다.