서버(Server)와 클라이언트(Client) 개념이 확립되기 이전 네트워크 통신은
물리적 Peer to Peer ( Point to Point ) ( P2P ) 연결
1960년대 ~ 1970년대
노드(컴퓨터) 간 이더넷 케이블, 직렬 케이블, 전화선 등 물리적인 선을 통해 연결된 형태로
데이터를 주고 받았습니다.
중앙 서버가 없기 때문에
각 노드(컴퓨터)는 동등한 지위로
데이터를 요청하는 클라이언트이면서,
다른 노드(컴퓨터)의 요청에 응답하는 서버 역할도 맡습니다.
ex)
하지만 위와 같은 방식은 여러 단점이 존재하는데,
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. 장애 : 서버 장애를 신속하게 감지하고 대응할 수 있는 시스템을 구축해야한다.
'Network 강의' 카테고리의 다른 글
데이터 링크 계층이란? (0) | 2024.09.01 |
---|---|
물리 계층이란? (0) | 2024.09.01 |
2024년 8월 29일 강의 (멀티 게임 서버의 종류와 동작 방식) (0) | 2024.09.01 |
2024년 8월 27일 강의 및 추가 학습(게임 서버의 역할, 상호 작용, 하는 일, 자격) (0) | 2024.08.28 |
OSI(Open Systems Interconnections) 7 계층이란? (0) | 2024.08.25 |