Skip to main content

신입 개발자가 비브로스에 적응해 나가는 과정

· 13 min read

안녕하세요. 비브로스 백엔드 그룹에서 일하고 있는 김상열입니다.

이제 입사한 지 약 두 달 정도가 지났는데 입사하고 지금까지 제가 신입 개발자로 비브로스에 합류해 적응해 나가는 과정을 회고로 풀어보려고 합니다.

신입 개발자가 비브로스에 적응해 나가는 과정

비브로스에 합류 전

저는 학부 때 철학을 전공한 문과생 이었습니다. 그러던 중 2학년 때 우연히 소프트웨어 융합 전공을 복수전공으로 선택하게 되면서 개발에 흥미를 느끼게 되었고, 비전공자로서 개발자가 되기 위해 학부 때 할 수 있는 IT 관련 활동은 모두 해보며, 개발자의 꿈을 키워 나갔습니다.

실제로 이러한 경험들이 입사 전 다른 스타트업에서 인턴 경험을 쌓는데 도움을 주었어요. 개인적으로도 이러한 활동들을 통해 여러 토이프로젝트에 참여하며, 개발자로서의 역량을 키워 나가기 위해 노력 했던 것 같습니다.

그리고 인턴 기간 중 우연히 비브로스에 지원 할 수 있는 기회가 생겼고, 서류 - 1차 면접 - 2차 면접의 과정을 통해 2019년 11월 11일에 백엔드 개발자로 첫 입사를 하게 되었습니다.

비브로스에 합류

"똑닥"이라는 서비스를 운영하고 있는 비브로스에 신입 개발자로 입사하게 되었을 때 R&D 팀에서는 저와 같은 쌩(?)신입 채용은 처음이었습니다.

그 이유는 스타트업의 특성 상 제한된 리소스 내에서 빠르게 결과를 만들어 나가야 하기 때문에 신입보다는 바로 퍼포먼스를 보여 줄 수 있는 경력직을 선호하기 때문인 것 같아요. 하지만 비브로스의 R&D 팀에서는 "똑닥" 서비스의 성장과 함께 신입 개발자를 뽑아서 역량있는 개발자로 성장 시킬 수 있다는 자신감과 성장을 도울 수 있는 역량있는 개발자들이 있기 때문에 신입 채용을 진행하고 있습니다.

하지만 그만큼 스스로 백엔드 그룹의 첫 신입이라는 것에 부담도 같이 존재했지만 백엔드 그룹에서는 경력과 상관 없이 회사의 적응 기간과 함께 신입 과제를 수행하며 실무에 참여 할 수 있는 역량을 키울 수 있기 때문에 실제로 입사 후에는 신입이라는 부담으로 인한 걱정은 없었던 것 같아요!

한 달간의 신입 과제 수행

pingoo

위에서 언급했듯이 비브로스 R&D팀 백엔드 그룹에서는 경력에 상관없이 회사에 적응하는 기간과 함께 신입 과제를 수행 할 수 있는 기간을 제공합니다. 과제 수행 기간은 개발자 스스로 결정 할 수 있어요!

비브로스는 메인 스택으로 NodeJS와 MongoDB를 사용하고 있기 때문에 신입 과제로 NodeJS, ExpressJS, MongoDB, Mongoose, BDD(Behaviour Driven Development) 등의 주제를 직접 구현해 나가며 학습 할 수 있습니다.

비브로스 백엔드 그룹에서는 정말 많은 AWS 서비스를 이용하고 있기 때문에 DynamoDB도 신입 과제 목록에 포함되어 있고, 저처럼 클라우드 컴퓨팅 서비스에 관심이 있었던 분이라면 AWS까지 폭 넓게 공부 할 수 있는 기회를 얻을 수 있어요!

그리고 저는 약 한 달 동안 신입 과제를 수행하기로 결정 한 후 NodeJS의 Stream을 이용한 구구단부터 BDD를 이용한 테스트 코드 작성, 그리고 DynamoDB까지 직접 설계하고, 구현해 나가며 과제를 진행했습니다.

신입 과제를 수행하면서 가장 좋았던 점은 뛰어난 동료들에게 제 코드에 대해 논의 할 수 있는 코드 리뷰 문화가 존재했던 것 같아요. 코드 리뷰를 통해 비지니스 로직을 녹여내는 애플리케이션 개발과 테스트 주도 개발 방법론, 그리고 AWS까지 많은 것을 배울 수 있었고, 스스로 설계하고, 고민했던 것들을 리뷰를 통해 더 발전 시킬 수 있는 기간이였습니다.

