백엔드 개발자를 꿈꾸는 학생개발자에게 - 1

4 minute read

  • 백엔드 개발자가 되기 위한 진로 이야기, 필요한 지식, 그리고 네이버에서 백엔드 개발자로서의 경험 등 학생 개발자에게 도움이 될 다양한 내용으로 구성

백엔드 개발자의 진로

Q. 백엔드 개발자는 현업에서 실제 무슨 일을 하고 어떤 일을 할 수 있나요?

  • ‘백엔드 개발자’가 담당하는 일은 범위가 넓다.
    • 사용자에게 보이는 웹 어플리케이션 개발
    • 데이터 분석을 위한 엔지니어링, 분산파일시스템, DBMS와 같은 제품을 개발
    • ‘웹 프런트엔드 개발자’, ‘모바일앱(iOS/Android) 개발자’ 에 비하면 그 대상이나 하는 일이 상대적으로 모호하다.
    • 어플리케이션을 개발하는 백엔드 개발자는 프로젝트에 따라서는 서버관리, DB관리, 프런트엔드 개발까지 모두 담당하기도 한
      • 현대 야구가 발전하면서 선발/중간/마무리 투수가 구별된 것처럼 이전에는 백엔드 개발자가 다 하던 일이 분업화된 영역도 있다.
  • 폭넓은 기술을 접할 수 있는 역할을 수행한다.
    • SE(System engineer), FE(Front End) 등 인접한 분야의 개발자와 소통할 기회가 많다.
      • 시스템 엔지니어링은 어떤 업무? 개발자랑 다른 업무인가?
        • 스크립트 작성, 로그 분석, 서버용 툴/클라이언트 툴 개발, Nagios 플러그인 스크립트 생성, 파싱(Parsing), 테이블 프로시저 수정, 스케줄 등록 등등
        • 시스템 엔지니어가 회사에서 어떤 일을 하는지, 어떤 자격과 기술이 필요한지 간략히 써 있어서 읽다보면 본인이 무엇을 준비해야 하는지도 알 수 있다.
          • 예시 : 이스트소프트 2015 하반기 공채에 올렸던 시스템 엔지니어 모집 공고
          • image
          • image
        • 개발자의 세부 직무가 아니라 아예 다른 직종인 것 같다.
  • 특화된 분야의 전문가로 성장하더라도 어플리케이션을 잘 개발하는 능력은 중요하다.
    • 예를 들어, 대용량 데이터를 다루는 데이터 엔지니어링을 개발시키는 경우라도 어플리케이션 개발에 플러스 알파적 요소로서 작용해야한다는 말이다.
    • 다른 개발자가 사용하는 플랫폼이나 라이브러리의 개발도 어플리케이션 개발의 특성을 이해해야 적용하기가 편리한 인터페이스를 설계할 수 있습니다.
  • 대용량 데이터 분석이나 처리를 담당하는 개발자라도 업무 효율화를 위해 모니터링, 관리 도구를 만들어야 할 때도 있다. 따라서, 깊이 있는 전문분야와 함께 어플리케이션 개발 능력을 갖춘다면 더욱 유능한 개발자가 될 수 있다.

백엔드 개발자의 보람과 고충

Q. 백엔드 개발을 할 때 가장 어려운 점과 백엔드 개발을 하면서 느낀 매력은 무엇인가요?

  • 개발 프로젝트 팀을 음악 밴드에 비유하자면
    • 인프라 담당자와 백엔드 개발자 -> 드럼이나 베이스 기타
    • 프런트엔드 개발자 -> 보컬이나 퍼스트 기타와 비슷하게 느껴집니다.
  • 무대에서 주목받고 찬사를 받기 쉬운 쪽은 보컬이지만 베이스와 드럼이 안정적으로 뒷받침하지 못하면 좋은 공연이 나올 수 없다.
  • 보람 : 백엔드 개발자는 시스템을 안정적이고 효율적으로 만들 때 보람을 느낀다.
    • 사용자가 갑자기 몰려와도 에러 없이 서버 프로그램이 실행될 때
    • 성능을 획기적으로 개선했을 때, 모듈의 구조를 개선해서 코드를 많이 줄였을 때
    • 문제가 생기지 않을 때에는 겉으로 잘 드러나지 않는 영역일 수도 있다. 내면적인 부분까지 완성도를 추구하는 사람이 백엔드 개발을 하기에 더욱 적합하다.
  • 고충 : 서버 프로그램은 24시간 실행된다는 점이 백엔드 개발자들에게는 고충이기도 하다.
    • 긴급한 상황에 대비하기 위해서 노트북 컴퓨터를 항상 가지고 다니는 사람이 많다.
    • 회식자리에서도 노트북을 켜고 장애 상황에 대응하는 경우도 있다.
    • 그런 부담을 줄이기 위해서 규모가 큰 서비스에서는 당번(oncall)을 정해서 통상적인 휴식 시간대에는 돌아가면서 대응을 하기도 한다.

백엔드 개발자의 향후전망

