Fast campus School

웹 프로그래밍 Node.js 웹 프로그래밍

[어디에도 없는 진짜 스타트업 이야기] 백엔드 개발자

어디에도 없는 진짜 스타트업 이야기

2017.03.15 | 9709 명 읽음



'업계 유일의 채용 매니저'인 패스트캠퍼스의 강종무 매니저의 특기는 게임, 취미는 세미나 셔틀 돌기입니다. 관심사가 생기면 전문성을 쌓기위해 무서운 '덕심'을 발휘해 공부하죠. 그가 스타트업, 그리고 스타트업 취업에 대해 뼛속 깊은 경험에서 우러나온 조언을 해주겠다 나섰습니다. 


스타트업에서 필요로 하는 각각의 직군들이 무슨 일을 하는지, 스타트업들은 이러한 개발자들을 왜 필요로 하는지, 각각의 분야에서 좋은 개발자가 되려면 무엇을 잘해야 하는지 등 실질적인 스타트업 취업 준비에 필요한 내용들을 다룰 예정입니다. 그 첫 번째 순서로는 백엔드 개발자!!! 라고 말을 해도 "그게 뭐야?"라고 하실 분들도 많으실 텐데요.. 그래서 개발자에 대해서부터 차근차근 알아보도록 하죠!




# 개발자는 스타트업의 꽃이다.


개발자는 프로그래머라고도 부릅니다. PC를 통해 보는 웹 사이트나 스마트폰에서 쓰는 애플리케이션을 만들기도 하고, 기계가 움직이는 프로그램을 짜기도 합니다. 게임을 만드는 사람 역시도 개발자입니다(보통 게임 개발자라고 부르죠). 그 개발자가 어떤 프로그램을 만드느냐에 따라 어떤 개발자인지 구분이 됩니다. 



여러분이 흔히 사용하는 '네이버'나 '카톡' 역시도 다 개발자가 만든 프로그램들인데요. 아이폰용 카톡이라면 'iOS 앱 개발자'의 작품이고, 갤럭시의 카톡이라면 '안드로이드 앱 개발자'의 결과물입니다. PC용 카톡을 만드는 사람들은 '소프트웨어 개발자'라고 부르고요. 네이버 메인을 만드는 사람들은 '프론트엔드 개발자'라고 부릅니다.


네이버 메인을 통해 들어가 볼 수 있는 각종 기사나, 웹툰, 이메일, 카페 게시물 등은 '서버'라는 곳에 저장이 되어 있는데요. 이 서버에 정보를 저장하고 꺼내오는 논리를 만드는 개발자를 '백엔드 개발자'라고 부릅니다. 네이버라는 웹 사이트에서 여러분이 보시는 화면을 그 사이트의 앞쪽 끝(Front-end)로 보고, 그 화면에서 볼 수 있는 자료들을 저장해 놓은 서버를 그 사이트의 뒤쪽 끝(Back-end)로 구분해서 프론트엔드/백엔드 개발자로 부르는 것이지요. 




#백엔드 개발자는 원하는 자료를 서버에서 불러다 줍니다


물론 여러분들이 스마트폰으로 카톡을 하고, 메일을 보내고, 웹툰을 볼 때도 모두 그 데이터들이 저장된 서버가 필요합니다. 웹툰을 컴퓨터로 보나 스마트폰으로 보나 똑같은 웹툰이잖아요? 다 같은 서버에 저장되어 있는 거랍니다. 이 데이터들을 아이폰에서 볼 수 있게 꺼내오는 사람이 iOS 앱 개발자이고, 갤럭시에서 볼 수 있게 꺼내오는 사람이 안드로이드 앱 개발자, 컴퓨터에서 볼 수 있게 꺼내오는 사람들이 프론트엔드 개발자가 되는 것입니다. 앱을 만드는 회사도, 웹을 만드는 회사도, 심지어 웹도 앱도 안 만드는 회사라도 사내 인트라넷 구축에 백엔드 개발자가 필요합니다! 백엔드 개발자로 스타트업 취업을 준비하면 취업은 따놓은 당상이겠죠?



