1. 클라이언트
- 사용자가 직접 사용하는 프로그램
- 입력을 받고, 화면과 소리를 출력하는 역할
예시
- 웹: 크롬, 사파리 같은 브라우저
- 게임: 내가 실행한 게임 프로그램(.exe, 앱)
게임 클라이언트 역할
- 키보드, 마우스, 터치 입력 받기
- 입력 정보를 서버에 전달
- 서버 응답을 화면에 표시 (캐릭터 이동, 이펙트, 사운드 등)
대표적인 클라이언트 엔진
- Unity
- 진입 장벽 낮음
- 모바일, 인디 게임에 많이 사용
- Unreal
- 고퀄리티 그래픽
- 대형 게임, 콘솔 게임에 많이 사용
2. 서버
- 사용자가 직접 보지는 않지만, 서비스의 핵심
- 데이터 관리와 최종 판단 담당
웹 서버
- 웹 페이지, 이미지, 데이터 제공
- HTTP / HTTPS 기반 요청-응답
게임 서버
- 실시간 처리 중요
- 여러 유저 상태를 동시에 관리
- 판정 담당
- 공격 성공 여부
- 아이템 획득
- 캐릭터 상태
3. 프로토콜(통신 규칙)
- 서버와 클라이언트가 통신할 때 지키는 약속
종류
- HTTP / HTTPS
- 웹에서 주로 사용
- TCP
- 안정성 중요할 때
- UDP
- 실시간성 중요할 때 (게임에서 자주 사용)
- WebSocket
- 실시간 웹 통신
4. 서버-클라이언트 관계
기본 흐름
- 클라이언트 > 서버: 요청
- 서버 > 클라이언트: 처리 결과 응답
5. 클라이언트-서버 구조
장점
- 서버가 모든 로직을 관리 > 보안, 공정성 좋음
- 멀티플레이 구현에 적합
단점
- 서버 장애 시 서비스 전체 영향
- 운영 비용 발생
6. 서버 구조
단일 서버
- 서버 1대가 모든 역할 담당
- 구조는 단순
- 사용자 많아지면 성능의 한계가 옴
분산 서버
- 역할별로 서버 분리 (로그인, 채팅, 전투 등)
- 대규모 서비스에 적합
- 관리 복잡도가 증가함
7. 서버 확장 방식
수직 확장
- 서버 1대 성능 강화
- CPU, 메모리 업그레이드 등등
수평 확장
- 서버 여러 대로 분산
- 대규모 서비스에서 주로 사용
나의 생각
서버와 클라이언트의 기본 개념이 훨씬 명확해졌다.