-
웹개발, 웹개발자란 무엇일까? 프론트엔드, 백엔드 개발자란?웹 개발 2023. 10. 21. 00:25
웹 개발자, 서버 개발자, 프론트엔드 개발자, 백엔드 개발자 등등 개발자를 지칭하는 단어들을 많이 본 적이 있을 것이다. 처음 개발을 시작했을 때는 사실 내가 어떤 개발자라고 부르는 지도 정확히 몰랐다. 그도 그럴 것이 처음에는 언어는 루비로 루비온레일즈 프레임워크를 사용해 사용자가 사용하는 화면부터 서버 로직까지 모두 다 개발하는 역할이었기 때문이다. 지금부터 내가 느낀 웹개발이란 무엇인지, 프론트엔드, 백엔드가 무엇인지 설명해 보도록 한다. 경험에 의거한 것이기에 다른 사람의 견해와는 차이가 있을 수 있으니 이런 의견도 있구나 하고 생각하셔도 좋다.
서버, 클라이언트란?
서버란 쉽게 생각하면 내가 요청하는 값을 돌려주는 컴퓨터라고 생각하면 된다. 영어로는 server이고 실제로 영어에서 레스토랑에서 음식을 가져오는 사람을 server라고 한다. 클라이언트는 직역하면 고객이다. 레스토랑에서 음식을 주문하는 사람이라고 생각해도 크게 무리는 없다. 가장 대표적인 클라이언트는 웹브라우저라고 생각하면 된다. 웹브라우저는 Chrome, Safari, Firefox 최근에는 웨일, Arc 브라우저 등등이 있다. 그 외에 클라이언트는 윈도우 혹은 맥에서 실행되는 응용프로그램일수도 있고 키오스크 단말기가 될 수도 있다. 여기서 기기(사용자의 컴퓨터, 휴대폰, 키오스크 등)와 프로그램 - 브라우저 - 가 혼용해서 쓰였는데 나는 실제로 혼용해서 써왔기 때문에 구체적인 정의보다는 내가 이해하고 있는 개념으로 설명한다.
웹개발이란?
웹개발이란 브라우저 상에서 동작하는 '웹'이 동작하기 위해 필요한 모든 기술 분야를 의미한다. 지금은 영역이 점점 흐려지고 있지만, 가장 유명한 웹서비스인 구글, 페이스북, 아마존 그리고 한국에서는 네이버, 다음은 전부 브라우저상에서 동작하는 웹에서 시작했다. 특히 과거에는 프론트엔드와 백엔드 구분이 지금만큼 명확하지 않았기 때문에 웹개발자로 뭉뚱그려서 불렀던 관행도 있었던 것 같다.
위 그림을 보면 이해할 수 있는데, 서버에서 모든 정보를 다 처리하는 방법이 대세였던 시기가 있었고 이 경우, 개발자가 서버에서 데이터를 처리하는 기술과 화면에 보여지는 기술 모두 어느정도는 알고있어야 했다. 하지만 클라이언트 성능, chrome 브라우저와 node.js의 발전으로 프론트엔드 프레임워크가 엄청난 속도로 성장하면서 웹브라우저 안에서만 동작하는 기술을 익히는 것 만으로도 전문성이 필요해졌다. 그래서 실제로 채용도 웹 프론트엔드 개발자를 따로 채용하기도 한다.
그래서 서버-클라이언트, 프론트엔드-백엔드 개발자의 차이가 뭐야?
대응되는 두 개념을 엄밀하게 정의하는 것은 역시 위키를 참조하는 편이 좋겠다. 하지만 그 뒤에 ~개발자가 붙어서 실제 사용되는 언어 속에 녹아드는 순간 사전적 의미와 완전히 대응되지는 않는다는 생각이 든다. 내가 느끼기에 서버, 클라이언트 개발자라는 단어는 상대적으로 앱 개발 혹은 게임 개발 쪽에서 많이 쓴다. 왜냐하면 아까 정의한 것처럼 클라이언트는 브라우저 뿐만이 아니라 사용자의 휴대폰, PC 어플리케이션 등등을 통칭하고 있기 때문이다. 그리고 프론트엔드, 백엔드와 같은 경우는 앞에 (웹) 프론트엔드, (웹) 백엔드 같이 앞에 (웹)이 생략되어 있는 느낌이다. 프론트엔드라는 단어 자체가 사용자가 마주하는 모든 인터페이스를 말하고 백엔드는 글자 처럼 사용자 뒤에서 사용자에게 보이지 않는 모든 기술을 통칭한다. 실제로 일도 이렇게 하는데, 사용자가 화면상에서 마주하는 모든 일은 프론트엔드 개발자의 영역이고, 백엔드 개발자의 경우 단순히 서버 뿐만 아니라 서버가 작동하기 위해 필요한 데이터베이스, 클라우드, 배포시스템 같은 영역도 수행해주기를 기대하기 때문이다.
만약 웹개발 예를 들어 javascript 언어로 react 프레임워크로 만들어진 프로젝트를 담당하고 있다면 웹 프론트엔드 개발자다. java/kotlin 언어로 android 앱을 개발 하고 있다면 android 개발자다. 여기서 문제는 최근 기술의 발전으로 인해 하이브리드 앱을 개발하는 개발자도 많다는 것이다. react-native, ionic 등등으로 웹 개발자가 앱에 대해 깊게 알지 못해도 어느정도 작동하는 앱을 만들 수 있게 된 것이다. 그러면 우리는 하이브리드 앱 개발자 라고 구체적으로 말하기도 한다. 그리고 이 모든 영역을 넘나드는 넓은 범위를 가진 개발자들도 있는데 그런 분들은 그냥 자신을 클라이언트 개발자 라고 부르는 것 같다. 게임 같은 경우도 게임 클라이언트 개발자 라고 게임을 앞에 특정해서 부르는 편이다. 그런데 이마저도 게임 클라이언트 개발 기술이 유니티, 언리얼엔진 등등으로 나뉘어서 아예 더 좁혀서 유니티 개발자 라고 부르기도 한다.
서버는 상대적으로 편하다. 서버, 백엔드의 경우 사용자 눈에 보이지 않기 때문에 사실 두 단어가 혼용되는 경우가 많은 것 같다. 서버 뿐만이 아니라 사용자에게 보이지 않는 다른 모든 일을 하는 경우 조금 더 백엔드 라고 자신을 칭하는 편인 것 같다.
이것은 확실한 정의일까?
아니다. 그리고 웹 개발자에게 요구되는 역량의 범위가 어디까지일까? 에 대한 논쟁도 한창이다. 트위터(이제 X라고 불러야겠지) 에서도 주기적으로 사람들이 "그래도 css 정도는 다룰 줄 알아야 개발자" 와 같은 논쟁을 펼친다. 혹은 html과 css만 다루는 퍼블리셔라는 직군은 개발자라고 할 수 있는가? 심지어 요즘은 프론트엔드 개발자가 javascript, html 정도만 알면 되지 css까지 구체적으로 알아야 할까? 하는 논의까지 흘러가기도 한다. 개인적으로는 자신을 특정 직무에 얽매이지 않는 '소프트웨어 개발자'로 정의하기를 좋아한다. 그리고 같이 일하는 팀원들에게 프론트엔드, 백엔드에 크게 얽매이지 않고 업무를 수행해주기를 기대하는 것 같기도 하다. 큰 회사일수록 책임과 권한이 정말 세부적으로 나눠져 있고 한 직무에 요구되는 전문성의 깊이도 상당히 깊기 때문에 이것은 정말 관점의 차이다. 예를 들어 네이버에 하루에 수천만명이 접속하는데, 네이버 홈에서 보여지는 정보를 서버에서 제공하는 것과 화면에서 어떻게 보일 지 모두 다 이해하고 능숙해지기를 요구하는 것은 무리한 요구이고 새로운 개발자를 채용하기도 힘들 수 있다.
개발자의 직무 영역은 개개인이 속한 팀에 따라서 계속해서 변하고 있기 때문에 언제나 논쟁하기 좋은 주제인 것 같다. 최근에는 chatgpt는 물론 클라우드와 sass 서비스들이 워낙에 잘 만들어져 있어서 개발자들이 자신의 일자리를 없애가고 있는 중이라 언젠가는 이런 영역의 구분이 없어지고 나는 chatgpt로 홈페이지 만드는 개발자야 이렇게 부를지도 모르겠다.
'웹 개발' 카테고리의 다른 글
HTML, CSS, Javascript란 무엇일까? (0) 2023.10.27