네이버 쇼핑 신입개발자의 혼란한 적응기
들어가며
안녕하세요. 저는 작년 12월에 네이버에 개발 직군 공채로 입사하게 되어 스마트스토어플랫폼의 백엔드 개발을 담당하게 된 조승우입니다. 아직도 입사한 것이 엊그제 같은데 벌써 5개월이라는 시간이 지났다는 사실에 새삼놀라게 됩니다. 5개월 간 정말 혼란한 시간을 보냈는데요, 이 글에서는 여러분께 제가 입사하고 그간 어떤 일들을 하였는지 소개해 드리겠습니다.
먼저 첫 3달 간의 신입사원 교육 과정과 그 후 2달 간의 스마트스토어 플랫폼에서의 신입 백엔드 개발자로서의 생활에 대해서 말씀드린 후, 느낀 점을 정리하면서 글을 마치도록 하겠습니다. 이 글이 네이버에 입사하시고 싶어하시는 분들과 저와 비슷한 상황에 계시는 신입 개발자 분들께 많은 도움과 재미를 줄 수 있다면 좋겠습니다.
입사 0개월~1개월: 신입 교육
네이버에 신입으로 들어오게 되면 개발직군, 비개발직군 가리지 않고 먼저 1~2달간 신입사원 교육을 받게 됩니다. 이 교육기간 동안에는 전반적인 회사 조직에 대한 소개, 회사 시스템(메일, 메신저, 위키 등) 사용 방법 등에 대해서 배우게 됩니다. 얼핏 들으면 무거운 주제라고 생각할 수도 있지만, 듣고 있으면 재밌는 내용들이 많이 있어서 흥미진진합니다. 회사 내의 어떤 조직들이 어떤 사업들을 펼치고 있는지에서부터 시작하여 네이버 사옥 내에 ‘치카치카룸’이라는 양치할 수 있는 공간이 있다는 사실까지 회사에 대한 재밌는 이야기를 들으면서 회사와 친해지는 과정이라고 생각하시면 좋을 것 같습니다.
신입 교육과정에서 배운 회사에 대한 재밌는 이야기를 하나 공유해드리자면, 네이버라는 큰 회사가 내부적으로는 CIC(Company in Company)라는 보다 작은 형태로 나누어져서 보다 민첩한 의사결정과 보다 책임있는 사업추진을 한다는 사실입니다. 제가 속해있는 스마트스토어플랫폼의 경우에는 쇼핑을 담당하는 Forest CIC에 속하여 있습니다. Forest CIC라는 이름이 붙은 이유는 쇼핑이라는 산업도 구매자, 판매자, 플랫폼 등의 여러 주체들이 숲과 같이 하나의 생태계를 이루고 있어서라고 합니다.
이번 신입 교육과정은 코로나 상황으로 인하여 전 과정이 재택으로 진행되었습니다. 입사 전의 전형(코딩 테스트, 면접)도 전부 비대면으로 진행되어서 저는 입사 첫달을 회사에 한번도 가보지 않고 보내게 되었습니다. 이 글을 읽고 계시는 여러분 중에서는 네이버 입사지원을 하려는 대학생 분들도 계실 것 같은데요. 제가 입사를 하게 된 12월달은 학사일정을 고려하여 최대한 유연하게 교육 스케쥴을 조절할 수 있었다는 점도 참고해주시면 좋을 것 같습니다.
입사 2개월: 개발자 교육 & 부트캠프
2개월 간의 신입사원 교육을 끝마치고 나서는 신입 개발자 교육을 받았습니다. 개발직군 교육은 2주간의 회사 SHARE 시스템을 이용한 기술 교육, 그리고 배운 기술들을 바탕으로 2주 동안 직접 서비스를 만들어보는 부트캠프 두 가지 과정으로 진행되었습니다.
기술 교육은 2주간 5가지의 커리큘럼(FE, BE, iOS, Android, AI/ML)으로 나누어져서 진행되었습니다. 교육기간동안 수강하는 과목들은 공통 과목과 선택 과목으로 나누어져서 각자 필요한 기술들은 추가적으로 수강할 수 있는 형태로 구성되었고 다른 커리큘럼의 과목도 자유롭게 수강할 수 있었습니다. 교육을 진행하는 강사들은 실제로 네이버의 선배 개발자들로 실무를 진행하면서 몸에 쌓인 내공들을 전수받을 수 있었습니다. 교육은 SHARE라는 회사 내의 기술공유플랫폼으로 진행되었습니다. 한가지 덧붙이자면, 교육기간이 끝난 뒤에도 언제든지 SHARE에 접속하여 필요한 기술을 학습하는 것이 가능합니다. 공유하고 싶은 기술이 있다면 SHARE에 자유롭게 공유도 가능하여 개발자로 네이버에 입사하게 된다면 SHARE 등이 기술성장에 큰 도움이 될 것이라고 생각합니다.
2주간의 기술 교육 후에는, 배웠던 기술들을 가지고 신입 개발자들끼리 팀을 만들어 2주동안 서비스를 만들어보는 부트캠프가 진행되었습니다. 저희 팀은 백엔드 팀으로 안드로이드 팀에서 만드는 메신저 앱을 위한 서버를 개발하였습니다. 백문이 불여일견이고, 백견이 불여일행이라는 말처럼 실제로 서비스를 만들어보면서 배웠던 기술들을 더 잘 습득할 수 있었고, 팀으로 서비스를 개발하면서 팀워크를 익힐 수 있었습니다. 또한 각 팀에는 선배개발자가 1명 멘토로 참여하여 코드 리뷰 등에 참여해주셨는데 선배 개발자의 멘토링이 저희 신입 개발자들의 성장에 아주 큰 도움이 되었던 것 같습니다.
입사 3개월~4개월: 스마트스토어플랫폼
교육기간이 끝나고 나서는 Forest CIC의 스마트스토어플랫폼의 백엔드 개발을 맡게 되었습니다. 처음 업무를 맡게 되었을 때는 아직 모르는 기술도 많고 서비스 구조도 낯설어서 깊은 혼란에 빠졌던 기억이 납니다. 저희 팀에서 제가 맡았던 업무로 성능테스트 작성과 Sonarqube 설정에 대해서 소개해드리겠습니다. 사용자의 눈에 직접적으로 보이는 부분은 아니지만 서비스의 품질을 위해서는 아주 중요한 작업이라고 생각합니다.
인터넷을 사용하시는 분들이라면 서버에 부하가 너무 많이 몰려 서비스를 이용할 수 없게 되는 상황을 한번쯤은 경험해보았을 것입니다. 서버에 접속할 수 없게 된다면 서비스의 이용자들은 많은 불편을 느끼게 되고 경우에 따라서는 사업 상의 손해가 발생할 수도 있습니다. 때문에 네이버 쇼핑과 같이 많은 사용자가 이용하는 서비스라면 이런 현상을 미리 대비하여야 합니다.
이와 같이 서버에 부하가 많이 몰려 서비스를 이용할 수 없는 상황을 방지하기 위해 미리 성능 테스트(load testing)를 진행하게 됩니다. 성능 테스트를 통해서 어느 정도의 부하를 감당할 수 있는지 미리 확인이 가능하며 어떤 부분에서 병목 현상이 일어나는지 미리 파악하고 대처함으로써 서비스 품질을 높여줄 수 있습니다.
저희 팀이 성능 테스트에 사용한 프레임워크는 locust라는 오픈소스 프레임워크로, 작성한 테스트에 따라 사용자의 행동을 시뮬레이션하여 서버에 부하를 줄 수 있는 수많은 요청을 만들어줍니다. Locust는 메뚜기라는 뜻을 가진 영어단어라고 합니다. 성능테스트를 하면서 수많은 요청들을 시뮬레이션할 때마다 메뚜기 떼가 생각나면서 이름을 참 잘 지었다라는 생각이 듭니다.
또한 최근에는 저희 팀의 CI(continuous integration) 파이프라인에 정적 분석 기능을 추가하기 위하여 Sonarqube 서버를 구성하였습니다. 소프트웨어 테스팅은 동적 분석(dynamic testing)과 정적 분석(static testing)으로 분류할 수 있는데 동적 분석은 소프트웨어를 실행해보면서 소프트웨어의 문제점이 있는지 확인하는 방법을 말하고, 정적 분석은 직접 실행하지 않고 소스 코드만을 보면서 문제점을 검출해내는 방법을 의미합니다. 이런 테스팅 과정은 보통 CI 파이프라인에 포함시켜서 github에 commit을 하는 순간이나 pull request를 등록하는 순간 등에 자동으로 테스트가 실행되도록 구성됩니다. 이렇게 CI를 통해서 테스트를 자동화시켜놓으면 잘못된 코드들이 유입되는 것을 방지할 수 있기 때문에 코드 퀄리티를 향상시키고 서비스 품질을 개선시키는데 도움이 됩니다.
저희 팀에서는 PMD, Findbugs, CheckStyle, Sonarqube 등의 정적 분석 도구를 사용하고 있습니다. 이와 같은 정적 분석 도구를 사용하면 보안 취약점, 나쁜 주석, 사용되지 않는 변수 등과 같은 코드 상의 잠재적인 문제나 유지보수 상의 문제점들을 미리 발견하여 코드 퀄리티를 향상시킬 수 있습니다. 문제점들을 일찍 발견할 수 있게 된다면 개발이 보다 행복해질 것입니다.
소프트웨어 개발에 있어서 눈에 보이는 기능 개발뿐만이 아니라 테스트, CI/CD 등도 코드 퀄리티와 서비스 품질향상을 위해서는 중요하다는 것을 느낄 수 있었습니다. 이 글을 읽고 계시는 분들도 프로젝트를 하면서 CI/CD를 적극적으로 도입하여 더욱 행복한 개발을 할 수 있으면 좋겠습니다.
입사 후 느낌
위에서 입사 후 어떤 일들이 있었는지 나열식으로 적어보았습니다. 제가 입사하고 회사 생활을 하면서 느낀 좋은 점은 네이버에서는 회사와 함께 개발자도 같이 성장해나갈 수 있는 환경이 갖추어져 있다는 것입니다. 회사 내에서 서로 기술을 공유할 수 있는 SHARE, Meetup, Engineering day 등의 여러 좋은 제도들이 있으며, 회사 내에서 기술 스터디 등도 잘 이루어지고 있습니다. 저도 언젠가 Meetup 등에서 좋은 주제로 발표를 하고 싶다는 소망을 가지고 있습니다.
마치며
지금까지 네이버 Forest CIC 신입 백엔드 개발자로서 혼란한 적응기에 대해서 이야기해보았습니다. 입사 초기에는 정말 혼란했던 것 같은데 최근에는 개발과 회사생활에 재미와 즐거움을 많이 느끼고 있습니다. 위의 내용들이 여러분들께 많은 도움과 재미를 드렸다면 좋겠습니다.