아티클
한국 Laravel 개발자를 위한 실무 튜토리얼, 패키지 분석, 업데이트 영향 분석, 트러블슈팅 글을 제공합니다. 모든 글은 검수 후 발행됩니다.
존재하지만 한 번도 실행되지 않는 커맨드: 스케줄 등록을 Pest로 고정하기
커맨드가 있고 단위 테스트도 통과하지만 스케줄러에 등록되지 않아 아무 일도 하지 않는 상황을 다룹니다. 실제 운영에서 넉 달 동안 비어 있던 커맨드 네 개의 사례를 바탕으로, 등록 여부와 실행 주기를 테스트로 확인하고 schedule:list로 교차 검증하는 절차를 정리합니다.
제출 폼이 스팸에 뚫리기 전에: throttle 미들웨어로 횟수를 제한하고 429 응답을 테스트하기
패키지·쇼케이스 제출처럼 로그인 사용자가 반복 호출할 수 있는 폼에 요청 제한을 거는 방법을 정리합니다. throttle:5,60 표기의 의미, 제한 기준을 IP에서 사용자로 바꾸는 RateLimiter 정의, 429 응답과 Retry-After 헤더를 Pest로 확인하는 절차를 다룹니다.
웹훅을 받을 때 서명부터 검증하기: 원본 본문, hash_equals, 그리고 거부 경로 테스트
GitHub 웹훅처럼 HMAC 서명이 붙는 요청을 Laravel에서 안전하게 받는 방법을 정리합니다. 왜 원본 본문으로 계산해야 하는지, 왜 == 대신 hash_equals를 쓰는지 설명하고, 서명 누락·변조·재직렬화 네 가지 거부 경로를 Pest로 고정합니다.
배포는 성공했는데 화면은 왜 그대로일까: Laravel 배포 검증의 네 단계
HTTP 200, 실제 본문, 빌드 자산, 장기 실행 프로세스를 나누어 확인합니다. Laravel·Inertia 콘텐츠 사이트에서 빈 HTML과 오래된 워커를 구분하고, 헬스 체크가 보장하는 범위도 테스트합니다.
큐 작업이 두 번 실행돼도 집계가 한 번만 늘어나게 만들기
페이지 조회 집계를 예로 재시도와 중복 효과를 분리합니다. 고유 이벤트 ID, DB 트랜잭션, timeout과 retry_after의 차이를 설명하고 중복 전달·롤백 시나리오를 테스트합니다.
목록이 늘수록 느려질 때: N+1 쿼리를 재현하고 회귀 테스트로 막기
라라벨 코리아의 매뉴얼 목록을 사례로 관계 조회 7회를 2회로 줄이는 과정을 재현합니다. 외래 키 누락, 관계 메서드 재조회, 측정 범위를 구분하고 Pest로 쿼리 예산을 검증합니다.