[Docker] 이미지 CVE 대응 정리 CVE-2025-69720, CVE-2025-32434 (python:3.9-slim, PyTorch)
·
개발 (Development)/Docker
문제 정의Docker 이미지 스캔 과정에서 여러 CVE가 발견되었고, 이를 해결하는 과정에서 다음과 같은 질문이 발생했습니다.base image 문제인지, 라이브러리 문제인지 어떻게 구분할까?apt-get install -y --no-install-recommends는 왜 쓰는 걸까?CVE-2025-32434는 왜 발생했고 어떻게 해결해야 할까?requirements.txt에서는 무엇을 바꿔야 할까?결론적으로 이번 문제는 OS 패키지와 Python 패키지 취약점을 구분하고 각각 다른 방식으로 해결하는 과정이 핵심이었습니다.1. 문제의 시작: CVE 탐지사용 중인 base image는 아래와 같았습니다.python:3.9.12-slim이미지 스캔 결과 여러 취약점이 발견되었고, 처음에는 base image..
[Python] FastAPI 백그라운드 학습에서 메모리 사용량 급증을 줄이는 리팩터링 정리
·
개발 (Development)/Python
FastAPI의 백그라운드 작업에서 대용량 학습 로직을 실행하면, 요청이 누적될수록 프로세스 메모리가 지속 증가하는 현상이 발생할 수 있습니다. 본 글에서는 실제 코드 흐름에서 메모리 사용량이 커지는 원인을 짚고, DataFrame/NumPy 처리 및 finally 정리 전략을 통해 메모리 부담을 줄이는 방법을 정리합니다.문제 정의다음과 같은 상황에서 메모리 사용량 급증 또는 누수처럼 보이는 현상이 발생할 수 있습니다.API 요청 처리 프로세스 내부에서 장시간 학습/전처리 로직을 실행한다.시나리오(또는 그룹) 루프마다 대형 DataFrame을 copy()하여 반복 생성한다.NumPy 배열 변환 과정에서 astype() 등으로 대형 배열 복사가 여러 번 일어난다.동일한 크기의 마스크(np.isnan)를 반..
[Python] psycopg2에서 ALTER TABLE 실행하는 올바른 방법
·
개발 (Development)/Python
데이터베이스 작업 중 테이블 구조를 변경해야 할 때, ALTER TABLE 명령을 사용하게 됩니다. 하지만 pandas.read_sql_query()로 이 명령을 실행하려고 하면 오류가 발생합니다. 이번 글에서는 그 이유와 함께, psycopg2를 사용해 ALTER TABLE을 올바르게 실행하는 방법을 정리했습니다.1. 왜 pd.read_sql_query()로는 ALTER TABLE이 안 될까?pandas.read_sql_query()는 SELECT 결과를 DataFrame으로 읽어오는 용도로 만들어졌습니다.즉, 쿼리 실행 후 결과 집합을 반환해야 하는데, ALTER TABLE은 반환값이 없습니다.따라서 아래와 같은 에러가 발생합니다.pandas.io.sql.DatabaseError: Execution ..
[Python] requests에서 대량 배열 전송 시 403 오류 해결
·
개발 (Development)/Python
문제 상황Python requests 라이브러리로 API에 PUT/POST 요청을 보낼 때, 배열 길이가 100개를 초과하면 403 Forbidden 오류가 발생했습니다.같은 API를 브라우저 UI나 Postman에서 호출하면 정상 동작했기 때문에, Python에서의 요청 형식에 문제가 있다고 판단했습니다.원인 분석requests 자체 제한 없음: 라이브러리 차원에서 배열 크기나 본문 길이를 제한하지는 않습니다.직렬화 방식 차이: json= 옵션은 기본적으로 ensure_ascii=True, 직렬화 시 공백 포함 → 바디가 불필요하게 길어짐.전송 형식 차이: Content-Length가 명확히 지정되지 않거나 청크드 전송이 되면, 보안 장비(WAF)가 차단할 수 있음.UI와 차이: 브라우저/포스트맨은 항..
[Python] MAU(Monthly Active Users) 계산 방법
·
개발 (Development)/Python
이번 글에서는 텍스트 파일 형태의 사용자 접속 로그를 활용하여 MAU(Monthly Active Users) 를 계산하는 방법을 소개합니다.MAU는 한 달 동안 한 번이라도 활동한 고유 사용자 수를 의미하며, 서비스 이용 현황을 파악하는 데 중요한 지표입니다.1. 데이터 확인저는 다음과 같이 user, ip, event_time 세 컬럼을 가진 로그 파일을 준비했습니다.IP는 보안상 위험이 있을 수 있으므로, 아래 예시에서는 임의의 비공개 대역 IP(192.168.x.x)로 대체하였습니다.useripevent_timeadmin192.168.0.102023-11-08 01:02:17.883guest192.168.0.102023-11-08 01:04:47.914admin192.168.0.112023-11-0..