실무 투입

약 한 달 간의 신입 과제를 수행 후 저는 어드민 서버 API의 통계 CSV 리팩토링 개발을 맡게 되었습니다.

통계 CSV란 어드민 페이지에서 "똑닥"이 서비스 하는 부분들에 대한 통계 리스트를 CSV 형식으로 변환하여 보여주는 것 입니다.

기존 어드민 서버 API의 CSV 로직은 동기로 작성되어 있었기 때문에 요청에 대한 DB를 조회할 때 순간적으로 메모리를 점유하는 문제와 그로 인해 동시 다발적인 IO가 있을 때 서버가 다운되는 문제가 있었습니다.

따라서 백엔드 그룹에서는 실제 어플리케이션을 서비스하는 운영 서버와 달리 어드민 서버는 사내에서만 사용하는 서버이기 때문에 서버의 스펙을 올리는 것은 비효율적이라고 판단했고, CSV와 관련된 어드민 서버의 API 들은 대용량 데이터를 처리하는 배치 작업이기 때문에 해당 작업을 Lambda를 통해 비동기로 처리 하고 있습니다.

그리고 저는 현재 실무에서 비동기 CSV 리팩토링 관련 개발을 하면서 백엔드 그룹에서 채택하고 있는 브랜치 전략과 CI/CD를 이용하면서 "똑닥" 서비스 구조에 대한 이해를 해나가는 과정에 있습니다.

첫 실수

동료들의 열정적인 코드 리뷰와 함께 무럭무럭 성장하던 중 얼마 전(사실 오늘) 제가 배포한 비동기 CSV에 대한 오류가 발생한 적이 있습니다.

백엔드 그룹에서는 WebStorm이라는 IDE를 사용하고 있는데 WebStorm에서는 디버거 툴을 이용하면 편하게 프로그램을 디버깅 할 수 있습니다. 하지만 저는 IDE 디버거를 사용한 경험이 없었기 때문에 디버거 툴을 이용한 디버깅이 낯설었고, 습관적으로 개발을 하면서 콘솔을 통해 로그를 확인하고 있었습니다.

그리고 오류는 여기서 발생했습니다.

출근 후 오전 업무를 하던 중 제가 운영 서버에 배포했던 비동기 CSV에 대한 오류가 발생했다는 이야기를 들었습니다. 배포 전에 리팩토링 한 API의 테스트를 모두 마치고, 운영 서버에 배포했기 때문에 처음엔 대체 어디서 문제가 생긴거지? 라는 생각이 들었습니다.

하지만 곧 제가 배포하면서 디버깅을 위해 사용했던 콘솔 로그가 운영 서버에 그대로 남아있는 것을 알 수 있었습니다.

chalssack

콘솔 로그로 인해 문제가 발생한 이유는 CSV의 종류에 따라 다르지만 일반적으로 CSV로 변환되는 통계 리스트는 적게는 수천개에서 많게는 수십만개 이상이기 때문에 수천개에서 수십만개의 리스트가 콘솔에 출력되고 있었기 때문입니다.

다행히 어드민 서버였기 때문에 큰 문제는 발생하지 않았지만 실제 운영 서버였다면 서비스 자체에 큰 문제를 일으킬 수 있는 부분이였고, 실제로 언제든지 일어날 수 있는 실수였기 때문에 더 아찔 했던 것 같습니다.

말로만 듣던 주니어 개발자의 실수를 드디어 내가 한 번 했다는 충격과 함께 그래도 이런 큰 실수를 어드민 서버에서 미리 겪었기 때문에 앞으로 같은 실수를 하지 말아야 겠다는 다짐을 하게 된 계기가 되었습니다. (디버깅은 디버거 툴로... 일단 다행...)

마치며

desk

아직 입사 한 후 두 달도 지나지 않았지만 짧은 기간 동안 동료들과 함께 제 코드와 생각에 대해 같이 고민하고, 논의하며 스스로 많은 발전을 했다고 생각합니다.

하지만 분명히 많은 주니어 개발자들이 고민하듯 스타트업에서의 신입 개발자는 쉽지 않은 것 같아요. 그럼에도 불구하고, 제가 지금 비브로스에서 하고 있는 일들이 즐거운 이유는 뛰어난 동료들과 함께 스스로의 성장은 물론 동료들의 성장, 그리고 회사의 성장까지 같이 지켜 볼 수 있다는 매력이 있기 때문인 것 같습니다.

해당 회고를 통해 공유한 경험들이 많은 주니어 개발자들에게 도움이 되었으면 좋겠습니다.

감사합니다.