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

A Guide to Modern Software Development 2018

Peter Bittner
November 21, 2018

A Guide to Modern Software Development 2018

Move fast, don’t break things.

Held at the New Relic {Future}Stack 2018 Zurich event.

Peter Bittner

November 21, 2018
Tweet

More Decks by Peter Bittner

Other Decks in Technology

Transcript

  1. VSHN - The DevOps Company
    A Guide to Modern
    Software Development
    Move fast, don’t break things.
    © 2018 VSHN AG

    View full-size slide

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

    View full-size slide

  3. VSHN - The DevOps Company
    ● Pain points & maturity
    ● Happy devs & customers
    ● Building blocks
    ● Implementation
    3
    3
    Modern Software
    Development
    Move fast, don’t break things.
    Boring

    View full-size slide

  4. VSHN - The DevOps Company
    ● Cloud tooling is hard (so many options)
    ● Dev & Ops – where to draw the line?
    ● Automation engineering
    ● Monitoring unclear (availability, deployments, performance?)
    ● Cost increase (is the cloud expensive?)
    ● The market moves fast!
    4
    4
    Situation Today

    View full-size slide

  5. VSHN - The DevOps Company
    ● Cloud tooling
    ● Dev & Ops
    ● Automation
    ● Monitoring
    ● Cost increase
    ● The market
    5
    5
    Where Do We Need To Go?
    ⇢ Comfortable with both tools & service platforms
    ⇢ Runs on my machine (and in the cloud)
    ⇢ Continuous improvement, project maintenance
    ⇢ Full transparency & focus on QA
    (write tests, performance, security)
    ⇢ Short-lived branches, short time-to-market (features)
    ⇢ Easily switch between service platforms

    View full-size slide

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

    View full-size slide

  7. VSHN - The DevOps Company 7
    7
    1. Automated Tests

    View full-size slide

  8. VSHN - The DevOps Company 8
    8
    2. CI/CD, Automation

    View full-size slide

  9. VSHN - The DevOps Company 9
    9
    3. DevOps Culture
    No more silos!

    View full-size slide

  10. VSHN - The DevOps Company 10
    10
    4. Cloud Native
    “Applications that scale & are resilient.”

    View full-size slide

  11. VSHN - The DevOps Company 11
    11
    5. Vendor Lock-In
    Conventions
    matter!
    I shall apply
    best practices
    Separation
    of concerns

    View full-size slide

  12. VSHN - The DevOps Company
    ● Repository structure
    ● Application setup &
    target environments
    ● Pipeline
    12
    12
    How do I
    implement it?
    Maximize your freedom.

    View full-size slide

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

    View full-size slide

  14. 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
    Application & 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”
    14
    14

    View full-size slide

  15. 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 - ;
    15
    15
    Avoid!
    Favor!

    View full-size slide

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

    View full-size slide

  17. 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
    17

    View full-size slide

  18. 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]
    18

    View full-size slide