Django의 CONN_MAX_AGE 알아보기

Today I Learned 날짜 2025년 8월 3일 일요일 내용 Django Database Connection Management Guide 본 문서는 Django 애플리케이션에서 데이터베이스 연결을 안정적이고 효율적으로 관리하기 위한 두 가지 핵심 도구 close_old_connections() 와 CONN_MAX_AGE 를 하나로 정리한 문서입니다. 웹훅 처리 커맨드에서 close_old_connections를 사용해야 하는 원인을 찾는 과정에서 수행된 실험입니다. 목차 close_old_connections() 가이드 Django close_old_connections 완벽 가이드 Django 애플리케이션을 운영하다 보면, 특히 오래 실행되는 스크립트나 비동기 작업에서 “MySQL server has gone away"와 같은 데이터베이스 연결 오류를 마주칠 때가 있습니다. close_old_connections는 바로 이런 문제를 해결하기 위해 Django가 제공하는 유용한 도구입니다. ...

2025년 8월 3일 · 13 분 · 배준수

데이터베이스 구조 설계

Today I Learned 날짜 2024년 8월 30일 금요일 내용 데이터베이스 구조 짜기 새로운 스프린트를 들어가면서 서버를 파야한다. 데이터베이스 구조를 고민하는데 참 여러모로 쉽지 않다. 네이버 플랫폼 확장이 이뤄질 것이다 보니.. 중요한 포인트는 플랫폼은 네이버와 쇼피파이가 될 예정 가져올 인스타그램 계정 종류는 두가지다. 인스타그램 비즈니스 계정과 일반 계정 인스타그램 비즈니스 계정은 필수적으로 페이스북 페이지와 연결되어있다. 네이버에서 어떤 데이터를 어떻게 사용할지 모른다. 가장 중요한건 확장성이라고 판단했고, 기존 알파플러스를 유지보수하고 개선하면서 가장 힘든게 최상위 데이터가 플랫폼에 종속되어 있다는 점이었다. 그땐 그게 당연헀으니까… 그래서 이번엔 최상위 테이블을 외부 데이터와 전혀 관련되지 않게 만들었다. ...

2024년 8월 30일 · 1 분 · 배준수

또 기능 개발

Today I Learned 날짜 2024년 8월 29일 목요일 내용 다시 또 새로운 서비스 인스타그램에서 댓글을 가져오는 서비스를 만들었다. 이걸 더 발전시키는 스프린트를 시작했다. 기존 알파플러스에 붙어있던 걸 떼내고 새로운 기능을 추가해야 한다. 단, 다음 스프린트로 진행할 네이버 스마트스토어에 들어가는 것을 고려해서 짜야 한다. 플랫폼이 늘어날 것이기 때문에 유저를 최상단 테이블로 설정했다. 이전 알파플러스를 유지보수하면서 가장 힘들었던 점은, 늘어날 걸 예상하지 못한채 짜여져있다는 점이었다. 예를 들어, 기존 프로덕트 리뷰만 있는 상태에서 AI, 리스트 디자이너, 브라우저 부스터(심지어 다른 앱)이 늘어나면서 어떤 샵이 사용중인 서비스들의 상태를 저장하기 꽤나 곤란했다. 결국은 json 타입으로 설정해서 변경에 자유롭게 해뒀지만 이 데이터를 다루는게 꽤나 거추장스러웠다. 특히 다른 앱이지만 같은 시스템을 공유하는 브라우즈부스터때는 두 개의 샵 테이블이 서로 영향을 끼치면서 발생하는 문제는 정말 골치아팠다. ...

2024년 8월 29일 · 2 분 · 배준수

추상클래스의 작동 방식

Today I Learned 날짜 2024년 8월 28일 수요일 내용 전환데이터의 종류 네이버 검색광고에도 전환 데이터에 대한 타입이 추가되었다. 제공되는 전환수와 값이 어떤 전환에 대한 데이터인지를 구분해서 준다. 회원가입, 장바구니 담기, 구매 완료, 등등 8가지 종류가 있다는데 정확히 무엇을 의미하는지는 나도 몰?루. 그냥 나눠서 제공해야하니 구현했다. 처음엔 일단 모든 데이터를 가져오되, 현재는 합쳐져 있는 데이터를 전환 종류에 따라 분류해서 들고있으려고 했다. 모두 들고 저장은 하되, 구글 스프레드시트에 넣을 때만 필요한 전환 종류의 데이터만 넣도록 만드는게 목표였다. 이유는 ...

2024년 8월 28일 · 4 분 · 배준수

redis cache

Today I Learned 날짜 2024년 8월 27일 화요일 내용 Redis 캐시 대소동 오늘 새벽, 똑같은 오류가 6만번이나 발생했다.. 기능에는 이상이 없었으나 너무 놀랄만한 수치라 후딱 확인해봤다. 상품과 관련된 리뷰나 평점 데이터를 쇼피파이 메타필드에 업로드 하는 함수에서 발생했다. 오류 메시지는 떴으나, 정확히 어떤 오류인지 이해가 잘안됐다. 오류 상황들을 살펴보니 공통적으로 비활성화 된 스토어의 상품들이었다. 몇가지 테스트 해보니 쇼피파이에서 비활성화된 스토어의 메타필드에는 접근 자체가 안되었고 거기서 발생한 오류였다. 이 함수는 진작에 매일매일 실행되는 애인데 왜 하필 오늘 아침에만 문제가 됐는가? 어제 내가 수정한 부분 떄문이었다. ...

