전체 글 20

AWS 다운사이즈 후 모니터링 — t3 버스터블 CPU 크레딧·Redis Evictions·RDS FreeableMemory

INFRA · 모니터링 다운사이즈한 뒤가 진짜다 버스터블은 CPU%가 아니라 "CPU 크레딧"을 본다. 크레딧·Evictions·여유메모리 지켜보는 법. 14일차에서 AWS 인스턴스를 다운사이즈해 비용을 약 1/3 줄였다. 그런데 다운사이즈는 끝이 아니라 시작이다. 스펙을 내렸으면 "정말 그 스펙으로 버티는지"를 며칠 지켜봐야 한다. 특히 버스터블(t3/t4g)로 내린 경우, 평소 CPU% 그래프만 봐서는 위험 신호를 놓친다. 이 글은 다운사이즈 후 무엇을, 왜, 어떻게 보는지다. 핵심은 세 가지 — 버스터블의 CPU 크레딧, Redis의 Evictions, RDS의 FreeableMemory. (수치는 예시다.) 왜 "CPU%"가 아니라 "크레딧"인가 연산최적(c계열) 같은 비버스터블은 ..

게임 서버구축 2026.11.01

Adjust 어트리뷰션 S3 BI 파이프라인

DATA · 어트리뷰션 BI Adjust 데이터를 S3로 받아 사내 BI 대시보드 만들기 Adjust는 pull이 아니라 S3 push. IAM 키를 업로더/리더로 나누고, gzip·헤더·키 함정을 넘은 기록. 10일차에서 AppsFlyer를 Pull API로 받는 배치를 만들었다면, 이번엔 Adjust를 붙였다. 그런데 접근 방식이 다르다. 우리가 API로 당겨오는(pull) 게 아니라, Adjust가 매시 정각 우리 S3 버킷에 CSV를 올려주고(push), 우리는 그걸 받아 DB에 쌓는다. S3가 중간에 끼는 구조다. 이 글은 Adjust 어트리뷰션 raw 데이터를 S3 경유로 받아 사내 BI 대시보드까지 잇는 파이프라인의 구축 기록이다. 전체 흐름과 함께, 실제로 시간을 잡아먹은 함정들..

AI 개발 2026.10.26

EUR 결제 금액이 100배로 저장됐다 — 로케일 콤마(,) 소수점 함정과 데이터 보정

TROUBLESHOOTING · 결제 EUR 결제 금액이 100배로 저장됐다 "22,99"가 2299로. 범인은 str_replace 한 줄과, 콤마를 소수점으로 쓰는 로케일이었다. 어느 날 매출 지표가 이상하게 튀었다. 특정 패키지 몇 건이 수천 달러로 집계된 것이다. 실제로 그렇게 팔렸을 리 없는 숫자. 추적해보니 EUR 결제 일부 건의 가격이 서버에 100배로 저장되고 있었다. 22.99가 2299로, 5.99가 599로. 이 글은 그 "가격 100배" 버그의 원인과 데이터 보정 과정이다. 범인은 결제 코드의 str_replace 한 줄이었고, 더 정확히는 소수점 구분자로 콤마를 쓰는 로케일이라는, 유럽·러시아 결제를 붙이면 반드시 만나는 함정이었다. (금액·건수는 예시다.) ..

클라우드 운영 2026.10.25

PHP 긴급 취약점(PHP2Shell, CVE-2026-109618/109619) 운영 서버 대응기

SECURITY · 긴급 대응 PHP 긴급 취약점(PHP2Shell) 운영 서버 대응기 어려웠던 건 취약점이 아니라 "서버마다 php.ini 경로와 FPM 서비스명이 제각각"이라는 운영 현실이었다. PHP에서 치명적 보안 취약점 2건이 공개됐다. 통칭 PHP2Shell(CVE-2026-109618, CVE-2026-109619). 둘 다 인증받지 않은 외부 공격자의 원격 코드 실행(RCE)으로 이어질 수 있어 전 세계가 긴급 패치에 들어갔다. PHP로 웹 요청을 처리하는 거의 모든 구성(PHP-FPM, php-cgi, FrankenPHP, LiteSpeed)이 영향권이고, 특히 Apache mod_php가 위험하다고 알려졌다. 이 글은 운영 중인 여러 PHP 서버에 이 취약점을 대응한 실무 기..

클라우드 운영 2026.10.24

Unity 6 + AI(MCP)로 모바일 슈팅 게임 만들기 — 콤보·보스·오브젝트 풀링

GAMEDEV · Unity + AIUnity 6 + AI(MCP)로 슈팅 게임 한 편 만들기콤보 배율, 봄, 단계별 보스, 오브젝트 풀링까지. AI에게 맡길 것과 사람이 잡아야 할 것의 선. 15일차에서 Unity 6 + AI(MCP) 환경을 붙이고 APK까지 뽑았다. 이번 16일차는 그 환경으로 실제로 게임 한 편을 만든 이야기다. 세로형 슈팅 게임인데, 단순 "적 쏘기"에서 멈추지 않고 콤보 배율, 봄(긴급회피), 단계별 보스, 아이템, 오브젝트 풀링까지 넣었다. 상당 부분을 AI 어시스턴트와 대화하며 만들었고, 그 과정에서 "AI에게 맡길 것 / 사람이 잡아야 할 것"의 선이 꽤 분명해졌다.완성한 게임 — 세로형 슈팅플레이어 기체가 아래에서 위로 적을 쏘는 고전적인 세로 슈팅이다. 여기에 핵심 재..

