본문 바로가기
공부/프로그래밍

[개발] 2019년 상반기 회고록

by demonic_ 2019. 12. 29.
반응형

지금 회사에서 본격적인 프로젝트를 시작한 것은 올해부터가 아닐까 싶다.

작년 말에 들어와서 이것저것 인수인계받느라 시간을 보내기도 했고, 서버 구성이라든가 개발 방향, 문화 등을 고민했던 거에 비하면 올해부터는 제대로 실무를 처리해야만 했다.

# 외주로 주던 서비스를 내재화

서비스 중에는 선불카드시스템이 연동되어 있는데, 이것은 외부에 의탁해 개발된 것이었다. 그런데 유저 수가 조금만 늘어도 서버가 출렁거렸고, 툭하면 서버가 응답을 하지 않아 애간장을 태웠다. 마침내는 서비스를 담당하는 업체에서 더 이상 서비스를 제공할 수 없겠다며 자기네 서비스를 사 가라고, 아니면 삭제해버리겠다고 협박 아닌 협박을 해댔다. 딱히 방법이 없던 터라 서비스 개발비용을 주고 사기로 결정. 처음에는 이것을 그대로 다른데 외주 줄까 했었지만 내가 극구 반대하여 서비스 내재화하기로 했다. 사실 회사 내 인력 구조로 보면 내재화는 터무니없는 말이지만 그럼에도 해야 한다고 주장했던 이유는 다음과 같다.

1) 고객에게 만족할 만한 서비스를 하려면 잘하는 업체에게 맡겨야 하는데 그럴 업체를 찾아볼 여유가 없었음

2) 서비스 향상은 곧 회사 경쟁력이라 판단

다소 힘들어도 내재화하여 발전시키는 것이 좋겠다고 생각했다. 그래서 지금은? 죽도록 고생 중이다. 그래도 좋은 점이 있었다면 동일 스펙 대비 성능을 300% 끌어올렸다는 점이랄까? 특히 DB 쪽 개선을 많이 했는데, 이전에는 고객이 몰리는 피크시간에는 CPU 사용률이 20~30%를 오갔다. 여기서 문제의 쿼리가 실행되면 가뿐하게 100%를 오버슈팅하여 서버가 다운되었었다. 지금은 평균 5% 이하로 떨어뜨렸다. 피크시간에도 최도 8%.

다만 실시간 라이브 하는 중인 서비스를 DB 스키마를 바꾸고, 인덱스를 주고, 테이블 구조를 고친다는 게 여간 스트레스이자 압박이지 않을 수 없다... 정말 고통이다.(여태껏 개선하는 동안 단 한 번도 서비스 중단하고 한 적이 없음)

# 접근이 편할수록 더욱 발전한다

현재 메인이 되는 서버는 IDC에 있다. 여기에 접속하려면 문자로 2번 정도 인증해야 접속할 수 있다. 가상화에서 MysqlWorkbench를 제공하는데 민감해서 툭하면 프로그램이 종료되었고, 인터넷이 느리면 쿼리를 쓰다가 툭툭 끊기는 현상을 봐야 했으며, 마지막으로 쿼리 비문을 생성해 나온 데이터를 추출하려면 매우 번거로운 절차를 거쳐야 했다. 보안상으론 용이하지만 데이터 하나를 추출하는데 매우 오랜 시간이 걸렸다.

그래서 별도 서버를 생성하고 동기화를 하도록 했다. 개인 정보는 위험할 수 있기 때문에 동기화하지 않는다. DB to DB 방식이 아닌 Message 방식을 사용했다. Kafka 이용해서 정해진 시간마다 배치식으로 전송하도록 했다. DB to DB를 하지 않은 이유는 모종의 이유로 받는 쪽에서 문제가 생길 경우 시스템을 해당 시점으로 다시 돌려야만 했다. 즉 결합도가 매우 높았다. 그래서 전송하는 쪽은 반드시 죽지 않는다는 가정하에 전송하는데 언제든 받아들일 수 있도록 설계했다.

초반에는 서버가 알게 모르게 죽어서 하루 뒤에 알아차리곤 했는데, 이젠 서비스가 종료되면 메일을 발송하도록 했다. 테스트 서버이다 보니 종종 사정상으로 인해 서버가 종료되거나 인터넷이 끊기는 경우가 있었는데, 서비스를 다시 정상작동하면 언제든 원상태로 돌아갈 수 있도록 해두었다. 그래야 내가 조금이라도 더 자유롭게 다른 일에 매진할 수 있기 때문이다.

이 프로젝트는 사이드 프로젝트로 시작한 것이다. 그러나 이것으로 인한 효과는 단연 1위로 꼽고 싶다. 데이터를 분석하는 것과 추출하는데 압도적으로 시간을 단축시킬 수 있었기 때문이다. 기존에 2시간 이상 걸릴 일이 10~20분이면 뚝딱 해냈다. 더욱 큰 효과는 다음이다. 적지 않은 데이터이기에 DBMS에서 즉각 쿼리로 돌릴 수 없는 경우가 있는데, 이런 것을 필요 데이터만 추출해 데이터 셋을 만들어 파이썬으로 분석하였다. 이로 인해 파이썬 데이터 분석 학습 + 속도 개선이라는 두 마리 토끼를 잡게 되었다.

