페이지 번호를 포기해야 할 때, OFFSET과 커서 페이지네이션의 갈림길관리자 목록 화면에서 1페이지는 40ms, 900페이지는 4초가 나오는 상황을 본 적이 있습니다. 쿼리는 똑같습니다. 인덱스도 그대로입니다. 바뀐 건 OFFSET 뒤에 붙은 숫자 하나뿐입니다. 이때 개발자가 가장 먼저 손대는 곳은 보통 인덱스인데, 정작 문제는 인덱스가 아니라 "건너뛰기"라는 동작 자체에 있습니다.이 글은 목록 API를 만들 때 OFFSET 방식과 커서 방식 중 무엇을 고를지 판단하는 순서를 정리한 것입니다. 성능 비교표를 만드는 것이 목적이 아니라, "우리 화면이 정말 페이지 번호를 필요로 하는가"부터 되묻는 쪽에 가깝습니다. MySQL, PostgreSQL 공식 문서와 Laravel 페이지네이션 문서를 기준으로 삼..
MariaDB 빠르게 백업하고 복원하기 이번에 RDS mariadb 에서 RDS auroradb 로 이전하게 되었다. 한달에 회원이 1~2만명 씩 꾸준히 늘어나고 있고, 피크 타임, 이벤트 타임 때 DB를 유연하게 움직이기 위해서 mariadb 를 보내줘야 했기 때문이다. 문제는 데이터가 너무 많았다. 물론 초대형 사이티들의 테라급은 아니지만, 적어도 내 경험 (이력) 에서 가장 많은 데이터다. 그냥 무작정 툴로 QA 서버를 백업과 복원을 했더니 4시간이 넘게 걸렸다. (우리는 production 서버의 한달 전 데이터가 staging, staging 의 한달전 데이터가 QA 다) 아무런 옵션 없이 하는 것은 무식한 짓인 것을 깨달아 경험을 공유할겸 나중에 내가 보고 다시 하려고 적어둔다. --no-au..
# 도커로 PHP 개발환경 만들기 # 목표- PHP 로 index.php에서 단순히 hello world로 찍기 위해서는 할 것이 많습니다. 거기에 DB에 redis라도 설치하면 하루를 뚝딱 넘기기도 합니다.물론 요즘은 wamp 나 오토셋 같은 툴들이 있어서 한번에 처리하는 방법도 있지만 요즘 트렌드에 맞게, 도커를 활용하여서 구축해보려고합니다.- 이번에 도커로 만들 개발환경은 laravel5.6 최소사양 + redis + memcached + mysql5.7 입니다. # 구조대부분의 개발환경을 보면 한 폴더안에 제작중인 PHP 프로젝트들을 몰아놓고 개발하실 것입니다.ex) 프로젝트1 프로젝트2가 있다면root folder - prj1 - prj2이런식의 구조- 하나의 docker-compose 로 모든..
