SPA에서 라우터를 10번만 전환해도 브라우저 탭이 크래시되는 현상. 디버깅에 며칠을 쏟게 만든다. 원인은 윈도우 객체에 바인딩된 전역 이벤트 리스너 단 한 줄이었다. 우리가 이 OOM(Out of Memory) 문제를 어떻게 추적하고 해결했는지 그 엔지니어링 과정을 공유한다. Vue.js 메모리 누수(Memory Leak) 는 컴포넌트가 DOM에서 …
개발자가 흔히 저지르는 실수 중 하나는 기가바이트(GB) 단위의 대용량 파일을 백엔드 서버가 직접 받아서 S3로 넘겨주는 구조를 짜는 것이다. 이 방식은 EC2의 CPU와 메모리를 불필요하게 점유할 뿐만 아니라, 불필요한 대역폭 비용(Data Transfer Out)을 이중으로 발생시킨다. 브라우저에서 S3로 직접 쏘는 것 이 정답이다. AWS S3 …
아직도 모바일 앱이나 SPA(Single Page Application)에서 client_secret 을 하드코딩하거나, 보안이 취약한 Implicit Flow를 사용하고 있다면 당장 멈춰야 한다. 당신의 인가 코드(Authorization Code)는 가로채질 위험에 처해 있다. OAuth 2.1 초안부터 모든 클라이언트에게 필수로 권장되는 PKCE(…
Spark 작업 모니터링 중 가장 고통스러운 순간은 200개의 태스크 중 199개가 5분 만에 끝났는데, 마지막 1개의 태스크가 4시간 동안 도는 것 을 지켜볼 때다. 이는 전형적인 Data Skew (데이터 편향) 현상이다. 수십 TB 규모의 빅데이터 처리 파이프라인에서 이 병목을 해결하지 못하면 클러스터 리소스 비용은 기하급수적으로 늘어난다. 본…