중년코딩
605
2019-08-02 07:57:44
1
693

[중년코딩|5-1]Google Sheets와 Amazon Redshit를 (복잡하게) 연결하기


#슬랙 봇과 구글 시트, 앱스 스크립트, 그리고 파이썬을 이용해서 Amazon Redshift에 있는 데이터를 가져오는 과정과, 이 프로세스가 업무 경험을 어떻게 바꿨는지에 대한 기록


안녕하세요. 한 달만에 돌아온 중년 대머리 개발자입니다. 옥상 정원에는 수박이 조그맣게 하나 열렸습니다. 수국도 피었구요. 라벨프린터는 꽤나 잘들 쓰고 있습니다. 여전히 냉장고에는 버리는 음식들이 넘쳐나지만, 그것까진 해결할 수 없죠. 지난 몇 주간 회사에 많은 변화가 있었습니다. 아, 이사도 했군요.

파이썬을 만지기 시작한지 몇 달만에 처음으로 "업무"에 필요한 프로그램을 만들어 봤습니다. 네. 이번 이야기는 재미없는, 일 이야기입니다. 그런데 이 프로그램이 생기면서 회사에 생긴 변화들은 좀 흥미로워서, 읽어 보셔도 좋을 것 같습니다.


목표:

  1. 구글 시트의 수정가능한 SQL 쿼리로 Redshift DB의 데이터를 가져오자
  2. 가져온 데이터를 매일매일 가공할 필요가 없게 만들자

저희는 테크회사입니다(라고 합니다). 테크회사인만큼 개인정보만 빼고 사업과 관련된 모든 정보를 데이터베이스화해서 모든 직원들에게 공개합니다. Tableau도 쓰고 있습니다. 그런데 의외로 이런 데이터들을 제대로 쓰는 사람들은 드물었습니다.

사람들은 SQL에 익숙하지 않습니다. DB에 다 올려져 있는 자료이지만 개발자에게 "AA,BB,CC가 들어간 데이터를 뽑아주세요."라고 얘기하는 게 더 편합니다. 그래서 자주 쓰는 쿼리들은 개발자분들이 슬랙봇으로 만들어 주셨습니다. 그랬더니 저기에 DD라는 필드가 필요하면 슬랙봇을 고쳐달라고 합니다. 개발자분들의 일이 줄지 않습니다.

그나마 SQL공부를 좀 해서 쿼리를 쓰시는 분들도 편하지는 않습니다. 데이터베이스 프로그램에 들어가서 쿼리를 돌리고 결과값을 csv로 export하고 그걸 엑셀로 열어서 기존 엑셀 파일에 복사해서 붙여넣기하고, 전에 있던 함수를 컬럼마다 다시 다 연결해 줍니다. 날짜값이 2017-01-01이 아니라 20170101 형태로 되어 있으면 이걸 날짜형식으로 바꾸느라 데이터나누기를 컬럼마다 또 합니다. 복사+붙여넣기를 하다가 아차! 틀렸네? 를 반복합니다.... 게다가 다른 팀에서 이미 쓰고 있는 쿼리인데 그걸 처음부터 짜느라 며칠을 끙끙대기도 합니다(결과도 틀립니다).

두 가지가 문제였던 거죠. 데이터를 뽑는 방식, 뽑은 데이터를 가공하는 도구.

마이리얼트립의 "데이터가 흐르는 조직 만들기(https://medium.com/myrealtrip-product/데이터가-흐르는-조직-만들기-5563c5fa50fb)"라는 글은 고민하던 저희에게 좋은 방향을 제시해 주었습니다.

  • 데이터 분석가들이 단순 데이터 추출업무에 많은 시간을 빼앗기면서, 깊이 있게 데이터를 들여다보고 분석할 수 있는 시간이 줄어듭니다. 물론 반복적으로 찾아보는 데이터들을 대시보드 형태로 만들어서 공유하는 등 다른 방법이 있긴 하지만, 제 경험상 대시보드를 만든다고 해서 그때그때 필요한 일회성 데이터 추출 요청 건들이 줄어들지는 않더군요.
  • 특히, 단 한 번의 요청으로 추출 목적에 딱 맞는 잘 정리된 데이터를 뽑아내는 건 거의 불가능합니다. 실제로 쓸만한 인사이트나 아이디어는 여러 가지 데이터를 다양한 각도에서 살펴보면서 수없이 반복되는 질문과 답 속에서 찾아지는 경우가 많습니다. 하지만 요청하는 사람과 추출하는 사람이 다른 경우, 이러한 질문 > 데이터의 반복되는 iteration을 충분히 진행하기 어렵습니다. 요청하는 사람은 미안해지고, 추출하는 사람은 귀찮아져서 적당한 선에서 타협을 하게 됩니다.
  • 데이터 분석은 ‘좋은 질문’에서 시작하는데, 일반적으로 좋은 질문을 할 수 있는 사람은 서비스와 사용자의 접점에서 일하면서 도메인 지식을 쌓아 온 사람들입니다. (데이터분석가에게 도메인 지식이 필요한 이유…) 이 부분을 충분히 고민하지 않으면, 분석 조직에서 나름대로 열심히 분석해 낸 결과물은 “…이런 거 해봤으니 한번 참고해보세요” 수준으로 정리되고, 유관부서에서는 “… 재미있는 보고서네요. 참고할께요” 하는 식으로 그냥 마무리되는 경우가 많습니다. (결과적으로 아무것도 달라지지 않았다…)

