백엔드(Backend) 개발자가 되기까지(1)

story Feb 18, 2017

3학년 1학기가 끝나고 여름방학의 시작과 함께 의문이 생겼다. 이대로 학교를 졸업하면 취업이나 할 수 있겠냐는 의문이었다. 프로그래밍 관련 공부와 UdacityMOOC 강의를 통해서 개발 스택을 쌓으며 취업 준비를 하고 있었지만 뭔지 모르게 불안했다. 아마도 불안함의 이유는 개발자로서 뭔가 이룬 것이 없다는 생각에서 왔던 것 같다.

그런 불안함을 나만 가지고 있는 건 아니었는지 방학 동안 SK PLANET T Academy에서 진행하는 모바일 서버 프로젝트에 도전해보지 않겠냐는 친구의 연락이 왔다. 자세히 알아보니 서류와 면접으로 이루어진 두 가지 전형이 있었고, 서류 전형에는 간단한 Java 테스트도 있었다. 서류 전형을 합격하고 서울대학교 내부에 있는 SK Telecom 연구소에서 면접 일정이 잡혔다. 면접에서는

  • 여태까지 진행 해 본 프로젝트 중 가장 볼륨이 큰 프로젝트는 무엇이었는지?
  • HTTP 프로토콜에 대해서 설명해라.
  • 데이터베이스ACID를 설명해라.
  • 납기와 품질 중에 무엇이 더 중요한가?

이런 질문들이 있었던 거 같다. 면접 전형도 잘 마무리되고 합격 연락을 받고 서울로 올라갔다. 두 달 정도 지낼 곳이 없었기에 고시텔에서 생활했다. 모바일 서버 프로젝트는 교육 한 달 + 프로젝트 한 달로 이루어진 프로그램이었다. 교육 한 달 동안에는 데이터베이스 모델링, JavaScript, Node.js, Jade templete Engine, 개발 프로세스 등을 배웠다. JSON이라는 데이터 포맷과 백엔드(Back-end)라는 말도 그 때 처음 들어봤다. 데이터베이스 모델링은 들으면 어느정도 따라갔는데 Node.js는 따라 하면서도 내가 뭘 하는지 몰랐다. 교육만으로는 부족함을 느꼈기 때문에 고시텔에서 계속 공부했다. 사실 모든 개념이 처음이라 공부를 계속해도 진전이 없었다. 그래도 익숙해지기 위해 주말에는 강남 교보문고에 가서 Node.js 책 사서 읽고, 카페에서 따라 치며 시간을 보냈다.

그렇게 한 달이라는 부족한 시간이 지나고 프로젝트를 위한 팀 빌딩을 시작했다. 팀 빌딩은 기획자가 각자의 프로젝트 주제를 발표하고 그 프로젝트에 흥미가 있는 개발자와 디자이너가 컨택하는 방식이었다. 내가 들어간 곳은 SPA 브랜드 옷의 할인 정보 제공을 주제로 하는 팀이었다. 딱히 패션에 관심이 있지는 않았지만 이 팀이 서버 개발자 2명을 뽑기 때문에 친구랑 함께 들어가면 좋겠다는 생각에 선택했다. 우리 팀은 기획자, 안드로이드 개발자 2명, 아이폰 개발자 1명, 서버 개발자 2명, 디자이너 2명으로 구성이 되었다.

개발 프로세스는 요구사항 -> 설계 -> 구현 -> 테스트 순으로 진행되었다. 본격적으로 개발을 시작하기 전에 설계를 하면서 여러가지를 정의했다. 일단은 기획자의 요구사항 명세서를 통해 데이터베이스를 설계하고 기능을 정의했다. 그리고 클라이언트(안드로이드, 아이폰)와의 통신을 위한 RESTful API 명세서, JSON 명세서 작성을 했다. RESTful API 명세서는 간단하게 말해서 클라이언트와 통신을 위한 API의 집합이다. 다만 APIREST를 따르고 있을 뿐이다. JSON 명세서는 클라이언트가 API로 데이터를 요청할 때 서버에서 응답하는 형태를 정리한 문서이다. 다만 응답하는 데이터의 형태가 JSON으로 구성되어 있을 뿐이다.

개발은 앞에서 정의한 문서를 토대로 구현했다. 교육을 들었다지만 한 달 중에 주말을 제외하고 10일 동안 배운 JavaScriptNode.js를 써먹으려니 앞이 막막했다. 이 두려움은 아직 익숙하지 않은 language skill과 각자의 포지션에서 자신이 해내지 못하면 앱을 출시할 수 없다는 부담감 때문이었을 것이다.

RESTful API 명세서를 작성했을 때, 30개 정도의 API가 나왔는데 Node.js에 익숙해지기 전까지 새벽 3시 ~ 4시쯤 잠들었다. Node.js에 익숙해지고 나서는 API를 만드는 것에 속도도 붙었고 두려움도 극복했다. 그러나 API를 만드는 것 뿐만 아니라 클라이언트와 해결해야 할 문제가 한 두 가지 있었다. 예를 들면 세션 문제라든지 그리고 세션 문제라든지. API는 완성되었지만 세션 문제가 해결되지 않아 안드로이드 버전은 출시하지 못했고 iOS 버전만 출시할 수 있었다.

그렇게 성공적(?)으로 프로젝트를 마칠 수 있었던 나는 앱스토어에 앱을 출시할 수 있었고, SK PLANET에서 발급하는 Node.js 전문가 인증서와 모바일 서버 프로젝트 수료증을 받았다. 그리고 방학이 끝나기 하루 전, 나는 부산으로 내려왔다.

지금 생각해보면 앞의 두 달이 내 개발자 라이프 중에 많은 변화를 가져왔다. 개발 프로세스와 각자의 맡은 포지션을 프로젝트를 통해 수행하는 방법도 알게 되었으며, 백엔드(Back-end)에 관심을 가지게 된 계기도 되었다. 또한 약 반년 뒤, 자신감을 가지고 부산의 스타트업에 입사하는 계기가 된다. 이 이야기는 다음 편에 계속.

혹시 이 글을 읽는 분이 백엔드 개발 공부를 생각하고 있다면 책도 좋지만 주위에 개발하는 친구나 선후배와 함께 무엇이든 만들어보라고 이야기해주고 싶다. 실제로 만들어보면서 겪는 시행착오는 그 어떤 경험이랑 비교할 수 없는 것 같다.

위에서 말한 스타트업 입사 이야기는 2편에서 작성할 예정이다.

cherrypick

체리픽이라는 단어 본연의 뜻은 안 좋은 의미이지만 저는 트렌디하고 많은 기술을 공부하고 내 거로 만들자는 뜻을 가지고 사용하고 있습니다.