접근이 편하다는 것은 사용성이 용이하다는 것이고, 사용한다는 것은 발전 가능성이 있다는 것이다. 그런 의미에서 이번 사이드 프로젝트는 메인 프로젝트 못지않게 매우 중요한 역할을 해냈다. 기존의 업무환경을 대폭 변경하였기 때문이다. 사소한 아이디어가 때론 이렇게 큰 영향을 준다. 다른 사람은 이 프로젝트의 중요성을 제대로 알고 있지 못하는 거 같지만 말이다.

 

 

# 점점 내 시간을 뺏어가고 있어

IT 쪽은 크게 시스템을 개발하는 업무와 유지 보수하는 업무로 나뉘고 있는데, 지금 회사는 이 두 개를 합친 DevOps 형태를 띠고 있다. 문제는 여기에 데이터 요청이라는 항목이 추가되었다. 데이터를 다룰 수 있는 전문 인력이 없다 보니 나에게 요청하는 것인데 초반에는 한 달에 1~3건 정도 있던 것이 이제는 5~20건에 이를 정도로 대폭 상승했다. 회사 사정상 다방면으로 데이터를 보고 싶어 하는 사람이 점점 늘어나면서 요구하는 데이터 목록이 많아지는 것이었다.

데이터 양도 적지 않아 데이터 추출이 오래 걸린다. 그런데 요청 건도 많으니 진퇴양난에 빠졌다. 그래서 이전에는 시스템을 어떻게 개선할까 고민하는 데 시간을 많이 보냈다면 요즘은 이런 요청 건을 처리하는 것만으로도 시간을 많이 잡아먹는다. 이 부분은 내가 입사하기 전엔 미처 고려하지 않았던 낭비되는 시간이다. 사실 첫 번째 항목에 쓴 서비스 내재화를 진행했던 이유도 여유시간이 있으니 그 부분을 '자동화'하여 확보하면 되겠거니 싶어서 한 건데, 이런 식으로 소모성 노동을 하게 될 줄은 미처 몰랐던 샘.

회사를 다니다 보면 나도 모를 사건이 어떻게 엄습할지 알 수 없다. 나는 너무 빠듯하게 업무 일정을 산정했고, 그래서 유연성 있게 대처하지 못하고 있는 샘이다. 일을 많이 하는 것은 그러려니 해도 생산성 있게 개선하는 일에 시간을 투자할 수 없다는 것이 큰 리스크다. 안 그러면 소비적인 일에 계속 시간을 뺏길 우려가 있기 때문이다. 이 부분에 대해서 어떻게 극복할지에 대해 최근 고민하고 있다.

 

 

# 공부하겠다던 데이터공부는 어디로

할줄 아는 것을 더 발전시키는건 그리 어렵지 않다. 비슷한류의 것이라도 마찬가지다. 하지만 전혀다른분야에 대해선 공부하는게 만만치 않다. 개발과 데이터분석은 데이터를 다룬다는 관점에선 비슷하다고 생각했기에 공부해봐야겠다고 했지만 실패했다. 의미있는 output을 내지 못해서 동기부여가 생기지 않았다는 점이 가장 큰 문제인듯 하다.

이제서야 안 것이지만 데이터를 다룬다는 공통점이 있다 하더라도 데이터를 분석하는 것과, 데이터를 적재, 이용하여 시스템을 설계하는것은 전혀 다른 분야이다. 때문에 전혀다른 공부를 요구한다. 평소라면 보지않던 수학을 봐야하고, 기술이 정형화가 되어있지 않고 새로운 논문이 지속적으로 쏟아져 나오기 때문에 지속적인 모니터링이 필요하다. 잘 모르는 것을 학습한다는 것은 생각보다 많은 시간을 잡아먹고 시간대비 효율이 너무 저조하다보니 동기부여가 전혀 붙질 못했다. 실력이 지지부진하게 상승하는것과 맞물려 어느새 손을 놓게 되었다.

다시 시도해야하나? 아님 내가 가진 역량을 강화해야하나? 아직 잘 모르겠다. 최고는 관련 프로젝트를 한번 뛰어보는 건데...

 


 

올 상반기를 보내면서 크게 깨달은 것이 하나 있다면, 지금 시대는 기술경쟁시대라는 점이다. 이전까지는 그리 심각하게 생각하진 않았는데, 여기저기 말하는 혁신이란 단어가 기업에 깃들 때 어떻게 경쟁력을 갖는지를 제대로 알게 된 거 같다. 기술도 콘텐츠가 될 수 있고, 서비스가 될 수 있다. 때문에 기술의 격차가 경쟁력을 만들 수 있다는 것을, 그리고 한번 벌어진 기술의 격차는 더욱 크게 벌어질 수 있음을 깨달았다는 점이다.

때문에 내가 만약 기업을 운영한다면, 혹은 팀을 운영한다면 어떻게 할지에 대해 시뮬레이션을 많이 한다. 팀 관련 서적을 자주 탐독하기도 한다. 비록 시뮬레이션에서 끝나는 것이긴 하지만 어떻게 하면 더 효율적으로, 혹은 좋은 문화를 가질지에 대해 고민한다. 이런 고민을 하는 이유는 지금의 일들은 혼자서 하는 것이 아니기 때문이다. 대부분의 일은 타인과의 협업을 통해 이루어진다. 때문에 서로 어떻게 신뢰를 주고받으며 일을 진행할지에 대해 고민하는 것은 선택사항이 아닌 필수라고 느껴졌기 때문이다. 때문에 가장 바탕이 되는 문화와 경영 쪽에 대해 관심을 갖게 되었다. 내게 그럴 기회가 주어질지 아닐지는 모르겠지만 말이다.

 

 

반응형

댓글