클라이언트와 서버의 개념은 개발자와 소통할 때 필수적으로 알아야하는 개념입니다.
카카오톡을 예를 들어 설명해보겠습니다.
카카오톡의 새로운 버전을 업데이트 하려고 업데이트 버튼을 클릭하면 카카오톡의 개발자 컴퓨터에서 그 파일을 보내줍니다.
이때 파일을 달라고 요청하는 컴퓨터를 클라이언트, 보내주는 컴퓨터를 서버라고 합니다.

* 클라이언트 컴퓨터
- 클라이언트 컴퓨터는 보통 우리의 스마트폰이나 컴퓨터입니다.
어플을 사용하기 위해 항상 서버컴퓨터쪽으로 무언가를 요청하죠.
- 우리 눈 앞에 있는 컴퓨터이므로 '클라', '프런트엔드', '프론트' 등으로 불리기도 합니다.
- 웹사이트나 앱에서 버튼, 페이지, 그림 등 사용자에게 노출되는 부분으로, 사용자에게서 정보를 획득하여 백엔드로 전송한 후 백엔드의 반응에 따라 사용자에게 표시되는 것을 변경하는 역할을 합니다.
* 서버 컴퓨터
- 클라이언트의 요청에 맞게 처리해주는 컴퓨터를 서버컴퓨터라고 합니다.
- 우리가 볼 수 없는 곳에 위치하므로 '백엔드', '백' 등으로 불리기도 합니다.
- 앱이나 웹사이트에서 사용자가 볼 수 없는 '배후'부분입니다.
예시를 들어서 클라이언트, 서버컴퓨터를 설명해보겠습니다.
쇼핑몰 어플에서 로그인을 하려고 합니다.
이때 사용자쪽인 클라이언트 컴퓨터에서 ID, 비밀번호를 입력하고 로그인 버튼을 클릭합니다.
그러면 서버컴퓨터에서 이 데이터를 받아서 아이디는 존재하는지, 아이디와 비밀번호는 일치하는지 등을 확인하고 그 결과(로그인 성공OR실패)를 다시 클라이언트 컴퓨터쪽으로 보내줍니다.
이런식으로 클라와 서버컴퓨터가 통신을 주고 받습니다.
* 백앤드, 프론트앤드 엔지니어
개발자들도 백앤드, 프론트앤드 엔지니어로 나눌 수 있는데요,
- 백앤드 엔지니어는 데이터베이스와 웹서버를 개발하는 소프트웨어 엔지니어입니다. 예를 들어 페이스북의 백엔드 엔지니어는 페이스북의 슈퍼컴퓨터로 무수히 많은 사진을 저장하고 무수히 많은 일간 방문자를 처리하는 코드를 작성합니다.
- 프론트엔드 엔지니어는 고객이 직접 대면하는 앱과 웹사이트를 개발하는 소프트웨어 엔지니어입니다.
페이스북의 프론트엔드 엔지니어는 페이스북 웹사이트와 앱이 제 기능을 하면서 보기도 좋게 만드는 역할을 담당하죠.
* 데이터는 서버와 클라이언트중 어디 있을까?
정답은 때에 따라 다르다 입니다.
몇가지 예시를 들어 설명해드리겠습니다.

위의 그림에는 알람시계의 시간셋팅 데이터와 어플화면내의 데이터가 나와있습니다.
- 왼쪽의 알림은 인터넷 접속이 끊겨도 제대로 접속하는 것으로 보아 서버에서 데이터를 받아오는 것이 아닌 클라쪽에 데이터가 저장되어있다고 생각할 수 있겠네요.
- 오른쪽 앱내의 'Adobe Premiere Rush CC'라는 데이터는 어디있을까요?
서버에 있습니다. 그 이유는 어떤 스마트폰으로 저 앱을 실행시키더라도 저 글자는 똑같이 보이기 때문이죠.
- 반면 에버노트의 경우는 조금 특이합니다.
에버노트는 클라이언트에 데이터를 놓기 때문에 오프라인 상태에서도 노트를 쓸 수 있지만, 서버에도 데이터를 옮겨놓기 때문에 다른 기기에서도 같은 노트의 내용을 볼 수 있는거죠.
가장 확실하게 데이터의 위치를 확인하고 싶다면 API문서를 보면 됩니다.
그럼 왜 우리는 데이터의 위치를 알아야할까요?
그 이유는 바로 개발자들과의 원활한 소통을 위해서입니다.
어떤 데이터를 바꾸고 싶다면 그 데이터의 위치에 해당하는 곳을 담당하는 개발자에게 요청해야겠죠?
※ 본 포스팅은 최원영님의 '비전공자를 위한 이해할 수 있는 IT지식' 책의 내용 참고하여 작성하였습니다
해당 책 내용을 직접 읽고 쓴 포스팅으로, 책 내용과 다르거나 틀린부분이 있을 수 있습니다.
최근댓글