자, 이제 백엔드 개발자에 대해서 감이 조금 오셨으면 본격적으로 백엔드 개발자에 대해 알아보도록 하겠습니다. 백엔드 개발자에게 중요한 역량은 당연히 뛰어난 '코딩 실력'!!! 이라고 말씀드리면 화를 내시겠죠. 모든 개발자가 당연히 코딩을 잘해야 좋은 개발자로 인정받는 것은 두말할 나위가 없구요. 코딩을 배웠다는 전제하에 어떤 역량이 백엔드 개발자로서 중요한가를 말씀드릴게요. 백엔드 개발자는 전체를 파악하는 역량을 바탕으로 넘치지도 모자라지도 않게 딱 적절한 규모의 서버를 운용하는 것이 중요합니다. 운용되는 데이터에 비해 서버가 지나치게 커지면 비용 부담이 커지고, 서버가 방만하게 운용될 가능성이 높아서 지양해야 하구요. 운용되는 데이터에 비해 서버가 모자라면 서버가 무너지고!!! 사업이 무너지고!!! 고객 불만이 폭주하고!!!!!! 끄악!!! 하는 사태가 벌어지기 때문에 절대적으로 피해야 합니다. 우리의 서비스에 맞는 적절한 서버를 구축하는 것은 사실 해당 스타트업의 사업 플로우를 제대로 다 이해하고, 예측할 수 있는 시각이 없으면 불가능합니다.




# 백엔드 개발자는 개발만 잘 하면 안 됩니다!


백엔드 개발자가 전체적인 시각을 갖춰야 하는 또 다른 이유는, 구축해 놓은 서버에 들어있는 데이터를 사용하는 기기가 워낙 다양하기 때문입니다. 유튜브를 예를 들어볼까요. 유튜브에 어떤 동영상이 하나 있다고 합시다. 어떤 사용자는 이 동영상을 아이폰으로 봅니다. 누구는 랜선이 꼽힌 컴퓨터로 보고, 누구는 와이파이를 잡은 맥북으로 봅니다. 어떤 사람은 갤럭시로, 어떤 사람은 G5로 봅니다. 인터넷 속도도 다르고, 화면 크기도 다르고, 연결된 방식도, 사용하는 브라우저도 모두 다릅니다. 어떤 기기를 사용해도 동영상이 끊기지 않게 볼 수 있도록 하려면 서버에서 데이터를 꺼내기 쉽게 잘 저장해야 하고, 어떤 기기에서 본다!라는 신호가 서버에 도착했을 때 가장 적합한 방식으로 꺼내줄 수 있도록 준비를 해놔야 합니다. 그러려면 다양한 환경을 염두에 둔 서버 구축이 필수겠지요.


예를 들어 유튜브에서 백엔드 개발자는 겉으로 드러나지 않지만 모두가 영상을 볼 수 있게 하는 결정적인 역할을 수행하지요.



자, 그럼 이제는 어떻게 백엔드 개발자가 되어서 스타트업 취업에 도전하기 위해서는 무엇을 배워야 하는지 알아야겠지요. 우선 개발자들은 크게 프레임워크와 개발 언어를 사용해서 프로그램을 개발합니다. 그리고 이 개발을 돕는 여러 툴들을 사용하지요. 여러분이 노트에 연필로 영어로 된 시를 한편 적는다고 생각해봅시다. 개발자들에게 이 과정은 '글'이라는 프로그램을 '시'라는 프레임워크에 맞추어 '영어'라는 개발 언어를 통해 '노트와 연필'이라는 툴을 사용하여 개발하는 과정으로 이해될 수 있습니다. 프로그램의 목적을 효과적으로 달성하기 위한 형식인 프레임워크가 있고, 그 내용은 개발 언어로 채워 넣어야 하며, 이 과정을 돕기 위해 여러 가지 툴들이 존재하는 것이지요. 그럼 어떤 언어와 어떤 프레임워크가 있는지 한 번 알아볼까요?




