EKS에 올린 Spring Boot 서비스에서 특정 API 하나만 간헐적으로 504 Gateway Timeout을 냈다. 그 API는 관리자 화면에서 배치 작업을 즉시 실행하는 용도였다. 평소엔 잘 되다가 데이터가 많은 날만 실패했다. 결론은 ALB idle timeout 60초였다. 그런데 거기까지 가는 데 며칠이 걸렸다. 왜 돌아갔는지까지 포함해서 기록한다. 증상 마지막 세 가지가 힌트였는데, 처음엔 더 읽기
Network
FCM 푸시 토큰, 언제 수집해야 하나 — 첫 화면 진입 vs 알림 동의 시점
하이브리드 앱(WebView + Spring Boot API)에 푸시 알림을 붙이면서 팀 안에서 한 번 정리하고 넘어가야 했던 질문이 있다. FCM 토큰은 언제 수집해서 서버에 저장해야 하는가? 구현 자체는 어렵지 않다. 문제는 “언제”다. 앱을 처음 켜자마자 받아둘지, 사용자가 알림에 동의한 시점에 받을지에 따라 서버의 데이터 모델과 개인정보 처리 관점이 달라진다. 결론은 동의 더 읽기
WebView 앱에서 구글 로그인이 막히는 이유 — OAuth 정책과 “최소 변경” 대응 방법
React를 WebView에 띄우고 백엔드는 Spring Boot API로 받는 하이브리드 앱을 만들다 보면, 소셜 로그인 단계에서 한 번은 반드시 부딪히는 문제가 있다. 구글 로그인 화면이 WebView 안에서 아예 열리지 않거나 403 disallowed_useragent 로 막히는 것이다. 처음 이 상황을 만나면 “앱 전체를 네이티브로 다시 짜야 하나?” 하는 생각이 들 수 있는데, 결론부터 더 읽기
OCI 프리티어 인스턴스에서 외부 포트 접속 불가 문제 해결기 (Swagger 접속 사례)
문제 상황 Oracle Cloud Infrastructure(OCI) 프리티어 인스턴스에서 Node.js 기반 API 서버를 실행하고 있었고, 내부에서는 정상적으로 localhost:3000 또는 10.0.0.x:3000 접근이 가능했지만 외부에서는 퍼블릭IP:3000 접속이 되지 않는 문제가 있었습니다. 접속 불가 현상 예시 점검한 사항들 최종 원인 및 해결 방법 최종 테스트 결과 추가 팁 결론 OCI 프리티어에서 외부 포트 접속이 되지 더 읽기
브라우저 CORS 오류 해결: jsPDF CDN 로드 시 발생하는 문제와 올바른 사용법
jsPDF 사용 시 발생하는 CORS 오류와 해결 방법 외부 라이브러리인 jsPDF를 활용해 PDF 파일을 생성하려 할 때, 다음과 같은 CORS 오류가 발생한 경험이 있으신가요? 이 오류는 단순히 스크립트를 잘못 불러온 문제가 아니라, 브라우저의 보안 정책(CORS 정책)에 의해 외부 스크립트 로딩 방식이 잘못되었을 때 발생합니다. 🔍 오류 원인 분석 브라우저는 보안을 더 읽기
아이폰에서 AWS 사이트가 비정상적으로 동작하는 경우
아이폰의 Safari 및 Chrome에서 AWS Application Load Balancer를 통해 사이트에 연결하는 문제가 발생하는 경우, 로드 밸런서에서 http/2가 활성화되어 있는지 확인해보는 것이 좋습니다. 활성화되어 있다면, Apache를 사용하고 있다면 .htaccess 파일에 다음 라인을 추가해보세요. Header unset Upgrade 이 작은 라인이 사이트가 작동하느냐 마느냐의 차이를 만들 수 있습니다. 왜 그러냐면 Http/2는 2015년에 출시된 더 읽기
Ingress LB 와 WAS 구간의 Session Disconnect 발생 원인 “KeepAlive TimeOut 설정”
KeepAlive Timeout 설정: Ingress Load Balancer와 Web Application Server 간의 세션 Disconnect 시, KeepAlive Timeout 설정이 세션 동작에 영향을 미칠 수 있습니다.
좀비 세션 (Zombie Session): 클라이언트와 서버 간의 세션 종료 후에도 클라이언트가 세션을 유지하려고 할 때 발생하는 문제로, KeepAlive Timeout 설정과 관련이 있을 수 있습니다.
KeepAlive Timeout 설정 영향: KeepAlive Timeout 설정이 너무 길거나 짧으면 세션 Disconnect 시에 좀비 세션 발생 가능성이 높아질 수 있으며, 이를 조절함으로써 문제를 해결할 수 있습니다.