comcast5-uglycode

수년전의 일입니다. 아마도 5년도 더되지 않았나 싶습니다. 저희 회사가 AWS 로 많은 것을 옮겼던 때였고, 저희가 아직 Databricks 를 쓰지 않았을때였읍니다. 다른 팀에서 자신의 코드를 AWS에서 돌리고 싶다고 요청이 왔었읍니다. 저희 팀에 먼저 요청이 온것이 아니라 다른 팀들에게 물어봤다가, 다른 팀들이 할 수 있다고 했다가 포기(?)를해서 저희 팀에 요청이 들어오게 된것이었읍니다.

지금도 그렇고, 그때도 그렇고, 다른 팀들은 AWS에 관해서 별로 잘 모릅니다. 제가 많이 아는 것도 아니지만, 정말 다른 팀들은 기껏해야 아직도, s3에 데이터 카피하고 다운로드 받는 수준에서 크게 발전하질 못하고 있읍니다. 무려 2년간 AWS 관련 공부를 하고도 그러니… 도대체 어떻게 해야 개선이 될 수 있을지.. 모르겠읍니다. 자신들이 프로그램은 못돌리겠다고 하며 내새운 핑계가, 코드가 상수들이 그냥 마구 쓰이고 있다.. 등등의 핑계를 대며 코드 탓을 하더군요.

저희들은 처음부터 EMR을 필요에 따라 가동을 했읍니다. 그런데 그 코드의 원저자 팀은 EMR을 상시가동을 하며 클러스터를 마치 OnPrem Hadoop 클러스터 처럼 사용을 하는 팀이었읍니다. 아마도 그팀의 EMR은 1년도 넘게 돌고 있었을 겁니다. 코드는 돌아가는 클러스터에서 pyspark 를 사용해서 데이터를 프로세싱하고 xgboost 를 이용해서 머쉰러닝을 하는 것이었는데, xgboost 는 driver 노드에 설치를해서 돌린것 같았읍니다.

저희 팀에 오기전에 그 코드를 돌리려고 했던 다른 팀들은 그 코드를 돌려보지도 못했읍니다.

사실 그 코드 자체는 좀 버그가 있었읍니다. 함수 선언과 호출이 서로 안맞는 부분도 있었고, Syntax 에서 다소의 문제가 있었읍니다.

제가 코드를 보니.. 엄청나게 긴코드였읍니다. 뻔한 Syntax 버그는 그냥 제가 고쳤읍니다. 그러고 나서 코드를 돌리다 보니, 다소 뻔한 부분에서 로직에 문제가 있더군요. 그래서 원저자에게 대충 문제를 지적하니, 대노를 하더군요. 정확히 어디서 어떻게 그런 에러가 나는지 안알려줬다는 것이었읍니다. 저라면 창피에서 내가 재차 돌려보며 체크를 했을텐데 말이죠. 그 친구는 상사에서 제가 무례했다고 화를 냈다고 하더군요.

제가 좀 아는 분야이긴 하지만, 저는 별로 남의 코드를 왕창 고치고 싶지는 않았읍니다. 그래서 대충 리팩터를 좀하고, EMR 부분과 xgboost 부분을 분리했읍니다. EMR 부분은 EMR로 돌리고, 나머지 부분은 EC2로 돌리기로 했읍니다. 컨테이너가 사실 더 좋은 솔류션입니다만, xgboost 부분의 사이즈가 장난이 아니라서 그냥 EC2 큰것들을 쓰는게 나은것 같아 EC2로 했읍니다. 이 모든 것을 Step 에 넣고 돌리니 비쥬얼하게도 좋게 코드가 도는 것을 볼 수가 있었읍니다. 비용 절감과 퍼포먼스 향상도 있었읍니다.

코드 자체는 완전치는 않았지만, 코드의 아이디어 자체는 나쁘지 않았읍니다. 그래서 그런 시간과 공을 들여서 돌리는 것은 좋은 방향이었다고 생각합니다. 하지만, 이과정에서 보았던 사람들이란 참.. 자신들이 못하는 걸 쓸데 없는데 핑계를 대질 않나.. 못하면 당당하게 못하겠다고 말을 못하는 것은 아마도 정말 자신감의 부재가 아닌가 생각합니다. 그냥 솔직이 말을 못하는 것도 병이라면 병이겠지요.