본문 바로가기
개인공부/Web API 게임 서버 공부

배경지식 - API

by 하고싶은건많은놈 2023. 4. 19.

Web 서버 방식의 게임 서버에서는 Web API를 사용하여 서버를 구축

 

API

Application Programming Interface의 약자로 응용프로그램에서 사용할 수 있도록 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만드는 인터페이스를 뜻함

일종의 규약으로 애플리케이션 개발자들이 다른 애플리케이션을 사용할 수 있도록 표준화된 방법을 제공

즉 프로그램들과 데이터베이스, 기능들의 상호 통신 방법을 규정하고 도와주는 매개체로 사용됨


REST

REpresentational State Transfer의 약자로 웹 기반의 소프트웨어 아키텍처 스타일 중 하나

웹 리소스를 사용하여 클라이언트와 서버 간의 통신을 수행하는 방법을 규정

HTTP URI를 통해 자원(Resource)을 명시하고, HTTP Method를 통해 해당 자원에 대한 CRUD Operation을 적용함

  • 리소스 / 행위 / 표현으로 구성
    • 리소스 : HTTP URI 형태를 가지고있으며 모든 데이터를 고유한 식별자인 URI를 가진 리소스로 표현
    • 행위 : HTTP Method를 사용
    • 표현 : 하나의 자원이 JSON / XML / TEXT 등 여러 형태의 응답으로 나타내질 수 있음
  • HTTP 프로토콜 기반이므로 Stateless 성격을 가짐
  • CRUD Operations
    • Create : 데이터 생성 - POST
    • Read : 데이터 조회 - GET
    • Update : 데이터 수정 - PUT
    • Delete : 데이터 삭제 - DELETE
  • 장점
    • HTTP 프로토콜의 인프라를 그대로 활용할 수 있음
    • HTTP 표준을 따르는 모든 플랫폼에서 사용이 가능하기 때문에 특정 언어나 기술에 종속되지 않음
    • HTTP의 캐싱 기능을 적용하여 서버의 응답을 클라이언트에 저장할 수 있음
    • 다중 계층으로 구성하여 보안, 로드밸런싱, 암호화, 사용자 인증 등을 추가하여 구조상의 유연성을 줄 수 있음
  • 단점
    • REST 자체의 표준이 존재하지 않음
    • 사용할 수 있는 메소드에 제한이 존재

REST API

REST 기반으로 구현한 서비스 API로, 최근에는 API를 제공하는 업체 대부분이 REST API를 제공

일반적으로 REST 아키텍처를 구현하는 서비스를 나타내기 위해 RESTful이라는 용어를 사용하기도 함

  • 이는 공식 용어는 아니며, 단순히 REST를 REST답게 쓰기 위한 REST 원리를 따르는 시스템을 지칭할 때 쓰임
  • REST 원리 - CRUD의 기능을 전부 활용 / URI에 자원과 id 정보만 들어가있어야 함
  • 일관적인 컨벤션을 통한 API의 이해도 및 호환성을 높이는 것이 주 목표이기때문에 반드시 RESTful한 API를 구현할 필요는 없음

게임 서버에서의 웹 서버

게임 서버에서 웹 서버를 사용할 수 있는 경우

  • 대부분의 컨텐츠가 자신의 데이터에만 접근할 경우
    즉, 거래 / 실시간 PVP / 실시간 레이드 등의 인터랙션 요소가 없는 경우
  • 일부 컨텐츠의 모든 처리가 클라이언트에서 이루어지고, 서버에서는 검증만 하면 되는 경우
  • 게임 서버가 단순히 데이터 관리만 하는 경우

웹 서버의 장점

  • 낮은 복잡도가 유지 가능하기 때문에 실수나 버그의 소지가 적음
    API 서버가 메인인 게임 서버라면 복잡도가 낮지 않으며, 소켓 서버와는 다른 방면으로 구현의 어려움이 존재
  • 웹 서버의 메모리에 올라온 데이터 자체는 휘발성이기 때문에 스케일 인/아웃이 유연

웹 서버의 단점

  • DB에 동시 접근시 데이터 무결성이 깨질 수 있음
  • 게임 서버와의 연동에서는 캐시 사용이 가능한 컨텐츠가 한정되어있음

게임 서버에서 웹 서버를 사용하는 이유

  • 개발이 편리 (다루기 쉬운 언어 사용, 자료 / 라이브러리 등이 많음)
  • 기본적으로 분산 처리이기 때문에 서버 오류 발생시 전체가 아닌 일부에만 문제가 발생
  • 모든 데이터는 DB 기준으로 처리하여 서버 다운의 롤백이 없음
  • 데이터는 DB에서만 처리하는 Stateless 서버이기 때문에 확장이 쉬움 (단 그만큼 DB 분산, 설계가 중요함)

'개인공부 > Web API 게임 서버 공부' 카테고리의 다른 글

배경지식 - Redis  (0) 2023.04.20
배경지식 - ORM  (1) 2023.04.20
배경지식 - C#  (0) 2023.04.20
배경지식 - ASP.NET  (0) 2023.04.19
배경지식 - HTTP  (1) 2023.04.19

댓글