위 내용은 주로 데이터를 뽑는 방식에 대한 내용입니다. 데이터를 요청하는 사람이 "질문"에 대해 가장 잘 이해하고 있고, 결국 가장 좋은 데이터를 뽑을 수 있는 사람입니다. 개발자들도 단순 데이터 요청에서 해방해줘야 합니다.

데이터를 가공하는 방식의 문제는 이렇습니다. 사람은 게으른 존재입니다. 클릭 한 번에는 그냥 클릭 한 번 하는 시간만 들 것 같지만 그렇지 않습니다. 매 단계마다 잡생각과 다른 일들이 끼어들어올 기회가 많아집니다. 업무를 하다가 중간에 방해를 받게 되면 다시 동일한 프로세스로 돌아오는 데에 한참이 걸립니다. 그냥 죽 방해없이 1시간이면 되는 업무라도 이 업무가 수많은부분들로 단절되어 있다면 각 부분마다 비효율이 발생합니다. 매일매일 똑같은 형태의 데이터를 다운로드 받아서 똑같은 프로세스의 일을 수행합니다. 물론 이 과정에 숙달이 되면 별거 아닌 일이 되기도 합니다. 우리는 그런 분들을 생활의 달인이라고 부릅니다. 달인들이 TV에 나오는 건 그런 분들이 많지 않기 때문입니다.

구글 시트는 좋은 도구입니다.

전에 도서관리 시트 포스트에서도 얘기했지만, 구글 시트는 기본적으로 게으른 사람들이 만든 서비스입니다. arrayformula 덕분에 데이터의 양이 늘어나도 함수들을 다시 복붙하지 않아도 됩니다. 다른 사람이 수정한 파일을 "최종", "최최종", "진짜최종", "이게진짜최종전에거는다안최종"으로 이름을 붙여가며 버전관리를 하지 않아도 됩니다. DB로 받은 정보를 csv파일 다운로드가 아니라 구글 시트에 넣도록만 만들 수 있어도 데이터 가공 방식을 상당 부분 해결할 수 있습니다. 그래서, 이메일로 온 파일을 자동으로 읽어서 구글 시트로 올려주는 script도 짜봤지만, 1번 문제가 똑같이 발생합니다. 제가 맘에 안드는 데이터, 더 필요한 데이터가 생기고 나면, 자동화된 프로그램은 그냥 쓰레기입니다. 제가 필요하지 않은 데이터를 자꾸 만들어내고 있는데, 자동화해달라고 부탁을 했으니 이제 필요없다고 꺼달라고 하기도 미안합니다. 저거 만들려고 개발자님들이 며칠을 썼는지 알거든요.

데이터 추출 자체를 SQL로 쉽게 할 수 있도록 만들어야 합니다. 그리고 이렇게 만든 SQL들은 각 부서의 데이터를 만지는 다른 사람들이 손쉽게 참조, 재사용할 수 있도록 해야 합니다. 남이 한 삽질을 내가 다시 하지 않을 수 있다는 믿음이 있어야 회사에 다니는 의미가 있습니다.

그래서 결론적으로 목표는,

  1. SQL query를 언제든지 수정할 수 있도록 구글 시트에 적는다.
  2. 구글 시트에 적은 SQL query를 언제든지 실행시킬 수 있다.
  3. 결과값을 구글 시트의 동일한 위치로 받는다.
  4. 이 데이터에 대한 함수들은 이미 연결이 되어 있어 데이터만 갱신되면 이에 대한 리포트가 바로 생성된다.

가 되었습니다.

(구현은 다음 기회에.)

1
0
  • 댓글 1

  • dsms
    843
    2019-08-02 11:02:26
    정말 많이 도움되는 글입니다. 업무개선에 좋은 방향을 제시해 주셨네요
    0
  • 로그인을 하시면 댓글을 등록할 수 있습니다.