기획

[나는 개발자다] 개발에도 ‘퇴고’가 필요하다...11번가 '십일절' 먹통 없는 이유

이안나


[디지털데일리 이안나 기자] “이전부터 어떠한 기능이 만들어지면 이를 그냥 놔두기보다 다시 고치는 걸 좋아했습니다. 이런 걸 리펙토링이라고 하는데 당시엔 그게 뭔지 모르면서 했던 것이죠. 현재는 팀원 모두 리펙토링에 대한 중요성을 함께 공유하고 있습니다.”

e커머스 업계 경쟁이 치열해지며 최저가격·빠른 배송 등을 통한 고객 유치 작전이 치열해지고 있다. 하지만 이런 눈에 보이는 조건들만 고객에 만족을 주는 전부는 아니다. 처음 온라인몰에 진입해 상품을 구매하기까지 아무 오류 없이 진행되는 것도 강력한 경쟁력이 된다.

김주영 11번가 프로모션플랫폼 개발팀장<사진>은 11번가 경쟁력 중 하나로 안정적 시스템을 언급했다. 인기 많은 프로모션을 진행해 수만 명이 동시 접속해도 11번가 홈페이지는 ‘먹통’이 일어나지 않는다. 프로모션마다 규모나 참여자 수가 천차만별인 데다 콘텐츠도 매번 달라지지만 매번 신속하면서도 안정적으로 프로그램을 개발한다.

김 팀장은 B2B인터넷에서 SK플래닛을 거쳐 현재 11번가에 이르기까지 20년 이상 개발 경력을 갖고 있다. 현재 11번가 프로모션 플랫폼 개발팀에서 월간 십일절 등 가장 트래픽이 몰리는 기획전을 담당하고 있다. 과거 B2B에서 B2C 서비스 분야로 넘어온 이유는 즉각적으로 돌아오는 피드백에 매력을 느꼈기 때문. 김 팀장은 “서비스 개발로 고객 수가 늘고 이를 아는 사람들이 많아지는 경험을 통해 대고객서비스를 경험하고 싶은 니즈가 생겼다”고 전했다.

불과 몇 년 전만 해도 11번가는 십일절 등 대형 이벤트를 할 때 시스템이 불안정한 상태를 겪었다. 2019년 이벤트 시스템에 과부하 문제가 생겼는데 그와 상관없는 쿠폰·상품상세 페이지 등 11번가 다른 시스템도 정상 작동되지 않았다. 이벤트 시스템과 11번가가 같은 데이터베이스(DB) 및 서버 대역을 사용해서였다.

김 팀장은 지난해 이벤트 업무를 맡게 되면서 스케일 아웃이 가능한 서비스를 AWS 클라우드로 이관해 11번가 시스템과 분리했다. 이제 장애가 나도 11번가 시스템에 전파되지 않는다. 동시에 작업을 병렬적으로 수행하는 비동기식 처리모델을 도입해 트래픽을 제어할 수 있는 시스템을 마련했다. 사용자도 다음 화면으로 넘어갈 때 대기하지 않아도 된다.

이러한 시스템 구축 결과 최근엔 월간 십일절을 진행해도 CPU 사용률은 일반적으로 3%, 고객이 몰리는 시간대에도 10%를 넘긴 적이 없다. 그만큼 시스템 부하 없이 안정적이라는 의미다. BTS 이벤트를 진행해 10만 유저가 동시 접속 했어도 소위 사이트가 ‘다운’되는 현상은 벌어지지 않았다.

김 팀장은 “인프라 분들의 전문적 지식과 개발팀 노력이 시너지가 제대로 발휘되는 상황이었다”며 “대용량 트래픽을 버틸 수 있는 시스템을 개발하면서 열심히 일하는 즐거움, 동료들에 대한 믿음, 할 수 있다는 자신감이 생겼던 좋은 기억이 있다”고 말했다.

e커머스 업계에선 프로모션 경쟁이 점점 치열해진다. 그만큼 이벤트 횟수도 증가하고 구성도 다양해진다. 특히 프로모션은 개최되는 날짜 혹은 기간이 정해져있다 보니 그 기간에 맞춰 개발해야하기 때문에 다른 개발과 대비해선 촉박한 느낌도 나는게 사실이다. 김 팀장은 짧은 시간 이벤트를 오픈할 수 있도록 작업 효율화에도 힘썼다.

