Slide 1

Slide 1 text

VSHN - The DevOps Company Avoid the Vendor Lock-in Trap Cosmetic details? Dramatic impact. © 2018 VSHN AG

Slide 2

Slide 2 text

VSHN - The DevOps Company 2 2 Simply Call Us. V-SH-N. ˈvɪʒn, “vision”

Slide 3

Slide 3 text

VSHN - The DevOps Company ● The need for speed ● Choice versus lock-in ● Repository structure ● App setup & target envs ● Pipeline 3 3 Till death do us apart?

Slide 4

Slide 4 text

VSHN - The DevOps Company 1. Automated tests 2. CI/CD, automation 3. DevOps culture 4. Cloud native 5. Avoid vendor lock-in 4 4 Building Blocks

Slide 5

Slide 5 text

VSHN - The DevOps Company 5 5 Choice or Lock-in? Conventions matter! I shall apply best practices Separation of concerns

Slide 6

Slide 6 text

VSHN - The DevOps Company ❏ app/ ❏ main.py ❏ tests/ ❏ test_main.py ❏ deployment/ ❏ app ❏ Dockerfile ❏ uwsgi.ini ❏ webserver ❏ Dockerfile ❏ nginx.conf ❏ app.yml ❏ docs/ ❏ .gitlab-ci.yml ❏ README.md ❏ tox.ini 6 6 Repository Structure Separate concerns! CI/CD pipeline only (no project business logic) Conventions of technology in use

Slide 7

Slide 7 text

VSHN - The DevOps Company Avoid ● Lengthy setup instructions (README) ● Manual configuration steps ● Special scripts for setting up project ● config-local-dist.php & similar ● Disable linting, no tests ● A myriad of configuration files (and tools) ● Long-lived branches & git-flow ● Start monitoring late ● Start deploying late App Setup & Target Environments Favor ● Standard procedures for getting started (short paragraph in README) ● Everything under version control (what is needed to get started) ● Treat your dev machine as a (standard) target environment ● Use getenv(‘VALUE’, ‘default’) etc. ● Short-lived feature branches ● Deploy & monitor from “commit 1” 7 7

Slide 8

Slide 8 text

VSHN - The DevOps Company Pipeline # template-webserver.yaml apiVersion: v1 kind: ConfigMap metadata: name: foo-bar-nginx namespace: foo-dev data: Foo: | worker_processes auto; error_log stderr; pid /var/opt/.../run/nginx/nginx.pid; events { worker_connections 1024; } ... ``` # .gitlab-ci.yml variables: OPENSHIFT_PROJECT: foo-dev APP_NAME: bar-baz deploy: - oc -n ${OPENSHIFT_PROJECT} create configmap ${APP_NAME}-nginx --from-file=Foo=config/Foo/nginx.conf --from-file=Bar=config/Bar/nginx.conf --dry-run -o yaml | oc -n ${OPENSHIFT_PROJECT} apply -f - ; 8 8 Avoid! Favor!

Slide 9

Slide 9 text

Application-side ● Apply “shift-left” ● Container-driven ● Same tools for development and deployment 9 9 How we ensure independence Deployment-side ● No application-specific details ● Standard approaches (CD) ● Keep platform-specific differences to a minimum

Slide 10

Slide 10 text

Come visit us for a coffee! VSHN AG - Neugasse 10 - CH-8005 Zürich - +41 44 545 53 00 - https://vshn.ch/ - [email protected] vshn.ch/contact Follow us on Twitter! @vshn_ch 10

Slide 11

Slide 11 text

Join our team! vshn.ch/jobs Zur Erweiterung unseres Teams suchen wir immer gute Frauen und Männer, die wir anhand ihrer individuellen Stärken, Erfahrungen und Wünsche in die bestehenden Teams integrieren. Bewirb dich noch heute! Follow us on Twitter! @vshn_ch VSHN AG - Neugasse 10 - CH-8005 Zürich - +41 44 545 53 00 - https://vshn.ch/ - [email protected] 11