State of the Art Continuous Deployment Platform

for pragmatic companies
What is ?

Qovery is the deployment platform
you would build for your company
But live in days, not months
How works ?

Github, Gitlab, Bitbucket
Developer
Qovery
AWS, GCP, Azure,...
Web and CLI
-
Deploy containerized apps with databases
-
On AWS, Digital Ocean, GCP, and Azure
-
Integrates into Github, Gitlab, Bitbucket
How works ?

Why ?

$ git checkout master
$ git checkout -b staging
$ git push -u origin staging
# staging environment created
$ git checkout -b feat_1
$ git push -u origin feat_1
# feat_1 environment created
Designed for teams of developers
Why ?


-
Smart cost optimization
-
Live in days, not months

FOR DEVELOPER

For developer | Two interfaces

# CLI available on MacOS, Windows, Linux
# MacOS
$ brew install qovery-cli
# Linux
$ curl -s https://get.qovery.com | sudo bash
# Windows
$ scoop install qovery-cli
CLI

WEB
# create a directory and move into it
$ mkdir my-backend && cd my-backend
# Github, Bitbucket, Gitlab seamless authentication
$ qovery auth
Opening your browser, waiting for your authentication...
Authentication successful!
# Generate the .qovery.yml and the Dockerfile from the Qovery node template
$ qovery init -t node-postgresql
# Git commit and push your code
$ git add --all
$ git commit -m "first commit"
$ git push -u origin master
# Your backend application with PostgreSQL is live!
For developer | Git commit, push, your app is deployed

For developer | live deployment

$ qovery status
BRANCH NAME | STATUS | ENDPOINTS | APPLICATIONS | DATABASES
master | running | https://api.tld.com | hasura, angular | my-psql-db
| | https://tld.com | |
APPLICATION NAME | STATUS | DATABASES
hasura | running | my-psql-db
angular | running |
DATABASE NAME | STATUS | TYPE | VERSION | ENDPOINT | PORT | USERNAME | PASSWORD | APPLICATIONS
my-psql-db | running | POSTGRESQL | 11 | <hidden> | <hidden> | <hidden> | <hidden> | hasura
For developer | configuration files

application:
name: hasura
project: MyProjectName
cloud_region: aws/us-east-2
databases:
- type: postgresql
version: 11
name: my-psql-db
routers:
- name: main
custom_domains:
- branch: master
domain: api.tld.com
- branch: dev
domain: api-dev.tld.com
routes:
- application_name: hasura
paths:
- /*
FROM node:13-alpine
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY . .
RUN npm install
EXPOSE 3000
CMD node ./bin/www
.qovery.yml
Dockerfile
For developer | real time logs

$ qovery log
GET / 200 324.662 ms - 170
GET /stylesheets/style.css 200 3.253 ms - 117
GET /favicon.ico 404 15.330 ms - 913
GET / 200 300.024 ms - 170
GET /stylesheets/style.css 200 3.269 ms - 117
GET /robots.txt 404 16.915 ms - 913
GET / 200 8.948 ms - 170
GET / 200 8.403 ms - 170
GET /stylesheets/style.css 200 0.582 ms - 117
GET /robots.txt 404 292.889 ms - 913
GET / 200 13.681 ms - 170
GET / 200 1252.584 ms - 170
GET / 200 14.553 ms - 170
GET /stylesheets/style.css 200 3.327 ms - 117
GET /favicon.ico 404 11.648 ms - 913
GET / 200 8.678 ms - 170
GET /robots.txt 404 10.851 ms - 913
For developer | contextual environment variables

$ qovery app env list
SCOPE | KEY | VALUE
BUILT_IN | QOVERY_BRANCH_NAME | master
BUILT_IN | QOVERY_IS_PRODUCTION | true
BUILT_IN | QOVERY_APPLICATION_SIMPLE_EXAMPLE_NODE_WITH_POSTGRESQL_HOSTNAME | <hidden>
BUILT_IN | QOVERY_DATABASE_MY_POSTGRESQL_3498225_DATABASE | postgres
BUILT_IN | QOVERY_DATABASE_MY_POSTGRESQL_3498225_PASSWORD | <hidden>
BUILT_IN | QOVERY_DATABASE_MY_POSTGRESQL_3498225_USERNAME | <hidden>
BUILT_IN | QOVERY_DATABASE_MY_POSTGRESQL_3498225_PORT | <hidden>
BUILT_IN | QOVERY_DATABASE_MY_POSTGRESQL_3498225_FQDN | <hidden>
BUILT_IN | QOVERY_DATABASE_MY_POSTGRESQL_3498225_HOST | <hidden>
BUILT_IN | QOVERY_DATABASE_MY_POSTGRESQL_3498225_CONNECTION_URI_WITHOUT_CREDENTIALS | <hidden>
BUILT_IN | QOVERY_DATABASE_MY_POSTGRESQL_3498225_CONNECTION_URI | <hidden>
BUILT_IN | QOVERY_DATABASE_MY_POSTGRESQL_3498225_VERSION | 11.5
BUILT_IN | QOVERY_DATABASE_MY_POSTGRESQL_3498225_TYPE | POSTGRESQL
BUILT_IN | QOVERY_DATABASE_MY_POSTGRESQL_3498225_NAME | my-postgresql-3498225
ENVIRONMENT | x | y
ENVIRONMENT | z | c
APPLICATION | HOST | <hidden>
APPLICATION | TOTO_1 | v1
APPLICATION | TOTO_2 | v2
APPLICATION | XXX | yyy
APPLICATION | TOTO_3 | v2
FOR DEVOPS

For DevOps | Two interfaces

# CLI available on MacOS, Windows, Linux
# MacOS
$ brew install qovery-cli
# Linux
$ curl -s https://get.qovery.com | sudo bash
# Windows
$ scoop install qovery-cli
CLI

WEB
For DevOps | Plug your own Cloud account








For DevOps | Define your Kubernetes cluster


For DevOps | Plug your own CI (optional)






For DevOps | Plug your own container registry (optional)








For DevOps | Plug your own monitoring service (optional)




For DevOps | Define your rules 1/2


For DevOps | Define your rules 2/2


For DevOps | Fast rollback


For DevOps | Go beyond default configuration



Beyond application deployment

Beyond application deployment | Cost optimization


TO CONCLUDE 👨🏫
THANKS 👏
QUESTIONS?
e-mail: romaric@qovery.com
web: qovery.com
twitter: @rophilogene - @Qovery_
Copy of Qovery Business - State of the Art deployment platform - For pragmatic tech companies
By Romaric Philogène
Copy of Qovery Business - State of the Art deployment platform - For pragmatic tech companies
- 115