[Microsoft Data School] 23일차 - 애플리케이션서버구축, PostgreSQL기반의 미니 프로젝트

RudinP·6일 전

Microsoft Data School 3기

목록 보기
25/29
post-thumbnail

git으로 올린 파일을 확인하니 .env까지 올려버리고 cache파일까지 추가해버려서 제외하고 다시 올렸다.
1. .gitignore 작성
2. stage된 파일 삭제

git rm [-r] --cache 파일이름
git add .
git commit -m "코멘트"
git push origin main

remote에 올릴 때 저장소 이름을 다르게 설정하고싶다면

git remote add <remote이름> <저장소URL>

git remote rename <기존이름> <새이름> ←이건 변경

애플리케이션 서버 구축

Azure 클라우드에서 애플리케이션 서비스 하기

Azure App Service

Azure App Service에 파이썬 웹앱 배포

https://learn.microsoft.com/ko-kr/azure/app-service/quickstart-python?tabs=flask%2Cwindows%2Cvscode-aztools%2Cvscode-deploy%2Cdeploy-instructions-azportal%2Cterminal-powershell%2Cdeploy-instructions-zip-azcli

1. 프로젝트 코드 다운로드

git clone 

2. 앱에 대한 가상 환경 만들기

py -m venv .venv
.venv\scripts\activate

3. 종속성 설치

pip install -r requirements.txt

Azure VSCODE에서 실행

Azure Tools 설치

requirements.txt 생성

pip freeze

Azure 로그인

create new webapp

환경변수값 세팅


SCM_DO_BUILD = true 확인

1. azure portal

2. 환경변수 설정

리소스 시각화 도우미 - 설정 - 환경 변수

.env파일에 있던 환경변수를 추가한다.
(당연하지만, DB등의 값은 서버의 값으로 해두어야 한다.)

VSCode에서도 확인 가능

3. Deploy to webapp


4. start streaming log

5. 주소 확인

webapp - 개요

https://3dt016-webapp-gfhaghgya6eggabf.koreacentral-01.azurewebsites.net/

github 연동

Azure Portal배포배포 센터

자동으로 워크플로우 생성이 된다.

requirements.txt 위치를 잘못잡아서 이동시키고 rerun job 해주었다.

이 화면이 나오게된다면 python app 파일 인식이 안된것이다.
나같은 경우에는 requirements.txt를 인식이 안된다고 이동시켜줬던것인데, 사실은 app.py와 같은 위치에 뒀던 이전 방법이 맞고, yaml파일에서 경로 설정을 해줘야했던것이다.
working-directory: 로 설정해주면 된다.

개인 프로젝트

PostgreSQL로 데이터베이스를 만들고, azure서버에 올린뒤 자신만의 웹앱을 만드는 것이 이번 프로젝트의 주제이다.
저번 워드프레스때도 그렇고, 맛집을 기준으로 테마를 잡았다.
서울시 지하철 역 별 승하차 인원, 서울시 역별 구(주소), 서울시 휴게음식소 데이터를 기준으로 시각화한 웹앱을 만들게 되었다.
의도: 승하차인원이 많은 곳에 휴게음식소도 많지 않을까? 휴게음식소가 폐업하는것과 승하차 인원이 상관관계가 있을까?

데이터 다운로드

서울시 휴게음식점 인허가 정보
서울시 지하철호선별 역별 승하차 인원 정보
서울교통공사_자치구별지하철역정보
https://data.seoul.go.kr/dataList/OA-12914/S/1/datasetView.do
https://www.data.go.kr/data/15081868/fileData.do

데이터 전처리

chatgpt한테 csv 파일을 보내 "구만 남겨줘" 등등의 전처리를 하였다.
이 부분이 시간이 제일 오래걸렸다. 필요없는 값을 날리고, utf8이나 EUC-KR을 설정하고, column을 대응시키거나 테이블을 의도한대로 구성하는게 까다로웠다.
특히, 모든 지하철 정보에 지하철 ID가 있었다면 인덱싱에 유리했을텐데 그것까지 작업하지는 못했다. (내 생각엔 (호선, 역명)을 묶어 지하철 ID가 있는 테이블로부터 값을 가져와 키를 만들면 될것같긴 했다.)

database 생성

restaurant_info

station_address

station_boarding

station_info

v_restaurant_summary

v_station_summary

가상환경 생성

python -m venv venv
pip install -r requirements.txt
set FLASK_DEBUG=true

웹앱 구성

각 데이터를 위한 PostgreSQL 테이블 만드는 sql 파일 생성해.
이런 데이터베이스가 있어. 데이터 시각화를 해서 flask기반의 앱을 만들고, 이 서버를 Azure app service로 올릴 예정이야. 한글로 plan 짜줘. 또한 적합해보이는 데이터 시각화를 해줘. 
각 지하철별 유동인구수에따른 업장의 수 상관관계를 보여주는 시각화도 추가해. 이는 "중랑구"와 같이 구를 중심으로 묶어서 확인 가능해. 
"종로구"와 같이 구 주소만 보이게 한 뷰가 있어. v_restaurant_with_district 뷰 쓰면 되잖아. 1. 지하철역이 많은 구 시각화 2. folium으로 승하차 인구 수, 업종의 수 2가지를 버블의 크기로 시각화 3. 승하차 인구수와  buisness_type_name 의 상관관계 시각화 4. buisness_status_name 이 '폐업'인 곳과 승하차 수의 상관관계를 '종로구'와 같은 '구'를 중심으로 시각화  
시각화한 데이터가 안뜨고 map을 가니 오류발생
이제 영어로 된걸 한국어로 바꾸고, corner raidus 등등을 이용하고 fancy한 레이아웃으로 바꿔줘

Azure Webapp 구성


github action 적용

deploy중 오류가 발생했다.

나는 3.13으로 설정했는데, 앱을 만들때 3.10을 기준으로 작업을 해서 그런듯.
3.10으로 python-version을 바꿔주었다.
그런데, azure web app 설정할 때 3.13으로 설정했던걸 뒤늦게 깨달았으나, 왠지는 모르겠는데 수정안해도 정상작동을 해서 그냥 뒀다.

https://3dt016-miniproject3-eqbdabgcenexhafd.koreacentral-01.azurewebsites.net/dashboard

소감

github에 push할때마다 github action으로 자동 CI/CD를 처리하는 방법을 드디어 경험했다.
그리고 antigravity를 사용할 때, 그냥 데이터베이스를 던져주고 시각화해달라는것보다, 결국엔 내가 시각화 방식을 제시해야 의도에 맞는 결과가 나오는듯했다. 이론 공부가 더 중요해지는 부분이다. 물론, plan할때 데이터베이스 자체를 주고 어느 시각화가 효과적일지 물어본 뒤에 생성하는 방법도 존재하겠지만, 앞선 데이터 전처리 과정에서 시간을 소비하여 그러질 못했다.
지금도 정규시간 끝났는데 혼자 하고있다^^.. 아무튼 했죠?

profile
iOS 개발자가 되기 위한 스터디룸/스터디의 레퍼런스는 모두 kxcoding

0개의 댓글