AI 개발 2026.10.21

Unity 6 공식 MCP로 AI(Kiro) 연동하고 Android APK까지 빌드하기

GAMEDEV · Unity + AIUnity 6 + AI(MCP)로 Android APK까지 빌드하기씬 조작·스크립트는 AI에게, 최종 빌드는 사람이. 중간에 반드시 걸리는 함정 세 개를 넘은 기록. 오늘 Unity 6으로 간단한 모바일 게임을 만들어 Android APK까지 뽑았다. 특이한 건 씬 조작과 스크립트 작성을 상당 부분 AI 어시스턴트(Kiro)에게 시켰다는 점이다. Unity 6에는 공식 MCP(Model Context Protocol) Server 기능이 들어 있어서, 서드파티 플러그인 없이 AI를 Unity 에디터에 바로 붙일 수 있다.이 글은 그 연동 설치부터 APK 빌드까지 전 과정이다. 중간에 반드시 걸리는 함정 세 개 — 에디터 버전(6000.3 미만이면 메뉴가 안 보임), N..

AI 개발 2026.10.20

AWS 비용 절감 실행: 롤백 가능/불가 구분하고 예약 인스턴스는 맨 마지막에

INFRA · 비용 최적화 AWS 비용 다이어트, 계획을 실제로 적용하기 Aurora 7대 → 5대. 삭제 순서, 되돌릴 수 있는 것과 없는 것, 그리고 예약 인스턴스를 맨 마지막에 사는 이유. 7일차에서 "AWS 청구서는 큰데 CPU는 놀고 있다"는 데이터를 근거로 다운사이징 계획을 세웠다. 이번 글은 그 계획을 실제 점검(서비스 차단) 중에 적용한 확정·실행편이다. 계획 글은 많지만, 막상 어떤 순서로, 어디까지 되돌릴 수 있게, 다운타임은 얼마나 잡고 실행하는지는 잘 안 다뤄진다. 그 실무 부분을 정리했다. 요지는 셋이다. 삭제는 순서가 중요하다(되돌릴 수 없으니까). 타입 변경과 삭제는 리스크가 다르다(전자는 롤백 가능, 후자는 영구). 예약 인스턴스(RI)는 맨 마지막에 산다. (..

클라우드 운영 2026.10.19

Rocky Linux에 PHP 8.5 + MySQL 8.4 LTS 설치하기

INFRA · 서버 구축 Rocky Linux에 PHP 8.5 + MySQL 8.4 LTS 설치하기 데이터는 전부 /data 디스크에. 중간에 반드시 만나는 두 에러(GPG check FAILED, socket 불일치)까지 함께 정리했다. 게임 서버를 새로 올릴 때, OS에 PHP·MySQL을 어떤 버전으로 어떻게 설치하느냐가 이후 운영을 한참 좌우한다. 이번엔 Rocky Linux 10에 PHP 8.5(Remi) + MySQL 8.4 LTS를, 데이터는 전부 데이터 디스크(/data)에 두는 구성으로 세팅했다. 이 서버 하나를 이미지로 떠서 라이브 API·DB 서버를 찍어낼 베이스가 되므로, 처음에 깔끔하게 잡아두는 게 중요하다. 이 글은 그 설치 전 과정을 순서대로 정리한다. SELin..

게임 서버구축 2026.10.18

AWS Bedrock 모델 단종(EOL) 트러블슈팅 + 폴백 모델 + IAM 설정

OPERATION · AI 운영 "모델이 수명을 다했다" — Bedrock EOL을 Converse로 복구하기 알람 메일의 AI 분석이 "This model version has reached the end of its life"로 멈췄다. 특정 모델에 안 묶이는 구조로 다시 짠 복구기. 11일차에서 CloudWatch 알람에 AI 분석을 붙였다. 에러가 터지면 Lambda가 로그를 긁어 Bedrock의 Claude에게 원인·영향·조치·심각도를 분석시켜 메일로 보내는 구조였다. 그런데 얼마 뒤 "🤖 AI 분석 결과" 칸에 이런 문구가 찍히기 시작했다. (AI 분석 실패: This model version has reached the end of its life.) 이번 글은 그 "모델이..

클라우드 운영 2026.10.16

CloudWatch 알람 메일에 AI 분석 붙이기 — Lambda + Bedrock Claude 파이프라인

OPERATION · 모니터링 자동화 CloudWatch 알람에 AI 오류 분석을 붙이기 에러가 터지면 Lambda가 최근 로그를 긁어 AWS Bedrock의 Claude에게 분석시키고, 원인·영향·조치·심각도가 정리된 메일을 보내준다. 6일차에서 "PHP 에러 알람이 울려 공격을 잡았다"는 글을 썼다. 그 글을 읽고 "그 알람은 어떻게 세팅한 거냐"는 질문을 받았다. 이번 글은 그 알람 파이프라인을 처음부터 만드는 과정이다. 그리고 핵심은 단순 알람이 아니라, 에러가 터지면 AWS Bedrock의 Claude가 로그를 분석해 "원인·영향·조치·심각도"를 정리한 메일을 보내주는 부분이다. 소스 코드 변경 없이 설정만으로 되는 로그 수집부터, AI 분석 Lambda의 프롬프트 설계와 무한루프..

AI 개발 2026.10.15