프로그래밍/Python

[Python 강의] 31강 - Flask로 만든 애플리케이션을 배포하고 최적화하는 방법

월횽 2024. 11. 11. 06:30
728x90
반응형
SMALL

안녕하세요! 그레이 해커 월횽입니다. 오늘은 Flask로 만든 애플리케이션을 실제 서버에 배포하고, 성능을 최적화하여 안정적인 서비스로 운영하는 방법에 대해 알아보겠습니다.

 

1. 배포 준비 단계

배포를 위해서는 다음 사항을 준비해야 합니다.

· 소스 코드: Git과 같은 버전 관리 시스템에 저장하고 관리합니다.
· 서버: 클라우드 호스팅 서비스 (예: AWS, DigitalOcean, Heroku 등)를 사용하거나, 개인 서버에 배포합니다.
· 설정 파일: config.py 파일을 만들어 환경 설정 (예: 데이터베이스 URL, 비밀 키) 등을 관리합니다.

 

2. Gunicorn으로 Flask 애플리케이션 구동하기

Gunicorn은 WSGI 서버로, Flask 앱을 보다 빠르고 안전하게 구동할 수 있도록 돕습니다. 먼저, Gunicorn을 설치합니다.

pip install gunicorn

 

반응형

애플리케이션을 Gunicorn으로 구동하는 명령어는 다음과 같습니다.

gunicorn -w 4 -b 0.0.0.0:8000 app:app

· -w 4: 워커 프로세스 수입니다. 서버의 코어 수에 맞게 설정합니다.
· -b 0.0.0.0:8000: 바인딩할 IP 주소와 포트 번호입니다.

 

3. Nginx 설정으로 애플리케이션 안정성 높이기

Gunicorn으로 구동된 애플리케이션은 Nginx와 같은 웹 서버를 통해 프록시 처리하여 성능과 보안을 강화할 수 있습니다.

 

(1) Nginx 설치 (Linux 기준)

sudo apt update
sudo apt install nginx
728x90

(2) Nginx 설정 파일 편집 /etc/nginx/sites-available/myflaskapp 파일을 생성하고 다음 내용을 추가합니다.

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

 

(3) Nginx 활성화 및 재시작

sudo ln -s /etc/nginx/sites-available/myflaskapp /etc/nginx/sites-enabled
sudo systemctl restart nginx

 

4. SSL 인증서로 HTTPS 설정

HTTPS를 통해 보안을 강화할 수 있습니다. Let’s Encrypt로 무료 인증서를 발급받아 SSL을 설정합니다.

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com

 

 

5. 애플리케이션 최적화 방법

애플리케이션 성능을 높이기 위해 여러 최적화 기법을 적용할 수 있습니다.

· 데이터베이스 최적화: 쿼리를 정리하고, 인덱스를 활용하여 속도를 개선합니다.
· 캐싱 사용: Redis나 Memcached와 같은 캐시 서버를 통해 자주 사용하는 데이터를 메모리에 저장하여 응답 속도를 높입니다.
· 정적 파일 최적화: JavaScript, CSS, 이미지 파일 등을 Nginx에서 직접 제공하여 서버 부하를 줄입니다.

SMALL

6. 로깅 및 모니터링 도구 설정

애플리케이션이 배포된 이후에는 에러 로그와 시스템 상태를 지속적으로 모니터링해야 합니다. Sentry, Grafana, Prometheus 등의 도구를 활용하면 문제를 빠르게 파악하고 대응할 수 있습니다.

오늘은 Flask 애플리케이션 배포와 최적화 방법을 알아보았습니다. 다음 시간에는 Flask 기반 RESTful API 구축과 활용을 다루어 보겠습니다!

 

 

 

 

 

- 이전 수업 목록

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형
LIST