Top Coder RAW novel - Chapter (25)
탑 코더-25화(25/303)
# 25
잡아야 한다.
────────────────송보나의 연락을 받은 김신우가 구시렁거리며 가산디지털 단지 역을 찾았다.
“장 부장님은 갑자기 여긴 왜 오신 거야.”
도무지 이해가 가질 않았다.
20여명 정도의 소기업.
작년 매출 18억.
영업 이익 1.8억.
회사라 부르기에도 민망한 수준인 여기까지 왜 찾아온 것일까.
“내가 진짜 부장진급만 아니었어도······.”
그것만 아니었어도 이렇게 까지 하지는 않았을 텐데.
김신우가 불평불만을 쏟아내며 시내소프트 사무실로 들어섰다.
“선진 김신우라고 합니다. 회의 때문에 왔습니다.”
“아! 이쪽으로 오세요.”
여직원은 김신우를 데리고 다른 층으로 이동했다.
‘뭐야, 사무실 내에 회의실도 하나 없어?’
고개를 저으며 여직원을 따라갔다. 위층으로 올라가 공용 회의실에 도착하니 송보나가 한 자리를 차지하고 앉아 있었다. 자리에 앉아 있던 송보나가 조용히 일어나 인사했다.
“과장님 오셨어요.”
“아, 그래.”
김신우가 시선을 돌렸다. 커다란 회의실에는 익숙한 얼굴들이 가득했다. 그들은 조용히 승호만 보고 있었다. 김신우가 목소리를 낮추며 물었다.
“왜 이렇게 조용해?”
“과장님도 들으시면 깜짝 놀랄 겁니다.”
송보나가 이야기를 시작했고, 김신우의 표정이 시시각각 변해갔다.
***
“생각 보다 많이 오셨네요.”
사무실로 찾아온 건 7명가량.
장민재가 대표로 입을 열었다.
“자네 솔루션에 관심 있는 사람이 많아서. 이리 되었네.”
승호도 고개를 끄덕였다.
“좋습니다. 상관없겠죠. 그러면 빠르게 진행 할까요.”
승호의 말에 최기훈이 준비해온 자료를 꺼내 들었다. 그리고 천천히 관련 내용 브리핑을 시작했다.
“일 정 부터 말씀 드리겠습니다. 적용 일정은 현재 3개월 정도로 보고 있습니다. 멤먼스는 총 10 정도로 보고 있고요.”
장민재가 빠르게 답변했다.
“좋습니다.”
“네?”
“그렇게 하자고요. 다음 내용은 뭡니까.”
“적용 범위는 계획서에 나와 있는 데로 총 10개 사이트로 더 이상의 추가나 변경은 어렵습니다.”
이번에도 빠르게 대답이 나왔다.
“좋아요.”
당황한 최기훈이 말을 멈추었다.
“저, 정말 아무런 변경 사항 없으십니까?”
장민재가 고개를 끄덕였다.
“없습니다.”
이런 적은 처음이었다. 계약이 끝나고도, 이거해 달라. 저거 바꿔 달라. 등등의 주문이 수도 없이 쏟아진다. 그걸 조율하는 것도 큰일이었다.
그런데 이렇게 쉽게?
의아해 하던 최기훈이 빠르게 다음 사항으로 넘어갔다.
“다음 사항은 인수인계 방법으로······.”
“이미 계약된 사항 그대로 진행하겠습니다.”
딱히 할 일이 없었다. 그렇게 회의는 채 20분도 되지 않아 끝이 나버렸다. 최기훈이 준비해 두었던 자료의 마지막 장을 넘기며 중얼거렸다.
“끄, 끝입니다.”
그러자 기다렸다는 듯이 장민재가 승호를 보며 입을 열었다.
“먼저 보안 쪽에서 일어난 일 들었습니다. 회사의 구성원 중 한 명으로써 큰 사고를 막아주신 점 감사드립니다.”
“아닙니다. 일을 맡겨 주셨고, 최선을 다했을 뿐입니다.”
“지난번에 봤을 때는 검색 쪽에 도메인이 있는 줄 알았는데, 보안 쪽도 그렇게 잘 아는지 몰랐습니다.”
“감사합니다.”
“하하, 이거 서론이 너무 길었네요. 바로 본론으로 들어가겠습니다.”
장민재가 부하 직원에게 고개를 끄덕였다. 그러자 부하직원이 회의 탁자 위로 핸드폰 두개를 올려놓았다.
“곧 출시 될 선진 전자 핸드폰 엔진 S9입니다. 전사가 사활을 걸고 있는 프로젝트이기도 하고요.”
6.4인치 크기.
선명한 화질을 자랑하는 폰의 모습에 승호도 시선을 빼앗겼다.
“예쁘네요.”
“하드웨어만이 아니라 들어가는 소프트웨어도 최고로 만들라는 회장님의 지시에 기본 탑재 앱을 전면 재검토 하던 중. 엔진 스토어의 검색 속도가 포트사의 앱 스토어 보다 느리다는 사실을 발견했습니다.”
장민재의 말이 끝나자 부하직원이 두 대의 핸드폰에 각각 검색어를 입력하고, 동시에 검색 버튼을 터치했다. 빙글거리는 진행 바가 나타나기도 전에 결과가 나타났다.
물론 포트사의 앱 스토어에서 만.
그리고 1초 정도가 더 흐른 뒤에 엔진 스토어에서도 결과가 나타났다. 장민재가 씁쓸히 중얼거렸다.
“평균적으로 1, 2초가 더 걸립니다. 별것 아니라 생각할 수도 있겠지만 그 1, 2초가 진정한 기술력의 차이니까요. 이 속도를 줄여야 하는데 지금 벽에 막혀 있는 상황입니다.”
“잠시 핸드폰을 만져 봐도 될까요?”
장민재가 고개를 끄덕였다. 승호가 오른 손을 뻗어 첫 번째 핸드폰을 집어 들었다. 부하직원이 부연 설명을 덧 붙였다.
“핸드폰에 세팅된 앱의 개수에서 부터 하드웨어 스펙 까지 전부 동일하게 맞췄습니다. 서버 속도에서 차이가 나는 것 같은데······.”
후욱.
승호는 순식간에 0과 1의 세계로 빨려 들어갔다. 핸드폰에 설치된 수많은 앱 들이 저마다의 데이터를 각 장치에 보내고 있었다. 승호는 그 중에서 엔진 스토어가 만들어내는 데이터를 살폈다.
째깍.
째깍.
시간이 흘렀지만 승호는 아무 말도 하지 않았다. 그저 핸드폰에 손을 얹은 채 가끔 엔진 스토어와 포트 사의 앱 스토어를 실행시켜 볼 뿐이었다. 그렇게 수분이 지나도 아무런 말이 없자 장민재가 운을 띄웠다.
“먼저 서버 쪽 코드를 한 번 보시겠습니까? 물론 보안사고 때처럼 개선점을 찾아주시면 합당한 비용을 치르겠습니다.”
핸드폰에서 손을 뗀 승호가 물었다.
“서버만이 아니라 앱에도 개선점이 있다면 비용은 올라가는 건가요?”
“네?”
“화면에 검색 리스트가 나타나는 속도는 다양한 요인에 의해 결정 됩니다. 가장 중요한 건 물론 서버지만 앱 도 개선해야 포트사의 속도를 뛰어넘을 수 있다는 말입니다.”
“어떤 걸 개선해야 하는지 좀 더 자세히 들을 수 있을 까요?”
“앱 에서 리스트를 불러올 때 가장 많은 데이터를 차지하는 게 이미지입니다. 그래서 대부분의 경우 엔드로이드에서 기본으로 제공하는 LRU 캐시 알고리즘을 사용합니다. 같은 이미지의 경우 또 불러오지 않게.”
보안.
검색.
그리고 앱.
각각은 다른 분야였기에 여기 있는 사람들 중 승호의 말을 바로 이해하는 사람은 없었다. 승호가 스크롤을 하여 페이지를 넘겼다.
“캐시를 사용하면 이렇게 처음에 조회했던 데이터는 빠르게 불러 옵니다.”
주르륵.
주르륵.
빠른 속도로 앱 리스트가 나타났다. 그렇게 불러온 리스트의 개수가 100개를 넘어가자. 속도는 눈에 띄게 느려졌다.
“그러나 시간이 지날수록 느려지겠죠. 캐시 된 데이터의 양이 많아져 메모리 스왑 현상이 일어나니까요. 물론 방법은 있습니다. 캐시 알고리즘을 개선하면 속도는 더 빨라 질 겁니다.”
장민재가 부하직원을 보며 말했다.
“앱 담당자 연락해봐. 어떤 캐쉬 알고리즘 쓰고 있는지.”
그리고 사람들을 보며 말을 이었다.
“잠시 확인하는 시간을 가지겠습니다.”
***
김신우가 마른 침을 삼키며 중얼 거렸다.
“그, 그런 일이 있었어?”
“네. 그래서 지금 결과를 기다리고 있어요.”
“강승호 저 친구 말이 맞는지 아닌지?”
“네.”
“휘유, 저 친구 앱에도 조예가 있었나.”
“모르겠습니다. 문제는··· 장 부장님이 눈독을 들이고 있다는 사실이에요. 과장님도 아시다 시피 장 부장님과 한 부장님은······.”
“입사 동기지.”
“네. 그런데 장 부장님은 차기 임원 하마평에 오르내리시는 분이고.”
“한 부장님은 아직 소식이 없다.”
“그런데 강승호씨를 빼앗기기라도 하면······.”
김신우가 마른 침을 삼켰다. 정신을 바짝 차리고, 회의실을 둘러보았다. 장민재를 비롯해 빅 데이터 분석 팀의 주요 인원들이 자리해 있었다. 저들이 직접 찾아오는데 자신은 달랑 송 대리 한 명을 보냈으니.
과거의 자신이 원망스럽기 까지 했다.
그때
드르륵.
드르르륵.
회의실 가운데 위치해 있던 핸드폰이 진동음을 토했다. 김신우도 익히 알 고 있는 분석 팀의 최철웅 과장이 입을 열었다.
“컨퍼런스 콜 연결 합니다.”
-앱 개발자 이종훈입니다.
“네. 말씀하세요.”
-현재 엔진 스토어에서 사용하고 있는 건 LRU 캐시 알고리즘이 맞습니다. 그게 엔드로이드 기본 제공 알고리즘이라 다들 그걸 사용하고 있어요.
그때 승호가 입을 열었다.
“물론 그러실 겁니다. 현재로써는 그게 최선이니까요.”
-네. 포트에서 개발한 것입니다. 더 나은 대안은 아직 없습니다.
개발자는 확신에 차있었다.
“다만 제게 한 가지 아이디어가 있는데 들어 주시겠습니까?”
장민재가 고개를 끄덕였다. 최철웅이 핸드폰에 대고 빠르게 말했다.
“한번 들어보시고 기술 검토 부탁드립니다.”
핸드폰 너머로 탐탁치 않아하는 목소리가 들렸다.
-아, 알겠습니다. 한 번 말해보세요.
“엔드로이드 프레임 웍은 다들 알다시피 오픈 소스라 인터넷에서 코드를 확인 하실 수 있습니다. 그 코드를 확인해 보시면 실제 구현상에서 메모리 캐시와 디스크 캐시가 다른 리소스를 사용하는 걸 확인 할 수 있습니다.
승호가 빠르게 말을 이었다.
“제가 제안하는 건 이 리소스를 통합해 중복 데이터를 줄여 성능개선을 꽤 하자는 겁니다.”
설명을 들은 장민재가 이종훈을 보며 말했다.
“담당자님이 보시기에 어떻습니까?”
당황한 이종훈이 말을 더듬었다.
-네, 네?
“저 방법이 효과가 있는지가 궁금합니다. 엔진 스토어 엔드로이드 앱 실무자시니까요.”
-아, 그, 그게. 저는 프레임 웍에서 기본으로 제공하는 API를 그대로 사용하고 있는데···. 그리고 그냥 포트에서 기본으로 제공해주는 걸 그대로 사용하는 게 성능에 이점을 가지지 않을 까요?”
뒤로 갈수록 목소리가 줄어들었다.
자신감 없는 목소리.
장민재의 눈빛에 실망스런 기색이 스쳐지나갔다. 승호가 재빨리 부연 설명을 덧붙였다.
“물론 대부분의 경우에는 담당자님이 말씀하시는 게 더 이점이 있습니다. 포트의 실력은 세계최고니까요. 제가 말씀 드리는 건. 몇 가지 이점을 취할 부분이 있어 보여 검토를 부탁드리는 겁니다.”
-무, 물론 검토는 해보겠습니다.
“이왕이면 JNI를 사용해서 C++코드를 많이 가져가는 것도 한 방법이 될 겁니다. 가상 머신을 거쳐야 하는 부담이 줄어들어 성능이 개선 될 테니까요.”
꿀꺽.
회의실 내에 떠드는 사람은 승호 밖에 없었다. 그랬기에 이종훈이 마른침을 삼키는 소리는 너무나 크게 들렸다.
-아, 알겠습니다.
“그러면 앱 이야기는 어느 정도 된 것 같은데. 이제 서버 쪽 이야기를 시작 해볼까요? 앱도 중요하지만 서버는 그보다 더 중요하니까요.
승호의 활약을 지켜본 황호근이 마른 침을 삼키고 있었다.