Slide 1

Slide 1 text

When Platforms Meet Application Developers Abby Bangser - Syntasso Mauricio “Salaboy” Salatino - Diagrid

Slide 2

Slide 2 text

CNCF TAG APP Delivery ● Platforms WG https://tag-app-delivery.cncf.io/wgs/platforms/ ● App Dev WG https://tag-app-delivery.cncf.io/wgs/app-development/ ● Blog Posts https://www.diagrid.io/blog/when-platform-teams-meet-developers

Slide 3

Slide 3 text

Platform Engineering Track KubeCon NA 2023 and EU 2024

Slide 4

Slide 4 text

1) Observability / Networking / Security 2) CD (GitOps) 3) Provisioning infrastructure 4) Portals for service discovery and scaffolding

Slide 5

Slide 5 text

But does this match app developer (user) needs?

Slide 6

Slide 6 text

Imagine that you work for financial organization …

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

We can provide KinD to run their two services together and make their local environment more effective! Platform engineer to the rescue!

Slide 10

Slide 10 text

Namespace: Accounts Deployment: Monitoring Accounts Deployment: Accounts Notification $ kind create cluster accounts $ kubectl apply -f deploys.yaml The new user experience

Slide 11

Slide 11 text

Except is this really solving the app dev challenges? Or are we just providing solutions from the platform engineering playbook?

Slide 12

Slide 12 text

As platform engineers we often jump to these solutions because they are easier to find and easier to manage. Being completely honest…

Slide 13

Slide 13 text

1. Problem discovery to understand the what 2. Software delivery practices to improve how maintainable and extensible the solution is To meet our users where they are, we need to develop two skills:

Slide 14

Slide 14 text

So Mauricio, what DO you need??

Slide 15

Slide 15 text

User need: inner-loop support

Slide 16

Slide 16 text

Oh, and k8s makes that so much worse

Slide 17

Slide 17 text

First category of user pains we have discovered ● Onboarding new team members ● Debugging on personal computer (with remote environments) ● One wrong version can cause a lot of issues

Slide 18

Slide 18 text

Unreproducible and complex local environments

Slide 19

Slide 19 text

Tools that can help: unreproducible and complex local environments https://github.com/devcontainers

Slide 20

Slide 20 text

Key learning Even local environments can have a contract between app developers and platform

Slide 21

Slide 21 text

User need: outer-loop support

Slide 22

Slide 22 text

A second category of user pains ● Pushing changes can be queued and take hours to pass through pipelines ● Even local changes require containerising and running k8s ● Tests behave differently locally and on CI

Slide 23

Slide 23 text

Slow feedback loops

Slide 24

Slide 24 text

Tools that can help: Slow feedback loops GitHub Actions Local Runners Comes with Go, Python, Node SDKs + Run anywhere YAML definitions

Slide 25

Slide 25 text

Key learning Modular contracts provides more than just composability, they also provide flexibility of environment

Slide 26

Slide 26 text

User need: Help to collaborate with other teams

Slide 27

Slide 27 text

Shared concenrns across teams/services

Slide 28

Slide 28 text

The third category of user pains ● Who and how are services made resilient? Or observable? ● Who defines data structures? What is required/recommended/bespoke? ● Do libraries exist? Are they allowed? How can a new library be identified or created?

Slide 29

Slide 29 text

Lack of standardised conventions and practices

Slide 30

Slide 30 text

Tools that can help: Lack of standardised conventions and practices

Slide 31

Slide 31 text

Key learning Contracts make explicit what users can and should focus on, and APIs hide the implementation details.

Slide 32

Slide 32 text

To meet our users where they are, we need two skills/activities: 1. Problem discovery to understand the what 2. Software delivery practices to improve how maintainable and extensible the solution is

Slide 33

Slide 33 text

To meet our users where they are, we need two skills/activities: 1. Problem discovery to understand the what 2. Software delivery practices to improve how maintainable and extensible the solution is

Slide 34

Slide 34 text

They would be even more powerful if they were managed across an organisation. All of these tools exist, but many are implemented as isolated solutions.

Slide 35

Slide 35 text

Current platform engineering beliefs needs to be examined ● “Build for the 80%” ● “Enable through templates” ● “Platforms provide only central services” ● “Kubernetes is your platform”

Slide 36

Slide 36 text

● “Build for the 80%” ● “Enable through templates” ● “Platforms provide only central services” ● “Kubernetes is your platform” ○ How do you still enable the 20% to be compliant and efficient? ○ Who manages upgrades, updates, and running software? ○ sure, but what about high value “inner-loop” tooling e.g. local environments? ○ Few orgs are 100% k8s, how do you support non-k8s services & experience? How does that feel from the app developer side?

Slide 37

Slide 37 text

Is it acceptable to reduce our scope in this way? More importantly, how do we make our scope clear?

Slide 38

Slide 38 text

API contracts clarify scope and ownership ● A contract explicitly defines input options and return values ● Contract structure begins to implicitly set an ownership model ● APIs are a complete contract by decoupling implementation

Slide 39

Slide 39 text

Contracts help to alleviate app developer (user) pain ● Most tools will integrate with APIs and contracts ● Clear boundaries and single responsibility enables composability ● APIs reduce cognitive load by also removing the operational load

Slide 40

Slide 40 text

APIs unleash both sides. With a clear API contract, platforms can be built with software engineering principles.

Slide 41

Slide 41 text

Top software principles that apply to platforms 1. Choose architectures intentionally ○ Think about rate of change, coupling, and resiliency requirements 2. Deliver small, fast, and safe changes ○ Build trust through CI/CD testing and rollout/rollback plans ○ Even “offline” apps can have CD, look at mobile/desktop app patterns 3. Build in cross functional requirements ○ User experience including onboarding, maintenance onus, and overall cognitive load ○ Speed to market to capture opportunity and reduce risk

Slide 42

Slide 42 text

Takeaways ● Product discovery for platforms is important, at least talk to app devs! ● Platforms need to support local development experiences ● Build platforms as APIs, not templates

Slide 43

Slide 43 text

Applying common application developer practices can supercharge platform engineering outcomes and better server app developer users

Slide 44

Slide 44 text

Thank you! Abby Bangser - Syntasso Mauricio “Salaboy” Salatino - Diagrid