Streamlit App Deployment Compute Engine with Github Action in GCP

개요

  • Google Compute Engine에서 Gihub Action을 구현하도록 한다.

프로젝트 생성

  • 새 프로젝트 버튼을 클릭 후 프로젝트 명을 streamlit-gitaction으로 명명한다.

Untitled

Instance 생성

  • Compute Engine > VM Instance 선택 후, 새로운 인스턴스를 생성한다.

Untitled

  • 처음 사용하는 경우 사용 버튼을 클릭한다.

Untitled

  • 최초 작업에는 결제 필요 버튼이 나올 수 있다. 결제 사용 설정을 눌러 결제를 추가한다.

Untitled

Untitled

  • 필자는 회사 계정을 사용한 것이므로 이렇게 나오지만, 일반 사용자는 화면이 다를 수 있다.
  • VM 인스턴스를 생성한다.

Untitled

MySQL Workbench File Import Error in Mac

개요

  • MySQL Workbench에서 File을 불러올 때 에러가 발생했을 때 대처 요령을 소개한다.
  • Workbench에서 File을 불러올 때 가끔 아래와 같은 아래가 발생하곤 한다.

Screenshot 2023-10-04 at 11.33.28 AM.png

  • 해결방법은 MySQL Shell Script에서 직접 파일을 불러오는 방식이다.

MySQL 재접속

  • 기존에 Workbench에 접속해 있었다면 우선 종료를 한다.

Screenshot 2023-10-04 at 11.35.16 AM.png

  • 재접속 전 Edit Connection 버튼을 클릭한다.

    Screenshot 2023-10-04 at 11.36.03 AM.png

  • Advanced Tab을 클릭한다.

    • Others 메뉴에서 OPT_LOCAL_INFILE=1 을 입력한다.
    • Test Connection 버튼을 클릭하여 정상적으로 접속이 되는지 재 확인한다.

    Screenshot 2023-10-04 at 11.36.43 AM.png

Streamlit App Deployment with nohup in Google Compute Engine

개요

개요

  • Streamlit Sample 코드를 작성한 후 배포를 진행한다.
  • VS Code 접속 시 고정 IP를 할당한다.
  • 이 때 터미널이 종료되거나 사용자가 로그아웃해도 계속 실행되도록 nohup을 사용한다.

Nohup의 기본 개념

  • nohup은 “no hang up"의 약자로, 백그라운드에서 다른 명령을 실행하는 데 사용되는 UNIX 명령으로, 로그아웃한 후에도 계속 실행됨.
  • 원격 서버에서 장기간 실행되는 프로세스를 시작하려는 경우 세션 연결이 끊어지거나 터미널이 닫힐 때 프로세스가 종료되지 않도록 하려는 경우에 특히 유용함.
  • foreground에서 명령이나 프로세스를 실행할 때 터미널이나 셸 세션이 종료되면 해당 명령이나 프로세스가 종료될 수 있다.
  • nohup을 사용하면 기본적으로 터미널에서 프로세스를 분리하고 종료(HUP) 신호를 수신하지 못하도록 하여 로그아웃하거나 연결을 끊어도 프로세스가 완료될 때까지 실행할 수 있다.
  • Python에서 nohup을 실행할 때는 다음과 같다.
    • 출력(로그 및 오류)을 특정 파일로 리디렉션하려면 다음 명령을 사용할 수 있다.
    • 이렇게 하면 Streamlit 앱의 표준 출력과 표준 오류가 모두 streamlit.log라는 파일로 리디렉션 된다.
nohup streamlit run my_app.py > streamlit.log 2>&1 &
  • Streamlit 앱을 중지해야 하는 경우 ps 명령을 사용하여 프로세스 ID를 찾은 다음 종료 명령을 사용하면 된다.
ps aux | grep "streamlit run"
  • 그러면 Streamlit과 관련된 프로세스 목록이 표시된다. 삭제하고자 하는 프로세스 ID를 찾아서 종료한다.
kill -9 PROCESS_ID

고정 IP 할당

  • 왼쪽 사이드바 메뉴 > VPC 네트워크 > IP 주소 클릭한다.

Untitled

Streamlit with Bigquery On Compute Engine

개요

인스턴스 시작

  • 인스턴스가 중지가 되어 있다면 다시 시작을 한다.

Untitled

BigQuery Client 라이브러리 설치

  • 클라이언트 라이브러리를 설치한다.
