Onstage

C/C++ 대규모 프로젝트에서 빌드 속도를 올려보자

상용 툴 이외에는 어떤 방법이 있을지, 효율적으로 빌드속도를 개선할 방법은 없을지 궁금해서 더 찾아보던 중 눈에 들어온 방법이 유니티 빌드(Unity Build)였습니다. 여기서 이야기하는 유니티 빌드는 지금 우리가 흔히 떠올리는 유니티(Unity) 게임 엔진 이야기가 아닙니다.

RPS 설정으로 네트워크 부하를 분산하라

부하는 꾸준히 유지하고 있는 중이므로, 최초에는 이 부하를 소화하기 위해 오토스케일링에 맞춰 파드 개수가 늘어납니다. 불현듯 어느 순간 파드가 중단되면서, 전체 파드 개수가 줄어듭니다. 파드 개수는 줄어들지만 부하는 계속 유지되고 있으므로, 남아있는 파드의 평균 CPU 사용률이…

워라밸 브레이커, 메모리릭을 찾아라(4/4)

메모리릭을 유발하는 객체에 대한 힌트를 얻었다고 하더라도, 메모리릭을 찾기 위해서는 기술적인 패턴을 알아야 합니다. smart pointer 및 smart pointer로 delete 누락과 overwrite 등의 패턴은 보기 힘들어졌습니다만 고질적인 메모리릭을 유발하는 패턴이…

워라밸 브레이커, 메모리릭을 찾아라(3/4)

애플리케이션이 사용하는 힙(Heap) 영역을 확인해 봅시다. 이때 사용하는 커맨드는 ‘!heap’입니다. 옵션으로 ‘s’를 입력하면, 애플리케이션이 사용 중인 힙 영역을 모두 볼 수 있습니다. [Reserv] 항목이 크게 잡혀있는 영역이 애플리케이션이 주로 사용하는 힙 영역입니다.

워라밸 브레이커, 메모리릭을 찾아라(2/4)

충분한 스펙을 갖춘 장비를 준비해 서비스를 돌려 봅시다. 얼마나 서비스할 수 있는지 숫자로 표현해보겠습니다. 1시간에 200MB면, 하루에 4.8GB씩 메모리가 늘어납니다. 이를 서비스 가능일로 환산하면 128GB를 준비해도 26.6일이면 가득찹니다. MMORPG 점검 주기가…

워라밸 브레이커, 메모리릭을 찾아라(1/4)

메모리릭(Memory Leak, 메모리 누수)이란 무엇일까요? 메모리릭은 개발자가 의도하지 않은 메모리를 점유하고 있는 현상을 말합니다. 메모리릭은 때를 가리지 않고 서비스 장애를 유발해, 작업자를 끊임없이 괴롭힙니다. 그래서 메모리릭을 찾을 때는 가지고 있는 모든 것을 활용해…

구글독스에서 워드프레스로 콘텐츠를 원격 배포하려면

작성한 문서를 어떻게 쉽고, 빠르고, 아름답게 블로그로 퍼블리싱 할 수 있을까? 고민하다 내린 결론은 마크다운을 활용하는 방안이었습니다. 우선 문서에서 본문, 헤딩, 서식, 표, 등을 파싱 및 추출해서 마크다운 형식으로 변환하고, 이미지와 함께 관리 서버로 전송합니다. 이후 관리…

데이터 파이프라인 기본 원리와 원칙은 시간이 지나도 유효해야 한다(2/2)

데이터 파이프라인 시스템 복잡도를 관리하기 위해 아래와 같은 요소를 고려해야 합니다. 소스 타입, 데이터 형태, 가공 방식, 전달 채널, 운영 도구 등 각 고려 사항으로 언급한 다양성을 검토한 후에는 개별 케이스가 갖는 공통적인 특성이나 의미를 추출해야 합니다. 소스 타입이…

데이터 파이프라인 기본 원리와 원칙은 시간이 지나도 유효해야 한다(1/2)

게임은 서비스를 이어가면서 다양한 콘텐츠와 이벤트 요소를 지속적으로 업데이트합니다. 이에 따라 유저 유입이나 이탈 이외에도, 매출 등락이 시시각각 일어납니다. 이런 흐름을 분석하고 예측할 수 있어야, 서비스의 현 상태를 진단하고 정확한 의사결정을 할 수 있습니다. 데이터 파이프라인…