잡담 코딩

백엔드와 프론트엔드, 그리고 풀스택 “나는 어떤 개발자가 될 것인가”

코딩의 문턱에서 가장 먼저 해야할 질문은 ‘어떤 언어를 사용할 것인가?’가 아니다. 그보다 더 본질적인 질문이 있다. “자신은 어떤 개발자가 되고 싶은가?”다. 철학적인 질문처럼 보이지만, 사실 기술적인 질문이다. 여기에는 세 가지의 답이 존재한다. 백엔드(Back-end), 프론트엔드(Front-end), 그리고 풀스택(Full-stack). 최근 개발자 채용 공고를 보면 C++, java, python 등 사용할 기반 언어를 공고함과 동시에 백엔드와 프론트엔드 개발자를 구분해 모집하는 추세다. 그만큼 중요한 개념으로 자리잡고 있다. 어려운 개념은 아니다. 쉽게 백엔드는 개발에 있어 ‘보이지 않는 부분’, 프론트엔드는 ‘보이는 부분’ 다루는 기술자라 보면 된다. 그리고 풀스택은 이 두 가지를 동시에 할 수 있는 그야말로 ‘능력자’를 지칭하는 용어다.

좀 더 자세하게 설명하면, 백엔드 개발자는 데이터를 처리하는 사람이다. 네이버에 로그인 하는 과정을 떠올려보자. 우리는 사이트에 방문해 자신의 아이디와 패스워드를 입력한다. 그리고 잘못 입력하면 로그인이 거부되는 경험도 한다. 이런 확인이 가능하기 위해서는 기본적으로 네이버에 내가 입력한 정보가 웹서버 DB에 있어야 한다. 그리고 로그인 창에 입력한 정보가 해당 DB로 전송돼 기존 정보와 입력한 정보가 상이한 지를 비교해야 한다. 이같은 프로세스는 사용자의 눈에 보이지 않는다.  이게 백엔드 개발자가 담당하는 일이다.

AAEAAQAAAAAAAAbmAAAAJGE3MmNmOGNhLTkzMGYtNDNmOS05MzQzLWY3NDExZGNhZTA5YQ

반면 프론트 엔드 개발자는 로그인 폼의 디자인과 구성, 배치 등을 담당한다. 사용자가 로그인 창에 자신의 패스워드를 입력했을 떄 ‘*’ 보일 건지, 아니면 ‘x’로 보일 것인지도 프론트 엔드 개발자의 역할이다. 또한 백엔드로 부터 받은 정보가 사용자가 입력한 정보와 상이했을 때 어떻게 오류 화면에 보여줄 것인지에 대한 정보도 프론트 엔드 개발자가 한다. 여기에는 웹디자인 뿐 아니라 기능적인 측면까지 고려돼야 한다. 최근 단순 웹디자인을 넘어 사용자 경험까지 축적해 최상의 서비스를 제공하는 UX가 각광 받으면서 프론트 엔드가 부상하고 있다.

앞서 말한 것과 같이 풀스택 개발자는 백엔드와 프론트엔드 개발이 동시에 가능한 사람을 일컫는 용어다. 같은 개발자이지만 확연하게 다른 감각을 요구하다 보니 곱절의 노력이 필요하다. 당연히 대우도 다르다. 직관과 일관이 중요한 개발 영역에서 효율성까지 갖춘 경우다. (다만 본인은 힘들다) 따라서 연봉도 높게 책정돼 있다.

개발 영역이 다른 만큼, 백엔드와 프론트엔드 각각 사용하는 언어도 다르다. 백엔드는 웹서버 구축과 관리에 관여해야 하는 만큼 JSP나 JAVA, MySQL, PHP 등이 있다. 프론트엔드는 HTML5, CSS, JAVA sccript 등의 언어가 활발하게 쓰이고 있는 상황이다. 자신의 취향에 맞는 개발 영역을 고르고, 언어를 선택하는 게 맞다. 하지만 장기적으로 두 개 영역을 동시에 배우는 게 좀 더 좋지 않을까 생각도 한다. (하나만 해서는 먹고살 수 없다.ㅠ)

되고 싶은 것보다 하고 싶은게 많아요. 어느 순간 둘 중 하나를 선택해야 한다면 하고 싶을 걸 택할 겁니다. 삶은 짧고, 불확실하니까.