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

Paved Paths to Production – There and Back Again

Paved Paths to Production – There and Back Again

There’s no place like production. Any idea, any code change will not deliver value until it reaches production. How can we go there fast and securely? A path to production includes all the activities to deliver a new idea to the software users.

The first challenge will be to provide application developers with a compelling experience that enhances the inner development loop, improves their productivity, and reduces their cognitive load. You’ll see how to design such an experience using Backstage, Buildpacks, and Knative.

The second challenge will be establishing secure and reusable CI/CD pipelines while ensuring a clear separation of concerns. You’ll see how to do that by building on top of the inner loop and adding Tekton, Trivy, and Argo CD. Application operators and security engineers will be responsible for those pipelines and the supply chain, taking care of all the activities for building, testing, securing, configuring, and ultimately deploying workloads.

The third challenge will be to offer paved paths to production as a coherent service via a platform based on different tools from the cloud native ecosystem. You’ll learn about the concept of golden paths enabled by Backstage and see how to implement them using Cartographer, a framework to build paths to production.

Thomas Vitale

April 17, 2023
Tweet

More Decks by Thomas Vitale

Other Decks in Technology

Transcript

  1. Thomas Vitale
    Cloud Native Rejekts
    Apr 16th, 2023
    Paved Paths to Production
    @vitalethomas
    There and Back Again

    View full-size slide

  2. Systematic
    • Software Engineer and Cloud
    Architect.

    • Author of “Cloud Native Spring
    in Action” (Manning).

    • OSS contributor (Java, Spring,
    Cloud Native Technologies)
    Thomas Vitale
    thomasvitale.com @vitalethomas

    View full-size slide

  3. Problem
    @vitalethomas

    View full-size slide

  4. Value
    @vitalethomas

    View full-size slide

  5. Delivering Value
    From idea to production
    Developer
    Production
    Idea
    @vitalethomas
    ?

    View full-size slide

  6. Goals
    2 Reduced cognitive load
    3 Clear and safe path to production
    1 Rapid and continuous feedback loop
    @vitalethomas

    View full-size slide

  7. Development Workflow
    @vitalethomas

    View full-size slide

  8. Cloud Native
    @vitalethomas

    View full-size slide

  9. @vitalethomas
    Runtime (Language)
    Application (Executable)
    Cloud Native Applications

    View full-size slide

  10. Containers
    @vitalethomas

    View full-size slide

  11. Moving to Containers
    @vitalethomas
    Runtime (Language)
    Application (Executable)
    Runtime (OCI)
    Application (Container)

    View full-size slide

  12. Cloud Native Buildpacks
    @vitalethomas

    View full-size slide

  13. Image
    pack build
    Cloud Native Buildpacks
    From source code to container image
    @vitalethomas

    View full-size slide

  14. Kubernetes
    @vitalethomas

    View full-size slide

  15. Moving to Kubernetes
    @vitalethomas
    Runtime (Language)
    Application (Executable)
    Runtime (OCI)
    Application (Container)
    Runtime (OCI)
    Middleware


    (Kubernetes)
    Application (Container)

    View full-size slide

  16. Tilt
    @vitalethomas

    View full-size slide

  17. Tilt
    Continuous development on Kubernetes
    @vitalethomas
    CODE
    BUILD
    RUN
    TEST

    View full-size slide

  18. Goals
    2 Reduced cognitive load
    3 Clear and safe path to production
    1 Rapid and continuous feedback loop
    @vitalethomas

    View full-size slide

  19. CI/CD Pipeline(s)
    @vitalethomas

    View full-size slide

  20. CI/CD Pipeline (Imperative)
    Check out


    source code
    Build


    container image
    Con
    fi
    gure


    workload
    Deploy


    workload
    Orchestrator
    Tightly coupled
    Rigid system
    No clear separation of concerns
    Hard to maintain
    @vitalethomas

    View full-size slide

  21. Delivering Value
    From code to production
    Developer
    Production
    Application


    Operator
    Security


    Expert
    Platform


    Engineer
    @vitalethomas

    View full-size slide

  22. Check out


    source code
    Build


    container image
    Con
    fi
    gure


    workload
    Deploy


    workload
    @vitalethomas

    View full-size slide

  23. Check out


    source code
    Build


    container image
    Con
    fi
    gure


    workload
    Deploy


    workload
    Kubernetes
    Manifests
    GitOps
    @vitalethomas

    View full-size slide

  24. Check out


    source code
    Build


    container image
    Con
    fi
    gure


    workload
    Deploy


    workload
    Kubernetes
    Manifests
    Container
    Image

    View full-size slide

  25. Check out


    source code
    Build


    container image
    Con
    fi
    gure


    workload
    Deploy


    workload
    Kubernetes
    Manifests
    Container
    Image
    Source
    Code
    CI/CD Pipeline (Reactive)
    Loosely coupled
    Separation of concerns
    Flexible
    Consistent path to production

    View full-size slide

  26. Check out


    source code
    Build


    container image
    Con
    fi
    gure


    workload
    Deploy


    workload
    Kubernetes
    Manifests
    Container
    Image
    Source
    Code
    CI/CD Pipeline (Reactive)
    Loosely coupled
    Separation of concerns
    Flexible
    Consistent path to production

    View full-size slide

  27. Cartographer
    @vitalethomas

    View full-size slide

  28. Kubernetes Native Choreographer
    Framework to build paved paths to production
    @vitalethomas

    View full-size slide

  29. Workload API
    Developer-friendly interface
    @vitalethomas
    apiVersion: carto.run/v1alpha1


    kind: Workload


    metadata:


    name: band-service


    labels:


    apps.kadras.io/workload-type: web


    spec:


    source:


    git:


    url: https://github.com/ThomasVitale/band-service


    ref:


    branch: main


    View full-size slide

  30. Watch


    Source Code
    Testing
    Build
    Con
    fi
    guration
    Deployment
    @vitalethomas

    View full-size slide

  31. https://landscape.cncf.io

    View full-size slide

  32. SupplyChain API
    Describes the path to production
    @vitalethomas
    apiVersion: carto.run/v1alpha1


    kind: ClusterSupplyChain


    metadata:


    name: supply-chain


    spec:


    selector:


    apps.kadras.io/workload-type: web


    resources:


    - name: source-provider


    templateRef:


    kind: ClusterSourceTemplate


    name: source


    - name: image-builder


    templateRef:


    kind: ClusterImageTemplate


    name: image


    sources:


    - resource: source-provider


    name: source


    - name: deployer


    templateRef:


    kind: ClusterTemplate


    name: app-deploy


    images:


    - resource: image-builder


    name: image

    View full-size slide

  33. Watch


    Source Code
    Testing
    Build
    Con
    fi
    guration
    Deployment
    @vitalethomas

    View full-size slide

  34. @vitalethomas
    apiVersion: source.toolkit.fluxcd.io/v1


    kind: GitRepository


    metadata:


    name: band-service


    spec:


    interval: 1m0s


    url: https://github.com/ThomasVitale/band-service


    ref:


    branch: main


    View full-size slide

  35. @vitalethomas
    apiVersion: source.toolkit.fluxcd.io/v1


    kind: GitRepository


    metadata:


    name: $(workload.metadata.name)$


    spec:


    interval: 1m0s


    url: $(workload.spec.source.git.url)$


    ref: $(workload.spec.source.git.ref)$


    View full-size slide

  36. @vitalethomas
    apiVersion: carto.run/v1alpha1


    kind: ClusterSourceTemplate


    metadata:


    name: source


    spec:


    urlPath: .status.artifact.url


    revisionPath: .status.artifact.revision


    template:


    apiVersion: source.toolkit.fluxcd.io/v1


    kind: GitRepository


    metadata:


    name: $(workload.metadata.name)$


    spec:


    interval: 1m0s


    url: $(workload.spec.source.git.url)$


    ref: $(workload.spec.source.git.ref)$

    View full-size slide

  37. @vitalethomas
    apiVersion: carto.run/v1alpha1


    kind: ClusterSourceTemplate


    metadata:


    name: source


    spec:


    urlPath: .status.artifact.url


    revisionPath: .status.artifact.revision


    template:


    apiVersion: source.toolkit.fluxcd.io/v1


    kind: GitRepository


    metadata:


    name: $(workload.metadata.name)$


    spec:


    interval: 1m0s


    url: $(workload.spec.source.git.url)$


    ref: $(workload.spec.source.git.ref)$
    Template API
    Supply chain activities

    View full-size slide

  38. cartographer.sh

    View full-size slide

  39. Capabilities over responsibilities
    @vitalethomas

    View full-size slide

  40. Developer
    @vitalethomas

    View full-size slide

  41. Developer Platform
    @vitalethomas

    View full-size slide

  42. Developer Platform
    @vitalethomas

    View full-size slide

  43. Goals
    2 Reduced cognitive load
    3 Clear and safe path to production
    1 Rapid and continuous feedback loop
    @vitalethomas

    View full-size slide

  44. Resources
    @vitalethomas

    View full-size slide

  45. Resources
    Source code
    • Presentation source code

    • Kadras: Cloud Native Platforms Toolkit

    • Cloud Native Buildpacks for ARM64

    • Software Supply Chain Choreography

    • Cartographer

    • Cartographer CLI

    • Tanzu Application Platform
    @vitalethomas

    View full-size slide

  46. Thomas Vitale
    Cloud Native Rejekts
    Apr 16th, 2023
    Paved Paths to Production
    @vitalethomas
    There and Back Again

    View full-size slide