Fetch 요청이 멈추지 않게 만들기 — AbortSignal.timeout·사용자 취소·안전한 재시도
도입 fetch()는 HTTP 500에서 자동으로 예외를 던지지 않으며, 업무에 맞는 제한 시간도 대신 정해주지 않는다. 사용자는 이미 화면을 떠났는데 요청이 계속되거나, 실패한 POST가 재시도되어 중복 결제...
HTTP 검색 결과: 11개
도입 fetch()는 HTTP 500에서 자동으로 예외를 던지지 않으며, 업무에 맞는 제한 시간도 대신 정해주지 않는다. 사용자는 이미 화면을 떠났는데 요청이 계속되거나, 실패한 POST가 재시도되어 중복 결제...
도입 웹 서비스를 직접 운영하려면 애플리케이션이 실행될 컴퓨터가 필요하다. 물리 서버를 구매하면 초기 비용과 설치 시간이 발생하고, 트래픽 변화에 맞춰 용량을 조정하기도 어렵다. Amazon Elasti...
Metrics, Logs, Traces의 정의를 각각 외워도 장애가 발생했을 때 연결하지 못하면 조사 시간이 줄지 않는다. 이 글은 PHP API의 응답 시간이 늘고 오류율이 상승한 상황을 가정해 이상 감지 → 실패...
도입 서비스를 운영하다 보면 클라이언트가 직접 애플리케이션 서버에 붙지 않게 해야 하는 경우가 많다. 이때 가장 많이 쓰는 구조가 Reverse Proxy다. 앞단에서 요청을 받고, 뒤쪽 서버로 대신 전달...
리눅스에서 파일 디스크립터(File Descriptor, FD)는 “열려 있는 파일을 식별하는 번호”다. 여기서 말하는 파일은 실제 파일뿐 아니라 소켓, 파이프, 장치까지 포함한다. 즉 리눅스에서는 모든 I/...
REST API는 단순히 URL을 만드는 방식이 아니라, 자원(Resource)을 중심으로 시스템을 표현하는 설계 방식이다. 기능 중심으로 즉흥적으로 만들기 시작하면 엔드포인트 규칙이 흐트러지고, 유지보수 비용이 ...
Service Layer는 “있으면 좋아 보이는 계층”이 아니라, 코드가 무너지기 시작할 때 필요한 안전장치다. Controller에 로직이 쌓이기 시작하면 기능 추가 속도는 잠깐 빨라지지만, 수정 비용이 급격히 ...
블루·그린, 카나리와 롤링 배포를 모두 설명해도 서버 한 대에서 실제로 무엇을 실행할지 정해지지 않으면 도움이 되기 어렵다. 이 글은 Nginx와 PHP-FPM이 있는 단일 EC2를 기준으로 작은 서비스의 배포 단계...
“소통을 잘하자”는 원칙만으로는 협업 방식을 통일하기 어렵다. 다른 개발자가 변경 목적을 이해하고 같은 결과를 재현하려면 작업 전후에 남길 정보와 완료 조건이 구체적이어야 한다. 이 글은 PHP 게시글 조회 오류를 ...
긴 코드나 로그를 AI에 한꺼번에 넣는다고 좋은 리뷰가 보장되지는 않는다. 불필요한 파일은 판단을 흐리고, 환경 파일과 운영 로그에는 인증정보나 개인정보가 포함될 수 있다. 이 글은 Claude에 PHP 코드 리뷰를...