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

Avoid the Vendor Lock-in Trap (with App Deploym...

Avoid the Vendor Lock-in Trap (with App Deployment)

There is no such thing as "marriage" in business. When you're not happy with the service or pricing you move on. But at what price? Switching a technology is hard, switching a platform is harder! Simply follow a set of principles and techniques to ensure your freedom and agility.

Peter Bittner

February 21, 2019
Tweet

More Decks by Peter Bittner

Other Decks in Programming

Transcript

  1. VSHN - The DevOps Company Avoid the Vendor Lock-in Trap

    Cosmetic details? Dramatic impact. © 2018 VSHN AG
  2. VSHN - The DevOps Company 2 2 Simply Call Us.

    V-SH-N. ˈvɪʒn, “vision”
  3. 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?
  4. 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
  5. VSHN - The DevOps Company 5 5 Choice or Lock-in?

    Conventions matter! I shall apply best practices Separation of concerns
  6. 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
  7. 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
  8. 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!
  9. 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
  10. 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
  11. 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