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);
}

Lightning-fast app deployment

on AWS with Qovery ⚡️

Why                    ?

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 ?

  • Connect your AWS account

  • Push your code

  • Your app is deployed!

DEMO 👨‍💻

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

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                     ?

  • Reduce Cloud cost

TO CONCLUDE 👨‍🏫

To conclude 👨‍🏫

THANKS 👏

QUESTIONS?

Made with Slides.com