Python 4

플러그인 성능 프로파일러 직접 만들기: 실행 시간·메모리·CPU 스파이크 자동 추적

플러그인 수가 늘어날수록 어느 플러그인이 전체 파이프라인을 느리게 만드는지 육안으로 파악하기 어려워진다. 타이머 몇 줄 붙이는 것으로는 부족하다. 비동기 스택 추적, 메모리 스냅샷, CPU 점유율까지 한꺼번에 잡아야 병목이 보인다. 이 글은 플러그인 코드를 건드리지 않고 로더 레벨에서 계측하는 방법을 처음부터 구현한다.왜 단순 타이머로는 부족한가처음에는 time.perf_counter()를 플러그인 앞뒤에 심는 방식으로 시작했다. 숫자는 나왔다. 문제는 이 숫자가 무엇을 의미하는지 해석이 안 됐다는 것이다.wall_time이 500ms가 나왔을 때, 이게 실제 연산이 느린 건지 I/O 대기인지 알 수 없었다. 메모리는 아예 측정이 안 됐다. 플러그인 A가 항상 느렸지만 나머지가 다 30ms 이하라면 A의..

카테고리 없음 2026.05.18

MCP 요청 위변조를 HMAC 서명으로 원천 차단하는 법

요청이 MCP 서버에 닿기 전, 누군가 본문을 바꿔치기한다면 알아챌 방법이 있을까. Claude Code로 에이전트를 구축하면서 이 질문에 정면으로 부딪혔다. 이 글은 HMAC 서명을 MCP 클라이언트-서버 구간에 직접 심어 위변조와 Replay Attack을 동시에 차단한 실전 기록이다. 코드 50줄, 외부 라이브러리 추가 없이 40분 만에 끝났다.왜 HMAC인가 — SHA-256 해시만으로는 구멍이 생긴다SHA-256 해시를 메시지에 붙이면 "변조됐는지"는 알 수 있다. 문제는 공격자도 이걸 안다는 점이다. 본문을 원하는 대로 고친 뒤 해시를 새로 계산해서 붙이면, 수신 측은 "해시가 맞네"라고 판단하고 그냥 처리한다. 잠금장치 없는 편의점 택배함과 다를 바 없다.HMAC(Hash-based Mess..

Code 실전 2026.05.15

텔레그램 트레이딩 봇 직접 만들기 — asyncio 3-레이어 아키텍처와 WebSocket 뼈대 구축

암호화폐 거래를 자동화하고 싶다면, 봇 하나에 세 가지 I/O 흐름을 억지로 우겨넣는 실수부터 피해야 한다. 이 글은 텔레그램 명령 수신, 거래소 실시간 시세 스트림, 주문 실행을 각각 독립된 레이어로 분리해서 asyncio 단일 이벤트 루프 안에 올리는 과정을 처음부터 따라갈 수 있게 정리했다. Python 비동기 프로그래밍 기본 문법은 알고 있다고 가정한다.왜 레이어를 분리해야 하는가처음에는 단순하게 시작하고 싶다. 텔레그램 핸들러 안에서 시세도 가져오고, 조건 만족하면 주문까지 때리는 구조. 실제로 짜보면 금방 문제가 드러난다.첫 번째 함정은 블로킹이다. 텔레그램 polling이 응답을 기다리는 동안 WebSocket 메시지가 유실된다. 두 번째는 순서 보장 실패다. 시세 이벤트와 사용자 명령이 같..

카테고리 없음 2026.05.11

Claude Agent SDK 스트리밍에서 토큰 유실을 막는 역압 제어 설계

동시 세션이 늘어날수록 스트리밍 버퍼가 터지는 문제를 직접 겪었다. asyncio.Queue 하나로 메모리를 60% 줄이고 P99 응답 지연을 절반 이하로 낮춘 과정을 기록한다.문제: 스트리밍이 빠를수록 좋다는 착각Mac Mini 4대 클러스터에 Claude Agent SDK를 붙이고 풀 스트리밍으로 돌렸다. 처음엔 빠르고 쾌적했다. 동시 세션이 8개를 넘는 순간, 소비자 쪽 버퍼가 폭발했다. 응답 일부가 조용히 유실됐고, 로그에는 OOM 경고가 쌓였다.원인은 단순했다. Agent SDK는 생성 속도에 맞춰 토큰을 밀어낸다(push). DB 저장, 알림 발송, 렌더링 같은 소비자 로직이 조금이라도 느리면 큐가 쌓인다. 수도꼭지를 최대로 열고 컵 하나로 받으면 물이 넘치는 것과 같다.실측해보니 M2 Pro..

Code 실전 2026.05.10