
이 가이드의 Part 1에서 생성한 PostgreSQL 데이터베이스와 연동하는 과정을, Part2에서 VS Code를 활용하여 Flask 애플리케이션을 Azure에 배포하는 과정을 다룹니다.
이 가이드는 Azure 클라우드 환경에서 Azure Database for PostgreSQL - 유연한 서버(Flexible Server)를 생성하고, 로컬 환경(DBeaver)에서 접속 테스트를 수행하는 과정을 다룹니다.
비용 효율적인 개발/테스트 용도로 최저가 구성을 목표로 합니다.
Azure의 모든 리소스는 '리소스 그룹'이라는 논리적 컨테이너 안에 생성됩니다. 관리를 위해 그룹을 먼저 만듭니다.
3dt005-rgKorea Central (한국 중부) - 가까운 리전을 선택합니다.웹 애플리케이션의 데이터를 저장할 데이터베이스 서버를 생성합니다.
가장 중요한 설정 단계입니다. 비용 절감을 위해 구성을 신중히 선택하세요.
3dt005-rg 선택3dt005-boarddb (전체 Azure에서 고유해야 함)Korea Central (리소스 그룹과 동일하게 설정)16 (또는 최신 버전)버스트 가능(Burstable)Standard_B1ms (1 vCore, 2GiB RAM)32GB (최소)PostgreSQL 인증만 선택azureuser7452를 포함한 복잡한 암호 (예: P@ssword7452)로컬 PC(DBeaver)에서 접속하기 위해 방화벽을 열어야 합니다.
생성된 데이터베이스의 접속 주소를 확인합니다.
3dt005-boarddb.postgres.database.azure.com (예시)azureuser로컬 PC의 DBeaver에서 Azure DB에 정상적으로 접속되는지 확인합니다.
3dt005-boarddb...azure.com)postgres (기본 생성되는 DB)azureuserSSL mode를 require로 설정).app.py) 연결 준비이제 확보한 정보를 바탕으로 파이썬 웹 애플리케이션(app.py)의 DB 연결 설정 코드를 준비합니다. .env 파일을 활용하는 것이 보안상 좋습니다.
.env 파일 예시:
DB_HOST=3dt005-boarddb.postgres.database.azure.com
DB_NAME=postgres
DB_USER=azureuser
DB_PASSWORD=설정한비밀번호
DB_PORT=5432
app.py 연결 함수 예시:
def get_db_connection():
conn = psycopg2.connect(
host=os.getenv('DB_HOST'),
database=os.getenv('DB_NAME'),
user=os.getenv('DB_USER'),
password=os.getenv('DB_PASSWORD'),
port=os.getenv('DB_PORT'),
sslmode='require' # Azure 접속 시 필수 옵션
)
return conn
다음 단계: 이제 데이터베이스가 준비되었습니다. 다음 파트에서는 이 DB를 사용하는 Flask 웹 애플리케이션을 Azure App Service에 배포하는 과정을 다룹니다.
이 가이드는 로컬에서 개발한 Flask 애플리케이션을 Azure App Service에 배포하고, 앞서 구축한 PostgreSQL 데이터베이스와 연결하여 실제 서비스 가능한 상태로 만드는 과정을 다룹니다.
Azure App Service 검색 및 설치)Azure 서버(Linux 환경)에서 파이썬 애플리케이션이 구동되려면 필요한 라이브러리 목록이 명시되어 있어야 합니다.
터미널에서 프로젝트 폴더로 이동하여 가상환경을 활성화합니다.
# 가상환경 경로로 이동 및 활성화 (Windows 기준)
cd c:\\Users\\EL035\\dataschool\\SQL\\venvs\\dataproject
.\\Scripts\\activate
# 프로젝트 폴더로 이동
cd ..\\..\\myboard
Azure(Linux)는 프로덕션 환경에서 Flask 내장 서버 대신 Gunicorn WSGI 서버를 사용합니다. 반드시 설치 목록에 포함되어야 합니다.
Gunicorn 설치 (아직 없다면):
pip install gunicorn
패키지 목록 추출:
pip freeze > requirements.txt
📄 requirements.txt 예시 (필수 항목)
파일을 열어 Flask, psycopg2-binary, gunicorn 등이 포함되어 있는지 확인합니다.
Flask==3.1.2
gunicorn
psycopg2-binary==2.9.11
python-dotenv==1.2.1
# ... 기타 라이브러리들
VS Code의 Azure 확장을 사용하면 포털에 접속하지 않고도 손쉽게 웹앱 리소스를 생성할 수 있습니다.
3dt005-webapp (전세계 유일한 이름이어야 함)3dt005-rg (Part 1에서 만든 그룹 선택)Python 3.12 (로컬 개발 버전과 맞춤)Linux 권장Korea Central (한국 중부)Create new... -> 이름 입력 -> 요금 계층에서 B1 (Basic) 선택.배포 전에 데이터베이스 연결 정보와 빌드 설정을 Azure에 등록해야 합니다. 보안상 .env 파일은 업로드하지 않으므로 이 단계가 필수적입니다.
3dt005-webapp 리소스로 이동합니다.SCM_DO_BUILD_DURING_DEPLOYMENT)서버에서 배포 시 라이브러리를 자동으로 설치하도록 설정합니다.
SCM_DO_BUILD_DURING_DEPLOYMENT 값을 찾습니다.true로 되어 있는지 확인합니다. (기본값)로컬의 .env 파일에 있던 내용을 Azure 환경 변수로 옮겨 적습니다.
3dt005-boarddb.postgres.database.azure.com (Part 1에서 확인한 엔드포인트)5432postgresazureuser설정한_비밀번호이제 준비된 코드를 Azure 서버로 전송합니다.
3dt005-webapp을 우클릭하고 [Deploy to Web App...]을 선택합니다.myboard)를 선택합니다.배포가 완료되면 웹사이트가 정상적으로 작동하는지 확인합니다.
배포 직후 서버 내부에서 오류가 없는지 확인하는 가장 좋은 방법입니다.
3dt005-webapp 우클릭.https://3dt005-webapp.azurewebsites.net)를 복사합니다.매번 VS Code에서 수동으로 배포하는 대신, GitHub에 코드를 푸시(Push)하면 자동으로 배포되도록 설정할 수 있습니다.
myboard)에 Push 해둡니다.3dt005-webapp > [배포] > [배포 센터(Deployment Center)] 이동.GitHub 선택geondongkim)myboardmain기본 인증 (또는 사용자 할당 ID)main 브랜치에 코드가 업데이트될 때마다 Azure가 자동으로 변경 사항을 감지하고 배포를 수행합니다.Tip: 배포 센터 설정을 완료하면 GitHub 리포지토리에 .github/workflows 폴더와 yml 파일이 자동으로 생성됩니다. 이 파일이 배포 스크립트입니다.