내일배움캠프 Node.js 스탠다드 반 - 1

김선우·2024년 11월 2일
post-thumbnail

컴퓨터 세계에서 서버와 클라이언트는 무엇인가?

  • 서버, 클라이언트 각각의 개념과, 서버 클라이언트 구조에 대해 자유롭게 조사해주세요.

    서버

    • 네트워크를 통해 클라이언트에게 서비스를 제공하는 시스템.
    • 일반적으로 클라이언트의 요청에 대해 응답해주는 시스템. => 무엇을 제공해주는 입장.
      ex) 웹 브라우저를 통해 정보를 보는 것 = 서버로부터 정보를 받아 보는 것.

    클라이언트

    • 서버의 서비스를 받아 사용하는 장치, 프로그램.
    • 장치 : 최종 사용자가 웹에 접속하는데 사용하는 시스템 - 데스크톱, 노트북, 스마트폰, 태블릿 등.
    • 프로그램 : 사용자가 웹을 통해 요청할 수 있게 해주는 프로그램. - 웹 브라우저 등.

서버 클라이언트 구조

  • 현대 웹 개발의 핵심구조 중 하나.
  • 중앙 집중화를 통해 데이터 관리와 보안을 강화할 수 있다.
  • 데이터 일관성과 무결성을 유지하기 쉽다.
  • 웹의 확장성유지보수성을 크게 향상.

N 계층 구조

2계층 구조(2-tier architecture)

  • 클라이언트와 서버 등 2개의 노드(node)로 구성된 구조(architecture)를 2계층 구조라고 부름.
  • 2계층 구조에서는 서버는 단지 데이터를 저장하는 역할만을 수행하며, 클라이언트가 모든 처리(processing)를 담당함.

2계층 구조의 한계

  • 클라이언트의 상대적 성능이 향상되면서 다양한 처리를 클라이언트로 이전할 수 있지만, 데이터의 무결성을 유지하기가 어려움.
  • 비즈니스 로직을 클라이언트에 두기 어려운 경우 : 사용자간의 메시지를 주고 받을 때 서버는 데이터를 저장하는 역할만 수행하므로 클라이언트간에 직접 통신을 해야함.

=> 한계를 극복하기 위해 3개 이상의 노드를 네트워크상에서 구성하는 방식을 채용(N계층 구조).
but, FTP, Telnet 서비스 등은 여전히 2계층 구조로 동작.(완전한 대체제는 아님.)

3계층 구조(3-tier architecture)

  • 정보, 중간, 클라이언트 등 3개의 계층으로 구성됨.

정보 계층(Information tier)

  • 데이터 계층(data tier) 혹은 최하위 계층(bottom tier)이라 부름.
  • 어플리케이션을 위한 데이터를 관리.
  • 일반적으로 관계형 데이터 베이스(Relational Database)를 이용해 데이터를 저장.

중간 계층(Middle tier)

  • 어플리케이션 계층(application tier)으로 부르기도 함.
  • 비즈니스 로직(business logic) 및 프리젠테이션 로직(presentation logic)을 구현.
  • 어플리케이션 클라이언트와 데이터 간의 상호작용을 제어.
  • 정보 계층의 데이터와 어플리케이션 클라이언트 간의 매개자(intermediary)역할을 수행.

클라이언트 계층(Client tier)

  • 최상위(top) 계층으로 부르기도함.
  • 어플리케이션의 사용자 인터페이스 역할을 수행.
  • 중간 계층과 상호작용을 통해 요청을 전달하고 정보 계층에서 데이터를 조회.

웹 어플리케이션 서버와 게임 서버의 공통점과 차이점은 무엇인가?

  • 어떤 공통점과 차이점이 있는지? 게임 서버에서 중요하게 다루어야 하는 내용은 무엇인지 조사해주세요.

개념

웹 어플리케이션 서버

  • 다양한 서버 내 알고리즘, 비즈니스 로직, DB 조회 등 클라이언트 요청에 따라 동적인 컨텐츠를 제공하는 서버, 프로그램

특징

  • HTTP 프로토콜을 기반으로 하여 클라이언트의 요청에 따라 구현된 비즈니스 로직을 통해 동적으로 만들어진 컨텐츠를 반환.
    Ex) Tomcat, JBoss, Jeus 등
  • 데이터베이스 접속 기능, 여러 개의 트랜잭션 관리 등 수행

게임 서버

  • 멀티플레이 비디오 게임을 즐기기 위해 게임 클라이언트에 쓰이는 서버로, 자신의 컴퓨터나 다른 사람의 컴퓨터에서 실행.

특징

  • TCP Server, Binary Server, Stateful Server 라고도 불립니다.
  • 클라이언트가 패킷을 서버에 전송해도 서버에서 응답을 꼭 보내주지 않아도 됨.
  • 서버에서 클라이언트로 패킷을 전송할 수 있습니다.
  • 실시간 통신이 중요합니다.

공통점

  • 웹 어플리케이션 서버와 게임 서버는 모두 웹 애플리케이션의 구성 요소로, 웹 애플리케이션의 성능과 유지 보수성에 직접적인 영향을 미침.

차이점

  • 웹 어플리케이션 서버는 동적 콘텐츠를 처리하는 반면, 게임 서버는 게임을 제공하는 역할을 함.
    • 웹 어플리케이션 서버: 클라이언트의 요청에 따라 서블릿을 실행하고, 데이터베이스와 통신하여 동적 콘텐츠를 생성.
    • 게임 서버: 게임을 제공하는 역할을 함.

게임서버에서 중요한 요소

프로토콜 최적화

  • 데이터 구조와 전송 효율성을 고려하여 프로토콜을 최적화함으로써, 개발자는 네트워크 자원을 효율적으로 사용하고, 게임의 성능을 향상시킬 수 있음.

비동기 처리

  • 서버가 요청을 받고 처리하는 동안 다른 요청을 계속 받을 수 있게 함.
    • 이는 서버의 처리 능력을 최대한 활용하고, 사용자에게 빠른 응답을 제공할 수 있게 함.
      => 게임 서버는 대량의 요청을 실시간으로 처리해야 하며, 지연 시간을 최소화해야 하기 때문에 비동기 처리가 중요함.

0개의 댓글