프로젝트 배포 및 유지 관리

CHAN·2024년 11월 3일

FastAPI

목록 보기
7/9

7강: 프로젝트 배포 및 유지 관리

이번 강의에서는 FastAPI 서버와 Flutter 앱을 클라우드와 앱 마켓에 배포하는 방법을 다룹니다. 또한 Firebase를 통한 성능 최적화와 유지 관리 방법을 추가적으로 살펴봅니다.


1. FastAPI 서버 배포

FastAPI 서버를 AWS, Heroku, 또는 DigitalOcean과 같은 클라우드 플랫폼에 배포합니다. 여기에서는 AWS EC2를 사용하여 배포하는 예제를 제공합니다.

  1. AWS EC2 인스턴스 생성

    • AWS 콘솔에 로그인하여 EC2 인스턴스를 생성합니다.
    • Ubuntu 기반의 인스턴스를 선택하고, 적절한 사양을 설정합니다.
    • 인스턴스 생성 후 보안 그룹을 설정하여 HTTP (80)HTTPS (443) 포트를 개방합니다.
  2. 서버 초기 설정 및 환경 구성

    • SSH를 통해 EC2 인스턴스에 접속하고, Python 및 필요한 패키지를 설치합니다:
      sudo apt update
      sudo apt install python3-pip
      sudo pip3 install fastapi uvicorn firebase-admin openai selenium
    • 필요한 경우, Selenium을 위한 ChromeDriver를 설치합니다.
  3. FastAPI 서버 실행 및 Nginx 설정

    • Uvicorn을 사용해 FastAPI 서버를 백그라운드에서 실행합니다.
      uvicorn main:app --host 0.0.0.0 --port 8000 &
    • Nginx를 설치하여 프록시 설정을 통해 FastAPI 서버에 접근할 수 있도록 구성합니다:
      sudo apt install nginx
    • /etc/nginx/sites-available/default 파일을 편집하여 프록시 설정을 추가합니다:
      server {
          listen 80;
          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;
          }
      }
    • Nginx 설정을 적용하고 서버를 다시 시작합니다.
      sudo systemctl restart nginx
  4. FastAPI 서버 보안 강화

    • HTTPS를 지원하기 위해 Let's Encrypt를 사용하여 SSL 인증서를 설정합니다.
    • 보안 프로토콜을 통해 클라이언트와 서버 간 데이터를 안전하게 전송합니다.

2. Flutter 앱 배포

Flutter 앱을 Android 및 iOS 마켓에 배포합니다.

  1. Android 배포

    • Android 패키지 서명을 위해 SHA-1 인증서를 생성합니다.
      keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
    • android/app/build.gradle 파일에서 signingConfigsbuildTypes를 설정하여 서명을 추가합니다.
    • APK를 빌드합니다:
      flutter build apk --release
    • Google Play Console에 앱을 등록하고, APK 파일을 업로드하여 앱을 배포합니다.
  2. iOS 배포

    • Apple 개발자 계정을 통해 앱 아이디 및 프로비저닝 프로파일을 설정합니다.
    • Runner.xcworkspace를 열고 앱의 빌드 설정을 Release로 변경한 후 아카이브하여 App Store Connect에 업로드합니다.
    • App Store Connect에서 앱을 등록하고, 검토 후 배포가 완료됩니다.

3. Firebase를 통한 성능 모니터링 및 유지 관리

Firebase Analytics와 Crashlytics를 활용하여 앱의 성능을 모니터링하고, 사용자 경험을 최적화합니다.

  1. Firebase Analytics 설정

    • firebase_analytics 패키지를 Flutter 프로젝트에 추가하고, 앱 내 다양한 이벤트를 추적하도록 설정합니다.
    • 사용자 활동 및 사용 패턴을 파악하여 앱 기능을 최적화할 수 있습니다.
  2. Firebase Crashlytics 설정

    • firebase_crashlytics 패키지를 추가하고 초기화하여 앱 충돌이 발생할 때마다 보고서를 수집할 수 있게 합니다.
    • 문제가 발생한 코드 부분을 파악하고 수정하여, 앱의 안정성을 유지할 수 있습니다.
  3. Firestore 보안 규칙 설정

    • Firestore에서 인증된 사용자만 데이터에 접근할 수 있도록 보안 규칙을 강화합니다:
      service cloud.firestore {
        match /databases/{database}/documents {
          match /keywords/{document} {
            allow read, write: if request.auth != null;
          }
        }
      }
    • Firebase Storage에 대한 보안 규칙도 설정하여, 인증된 사용자만 업로드 및 다운로드가 가능하게 합니다.

이번 강의 요약

  • FastAPI 서버를 AWS에 배포하고, Nginx를 통한 프록시 설정 및 보안 강화를 완료했습니다.
  • Flutter 앱을 Android 및 iOS 마켓에 배포하고, Firebase Analytics와 Crashlytics를 통해 성능과 안정성을 모니터링하는 방법을 학습했습니다.
  • Firestore와 Firebase Storage의 보안 규칙을 설정하여 데이터 보호와 사용자 인증을 강화했습니다.

다음 강의에서는 Firebase Firestore에서 MySQL로 전환하여 데이터 관리를 전통적인 데이터베이스로 확장하는 방법을 다루겠습니다.

profile
프로그래머

0개의 댓글