# 학생들은 어떤 노트와 연필을 쓸지,

백엔드 개발자는 어떤 개발 언어와 프레임워크를 쓸지 고민한다!


백엔드 개발에서 가장 흔한 개발 언어는 'Java' 라는 개발 언어입니다. Java는 안정적이고 편리하지만 시간이 오래 걸리고 무겁기 때문에 제품 생산속도가 중요한 스타트업에서는 더 빠른 개발을 할 수 있는 언어와 프레임워크를 사용합니다.



예를 들어 'Node.js' 라는 프레임워크가 있는데요. 이 프레임워크는 원래 프론트엔드 개발자들이 사용하는 개발 언어인 'JavaScript'를 기반으로 만들어진 프레임워크입니다.. JavaScript를 알고 있는 프론트엔드 개발자들이 조금만 공부해서 Node.js를 배우면 백엔드와 프론트엔드를 모두 만들 수 있게 됩니다. 혼자서 앞과 뒤를 모두 만들 수 있게 되는 거죠. 


또 다른 방법으로는 'Ruby on Rails'라는 개발 언어와 프레임워크가 있습니다. Ruby라는 개발 언어는 가볍고 함축적으로 빠르게 개발을 할 수 있는 것으로 유명한데요. 여기에 잘 맞는 프레임워크가 Rails라 아예 'RoR'로 줄여서 한 몸같이 부르기도 합니다. 스타트업에 걸맞는 속도를 얻은 대신 너무 함축적이라 표현이나 기능에 제한이 있는 편이구요.



마지막으로는 'Python', 'Django'라는 개발 언어와 프레임워크가 있습니다. Python은 원래는 데이터 분석에 좀 더 적합한, 빠르고 간결한 개발 언어로, 지금도 많은 데이터 분석가나 금융공학자들이 선호하는 개발 언어입니다. 근데 이 개발 언어를 사용해서 백엔드를 구축할 수 있도록 만들어진 프레임워크가 Django입니다. 특히나 많은 데이터를 분석하고 관리하는 개발 언어인 Python을 사용한 만큼 다양한 콘텐츠들을 관리하는데 큰 강점을 보여줍니다. 그래서 인스타그램같이 많은 콘텐츠를 담는 서비스나 우리나라의 8%, 스포카, 요기요, 키즈노트와 같이 다종다양한 데이터들을 잔뜩 운용해야 하는 스타트업에서 주로 선호합니다. 그리고 현재 스타트업에서 요구하는 성능적인 측면과 개발 생산성을 만족시키기 때문에 스타트업 취업 준비에 유용한 개발 언어라고 할 수 있습니다.



자, 읽으시다가 어느 순간 혼란에 빠진 분들이 계실 것 같은데요. 단어가 어려워서 그렇지 어려운 내용은 아닙니다. 백엔드 개발이란 어차피 프론트엔드의 요청을 받아 응답을 하는 간단한 구조로 되어있거든요. 잘 넣어놨다가 달랄 때 잘 준다, 이 패턴을 잘 이해하면 언어와 프레임워크는 손에 익히는 문제이므로 큰 고민을 할 필요가 없습니다. 이건 마치 장작을 쪼개는데 도끼를 쓸 건지 전기톱을 쓸 건지에 대한 문제라, 잘라서 장작을 얻는다는 그 원리만 익히면 도구는 문제가 되지 않습니다. 하물며 이제 스타트업 취업 준비를 시작하실 여러분은 잘 선택하여 기술을 쌓으면 되는 문제이지 지금부터 세세한 기술 내용까지 아실 필요는 없습니다. 




[클릭] 백엔드 개발자로 스타트업 취업을 위한 역량을 키우고 싶다면?