서버 OT

CJB_ny·2022년 1월 24일
1

Unity_Server

목록 보기
1/55
post-thumbnail

서버 공부를 하고싶은데 어디서 부터 시작해야할지 모르겠습니다.

회사에서 리눅스를 공부를 하라고하네요!

서버는 심오? 비밀 스러운것? -> NO!

클라는 학원도있고 뭐 해서 조금 대중적인거 같은데

서버는 아직 대중적이지는 않은거 같다.

1. 서버란 무엇인가?

다른 컴퓨터에서 연결이 가능하도록 대기 상태로 상시 실행중인 프로그램이다.

ex) 영업중인 식당
-> 손놈이 올 수 있도록 식당을 열고 대기중
-> 손놈이 오면 식당 규칙에 따라 메뉴 제공

프로그램을 뜻하는 경우도 있고 프로그램을 실행중인 컴퓨터를 말하는 경우도 있지만

그런게 크게 중요하지는 않다.

2. 서버의 종류(크게 두게)

1. Web Server(aka, HTTP Server...)

ex) 맥도날드 같은거
1-1 테이크 아웃 전문 포장 식당
1-2 손놈이 음식을 받아서 떠나면, 그 이후로는 연락이 끊긴다.
1-3 질의 응답 형태

2. Game Server(aka, TCP Server, Binary Server, Stateful Server...)

2-1 일반식당
2-2 서빙 직원이 와서 손놈에게 물어볼 수도 있고
2-3 손놈이 추가 주문을 하기도 하고
2-4 실시간 Interection이 있다!

Web Server 개요

Take Out 포장 전문

  • 드물게 정보를 요청/갱신 한다.

  • 실시간 Interection이 필요하지 않다.

  • 식당에서 손놈에게 먼저 접근을 할 일이 없다(<- 손님 물 드릴까요?)

  • 주문 후 손놈이 바로 떠나면, 손놈의 상태를 당분간 잊고 지낸다(Stateless)

우리가 클래시 오브 클랜이라는 SNG게임을 예로 들어서 생각을 해보면은

실제로 게임이 진행이 된다음에 뭔가 랭킹 시스템을 만들기 위해서 결과물만 툭! 던져주고,

저장한다음에 결과만 불러오면은 끝남.

이렇게 단순하게 한번만 교류를 하는 경우에는

Web Server를 사용하면 편리하게 구현을 할 수 있다.

그리고 만약 클릭커 게임을 만드는데 최종적으로 랭킹을 관리를 하고싶다라고 할때

하나의 게임이 완료가 되었으면, 결과물을 보낼 때도

당연히 Web Server를 사용하게 될 것이다.

Web Server 제작은?

Web Server는 단순히 게임서버에 국한되지 않고 웹 서비스를 만드는데 사용.
-> 구글, 아마존, 네이버 등등

처음부터 만드는 경우는 없고, 프레임 워크를 하나 골라서 사용

  • ASP.NET(C#)
  • Spring(Java)
  • Node Js
  • Django, Flask
  • PHP
    ...

Web Server는 홈페이지를 만들때 가장 먼저 사용이 되었고 발전이 되었다.

이제 그 기술이 워낙 훌륭하고 여러방면으로 사용을 할 수 있으니까

이제 그것을 우리가 게임쪽으로 끌고와서 사용을 하게 되는 것이다.

그리고 웹이 워낙 돈이 많이 되다보니까 -> 프레임 워크도 많이 존재함

우리는 C#을 사용을 하니까 ASP.NET을 통해서 알아 볼 것이다.

아무튼 웹서버는 요청/응답 정도의 간단한 경우에만 사용을 하는 것이다.

Game Server란?

  • 요청/갱신 수가 많다.
  • 실시간 Interection이 필요하다.
  • 언제라도 직원이 손놈이게 접근이 가능하다.
  • 손놈이 식당에 머무르는 동안 손놈의 상태를 보면 최상의 서비스를 제공(stateful)

스타나, 와우같은것은 실시간으로 유져와 게임을 하는 것이다.

내가 마린을 움직였으면 움직인 마린이 상대방한테도 똑같이 움직여야 할테고

언디 레이드같은 경우도 내가 스킬쓰면 다른 유져들도 똑같이 내가 스킬을 쓰는 것이 보여야함.

Game Server 제작이란?

Game Server의 경우는 Web Server와는 다르게

게임/장르 에따라 요구 사항이 너무나도 다르다.

  • 최적의 프레임워크라는 것이 존재하기 애매함

EX) 회전초밥 / 삼겹살 / 호텔 뷔페 / 국밥

  • 메뉴가 다른데 인테리어와 채용 직원수가 동일 할 수 없다.
  • 웹서버 보다는 구현해야 할게 까다롭다.

