네트워크
[수강생]
클라이언트, 서버 구조
웹 어플리케이션 서버와 게임 서버의 차이
[튜터]
게임 서버 개발자가 알아야할 것 - 네트워크 중심으로
과제
1. 컴퓨터 세계에서 서버와 클라이언트는 무엇인가?
서버, 클라이언트 각각의 개념과, 서버 클라이언트 구조에 대해 자유롭게 조사해주세요.
컴퓨터 세계에서 서버와 클라이언트는 네트워크 시스템에서 정보를 주고받는 역할을 나누는 개념입니다.
◆ 서버(Server) : 서비스를 제공하는 컴퓨터 또는 프로그램 (service provider)
▶ 클라이언트로부터 요청을 받아 처리하고, 그 결과를 반환하는 일을 합니다.
▶ 특징:
- 데이터 저장, 처리, 관리의 중심 역할.
- 안정성과 고성능 요구.
- 유형: 웹 서버, 데이터베이스 서버, 파일 서버 등.
ex) 웹 페이지를 제공하는 웹 서버(Apache, Nginx), 이메일 데이터를 관리하는 이메일 서버(Gmail, Outlook 서버)
◆ 클라이언트(Client) : 서비스를 요청하고 사용하는 컴퓨터 또는 프로그램 (service user)
▶ 사용자 인터페이스를 제공하고 서버와 통신하는 일을 합니다.
▶ 특징:
- 서버에 데이터를 요청하고, 그 응답을 받아 사용자에게 제공.
- 상대적으로 가벼운 하드웨어와 소프트웨어로 동작.
ex) 웹 브라우저(Chrome, Safari), 메신저 애플리케이션(WhatsApp, Slack)
◆ 서버-클라이언트 구조(Server-Client Architecture) :
서버와 클라이언트 간 데이터를 교환하며 작동하는 네트워크 시스템 구조 입니다.
▶ 동작 원리:
1.클라이언트가 요청(Request)을 전송.
2.서버가 요청을 처리하고 응답(Response)을 반환.
3.클라이언트가 응답 데이터를 표시하거나 추가 처리.
▶ 장점:
- 중앙집중식 관리로 데이터 보안과 유지보수 용이.
- 서버 성능에 따라 클라이언트 수 확장이 가능.
- 데이터 일관성과 무결성 유지 용
▶ 단점:
- 서버에 과부하 발생 시 성능 저하.
- 서버 장애 시 전체 시스템 중단 가능성.
ex) 웹 브라우징: 클라이언트(브라우저) → 서버(웹 서버),
온라인 게임: 클라이언트(플레이어 앱) ↔ 서버(게임 데이터 처리).
◆ 서버-클라이언트 구조의 유형
1. 단일 계층 구조 (1-Tier Architecture)
▶ 모든 작업이 단일 시스템에서 처리.
▶ 장점: 간단한 구성, 낮은 비용.
▶ 단점: 확장성과 복잡한 데이터 처리가 어려움.
ex) 독립 실행형 소프트웨어
2. 이중 계층 구조 (2-Tier Architecture)
▶ 클라이언트와 서버로 분리
▶ 클라이언트는 요청과 표시, 서버는 데이터 처리
ex) 데이터베이스를 사용하는 소규모 애플리케이션
3. 다중 계층 구조 (3-Tier Architecture)
▶ 클라이언트, 응용 서버, 데이터베이스 서버로 구성.
▶ 각 계층이 독립적으로 설계.
▶ 대규모 웹 애플리케이션에 적합.
ex) 전자상거래 플랫폼 (프론트엔드, 백엔드, 데이터베이스).
※ 요약
◆ 서버: 데이터를 제공하는 중심 시스템 (service provider)
◆ 클라이언트: 데이터를 요청하고 사용하는 사용자 인터페이스 (service user)
◆ 서버-클라이언트 구조는 현대 IT 시스템에서 가장 널리 사용되는 설계 방식으로, 확장성, 보안, 유지보수성에서 강점을 보입니다.
◆ 서버-클라이언트 구조 유형
1. 단일 계층 구조 (1-Tier Architecture)
2. 이중 계층 구조 (2-Tier Architecture)
3. 다중 계층 구조 (3-Tier Architecture)
2. 웹 어플리케이션 서버와 게임 서버의 공통점과 차이점은 무엇인가?
어떤 공통점과 차이점이 있는지? 게임 서버에서 중요하게 다루어야 하는 내용은 무엇인지 조사해주세요.
◆ 웹 애플리케이션 서버 vs 게임 서버 특징 비교
항목 | 웹 애플리케이션 서버 | 게임 서버 |
프로토콜 | HTTP/HTTPS 사용 | TCP/UDP, 커스텀 프로토콜 사용 |
통신 상태 | 연결 끊김 후 재요청 (Connectionless, Stateless) | 지속 연결 유지 (실시간 통신 필수) |
응답 속도 요구 | 비교적 낮음 (몇 초 지연 허용) | 매우 높음 (밀리초 단위 응답 필요) |
데이터 변동 | 자주 변하지 않으며 캐싱 활용 가능 | 실시간 데이터 변동, 캐싱 어려움 |
트래픽 특성 | 읽기(Read) 요청이 주를 이룸 | 읽기와 쓰기(Write) 요청 빈번 |
응답 내용 | HTML, CSS, JS 등 정적/동적 콘텐츠 | 바이너리 데이터 (좌표, 상태, 행동 등) |
중요 요소 | 확장성, 사용자 편의성 | 실시간성, 반응 속도, 데이터 무결성 |
요청-응답 구조 | 두 서버 모두 클라이언트 요청을 처리한 뒤 적절한 응답을 반환하는 요청-응답 구조를 따릅니다. | |
데이터 관리 | 사용자 정보를 관리하고 데이터베이스와의 통신을 통해 데이터를 저장하거나 가져옵니다. | |
확장성 | 로드 밸런싱, 클러스터링, 캐싱 등을 활용하여 트래픽 증가에 따라 확장을 지원합니다. | |
보안 기능 | 인증, 권한 부여, 암호화(SSL/TLS)로 사용자 데이터와 시스템 보안을 유지합니다. |
◆ 게임 서버에서 중요하게 다루어야 할 내용
1. 실시간성
▶ 낮은 지연 시간(Latency) : 네트워크 병목 최소화, UDP 활용.
▶ 빠른 데이터 처리 : 연산 최적화 및 서버 부하 관리.
2. 데이터 무결성
▶ 중요 정보 보호 : 정보 손실/중복 방지.
▶ 동기화 : 사용자 간 상태 불일치 방지.
3. 확장성
▶ 분산 서버 구조 : 동접 사용자 증가에 샤딩 및 분산 처리.
▶ 멀티스레드 설계 : CPU 자원 효율화 및 성능 최적화.
4. 보안
▶ 치트 방지(Anti-Cheat) : 클라이언트 부정 행위를 방지, 강력한 보안.
▶ 암호화된 통신 : 도청 및 데이터 변조 방지.
출처 :
클라이언트와 서버 빠르게 개념잡기 : https://velog.io/@jennyfromdeblock/%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8%EC%99%80-%EC%84%9C%EB%B2%84-%EB%B9%A0%EB%A5%B4%EA%B2%8C-%EA%B0%9C%EB%85%90%EC%9E%A1%EA%B8%B0
서버와 클라이언트 란? 웹 어플리케이션 서버와 게임 서버의 공통점과 차이점은 무엇인가?: https://dydgustmdfl1231.tistory.com/35
게임 서버 개발과 웹 서버 개발의 차이 : https://elky84.github.io/2019/03/17/game_server_develop_difference_web_server_develop/
웹 서버와 애플리케이션 서버의 차이점 이해하기 : https://f-lab.kr/insight/understanding-web-and-application-server-differences-20240916
'내일배움 과제 > 기타 과제' 카테고리의 다른 글
알고리즘 19번 - 추가공부 (0) | 2024.11.22 |
---|---|
알고리즘 18번 - 추가공부 (0) | 2024.11.21 |
알고리즘 17번 - 추가공부 (0) | 2024.11.20 |
SQL 7번 (0) | 2024.11.19 |
알고리즘 16번 -추가공부 (1) | 2024.11.19 |