레몬베이스에서 Django와 Gunicorn으로 운영 중인 백엔드에서 배포하면 API 레이턴시가 5초 정도로 증가하는 문제를 발견하고 해결해나가는 과정을 정리한 글입니다. 실제 과정은 훨씬 험난했겠지만 글만 봐도 전체적인 접근해서 트러블슈팅의 정석이라는 생각이 들었습니다.


지금 사용하고 있는 Gunicorn이 내부적으로 어떻게 동작하는지를 자세하게 파악한 뒤에 문제되지 않는 부분을 제외한 다음에 추적했을 때 이미 preloading을 사용하고 있었는데도 배포직후에는 콜드스타트가 발생하고 있었기 때문에 preloading이 어떻게 동작하는지 자세히 파악해 보고 있습니다.


그럼에도 원인을 파악하기 어렵자 웹 프레임워크인 Django의 동작방식을 살펴보다가 urls.pyview 부분이 프리로딩이 되지 않은 것을 알게 되고 이때분에 레이턴시가 발생했다는 것을 발견하게 됩니다. 그 후 해당 부분이 프리로딩되도록 수정해서 문제를 해결합니다.


대부분의 트러블슈팅이 원인을 알면 간단하지만 알기 전에는 어렵기 마련인데 추적하는 과정을 잘 정리해서 재미있게 보았습니다.


https://blog.lemonbase.team/%EB%B0%B0%ED%8F%AC-%EC%8B%9C%EC%A0%90%EC%97%90-%EA%B8%89%EC%83%81%EC%8A%B9%ED%95%98%EB%8A%94-api-latency-%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0-django-gunicorn-%EC%82%AC%EB%A1%80-7f7a1da7b0aa

배포 시점에 급상승하는 API Latency 해결하기 — Django + Gunicorn 사례

Medium

배포 시점에 급상승하는 API Latency 해결하기 — Django + Gunicorn 사례

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2024년 9월 6일 오후 12:55

 • 

저장 16조회 2,907

댓글 0

    함께 읽은 게시물

    소프트웨어 공학 스킬과 개념 빨리 익히는 법

    배울 건 많고, 시간은 없는데 개념 익히고 내 것으로 완전히 만드는 데 오랜 시간이 걸립니다. 빨리 배울 수 있는 팁 없을까요? 스킬과 개념 빨리 익히는 팁 알려주는 영상이 있어서 정리해서 올려요. 1️⃣ 다양한 기술 접해보기 프런트엔드라면 프런트엔드의 다양한 프레임워크에 관해서 배운다. 여기서 ‘다양한’이라는 단어를 사용했지만 따지고 보면 새로운 프레임워크를 배우는 건 ‘프론트엔드‘라는 같은 영역에서 비슷한 기술을 습득하는 것이다. 계속 성장하려면 이렇게 한 영역에 집중한 기술보다 다양한 영역의 기술을... 더 보기

    How I learn new skills & software engineering concepts fast

    YouTube

    How I learn new skills & software engineering concepts fast

     • 

    저장 92 • 조회 5,705


    오픈소스로 완성하는 AI Full Stack

    AI와 관련된 수 많은 오픈소스들이 쏟아지면서 오픈소스 생태계는 그야말로 AI 오픈소스 르네상스를 맞이하고 있습니다. LangChain의 성공을 시작으로 많은 오픈소스들이 나오면서 AI 업계 시스템을 빠르게 메꾸고 있기도 합니다.

    ... 더 보기

     • 

    댓글 1 • 저장 131 • 조회 8,357


    6년간의 토이프로젝트 여정을 마무리하며 - 기술블로그 구독서비스 회고록

    ... 더 보기

    6년간의 토이프로젝트 여정을 마무리하며 - 기술블로그 구독서비스 회고록

    taetaetae.github.io

    6년간의 토이프로젝트 여정을 마무리하며 - 기술블로그 구독서비스 회고록

     • 

    댓글 1 • 저장 11 • 조회 2,506




    스프링 핵심 기능으로 통합된 Spring Retry

    S

    ... 더 보기

    스프링 핵심 기능으로 통합된 Spring Retry

    www.linkedin.com

    스프링 핵심 기능으로 통합된 Spring Retry

     • 

    저장 2 • 조회 647