Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Разворачиваем приложение в AppEngine

Разворачиваем приложение в AppEngine

Александр Хаёров (Ingram Micro, unit-manager) @ Moscow Python №40

Поделится техническим докладом с кодом и командами и покажет, как развернуть свой первый проект в GAE. Продемонстрирует, как адаптироватьDocker Cats vs Dogs voting application к разворачиванию в PaaS и проведёт слушателей по процессу разворачивания.

Видео: http://www.moscowpython.ru/meetup/40/razvorachivaem-prilozhenie-v-appengine/

Moscow Python Meetup
PRO

November 24, 2016
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. Deploying to

    View Slide

  2. ⇒ Whoami
    Alex Hayorov @hayorov
    We

    View Slide

  3. Cats
    vs
    Dogs
    voting

    View Slide

  4. Choose Get the results

    View Slide

  5. Our application
    Architecture
    • Multiplatform design
    https://github.com/hayorov/example-voting-app
    • Dockerized
    • Hosted in Docker VM

    View Slide

  6. Our application
    Voting-app
    GET /
    voting-app
    POST /
    vote: a
    rpush
    voter_id, vote
    •Flask (python 2.7-alpine)
    •Gunicorn
    •Redis (TCP)

    View Slide

  7. New project on cloud.google.com
    Install Google Cloud Platform SDK (gcloud)
    runtime: python27
    api_version: 1
    threadsafe: true
    handlers:
    - url: /
    script: app.app
    - url: /static
    static_dir: static
    Create app.yaml file

    View Slide

  8. ⇒ gcloud app deploy --project catsdogsvote
    You are about to deploy the following services:
    - catsdogsvote/default/20161120t203231 (from [example-voting-app/vote/app.yaml])
    Deploying to URL: [https://catsdogsvote.appspot.com]
    Beginning deployment of service [default]...
    File upload done.
    Updating service [default]...done.
    Deployed service [default] to [https://catsdogsvote.appspot.com]
    goto https://catsdogsvote.appspot.com

    View Slide

  9. View Slide

  10. Collecting Flask (from -r requirements.txt (line 1))
    Using cached Flask-0.11.1.tar.gz

    Running setup.py install for Flask ... done
    Running setup.py install for Redis ... done
    Running setup.py install for gunicorn ... done
    Successfully installed Flask Jinja2-2.8 MarkupSafe-0.23 Redis Werkzeug click gunicorn itsdangerous-0.24
    ⇒ virtualenv ./env && pip install -r requirements.txt #fixme
    Create appengine_config.py
    from google.appengine.ext import vendor
    vendor.add('env/lib/python2.7/site-packages')
    ⇒ gcloud app deploy --project catsdogsvote

    View Slide

  11. Choose Get the results
    powered by AppEngine

    View Slide

  12. rps-instances/time
    t, secs
    rps
    1k
    100
    Count: 321612
    Load: line(1, 1000, 10m) const(100, 5m)
    HTTP codes
    Count Percent
    200 - OK 65.2% (430490)
    500 - Error 32.2% (212734)
    ??? - Error 2.6% (17306)
    workload
    300 600
    created instances
    183
    Response time distribution
    time, s quantile
    12000 100
    5000 87
    1000 71
    500 63
    350 41
    150 4

    View Slide

  13. View Slide

  14. View Slide

  15. View Slide