전체 글
lru_cache : 캐싱 메모리
lru_cache는 Python의 functools 모듈에서 제공하는 데코레이터로, Least Recently Used(LRU) 캐싱 메커니즘을 구현합니다. 함수의 호출 결과를 메모리에 캐싱하여 동일한 입력에 대한 반복 계산을 방지합니다.기본 사용법from functools import lru_cache@lru_cache(maxsize=128)def fibonacci(n): if n 캐시 크기와 성능 측정import timefrom functools import lru_cachedef measure_time(func, *args): start = time.time() result = func(*args) end = time.time() return result, end - s..
FastAPI와 Nginx : 웹 서버 구성
Nginx란 무엇인가?Nginx(엔진엑스)는 고성능 웹 서버이자 리버스 프록시, 로드 밸런서, HTTP 캐시로 사용되는 오픈 소스 소프트웨어입니다. 2004년 Igor Sysoev가 개발한 이후, 현재 전 세계 웹 서버 시장의 상당 부분을 차지하고 있습니다.주요 특징:비동기 이벤트 기반 아키텍처낮은 메모리 사용량높은 동시성 처리 능력정적 파일 서빙 최적화FastAPI에 Nginx가 필요한 이유리버스 프록시 기능# nginx.confserver { listen 80; server_name example.com; location / { proxy_pass http://localhost:8000; proxy_set_header Host $host; prox..
Pydantic Field : 데이터 유효성 검사
Pydantic의 Field는 모델 필드를 정의할 때 사용되는 핵심 기능입니다. Field를 통해 데이터 유효성 검사, 기본값 설정, 제약 조건 등을 세밀하게 제어할 수 있습니다.기본 Field 매개변수from pydantic import BaseModel, Fieldfrom typing import Optionalclass User(BaseModel): # 기본적인 Field 사용 name: str = Field( default="John Doe", # 기본값 설정 min_length=2, # 최소 길이 max_length=50, # 최대 길이 description="사..
FastAPI 프로젝트 배포 자동화 가이드 Part 3: 무중단 배포와 모니터링
이번 파트에서는 무중단 배포 구성과 모니터링 시스템 구축에 대해 알아보겠습니다.무중단 배포 설정Blue-Green 배포 방식을 구현하기 위한 스크립트입니다.# scripts/blue_green_deploy.pyimport dockerimport osimport timeclass BlueGreenDeployer: def __init__(self): self.client = docker.from_env() self.blue_port = 8000 self.green_port = 8001 def get_current_deployment(self): containers = self.client.containers.list( filte..
FastAPI 프로젝트 배포 자동화 가이드 Part 2: CD 파이프라인과 서버 배포
Part 1에서 구성한 자동화된 빌드 환경을 바탕으로, 이제 실제 리눅스 서버에 배포하는 과정을 자동화해보겠습니다.CD 워크플로우 구성# .github/workflows/cd.ymlname: CD Pipelineon: workflow_run: workflows: ["CI Pipeline"] types: - completed branches: [main]jobs: deploy: runs-on: ubuntu-latest if: ${{ github.event.workflow_run.conclusion == 'success' }} steps: - uses: actions/checkout@v2 - name: Get Python Version id: ..
nohup : 백그라운드 프로세스 실행
nohup은 'no hang up'의 약자로, 터미널 세션이 종료되어도 프로세스가 계속 실행되도록 하는 Linux/Unix 명령어입니다. 서버 운영에서 매우 중요한 이 명령어의 사용법에 대해 자세히 알아보겠습니다.기본 사용법# 기본 형식nohup command [arguments] &# 예시: Python 스크립트 실행nohup python3 app.py &# 출력 리다이렉션nohup python3 app.py > app.log 2>&1 &출력 관리nohup은 기본적으로 현재 디렉토리에 'nohup.out' 파일을 생성합니다.# 특정 파일로 출력 리다이렉션nohup ./my_script.sh > output.log &# 표준 에러도 함께 리다이렉션nohup ./my_script.sh > output.lo..
프로젝트 배포 자동화 가이드 Part 1: 개발 환경 구성
윈도우에서 개발한 FastAPI 프로젝트를 리눅스 환경에서 배포하는 과정을 자동화해보겠습니다. 특히 Python 버전과 의존성 관리를 자동화하여 편리하게 배포할 수 있도록 구성하겠습니다.프로젝트 구조 설정my-fastapi-project/├── app/│ ├── api/│ ├── core/│ ├── models/│ └── main.py├── tests/├── .github/│ └── workflows/│ ├── ci.yml│ └── cd.yml├── scripts/│ ├── generate_requirements.py│ ├── get_python_version.py│ └── start.sh├── Dockerfile├── docker-compose.yml└..
Sudoers : 권한 관리
sudoers 파일은 Linux 시스템에서 sudo 명령어의 권한을 관리하는 핵심 설정 파일입니다. 이 파일을 통해 어떤 사용자가 어떤 명령어를 실행할 수 있는지 상세하게 제어할 수 있습니다.sudoers 파일 위치와 기본 구조# sudoers 파일 위치/etc/sudoers# 안전하게 편집하기sudo visudo기본 문법 구조# 사용자 권한 설정user HOST=(USER:GROUP) COMMANDS# 예시john ALL=(ALL:ALL) ALLmary ALL=(root) /usr/bin/apt-get주요 설정 예시# root 사용자 설정root ALL=(ALL:ALL) ALL# sudo 그룹 설정%sudo ALL=(ALL:ALL) ALL# 특정..