클라이언트 (Client) / 서버 (Server) 가 뭔가요?
오늘은 먼저 프론트엔드/백엔드만큼 자주 듣는 용어인 클라이언트(client)와 서버(server)에 대해 이야기해보고자 합니다.
프론트엔드/백엔드만큼 자주 듣는 용어는 클라이언트(client)와 서버(server)입니다.
클라이언트는 서버에 요청을 하는 주체이며, 서버는 응답을 내려주는 주체인데요,,,
이렇게만 들으면 "그래서 그게 뭔데?" 싶을 것 같습니다.
일단 다시 네이버 예시로 돌아와봅시다. (가장 만만한..ㅎㅎ)
네이버라는 서비스를 사용하기 위해 사용자는 보통 로그인을 할텐데요,
로그인을 하기 위해서 사용자는 ID, 비밀번호를 입력하고 ‘로그인’이라는 버튼을 누릅니다.
이 때 실제로 서비스 뒤에서는 사용자가 로그인 버튼을 누를 때 클라이언트는 서버에게 사용자의 ID, 비밀번호 정보를 토대로 사용자를 정상적으로 로그인을 시켜줄지 판단을 하고, 이에 대해 응답을 클라이언트로 다시 전달해줍니다.
사용자가 비밀번호를 잘못 입력했을 경우, 정상적으로 로그인이 되면 안되기 때문에 아래와 같은 오류 문구 노출이 필요합니다. 내 컴퓨터의 웹 브라우저만으로는 이를 알 수 없고, 뒤에서 서버가 로그인을 시켜줄지 여부에 대해 알려줘야 합니다. 이 시나리오에서 PC웹 브라우저는 클라이언트인데요, 클라이언트는 사용자와 직접 인터랙션을 하며 서버에게 사용자가 요청한 사항을 서버로 전달하고, 서버에게 응답을 받아 다시 해당 응답을 사용자에게 전달해준다고 보시면 됩니다.
서버를 단순히 응답을 내려주는 주체라고 정의하기에는 너무 단순한 표현이 아닐까 싶기도 한데요,
서버는 애플리케이션을 실행하고, 데이터를 저장 및 처리하는 등의 작업을 수행해주기 때문에 실제로 카카오톡 등 특정 서비스에서 오류가 있을 때 ‘서버가 다운되었다’이라는 표현을 들을 수 있습니다.
예를 들면, 카카오 데이터센터 화재가 큰 이슈였던 것도 데이터센터가 바로 서버 보유고이기 때문이고 해당 데이터센터의 서버들이 화재로 인해 정상적으로 작동하지 못해 서비스 전반적으로 기능을 하지 못했습니다.
지금까지는 개념적인 부분이고 실전은 아래와 같습니다. (기획자가 이해한 근본 없는 클라/서버의 개념 설명이라고 보시면 될 것 같습니다..ㅎㅎ)
더 쉽게 생각하면 사실 클라이언트는 Mobile / PC (더 세부적으로는 iOS, Mac OS, Android 등등) 와 같은 사용자가 보는 화면 쪽이고, 서버는 사용자가 요청/입력을 한 사항에 대해 확인 또는 데이터를 응답해주는 뒷단 쪽입니다.
결국,, 이 전편의 프론트엔드, 백엔드의 개념과 유사해지는데요, 실제로 두 개념은 유사하며 어떠한 맥락 속에서 쓰이는지의 차이로만 봐도 될 것 같습니다. 어떻게 사용자와 서비스가 통신하는가의 맥락 속에서는 클라이언트 - 서버라는 단어를, 그리고 소프트웨어를 개발하는 맥락 속에서는 백엔드/프론트엔드 용어를 쓸 것 같은데요, 실제 기획자의 일상 속에서는 프론트엔드 - 클라이언트, 백엔드 - 서버는 혼용해서 쓰는 경우가 많습니다.
오늘도 최대한 쉽게 설명을 하고 싶었으나, 결국 머리가 지끈지끈한 재미없는 내용이 되지 않았나 아쉬움이 남는데요,, 그럼에도 쉽게 굴복하지 않고..
다음 편에는 실제로 프론트엔드, 백엔드의 통신을 API 개념과 함께 더 깊이 있게 공부해보겠습니다.