2024년 8월 27일 · 3 분 · 배준수

새 프로젝트 준비

Today I Learned 날짜 2024년 8월 26일 월요일 내용 또 새로운 프로젝트 아임리포트 기능 개발을 마치고, 테스트를 진행했다. 매번 테스트서버에선 괜찮다가 실서버에서 QA할 때 문제가 발생했기 떄문에 실서버 환경에서 돌리면서 문제점을 찾았다. 가져올 데이터 양이 많아 테스트가 꽤나 오래걸리기 때문에 중간중간 뜨는 시간을 다음 프로젝트 준비로 뗴웠다. 이전에 개발한 인스타그램 비즈니스 계정의 댓글을 가져오는 서비스를 더 고도화해야 한다. 알파플러스 서비에 붙어있는데 이걸 떼내고 새로운 서비스로 만들어야 한다. 기존에 붙여놓을 때도 전혀 서로 연관하지 않도록 독립적으로 개발해놨기 때문에 분리하는 것에는 큰 공수가 들지 않는다. ...

2024년 8월 26일 · 1 분 · 배준수

올해는 윤년입니다.

Today I Learned 날짜 2024년 8월 23일 금요일 내용 방정식 데이터 생성 테스트 중에, 1년이 지난 데이터는 생성되지 않는다는 오류를 발견했다. 아니 그동안은 잘 주다가 갑자기 왜… 문서상으론 1년이 최대라고 하지만 그동안은 호출하면 잘 줬으면서 갑자기 왜 안주는 걸까. 주다 안주니 섭섭하게 짝이 없다. 어쩔수 없이 1년치만 가져오게 하려고 했는데… 정확히는 하루 전부터 364일 전까지 만 가져올 수 있다. 오늘과 1년 전의 오늘것은 가져올 수 없다. 이때부터 머리가 상당히 복잡해졌다. 반복문 에서 루프 한번 당 몇일치씩 요청을 보내야할까? ...

2024년 8월 23일 · 2 분 · 배준수

boto3로 S3 관리하기

Today I Learned 날짜 2024년 8월 22일 목요일 내용 불친절한 이웃 네이버 그래도 내가 쓴 코드라 그런지, 로직은 쉽게 고쳤다. 곤란한 경우가 있었는데, 보고서 생성 요청을 보내도 반환값의 downloadUrl 은 빈값이 들어온다. status 가 REGIST 라고 들어오는데 “니가 보낸 만들어달란 요청 받았음” 이라는 뜻이란다. 그냥 바로 만든거 달라고… 뭐 별수있나 만들고 요청을 보내야지. 그래서 만들고 ⇒ 응답값에 들어있는 reportId 로 다운로드 링크 조회하고 ⇒ 그 링크에서 다운로드 로 변경했다. 근데 웬걸? 조회 요청의 응답에 status 가 RUNNING 으로 온다. 아직 만드는 중이라는 뜻인데 생각보다 생성이 느리다. 어쩔수 없이 40일치 생성 ⇒ 40일치 다운로드 로 로직을 변경했다. ...

2024년 8월 22일 · 1 분 · 배준수

전화위복

Today I Learned 날짜 2024년 8월 21일 수요일 내용 전화위복 대참사도 이런 대참사가 따로 없다! 결국 매일 오전 정기 업데이트는 작동하지 않았다. 추가로, 정기 업데이트가 같은 네이버 API를 사용해서 발생하는 문제인 것으로 확인했습니다. 따라서 현재 같은 광고계정 간의 동시처리 금지 정책을 같은 관리자 계정 간의 동시처리 금지 정책으로 변경해야 할듯 합니다. 이렇게 되면 사용성이 많이 떨어져서 현재 진행 로직을 좀 변경할 계획입니다. 현재 최근 50일치 데이터 생성 및 다운로드(네이버 API 사용) 데이터 전처리(네이버 API 사용 X) 50일전~ 100일전 데이터 생성 및 다운로드(네이버 API 사용) 전처리(네이버 API 사용 X) …400일치 누적되면 구글 API를 이용해 삽입하는 모양새를 취하고 있는데, 각각 2,4번이 꽤 작업이 오래걸립니다(전체 시간 중 약 70~80%).따라서 일괄 생성 및 다운로드 방식으로 변경할 계획입니다. ...

2024년 8월 21일 · 3 분 · 배준수

결과값 통일의 장점

Today I Learned 날짜 2024년 8월 20일 화요일 내용 결과값의 통일 아임리포트 베타테스트가 성공하지 못했다. 시작하자마자 또 온갖 오류가 다터졌기 떄문… 가장 큰 문제는 매일 아침 실행되야할 정기 업데이트가 실행되지 않았다. 뜯어본 결과, 매일 아침 여러 광고 계정이 동일한 네이버 계정으로 API를 호출해서 요청이 실패한 걸로 추정된다. 그런데 이 서비스를 사용할 유저들의 대부분은 이런 형태(하나의 관리자 계정으로 여러 광고계정을 관리하는)일 것이라 이에 대한 대비가 필요하다. 점심먹다가, 다운로드받은 보고서 csv를 s3에 저장하는게 어떻냐는 아이디어를 들었는데 옳타구나 싶었다! ...

2024년 8월 20일 · 2 분 · 배준수