프로그래밍/Python

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

그레이해커 월횽 2024. 11. 11. 06:30

안녕하세요! 그레이 해커 월횽입니다. 오늘은 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