Network 강의

컴퓨터 세계에서 서버와 클라이언트는 무엇인가

kagan-draca 2024. 8. 25. 18:18

서버(Server)와 클라이언트(Client) 개념이 확립되기 이전 네트워크 통신은

 

물리적 Peer to Peer ( Point to Point ) ( P2P ) 연결

 

1960년대 ~ 1970년대

 

노드(컴퓨터) 간 이더넷 케이블, 직렬 케이블, 전화선 등 물리적인 선을 통해 연결된 형태

데이터를 주고 받았습니다.

 

중앙 서버가 없기 때문에

 

각 노드(컴퓨터)는 동등한 지위로

데이터를 요청하는 클라이언트이면서,

다른 노드(컴퓨터)의 요청에 응답하는 서버 역할도 맡습니다.

 

ex)

닌텐도 GB 선을 통한 포켓몬 베틀 및 교환

 

하지만 위와 같은 방식은 여러 단점이 존재하는데,

 

1. 스케일링의 제한 : 네트워크에서 각 노드(컴퓨터)가 서로 직접 연결되야 하기 때문에,

네트워크의 규모가 커질수록 필요한 연결의 수가 기하급수적으로 증가 합니다.

 

ex) n개의 노드(컴퓨터)가 다른 모든 노드(컴퓨터)와 연결된다면

의 연결이 필요 합니다.

 

노드(컴퓨터) : 4개                                 

 

 

2. 복잡한 관리와 유지보수 : 새로운 노드(컴퓨터)를 추가하거나 기존 노드(컴퓨터)를

변경할 때, 모든 관련된 연결을 재설정 해야합니다.

 

3. 신뢰성 부족 : 한 노드(컴퓨터)가 고장, 오류가 발생하면 전체 네트워크에 영향을 줄 수 있다.

 

(그 밖의 여러 단점이 더 존재합니다)

 

add) Point to Point 와 Peer to Peer 차이

 

  Point to Point Peer to Peer
그림
차이점 두 노드(컴퓨터) 간의 연결 여러 노드(컴퓨터) 상에서 두 노드(컴퓨터) 간 연결

 

 

물리적인 Peer to Peer 방식은 위와 같은 단점으로 인해 대규모 네트워크 관리가 불가능하고,

하나하나의 노드(컴퓨터)에 데이터가 존재하기 때문에 중앙 집중식 관리가 불가능 했습니다.

 

그래서,

 

클라이언트 - 서버 네트워크 방식을 도입해

 

중앙 집중화된 자원과 데이터를 관리하고,

클라이언트가 서버를 통해 대규모 네트워크에

연결할 수 있도록 만들어주었습니다.

 

서버(Server)와 클라이언트(Client) 개념

 

  서버(Server) 클라이언트
정의 클라이언트에게
서비스를 제공하는 컴퓨터
서버에게
서비스를 요청하는 컴퓨터 시스템
역할 웹 페이지 호스팅,
파일 저장
데이터 베이스 관리,
웹 사이트 접속,
파일 전송,
파일 다운로드

 

 Server - Client 구조

 

 

 

브라우저 어플리케이션

 

유저(Client)가 브라우저를 더블 클릭할 경우,

브라우저 어플리케이션이 실행되고,

URL에 해당하는 서버(Server)를 인터넷 망에서 찾습니다.

 

ex) www.naver.com 이면, 네이버 서버가 연결 된다.

 

서버에서는 웹 어플리케이션이 동작 합니다.

 

웹 어플리케이션

 

웹 어플리케이션은 데이터 베이스와 연결 돼 있어,

데이터를 가져온 후 유저(Client) 브라우저로 데이터를

보내줍니다.

 

그래서,

 

유저의 Device와 Server는 하드웨어 장치

 

브라우저, 웹 어플리케이션은 프로그램

이라고 생각하면 됩니다.

 

웹 어플리케이션 서버와 게임 서버의 공통점과 차이점은 무엇인가?

 

공통점

1. Client - Server 모델 Client - Server 모델을 따르고,
Client는 Server에게 요청을
Server는 Client의 요청에 응답합니다.
2. 네트워크 통신 네트워크 통신을 통해 서버와 클라이언트가 통신을 하는데,
HTTP, TCP/IP 등의 프로토콜을 사용해 데이터를 전송합니다.
3. 상태 관리 웹 서버는 Client의 세션 정보를 관리,
게임 서버는 게임 상태, 플레이어의 위치, 점수 등을 관리합니다.
4. 데이터 저장 웹 서버는 데이터베이스에 사용자 정보, 콘텐츠 등을 저장하고,
게임 서버는 게임 상태, 플레이어의 진행 상황 등을 저장합니다.
5. 성능 최적화 많은 요청을 효율적으로 처리하고,
응답 속도를 최소화 해야합니다.

 

차이점

  웹 서버 게임 서버
1. 목표와 용도 사용자와 상호작용 하는 로직 처리
ex) 로그인, 데이터베이스 쿼리,
웹 페이지 렌더링 등
실시간 상태 관리, 유저 간 상호작용 처리,
물리 법칙 적용, 실시간 이벤트, 동기화
2. 응답 시간 및 실시간성 응답 시간이 몇 촟 이내여도 상관 없다,
사용자의 요총에 따라 비동기적 처리 가능
응답 시간이 매우 짧아야 한다,
실시간 처리가 필수적이다.
3. 데이터 처리 방식 요청 - 응답 방식 지속적인 상태 업데이트,
동기화 필요(일관성 유지)
4. 스케일링 서버의 수를 늘려서 처리 능력 향상 가능,
로드 밸런서로 서버에 요청을 분산 가능
세션 기반의 스케일링 필요,
게임 세션이나 룸이 각각 다른 서버에서 처리될 수 있으며, 동기화와 분산 처리 문제가 복잡하다.
5. 상태 동기화 상태 동기화가 비교적 단순하며,
클라이언트의 섹션 상태를 유지하는데 중점
상태 동기화가 매우 중요하다.
6. 부하 처리 및 장애 대응 트래픽을 다른 서버로 분산,
캐싱을 활용해 문제 완화 가능
실시간 게임에서 장애 발생 시 
복구하거나 복제하여 장애를 최소화 해야한다.

 

게임 서버에서 중요하게 다뤄야 하는 내용

 

1. 응답 시간 : 밀리초 단위의 지연이 게임 흐름에 큰 영향을 미칠 수 있다.

 

2. 동기화 : 모든 플레이어가 동일한 게임 상태를 공유해야 한다.

 

3. 확장성과 부하 : 서버에 부하가 가지 않도록 수평적인 확장을 할 수 있는 구조와 

로드 밸런서를 사용해 여러 서버에 트래픽을 분산시키고, 서버의 부하를 균형 있게 유지해야 한다.

 

4. 장애 : 서버 장애를 신속하게 감지하고 대응할 수 있는 시스템을 구축해야한다.