그럼 무엇을 고려해야 할까?

MMO_RPG 게임 서버 제작은, 식당 운영에 비유 가능

  • 멀티쓰레드(Concurrency) : 직원들 고용하고 운영하는 것.
  • 네트워크 : 직원들이 손놈들과 어떤 방식으로 대화할 지
  • DB : 결제 및 장부 처리를 어떤 방식으로 할지
  • 게임 로직 : 손놈들의 주문을 신속하고 맛있게 요리하는 것
  • 서버 구조 : 위에서 정한 정책에 맞는 식당의 인테리어에 대해 고민하는 것

이번파트에서 살펴 볼 것들은 특히나,

멀티쓰레드랑, 네트워크, 서버구조 이렇게 세가지를 집중적으로 살펴 볼 것이다.

DB는 말그대로 데이터를 저장을 하는 것인데, 이것은 다다음 파트에서 할 것이고

이렇게해서 이해를 하셔야 할 부분은

MMO_RPG를 만든다고 했을 때

가장 핵심이 되는 부분은 "게임 서버" 부분이기는 하다.

이녀석이 사실은 모든 컨텐츠를 돌릴 것이기 때문에

게임서버가 80% 확률로 중요하게 활용이 되겠지만

그렇다고 해서 웹서버가 온라인 게임을 만들때 아예 사용이 안되는 것은 아니다.

웹서버에 만들어진 좋은 기능들이 많기 때문에 굳이 처음부터 다 만들지 않고

처음에 인증을 하거나 로그인 하는 부분은 웹서버로 만들어 두고

그 다음에 한번 인증을 통과를 하면은

그다음으로 게임 서버로 넘어와가지고

이제 게임이 실행이 되도록 만들어 주는 경우가 굉장히 많은데

그렇기 때문에 조금 피곤하기는 하지만

"서버 프로그래머"라고 하면은 이런 웹서버나 게임서버를

반반씩은 어느 정도를 이해를 하고 있어야지만

여러가지 프로젝트를 진행하는데 도움이 된다는 말이 된다.

물론 이게 진짜 대기업이라고 했다면은

담당하는 파트가 확실히 정해져있기 때문에

MMO파트에 들어가게되면은

거의 게임서버밖에 안다루게 될 것이다.

platform팀에서 대부분 그런 작업을 도와주게 되겠지만

나는 그게 아니라

인디게임을 생각을 하고 혼자 이런저런 작업을 다해보고 싶다라고하면은

이제 웹에 대한 지식도 필요로 하게 된다는 말이다.

그런데 여러분이 딱히 MMO에 관심이 없다라고 하더라도

서버는 한번씩은 공부를 하면 굉장히 도움이 많이 되는 부분이 무엇이냐 하면은

예를 들어 랭킹 시스템을 만들고 싶다라고 가정을 해보자

실시간일 필요는 없지만

애니팡같은거 보면은 내 친구들의 순위를 볼 수 가 있는데

그런거는 사실 게임서버까지 갈 필요 없이

웹서버랑 DB에 대한 지식만 있으면 맨들 수 있는 부분이다.

그런데 어느상황에서 무엇을 사용을 할지 알고싶으면 한번씩은 모든 코스를 다 밟아 야지만

그런 지식들이 생길 것이다.

그래서 Part4, 5, 6 웹서버,게임서버 DB를 다루게 될 것이다.

profile
https://cjbworld.tistory.com/ <- 이사중

0개의 댓글