
개발하면서 클라이언트와 서버라는 용어를 흔히 듣게 된다.
클라이언트는 서비스를 요청하는 고객이고 서버는 서비스를 제공자라고 보면 된다.
유저가 클라이언트(PC, 스마트폰 등) 기기로 서버에 요청을 보내면 서버는 이에 응답하고 서비스를 제공한다.
웹/앱 개발에서 흔히 볼 수 있는 프론트엔드와 백엔드의 구분 역시 여기에서 나왔다고 볼 수 있는데, 프론트엔드가 클라이언트와 대응되고 백엔드가 서버와 대응된다.
그럼 이 둘의 역할에 대해서 좀 더 자세히 알아보자.
유저가 보게 되는 클라이언트 화면을 구현하는 작업이다.
우리가 웹 사이트에 들어가게 되면 보게되는 모든 요소들은 프론트엔드 개발자가 구현하게 된다.
디자이너가 제공한 시안대로 화면을 구성하고 필요한 정보를 서버에 요청해서 화면에 표시하기도 한다. 업무 특성상 디자이너와 백엔드 개발자와의 소통이 중요하다.
사용자에게는 보이지 않는 뒷단의 서버를 개발하는 작업이다.
프론트엔드(화면)에서 필요한 정보를 제공할 수 있도록 API를 만들어서 프론트엔드에 제공한다.
즉, API 사용법만 프론트엔드 개발자가 알고 있으면 내부의 복잡한 원리를 모르더라도 원하는 정보를 쉽게 불러올 수 있는 것이다.
==============================================================
나는 2년전 게임 클라이언트로 개발에 입문해서 한 개발업체에 입사했다.
주된 업무는 게임엔진으로 UI/UX 디자이너에게서 받은 시안대로 UI를 구현하는 것이었다(신입 개발자는 주로 UI 배치나 개발부터 시작한다).
그러다 웹게임 개발 프로젝트에 참여하게 되었는데 그 때 처음으로 웹 API를 다루게 되었다.
그리고 이때 다른 업체(백엔드 담당)와 협업할 기회가 있었는데 여기에서 서버의 중요성을 깨닫게 되었다.
예를 들어 UI에 사용자의 획득 점수와 클리어 횟수 등을 표시하고 싶은데 제공된 API로 불러왔을 때 제대로 된 정보가 오지 않으면 프로그램이 터지거나 UI에 정보가 이상하게 표기된다.
우리가 개발한 부분에서 생긴 오류가 아니기 때문에 백엔드 개발 업체에게 해당 부분의 수정을 요구해야 했고 이 과정에서 프론트에서 생긴 오류가 아니라는 것을 증명해야 했다.
그런데 아무래도 내가 서버 쪽은 잘 알지 못하다 보니 답답한 일이 많아졌고 언젠가 한번 서버를 공부해야겠다 싶었다.
그러다가 올해 가을쯤에 회사를 나오게 되었고 이 기회에 내가 잘 몰랐던 서버를 공부해봐야겠다는 생각이 들었다.