컴퓨터 세계에서 서버와 클라이언트는 무엇인가?
클라이언트(client, 고객님)은 서비스를 사용하는 사용자 혹은 사용자의 단말기 또는 프로그램을 일컫는다.
ex) 단말기의 경우: 데스크탑, 스마트폰, 태블릿, 노트북
프로그램의 경우: 웹 브라우져
서버는(sever) 란 서비스를 제공하는 컴퓨터 혹은 프로그램이다.
ex) 단말기의 경우 : 서버 컴퓨터
프로그램의 경우: 웹 서버
서버와 클라이언트는 관계 내에서 상대적인 역할에 따라 결정된다.
사용자가 클라이언트를 통해 서비스 이용을 위한 상호작용을 하면
클라이언트가 서버에 어떤 결과를 요청(request)하고
서버는 응답(response) 하여 클라이언트 측에 결과를 전송한다.
클라이언트는 응답을 받아 결과를 사용자가 이용할 수 있도록 적절한 방식으로 표현한다.

서비스의 종류 만큼이나 서버 어플리케이션의 종류는 다양하다.
이메일 서비스
-네트워크를 통해 이메일을 주고 받는 서비스(송신하는 서버:SMTP, 수신하는 서버: POP3)
파일전송 서비스
- 내 컴퓨터 윈도우 탐색기와 같은 기능을 다른 컴퓨어에서 사용할 수 있도록 네트워크에서 컴츄터 간에 파일을 전송함
(FTP 서버, FTP 전용 클라이언트앱 설치하여 사용)
원격제어 서비스
- 네트워크를 통해 멀리 떨어진 다른 컴퓨터를 온라인으로연결하여 자신의 컴퓨터 처럼 사용 할 수 있게함( 텔넷 서버, 텔넷 전용 클라이언트앱 설치하여 사용)
온라인 게임 서비스
- 네트워크 상에서 실시간으로 게임을 할 수 있게하는 서비스, 대규모 다중 사용자 온라인 게임의 전용 서버를 구축하여 서비스를 제공함. 사용자는 각 게임 앱 클라이언트로서 설치하여 서버와 소통함
웹서비스
- 웹 페이지라는 문서 형태로 정보를 제공하는 서비스
웹 서버는 각종 정보를 담은 웹페이지를 html 형식으로 클라이언트에게 응답하며 웹브라우져는 이를 돔트리로 파싱하여 파싱하여 렌더링 하여 사용자가 보기 편하게 보여줌
** 서비스들은 발전 결과 대부분 웹페이지 내에서 작동되기도 한다.
웹을 매게로 작동하는 서버 앱을 웹애플리케이션 서버(WAS, Wep Application Server)라고한다.
WAS 는 제공하고자 하는 서비스에 맞게 데이터를 가공하거나 다른 서버와 상호 작용하면서 즉석에서 다양한 서비스 기능을 가진 웹페이지를 만든다. 또한 사용자가 입력한 데이터를 바탕으로 사용자 마다 다른 웹페이지를 만들어 개인화된 웹페이지를 구현한다(ex) 유튜브알고리즘 추천, 최근 검색어, 장바구니, 빅데이터 기반 광고 노출 등(동적 웹페이지)
꿈은 높게 가지랬다고 서버 중에서 내가 유지 보수 하고 싶은 것은 바로 게임 서버이다.
이 난이도 높은 게임 서버가 해야만 하는 서비스는 유저간 동기화, 아이템 시스템, 랭킹 시스템, 몹이나 NPC 인공지능 처리 등 이 있고,
이러한 다수의 게임 시스템을 제공하면서 동시에 많은 유저 수를 감당해야하기에 부담이 크다는 특징이 있다.
C/S 구조로 통신하는 공통점 외에는 게임 서버와 웹서버는 요구하는 서비스 차이로 인해 많은 차이점을 가지고 있다.
대표적으로, 성능 부담으로 인해
게임계는 서버 하나가 아닌 여러 서버 컴퓨터를 두고 기능을 따라 분업 시켜서 가동하고있다.
(게임서버, 동기화서버, NPC 서버, 채팅 서버 등등)
이를 "분산 처리" 라고 한다.
또한 웹과 달리 수많은 유저들이 필드에서 실시간 상호작용이 일어나고 유저들은 그 상호 작용의 결과를 즉시 받아야한다.
이를 위해 서버 메모리 활용이 가능한 '소켓 서버' 를 주로 사용한다.
** 소켓: 클라이언트와 서버가 네트워크에서 데이터를 주고 받을 수 있도록 네트워크 환경에 연결할 수 있게 만들어진 (프로토콜) 창구
<유형>
** UDP: 빠르긴 하지만 데이터의 순서나 정확성이 보장되지 않음
** TCP: 안정성있음, 데이터가 순서대로 전송되며 정확성이 보장
그러나 의외로 웹 서버를 게임에도 사용할 수 있다. 다수 사용자간 상호작용 비중이 낮고 속도가 중요 치 않다면 사용이 가능하며 둘 중 한가지만 쓰기보다는 둘을 적절히 배치해서 섞어쓴다.
| 소켓 서버(Soket 통신) | 웹서버(HTTP 프로토콜 통신) |
| MMORPG ,MOFPS 등 실시간 게임에 사용 | 실시간성 없 게임에 사용 |
| 빠른 응답속도 | 소켓서버 만큼 빠를 수가 없음 |
| 서버 메모리에 데이터를 취급하고 실시간으로 처리한다. | 서버 메모리에 데이터 취급 X, 매번 DB로 배달다녀옴 |
| 멀티스레드 | 모노스레드 |
| 메모리 이슈로 서버를 늘리는 수평적 확장이 어렵다. | 메모리에 데이터 없어서 웹서버 늘리기 편함 |
| 양방향 데이터 전달 (클라이언트가 요청해도 서버가 응답안할 수 있고 요청 안했는데 서버에서 데이터가 날라올 수 있음) |
단방향 데이터 전달 (클라이언트가 요청 할 때 서버에서 응답 돌아옴) |
그런데 이제 웹서버로 꾸역꾸역 게임 개발 하는 것도 다 옛말이다.
HTML5 표준 기술로, TCP 통신 벙법을 이용하여
기존 HTTP 프로토콜로 통신하던 웹서버의 단점을 보안하는 "웹 소켓" 방식이 등장했다.
| 웹 소켓(WS 프로토콜) |
| 양방향 통신 지원 |
| 한 번 연결 후 연결 유지 |
| 실시간 통신 |
그러나 이런 웹 소켓 기술은 비교적 최신 방법이기에
HTML5 이전 기술로 만들어진 서비스에선 적용할 수 없다는 아쉬운점이 있기도 하다.
결론)
1. 클라이언트 - 서버 구조(C/S model)은 네트워크 환경에서 클라이언트(사용자가 이용하는 단말기 혹은 프로그램)가 요청하면 서버(서비스를 제공하는 컴퓨터 혹은 프로그램)에서 응답을 하는 방법으로 서비스를 제공하는 구조이다.
2. 서버는 서비스 종류 만큼이나 다양하며 그 중 게임 서버는 많은 사용자 간의 상호작용과 통신 속도를 견디기 위해 '소켓 서버'를 주로 사용하며 성능 과부화를 막기 위해 '분산처리'를 시행한다.
3. 한 게임 내에서도 실시간 기능, 즉각적인 데이터 응답이 필요없는 부분은 웹서버로 구현해서 섞어쓰기도 한다.(로그인이나 결제 페이지 등)
4. HTML5 이후 웹소켓 방법이 개발되어 웹 서버 환경에서 양방향 통신과 실시간 통신 기능을 구현할 수 있게 됐다.
'미분류 과제물(미완성 포함)' 카테고리의 다른 글
| 프로그래밍 교양: OSI 4층 전송계층 (3) | 2024.09.18 |
|---|---|
| 미니풋살 게임 와이어 프레임 (0) | 2024.09.13 |
| 프로그래밍 교양(4): 2층 데이터 링크계층 (0) | 2024.09.04 |
| 프로그래밍 교양(3) OSI 7계층 - 1층 물리계층 (0) | 2024.09.01 |
| 프로그래밍 교양(2) :OSI 7계층 (0) | 2024.08.29 |