본문 바로가기

최적화2

Redis 최적화하기 우리회사는 Response 속도를 극대화하기위해 다중 캐시 시스템을 구축하고 있다. 처음에는 Redis를확인하고, Redis에 데이터가 없다면 Database를 확인 데이터를 확인하며, 둘 다 캐시된 데이터가 없을 경우 최신 데이터를 불러오는 방식이다. 이 때 Redis 서버가 바로 응답하지 못하는 상황에 빠지는 상황에 대비하여 실제 get요청을 하기 이전에 ping이라는 가벼운 요청을 통해 Redis를 사용할 수 있는지를 검증한다. 그리고 만약에 ping요청이 200ms 보다 더 오래걸린다면 빠르게 응답할 수 없는 상태로 간주하기로 하였다. 그 이유는 ping은 대체로 50ms 이내로 응답이 와야하는것이 일반적이기 때문이다. (개선 후의 캡쳐본-개선 이전의 기록는 시간이 지나 삭제됐다..) APM 기록.. 2024. 1. 27.
Puppeteer 최적화 작업 기록 (feat. Browserless) 최근 회사에서 온 힘을 쏟고있는 프로젝트의 최적화 작업을 맡게 되었었다. 임무는 다음과같았다. puppeteer를 통해 이루어지는 작업이 있는데, 최대한 빨라야한다. 서버가 계속적으로 중단 및 재시작 되는 이슈를 잡아야한다. 우리회사는 독특하게 이미지를 생성하기위해 puppeteer를 사용한다. 이는 자동화 이미지 생성을 위해 새로운 개발자를 채용하기 보다, 기존 인력에서 html+css와 js를 추가 활용하여 적합한 이미지를 생성하기 위함이다. 나는 곧바로 문제 분석에 들어가게 되었고, 가장 직관적으로 문제를 확인할 수 있는 코드 분석 부터 진행 해 보기로 했다. 그리고 파악한 상황은 아래와 같았다. 이미지 작업을 위해 puppeteer를 사용한다. 각 이미지 작업은 수없이 많은 js코드를 실행 해야 .. 2024. 1. 23.