[ TERMS 01 ] 클라이언트/서버
1. 클라이언트(Client)/서버(Server)의 정의
클라이언트와 서버는 네트워크를 통해 데이터를 주고받는 소프트웨어 혹은 기계장치를 의미한다. 역할에 따라 서버와 클라이언트는 구분이 되는데 정보를 요청하는 것이 클라이언트, 요청을 받아 정보를 제공하는 것이 서버이다.
2. 클라이언트/서버는 어떻게 접하게 될까?
기상예보 서비스를 예시로 들어 설명하자면, 클라이언트인 사용자가 날씨 정보를 요청하면 서버는 사용자의 위치 또는 사용자가 요청한 위치를 기반으로 날씨 정보를 찾아서 응답한다. 스트리밍, OTT 서비스들도 사용자들이 원하는 콘텐츠를 요청하고 서버는 요청한 콘텐츠에 걸맞는 데이터를 응답한다고 볼 수 있다. 컴퓨터는 네트워크를 통해 많은 정보를 주고받으며 사용자에게 필요한 정보와 콘텐츠를 제공한다. 이러한 일련의 과정을 이해하기 위해서는 클라이언트와 서버를 정확히 알고 있어야 한다.
3. 클라이언트/서버 알아보기
> 개념
- 클라이언트
클라이언트는 서버와 대응되는 개념으로 특정 서비스를 이용하는 사용자(고객)을 뜻한다. 컴퓨터 네트워크에서 고객인 클라이언트는 서버로부터 다양한 데이터를 요청하고 서버가 보내 준 데이터를 처리하여 사용자가 볼 수 있게 한다. 우리가 잘 알고 있는 인터넷 익스플로러, 크롬, 파이어폭스 같은 웹 브라우저가 클라이언트에 해당한다.
- 서버
서버는 컴퓨터 네트워크를 통해 클라이언트로부터 요청받은 데이터를 찾아 다시 넘겨주는 일을 한다. 클라이언트는 보통 윈도우나 IOS 같은 운영체제 위에서 운영되지만 서버는 주로 리눅스 위에서 운영되는 소프트웨어이다.
> 특징
- 1:N관계
기상정보, 스트리밍, OTT를 사용하는 사용자는 무수히 많이 존재한다. 서버는 무수히 많은 사용자, 즉 수많은 클라이언트에게 정보를 제공하고 있다. 일반적으로 서버와 클라이언트는 일대일(1:1) 관계가 아니라 일 대 다수(1:N)의 관계이다. 클라이언트가 매우 많다면 해당 요청들을 수행할 서버도 여러개로 구성한다. 만약 서버의 수용 가능한 범우리르 초과하여 서버에 과부하가 생기는 것을 '서버가 다운됐다', '서버가 터졌다'라고 표현한다.
- 상황에 따라 바뀌는 역할
소셜로그인의 상황에서 로그인 버튼을 클릭하면 팝업창으로 카카오, 구글, 네이버의 로그인창이 나타나는 것을 본적이 있을것이다. 해당 서비스는 로그인을 위해서 하나의 클라이언트가 되어 해당 소셜 서버에 요청을 보내게 된다. 이처럼 클라이언트와 서버는 고정적인 개념이 아닌 역할적인 개념이며 상황에 따라 관계가 언제든지 바뀔 수 있다.
- 누구나 될 수 있는 서버
클라이언트와 서버는 역할적인 개념이기 때문에 서비스를 제공하기 위한 서버 프로그램을 설치하고 외부에 공개한다면 개인의 노트북이나 데스크톱도 서버가 될 수 있다. 개인이 서버를 운영하게된다면 서비스를 제공하기 위해서 계속 컴퓨터를 켜두어야 하기 때문에 전기세 부담이 있다. 또한 만약 외부적인 요인으로 컴퓨터가 손상을 입는다면 서버에 저장된 모든 데이터가 사라질 수도 있다. 이처럼 개인이 서버를 운영하면 많은 문제가 발생할 수 있으며, 이 위험에 대한 책임은 모두 서버 운영자의 몫이다. 때문에 이런 문제가 발생하지 않도록 대신 관리하고 운영해 주는 호스팅 서비스 업체를 이용하는 경우가 많다. 대표적인 호스팅 업체로는 아마존의 AWS(Amazon Web Services)가 있다.
4. 클라이언트/서버를 알아야 하는 이유
프로그래밍을 공부한다면 클라이언트와 서버의 개념은 확실히 알아야 한다. 웹/앱 프로그래밍이 이루어지는 두 개의 큰 분야가 클라이언트와 서버이고 가장 기초가 되는 개념이기 때문이다. 해당 개념만 알고 있어도 앞으로 자신이 어떤 분야의 개발자가 될지 혹은 어떤 공부를 할지 결정할 수 있다.
5. 클라이언트/서버 더 알아보기
> 프론트엔드
프론트엔드 개발자는 사용자들이 이용하는 클라이언트 프로그램 즉, 웹/앱을 시각화하여 이미지로 구현하는 역할을 수행한다. 사용자가 이용하기 쉽게 웹/앱을 디자인하고 서버로부터 받은 데이터를 시각화하여 보다 나은 서비스를 제공하는 영역을 클라이언트 개발 똔느 프론트엔드 개발이라고 한다.
> 백엔드
백엔드 개발자는 클라이언트 프로그램에 필요한 데이터를 제공하는 서버를 관리하는 역할을 한다. 데이터베이스를 효율적으로 처리하고 관리하는 영역으로 프론트엔드가 눈에 보이는 사용자 즉, 클라이언트 개발 영역이라면 백엔드는 눈에 보이지 않는 서버 측 개발 영역이다. API 작성, 라이브러리 생성, 데이터베이스 관리 등 다양한 활동이 백엔드 영역에 포함되어 있다.
> 풀스택(Full-stack)
백엔드와 프론트엔드 개발 능력을 모두 갖춘 개발자를 풀스텍 개발자라고 한다.
> 함께 알아 두면 좋은 용어
- 네트워크
- 클라우드
- 프록시
- CDN(Content Delivery Network)
'IT 도서 리뷰 > 개발자가 되기 위해 꼭 알아야 하는 IT 용어' 카테고리의 다른 글
[PART5] 운영체제/시스템/보안 - TERMS 15 (0) | 2025.09.10 |
---|---|
[PART5] 운영체제/시스템/보안 - TERMS 14 (0) | 2025.09.04 |
[PART5] 운영체제/시스템/보안 - TERMS 13 (2) | 2025.08.26 |
[PART5] 운영체제/시스템/보안 - TERMS 12 (0) | 2025.08.23 |
[PART5] 운영체제/시스템/보안 - TERMS 11 (1) | 2025.08.11 |