페이지 번호를 포기해야 할 때, OFFSET과 커서 페이지네이션의 갈림길관리자 목록 화면에서 1페이지는 40ms, 900페이지는 4초가 나오는 상황을 본 적이 있습니다. 쿼리는 똑같습니다. 인덱스도 그대로입니다. 바뀐 건 OFFSET 뒤에 붙은 숫자 하나뿐입니다. 이때 개발자가 가장 먼저 손대는 곳은 보통 인덱스인데, 정작 문제는 인덱스가 아니라 "건너뛰기"라는 동작 자체에 있습니다.이 글은 목록 API를 만들 때 OFFSET 방식과 커서 방식 중 무엇을 고를지 판단하는 순서를 정리한 것입니다. 성능 비교표를 만드는 것이 목적이 아니라, "우리 화면이 정말 페이지 번호를 필요로 하는가"부터 되묻는 쪽에 가깝습니다. MySQL, PostgreSQL 공식 문서와 Laravel 페이지네이션 문서를 기준으로 삼..
Laravel 애플리케이션을 AWS Lambda에 올리고 PostgreSQL에 붙이려는데 이런 에러가 나올 때가 있다.PDOException: could not find driver (Connection: pgsql, SQL: select * from ...)로컬에서는 잘 되던 게 Lambda에서만 터진다. 원인은 런타임 이미지에 PDO PostgreSQL 확장이 안 들어 있어서다.왜 이런 일이 생기나서버리스 PHP 런타임(Bref 등)은 Lambda의 용량 제한 때문에 확장을 최소한만 넣어서 배포한다. MySQL용 pdo_mysql은 기본 포함이지만 pdo_pgsql은 빠져 있는 경우가 많다.로컬 개발 환경의 PHP에는 대부분 둘 다 깔려 있으니 로컬 테스트에서는 안 잡힌다. 배포하고 나서야 발견하게 ..
회사 통계 시스템에서 이상한 이슈가 등록된 적이 있다. 같은 화면을 새로고침하는데 일정 확률로 다른 값이 나온다는 제보였다.처음에는 프런트엔드에서 데이터 취합을 잘못하는 줄 알았다. 그런데 백엔드에서 같은 쿼리를 반복해서 돌려보니 결과값이 실제로 달라졌다.의심했던 것들리드 레플리카를 여러 대 쓰는데 복제 지연으로 싱크가 안 맞는 문제쿼리 자체의 문제캐시나 기타 문제원인: paginate에 ORDER BY가 없었다결론부터 말하면 paginate를 쓸 때는 order by를 반드시 해줘야 한다.SQL 표준상 ORDER BY가 없는 SELECT는 행 순서를 보장하지 않는다. 이건 버그가 아니라 명세다. DB는 가장 빠르게 가져올 수 있는 순서로 반환할 자유가 있다.그런데 paginate()는 내부적으로 LIM..
라라벨 모던하게 DTO 사용하기 (feat: Laravel Spring) 필요패키지 : # laravel-data $ composer require spatie/laravel-data $ php artisan vendor:publish --provider="Spatie\LaravelData\LaravelDataServiceProvider" --tag="data-config" # laravel-route-attributes $ composer require spatie/laravel-route-attributes $ php artisan vendor:publish --provider="Spatie\RouteAttributes\RouteAttributesServiceProvider" --tag="config..
Laravel Swagger 쉽게 적용하기 (feat. vyuldashev/laravel-openapi 패키지 ) PHP에서 Swagger를 적용하면 코드보다 더 길은 주석을 보게 될 것이다. 물론 Phpstorm에 플러그인을 달면 좀 편하게 쓸 수는 있지만, 이러한 단순 노가다를 하면서, 우리는 한 번쯤 이런 생각을 한다. ( 뭐 자동화나 클래스로 하는 방법은 없을까? ) PHP 쪽에도 이러한 움직임이 아예 없지는 않다. 그중 필자가 추천하는 패키지는 아래와 같다. https://vyuldashev.github.io/laravel-openapi/ 필자가 해당 패키지를 선택한 이유 1. 문서 작성을 주석에 의존하지 않고 재활용이 가능했으면 좋겠다. 2. 커스텀이 자유로웠으면 좋겠다 위에 2가지가 모두 부..
나는 PHP 개발자입니다.. (PHP 로고) PHP 개발자가 된 동기이전에는 자바 그중에서도 Spring Framework를 쓰는 개발자였습니다. 제가 처음 PHP로 넘어올 때는 그냥 단순히 연봉을 많이 쳐준다고해서 넘어갔습니다. 자바가 질려서도 아니고, PHP가 좋아서도 아닙니다. 많은 동료들이 말렸습니다. 죽어가는 언어, 쓰지도 않는 언어, 심한 경우 쓰레기 언어라는 표현까지 써가며 말렸습니다. 그래도 당시엔 결혼을 앞둔 시기라서 높은 연봉이 필요하기에 커리어를 포기하고 PHP로 넘어갔습니다. Q. 이 글을 읽고있는 독자분은 __ 개발자인가요 ? PHP 를 처음 맞이하였을 때의 느낌 PHP를 처음 볼때 느낌은 너무 직관적이며, 너무 쉬운언어였습니다. 자바를 하다 와서 그런지 문법을 1도 모르고 왔지만..
