주의 사항 ) 이 글을 쓴 사람은 퍼포스 초보입니다. 틀린 정보일 수 있으니 주의...! 현재 VR 게임을 제작하는 팀 프로젝트를 진행 중이다. 팀 프로젝트를 위한 협업 & 버전 관리 도구로 퍼포스를 사용하여 작업하고 있다. 그런데... 이상한 현상이 나타났다. 현재 우리 팀은 퍼포스 서버로 AWS EC2를 사용한다. 총 30GB의 용량을 사용할 수 있는데, 이 중에 23.9GB를 사용하고 있는 것을 확인했다. 하지만 워크스페이스를 통해 확인한 프로젝트의 크기는 11.3GB다. 워크스페이스에 프로젝트 파일의 크기와, 퍼포스 서버에서의 디스크 사용량이 2배가량 차이 나는 문제점이 나타났다. What the... 너네 왜 그러니? 서버 크기를 늘리면 바로 해결되겠지만.. 문제는 AWS EC2는 30GB까지만..
11월 5일에 진행된 AWS Community Day에 다녀왔다. 내가 참여한 것은 핸즈온 이벤트로 직접 튜토리얼을 따라 하며 AWS를 경험해볼 수 있었다. 나는 그중에서 'AWS 외계인 공격 : 서버리스 아키텍처 모험'을 주제로 진행하는 트랙3에 참여했다. 입장할 때 AWS Community가 쓰인 티셔츠, 우산, 그리고 개발자 전투식량을 받았다. 내가 지금까지 AWS로 해본 것이라고는 AWS EC2를 사용해서 Perforce 서버를 구축해본 것뿐이다. 그래서 내가 따라가기 힘들 정도로 어려운 내용을 다루는 것이 아닐까 걱정되었다. 다행히 튜토리얼이 자세해서 AWS 초보인 나도 잘 따라갈 수 있었다. 하지만 내용들을 깊게 이해하는 정도는 아녔기에 사전 지식이 많을수록 더 얻어가는 게 많지 않을까 생각한..
컴투스에서 진행된 서버 캠퍼스 1기를 수료한지 벌써 거의 한달이 지났다. 수료한 후에 밀린 학교 프로젝트와 기말고사 준비로 바빴던 터라 이제야 후기를 쓴다. 3/31 : 서버 캠퍼스 지원 학교 홈페이지를 통해 서버 캠퍼스 모집 글을 봤다. 서버 캠퍼스 1기는 웹 서버 방식의 게임 서버를 주제로 진행되며 교육 과정을 통해 포트폴리오를 제작할 수 있다고 쓰여있었다. 무엇보다 회사에서 현직자분들께 배울 수 있다는 점이 매력적이었다. 또 100만원의 장학금도..! 마침 이번 학기 캡스톤디자인 과목의 프로젝트를 게임 서버로 진행하고 있기도 했고 게임 서버 개발을 더 공부해보고 싶었던 터라 바로 신청했다. 선발은 서류 전형으로만 이루어졌다. 자기소개서와 제출한 포트폴리오로만 평가하여 선발되었다. 사실 지원할 때만 ..
ASP.NET Core에서 앱을 빌드하기 위한 기본 코드는 Program.cs에서 시작한다. Program.cs는 프로그램의 시작점으로 호스트를 빌드하고, 필요한 서비스들과 미들웨어를 추가하는 작업을 한다. Program.cs를 통해 ASP.NET Core의 전반적인 동작 과정을 파악해보자. ASP.NET Core 웹 어플리케이션을 만들기 위한 웹 프레임워크의 크로스 플랫폼 버전이다. 따라서, 윈도우, 맥, 리눅스 등 다양한 플랫폼에서 실행된다. Program.cs Program.cs 파일에 어플리케이션 시작 코드를 포함한다. 즉, C의 main함수와 같은 프로그램의 진입점이라고 할 수 있다. 앱에서 요구하는 서비스를 구성한다. 앱의 요청 처리 파이프라인이 일련의 미들웨어 구성 요소로 정의된다. Main..
SList를 사용해서 Object Pool을 구현해 보려고 한다. 구현에 앞서 SList에 대해 알아보자 Interlocked Singly linked list(SList) MS에서 제공하는 연결 리스트로 atomic operation을 지원한다. 모든 항목은 MEMORY_ALLOCATION_ALIGNMENT boundary에 정렬되어야 한다. 정렬되지 않은 항목은 예측할 수 없는 결과를 초래할 수 있다고 한다. 따라서, 할당시 _aligned_malloc을 사용해야 한다. SList의 헤더는 SLIST_HEADER, 엔트리는 SLIST_ENTRY 타입이다. SLIST_HEADER SList의 헤더로, 맨 처음에 위치한 아이템을 가리킨다. depth는 SList에 포함된 데이터의 개수를 의미한다. seq..
HTTP = Hypertext Transfer Protocol www(world wide web), 즉 인터넷 상에서 데이터를 주고 받을 수 있는 프로토콜이다. 주로 HTML 문서를 주고 받는데 사용된다. 서버와 클라이언트 사이에 이루어지는 요청/응답 프로토콜이다. 클라이언트가 Request(요청)를 보내면, 서버는 이 요청에 Response(응답)한다. 예를 들어, 클라이언트인 웹 브라우저가 HTTP를 통해 웹페이지(HTML)을 요청하면, 서버는 해당 웹 페이지에 대한 데이터를 사용자에게 전달하여 응답한다. Connections HTTP는 TCP/IP를 사용해서 데이터를 주고 받는다. TCP/IP를 사용하기 때문에 신뢰성이 보장된다. 클라이언트와 서버의 연결 과정은 다음과 같다. 1. 클라이언트의 웹 ..
Non-blocking 소켓을 사용하되, 준비되었을 때를 미리 파악할 수 있도록 하자! Multiplexing I/O Model select 모델은 Multiplexing I/O 모델로 분류된다. Multiplexing 모델은 먼저 소켓 리스트들을 등록하고, 등록된 소켓 리스트들 중에 send나 recv와 같은 I/O 작업이 수행 가능한 준비 상태의 소켓들을 알려주는 API를 제공한다. I/O가 가능한 소켓에 대해서만 I/O 함수를 호출하기 때문에 스레드가 blocking되지 않고 실행 결과를 바로 받을 수 있다. 따라서, 적은 수의 스레드로도 다중 접속을 처리할 수 있다. Multiplexing I/O Model에는 select, poll, epoll이 있다. 이 중 windows와 linux 두 운영..