어떻게 곡가 클라우드 플랫폼에서 Python 서버 없는 프로그램을 실행합니까

10426 단어 serverlessgcp
지난 몇 년 동안 저는 곡가운 플랫폼을 광범위하게 사용했습니다. 클라우드 플랫폼으로서 이것은 당신이 사용할 수 있는 가장 즐거운 플랫폼 중 하나입니다.
MVP, 데이터 수신 파이프, 단일 기능, 성숙한 응용 프로그램을 구축하든지 간에 중요한 일에 관심을 가지는 데 도움을 줄 수 있습니다.
서버 없는 서비스에 관심을 가지고 GCP 위에서 Python 서버 없는 프로그램을 실행하는 방법을 알아보겠습니다.
Python 애플리케이션을 GCP에 배포할 수 있는 5가지 방법이 있습니다.
  • VM(컴퓨팅 엔진)
  • 쿠베르네트스 은하단(GKE)
  • 애플리케이션 엔진
  • 클라우드 기능
  • 클라우드 컴퓨팅 실행
  • 응용 프로그램 엔진, 클라우드 기능과 클라우드 운행은 GCP에 서버 작업 부하가 없는 세 가지 다른 방식이다.
    이런 상황에서 serverless는 무슨 뜻입니까?
  • 미리 리소스를 할당할 필요가 없음(예: 시스템 수)
  • 만약 당신이 어떤 청구도 받지 못했다면 (거의) 0
  • 을 지불해야 한다.
  • 자동 위아래로 확대/축소 가능
  • 시작 전: gcloud sdk 구성


    Dell은 gcloud sdk을 사용하기 때문에 다음을 올바르게 설정하는 것이 좋습니다.
  • 유효GCP account with a project
  • 설치된 gcloud sdk
  • 당신은 gcloud sdk를 설정해야 합니다. 다음은 당신이 실행해야 할 마선입니다.
  • # You can use whatever you like for CONFIGURATION-NAME
    gcloud config configurations create {CONFIGURATION-NAME}
    
    # the project id comes from GCP
    gcloud config set project {PROJECT-ID}
    
    # This command will open a browser tab
    gcloud auth login
    
    # Check if everything works
    gcloud config configurations describe {CONFIGURATION-NAME}
    
    준비 다 됐어!

    애플리케이션 엔진 표준 환경


    App Engine에는 두 가지 버전이 있는데, 표준 버전과 유연한 버전이 있는데, 여기서 우리가 주목하는 것은 표준 버전이다.
    만약 당신이 Heroku의 팬이라면 App Engine은 GCP에서 가장 가까운 경험입니다.
    하나app.yaml, 하나requirements.txt가 필요하면 출발할 수 있습니다.
    다음은 실행 예제repository입니다.
  • 저는 시를 의존 관계 관리 도구로 사용하고 수요를 requirements.txt로 내보냅니다.
  • 1개app.yaml.gcloudignore
  • 응용 프로그램.아마르

    app.yaml는 적어도 두 개의 항목이 필요하다. runtimeentrypoint.
    App Engine은 Python 3.7과 Python 3.8을 지원하므로 사용할 런타임을 선택할 수 있습니다.entrypoint는 실행하려는 명령입니다(예: Heroku proc 파일의 web.
    runtime: python38
    entrypoint: gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker
    

    애플리케이션 엔진 애플리케이션 생성 및 배포


    저장소를 복제한 후 로컬에서 어플리케이션을 실행하는 것과 App Engine에서 어플리케이션을 실행하는 것 사이에는 몇 가지 명령만 존재합니다.
    # You'll have to select a region and you can't change it afterwards
    gcloud app create
    gcloud app deploy
    
    몇 분만 기다리면 응용 프로그램이 온라인으로 실행될 것이다.깔끔하지 않아요?

    표현


    나는 hey와 5000개의 요청hey-n 5000 URL을 사용하여 부하 테스트를 실행하여 아주 좋은 데이터를 얻었다.이 응용 프로그램은 많이 하지 않기 때문에 나는 기본적으로 GCP 인프라 시설의 비용을 테스트하고 있다
    Summary:
      Total:        5.4324 secs
      Slowest:      0.3870 secs
      Fastest:      0.0273 secs
      Average:      0.0517 secs
      Requests/sec: 920.3966
    
    잘 됐다!
    실례의 수량이 어떻게 위아래로 신축되는지 보니 매우 기쁘다.


    클라우드 기능


    클라우드 기능은 GCP 생태계에서 AWS Lambda와 가장 가까운 기능으로 중요한 차이점이 있습니다.
  • 클라우드 기능을 직접 터치할 수 있습니다. HTTP 단점(터치)은 이미 만들어져 있습니다
  • 구글이 최근 발표했다GCP API Gateway. 이제 GCP에서AWS Lambda & API 스위치를 체험할 수 있다.
    이벤트(클라우드 저장소, 게시/구독 등)를 통해 클라우드 기능을 터치할 수 있습니다직접 전화하든가.
    실행 가능한 예시 here 를 찾을 수 있도록 클라우드 함수를 배치합니다.
    하나의 주요 요구 사항이 있습니다: 당신의 기본 경로에 requirements.txt와 하나main.py가 필요합니다.
    gcloud functions deploy movie-recommender \
        --entry-point recommend_movie \
        --runtime python38 \
        --trigger-http \
        --allow-unauthenticated \
        --region=europe-west1
    
  • --allow-unauthenticated API 엔드포인트를 공개합니다.
  • --entry-point에서 호출할 함수를 지정합니다.
  • HTTP가 트리거하는 클라우드 함수는 Flask 프로세서를 기반으로 하기 때문에 우리의 함수는 요청 대상을 수신하고 make_reponse와 호환되는 내용을 되돌려야 합니다.
    성능으로 말하자면 그것들도 매우 좋다
    Summary:
      Total:        10.5700 secs
      Slowest:      4.6717 secs
      Fastest:      0.0407 secs
      Average:      0.0779 secs
      Requests/sec: 473.0385
    

    구름 끝


    Cloud Run은 knative를 사용하여 Kubernetes 클러스터에서 서버 없는 워크로드를 실행하는 서버가 없는 GCP 키트의 최신 추가입니다.
    GKE 클러스터에서 클라우드 런을 실행하거나, 구글이 직접 관리하는 클러스터에서 클라우드 런을 실행할 수 있다는 의미다.
    Cloud Run은 어플리케이션 엔진 및 클라우드 기능에 비해 다음과 같은 이점을 제공합니다.
  • 배포 컨테이너
  • 하나의 실례로 여러 요청을 동시에 처리할 수 있음
  • gRPC
  • 지원
  • 지원되지 않는 언어 또는 버전
  • 의 제한 사항
    클라우드 런을 하고 싶으면 (다른 것) runnable example 을 찾을 수 있습니다.
    Cloud Run에 응용 프로그램을 배치하려면 Docker 이미지가 필요합니다. 이 이미지는 Cloud Run 서비스에서 가져올 수 있습니다.
    이것은 사용 가능한 이미지를 공개할 수도 있고 GCP 용기 등록표에 위탁 관리할 수도 있다.
    제 예에서 GCP를 사용하여 서비스를 구축하고 이미지를 GCP 용기 등록표로 전송하기로 결정했습니다.
    저장소를 복제한 후 다음 명령을 실행할 수 있습니다
    gcloud builds submit --tag eu.gcr.io/$YOUR_GCP_PROJECT/movie-recommender
    
    이 명령은 docker 이미지를 생성하여 GCP 컨테이너 레지스트리로 전송합니다.
    그리고 우리는 클라우드 운행 서비스를 배치할 수 있다
    gcloud run deploy movie-recommender \
      --image eu.gcr.io/$YOUR_GCP_PROJECT/movie-recommender \
      --platform managed \
      --allow-unauthenticated \
      --region europe-west1 \
      --args=gunicorn,main:app,-w,4,-k,uvicorn.workers.UvicornWorker
    
    각 로고를 설명해 보겠습니다.
  • main.py: 클라우드 기능과 마찬가지로 공개 액세스 가능한 URL
  • 활성화
  • --allow-unauthenticated: 구글
  • 이 관리하는 Kubernetes 클러스터에서 실행
  • --platform: 클라우드 컴퓨팅이 실행되는 구역
  • 을 원합니다.
  • --region: 용기에서 실행하고 싶은 명령입니다
  • 왜냐하면 우리는 기준을 사랑하기 때문이다.
    Summary:
      Total:        5.7388 secs
      Slowest:      0.2160 secs
      Fastest:      0.0386 secs
      Average:      0.0554 secs
      Requests/sec: 871.2571
    
    또 아주 좋은 결과야.

    서버가 없는 것이 항상 정답입니까?


    아니오, 원가를 떠나서 당신이 할 수 없거나 할 수 없는 일들이 있습니다.
  • 웹소켓, GraphQL 구독 및 스트리밍 요청 시간 초과
  • 의 제한
  • 수확대와 유효 부하 크기도 제한
  • 번쩍이는 네트워크 토폴로지를 만들고 라우팅 요청을 결정할 수 없으며 GCP 통합(및 제한)을 바탕으로 구축해야 합니다
  • 클라이언트의 수량이 제한된 서비스에 접근하면 조심해야 한다. PostgreSQL
  • 에 연결된 서비스가 좋은 예이다

    배달하다


    App Engine, Cloud Run, Cloud 기능은 모두 아주 좋은 free tier 버전이 있는데, 그것들을 사용할 때 비용을 지불하기만 하면 된다.
    그것들은 모두 Serverless VPC access를 통해 전용 VPC 연결을 지원한다.서버가 없는 VPC 접근은 매우 간단합니다. 서버가 없는 창고에 복잡한 토폴로지 구조를 구축할 수 있습니다. 예를 들어 같은 네트워크에서 가상 컴퓨터와 서버가 없는 응용 프로그램을 혼합할 수 있습니다.
    특히 응용 프로그램 엔진과 클라우드에 대한 잠금 계수도 낮다.
    성숙한 프로그램으로서 용기에 포장해서 다른 곳에서 실행할 수 있습니다.
    Stackdriver 제품 (지금은 Operations) 과 잘 통합되어 있습니다. 이것은 집중된 로그와 모니터링을 즉시 얻을 수 있음을 의미합니다.
    네, structlog로 json 로그를 해석할 수 있습니다. --args level check this snippet 로 변환하는 것을 기억하십시오.
    App Engine과 Cloud Run은 서로 다른 버전 간의 데이터 분할을 지원하기 때문에 A/B 테스트나 canary 배치를 무료로 받을 수 있습니다.

    If I had to choose one.... I'd go with Cloud Run.


    클라우드 기능도 훌륭하지만, 웹 응용 프로그램을 내가 싫어하는 방식으로 작성하도록 강요합니다.
    하지만 이벤트 기반 시스템, 데이터 섭취 또는 이벤트 기반 파이프라인에서 클라우드 기능을 사용하는 것을 좋아합니다.

    유용한 자원

  • How to Dockerize Python applications
  • API Gateway
  • App Engine
  • Cloud Functions
  • Cloud Run
  • Serverless VPC access
  • App Engine Pricing
  • Cloud Functions Pricing
  • Cloud Run Pricing
  • 좋은 웹페이지 즐겨찾기