Q1. 다양한 도구와 프레임워크가 개발되고 있는 상황에서 백엔드 개발자의 미래는 어떻게 될지 백엔드 개발에 어떤 비전이 있다고 생각하시나요?

  • 새로운 도구와 프레임워크로 인해 개발자의 수요나 가치가 하락하지 않을까 하는 우려도 있으나 현장에서 느껴지는 바로는 우리가 해야할 과제가 늘어가는 속도에 비하면 도구 등에 의한 생산성 증가 속도는 오히려 느리다고 느껴진다고 한다.
    • 새로운 시스템에 대한 수요와 유지 보수할 기존의 시스템도 늘어만 간다는 느낌이다.
  • 혁신에 투자할 수 있는 여력을 가진 사회라면 S/W개발자에 대한 투자는 계속 증가할 것이라고 전망한다.
  • 새로운 도구/프레임워크는 기존의 문제를 해결하고 개선하기 위해 나온 것이므로, 기존의 기술을 쓰면서 깊이 있는 고민을 한 사람이라면 새로운 도구에 더 빨리 적응하고 응용할 수 있을 것이다.
    • 따라서 새로운 도구와 프레임워크들도 기존의 개발자에게 더 큰 기회가 될 수도 있다.
  • 다만 개발 분야에 따라서는 흥망성쇄가 엇갈릴 수도 있다.
    • 예를 들면 이전에는 Flash기반의 UI개발에 대한 수요가 많았다. 하지만 HTML 내부에서 화려한 UI를 구현할 수 있도록 기술환경이 변화되면서 이전만큼 Flash 개발자를 찾지 않게 되었다. 모바일에서 Symbian OS를 바탕으로 개발을 했던 분들 익숙했던 개발플랫폼이 저물어가는 모습을 지켜봐야 했다.
    • 그러나, 지금까지는 개발자에 대한 수요가 계속 늘었기에, 개발분야를 바꿀 수 있는 기회도 많았다. 기존 기술을 깊이 있게 이해한 분들은 새로운 환경에서도 뛰어난 개발자로 정착하는 모습을 많이 봤습니다.
    • Flash에서 사용하는 ActionScript를 잘 쓸 수 있었던 개발자들이 웹FE개발자로 전환하는 경우는 많다.
    • Android 초창기에는 같은 Java 언어를 썼던 서버개발자보다 FE개발자 출신 분들이 훨씬 빠르게 적응한다는 이야기를 들었다 -> UI에 대한 패턴, 프로그래밍 모델들은 기존에 FE 개발을 하신 분들에게 익숙한 것이었기 때문이다.
  • 기존에 있던 개발 분야들도 깊게 발전하면서 이전에 없던 전담자가 생기고 있다. 하지만 한번 맡은 분야를 끝까지 담당한다는 보장은 없다.
    • 실무에서는 갑자기 새로운 업무가 필요해졌을 때 사람이 채용될 때까지 기다릴 수도 없습니다. 그래서 새로운 개발분야에 적응할 수 있는 역량은 키워두는 것이 좋다.
  • 백엔드 개발은 여러 분야와 연결되기에 그런 면에서 무난한 선택이다.
  • 포용하는 분야가 많고, 이론과 실무경험이 잘 조화될 수 있기 때문이다.
  • RDB, TCP/IP, OS, 통계 등의 바탕이 되는 지식들은 몇십 년 전부터 축적되면서 발전된 것들이다. 그래서 실무에 들어가기 전에 학교에서부터 준비할 수 있는 지식이 많기도 하다.

Q2. 머신러닝이나 빅데이터 기술의 발달이 백엔드 개발에 어떤 영향을 미칠 것으로 예상되나요?

  • 해당 분야들은 급격한 수요 증가로 인해 여러 방면으로 전문가를 수혈중이다.
    • AI같은 분야는 학교에서 이론적으로 준비가 된 분들이 회사에 들어오는 경우가 많아 보인다.
    • 기존에 백엔드 개발을 하시던 분이 해당 서비스의 필요해 의해 해당 분야의 전문가로 성장한 경우도 있다.
  • 백엔드 개발을 하다가 데이터 분석, 모델링 업무에 참여하는 경우도 더 늘어날 것 같다.
  • 이론적인 바탕이 튼튼하더라도 특정 분야에 의미있는 분석/모델링을 하기 위해서는 그 도메인을 이해하는 것이 중요하다.
  • 사용자의 특성을 이해 + 이론적인 깊이 => 더 높은 가치를 가지는 백엔드개발자가 될 수 있다.
  • 직접적으로 분석/모델링을 수행하지 않더라도 많은 백엔드 개발자는 이를 뒷받침하는 개발을 하게 될 것이다. -> 분석/모델링과 어떻게든 연관이 있는 업무를 하게될 것이다.
    • 깊이 있는 데이터 분석을 위해서는 데이터를 단순히 RDB같은 하나의 저장소에 쌓아두는 것만으로는 부족하다.
    • 이전에는 그냥 버렸던 로그성 데이터들도 어떻게 활용할 수 있을지 분석하기 좋게 저장을 할지 고민하게 되었다.
    • 무엇보다 해당하는 서비스가 많은 사용자와 데이터를 받을 정도로 운영되어야 머신러닝 같은 고급기법으로 분석할 만큼 많은 데이터가 쌓일 것이다.
    • 넓게 보면 대용량의 서비스를 개발하는 백엔드 개발자는 AI/빅데이터와 시대의 과제와 맞닿아 있다.

출처