State of the Art Continuous Deployment (CD) Platform
for pragmatic companies
Who am I?
struct Profile<'a> {
name: &'a str,
age: u8,
job_position: &'a str,
company: &'a str,
skills: Vec<&'a str>,
}
fn main() {
let profile = Profile {
name: "Romaric Philogene",
age: 32,
job_position: "CEO & Co-founder",
company: "Qovery",
skills: vec![
"Python",
"Kotlin",
"Java",
"Rust",
"Infrastructure",
],
};
print!("{} greets you 👋", profile.name);
}
in 2006, AWS was simple
DEPLOYING AN APP
ON AWS IN 2006
Only 3 services
in 2021, AWS is complex
DEPLOYING AN APP
ON AWS IN
NIGHTMARE
2021
+175 services
and +2000 features
What is ?
Qovery is the CD platform
that makes AWS as simple as in 2006
but in 2021
in days instead of months
How works ?
Qovery
Github, Gitlab,
BitBucket
Developer
How works ?
DEMO 👨💻
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 | 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
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
Why ?
To conclude 👨🏫
QUESTIONS?