그는 “2019년까지는 기획전 등록을 위해 매번 각각 개발해야했지만 현재 백엔드단은 고정돼있고 기능만 추가하며 프론트페이지를 개발해 적용할 수 있는 공통 모듈을 많이 준비해놨다”며 “새로운 타입은 또 개발해야겠지만 기존 운영해본 타입이라면 최소한의 개발로 진행할 수 있다”고 했다.


사실 김 팀장은 주변 개발자들보다 6~7년 정도 진급이 빠른 초고속 승진자다. 그는 프로그램 소스를 개선하는 노력들이 인정을 받은 것 같다고 대답했다. 실제 김 팀장은 개발한 프로그램을 ‘돌보는 것’이 특기다. 기능을 한 번 만들고서 그치는 것이 아닌 다시 살펴보고 고치는 과정을 오래 전부터 해왔다. 요즘 중요도가 높아지고 있는 ‘리펙토링’을 꾸준히 해왔던 것. 리펙토링은 기존 사용자 인터페이스(UI)나 프로그램 기능을 변경하지 않고 내부적 코드를 개선하는 방향으로 수정하는 기술이다.

개발자들의 리펙토링은 마치 글쓰기에서의 퇴고와 비슷하다. 처음 만들고 난 후 여러 번 다시 들여다볼수록 좀 더 개선할 수 있는 부분을 발견하고 이를 고친다. 꾸준히 리펙토링 해온 프로그램은 코드를 깔끔하고 이해하기 쉽게 정리해놓은 결과물과 같다. 향후 문제가 생겼을 때 누가 봐도 문제점을 쉽게 발견하고 빠르게 해결할 수 있다. 이어 성능 향상까지도 기대할 수 있다.

리펙토링은 한때 중요도 면에서 밀려있는 기술이기도 했다. 최근에도 급속도로 성장하며 새로운 기능을 만드는데 집중하는 곳에선 이를 간과하기도 한다. 하지만 시간이 흘러 시스템 디자인이 오래됐을 땐 문제점 발견 시 새로운 개발자가 어디서부터 건드려야할지 고민하게 된다. 시간도 지체되고 계속 문제를 덮어씌우며 임시방편으로 해결할 수도 있다. 결국 향후 문제가 생겨도 손대지 못하는 상황이 되어버릴 수 있다는 것. 따라서 김 팀장은 “신규 기능과 리펙토링은 어느정도 균형을 맞춰서 하는 것도 중요하다”고 설명했다.

현재 김 팀장을 비롯한 소속 직원들은 일주일에 한번씩 그룹장 주도하에 리펙토링에 대해 배우는 시간을 갖고 있다. 그만큼 11번가에선 리펙토링에 대한 중요함을 인식하고 프로그램에 적용한다는 의미다. 따라서 김 팀장은 함께 일할 개발자 역시 프로그램을 돌볼 줄 알고 자신이 아는 기술을 공유할 줄 아는 인재를 찾고 있다. 프로그램을 함께 만들어가는 사람과 원활히 소통하며 더 나은 방향을 설정하는게 당장 속도는 더뎌질 수 있지만 완성도 높은 프로그램을 만들어 결국 미래 시간을 벌 수 있다고 생각하기 때문이다.

퇴고를 많이 할수록 글쓰기가 늘어나는 것처럼 리펙토링 역시 개발자 핵심 역량으로 노려볼 수 있는 영역이다. 김 팀장은 “새로운 기능도 당연히 개발해야 하지만 이전 개발해놓은 것에 대해서도 최적화된 서비스를 위해 지속적인 돌봄이 필요하다”며 “리펙토링 기술은 평생 써먹을 수 있는 자산 중 하나다. 신규 기능은 계속 나오고 공부해야 하지만 리펙토링은 그 와중 밑거름이 될 수 있다”고 강조했다.

<이안나 기자>anna@ddaily.co.kr
이안나
anna@ddaily.co.kr
기자의 전체기사 보기 기자의 전체기사 보기
디지털데일리가 직접 편집한 뉴스 채널