pip install --upgrade google-cloud-bigquery

Untitled

gcloud Installation on Windows 11

개요

gcloud CLI 최신 버전(445.0.0) 설치

Untitled

Untitled

Untitled

Untitled

Untitled

Untitled

Untitled

Untitled

  • Finish 버튼을 클릭하면 설치는 완료가 된 것이다.

gcloud 연동

  • 위 Finish 버튼과 함께 로그인을 진행한다.

Untitled

  • 인증절차가 시작완료되면 웹 페이지가 변경되고 터미널 환경도 변경된다.

Untitled

  • 현재 필자의 프로젝트는 3번에 해당되기 때문에 3번을 클릭한다.

Untitled

GCP with VS Code SSH Connection

개요

SSH Key 생성하기

  • puTTYgen에서 public / private key 값을 생성한다.

Untitled

  • Generate 버튼을 클릭한다.

Untitled

Untitled

  • Private Key를 OpenSSH 방식으로 Export 한다.
    • Key Comment에 구글 계정을 입력한다.
    • password도 입력한다.

Untitled

Untitled

  • Public Key는 모두 복사한다.

GCP 메타데이터 등록

  • Compute Engine > 메타데이터 접속하여 SSH 키에 붙여 넣는다.

Untitled

Python Library Installation on Compute Engine in GCP

개요

requirements.txt

  • Github Repo에서 Add file > Create new file을 클릭 후, 아래 주요 라이브러리를 입력한다.
    • 파일명 : requirements.txt

Untitled

Untitled

  • 라이브러리명은 다음과 같다. 입력 후, Commit Changes 버튼을 클릭한다.
pyspark==3.1.1
pandas
streamlit
matplotlib

Untitled

  • 현재 파일 목록은 아래와 같다.

Untitled

Compute Engine with Github in GCP

개요

Untitled

터미널 열기

  • 기존 인스턴스는 중지를 시켰기 때문에 이를 다시 시작/재개 버튼을 눌러 활성화 한다.

Untitled

  • 시작 버튼 클릭과 함께 오늘도 비용을 지불해본다.

Untitled

  • 브라우저 창에서 열기를 진행한다.

Untitled

Git 설치

  • 터미널에 Git을 설치하는 방법은 다음 명령어를 순차적으로 입력한다.
(base) ~$ sudo apt-get update -y
(base) ~$ sudo apt-get upgrade -y
(base) ~$ sudo apt install git
(base) ~$ git --version

Git Repo 생성

  • Github에서 Repo를 만든다. (Repo : mulcampFP)
    • 보안을 위해 Private으로 지정한다.

Untitled

Spark Installation with GCP (Sept. 2023)

개요

  • Spark를 구글 클라우드에 설치하도록 한다.
  • 프로젝트 시작부터 진행한다.

프로젝트 시작

  • 본 화면에서 새로운 프로젝트를 시작한다.
  • 프로젝트명 : mulcampFP

Untitled

VM 시작하기

  • VM 만들기를 클릭한다.

Untitled

  • 활성 결제 계정이 없으면 결제계정을 등록한다.

Untitled

  • 결제계정이 등록되면 다음과 같이 화면이 나오면 VM 설정이 가능하다.

Untitled

  • 결제계정까지 완료가 되었으면 다음과 같이 Compute Engine API를 사용 버튼을 클릭해준다.

Untitled

  • 이름은 mulcamp-gcp 지역은 서울로 했다.

Untitled

  • 비용에 따라 성능을 선택할 수 있다.

Untitled

  • 호스트 유지보수 시, VM 인스턴스는 마이그레이션을 권장한다.

Untitled

MySQL Workbench ERD - 1

개요

  • MySQL Workbench를 통해 ERD 작업을 수행하도록 한다.

Step 1 - 메뉴 선택

  • 상단 메뉴에서 Database > Reverse Engineer 를 선택한다.

Untitled

Step 2 - Reverse Engineer Database

  • Next 버튼을 클릭한다.

Untitled

Step 3 - Connect to MySQL Server

  • 팝업창에서 root 또는 사용자 비밀번호 입력 후, 확인 버튼을 누르면 아래와 같이 연결이 될 것이다.

Untitled

Step 4 - Schema 선택

  • classicmodels 스키마를 선택한다.

Untitled

Step 4 - Connect to MySQL Server

  • 비밀번호를 입력한다.

Untitled