liveBook · Manning

Walking skeleton

As explained in Platform Engineering on Kubernetes

A walking skeleton is a minimal but end-to-end cloud-native application that demonstrates integrated architecture and delivery capabilities.

A walking skeleton is a small cloud-native application that works end to end. Unlike an isolated proof of concept, it provides a stable way to test how services, architectural patterns, tools, and delivery practices fit together. Its technology stack matters less than the integration decisions it makes visible. section 1.4

An application skeleton: Conference

The Conference application has a frontend and separate services for the agenda, call for proposals, and notifications. Its call-for-proposals flow gives the team a business use case to implement end to end and use to check assumptions about the application. section 1.4.1

An end-to-end slice also exposes operational questions that a single-service demo cannot: where to run a Kubernetes cluster, how services communicate, and how the application behaves amid network latency, service failures, or eventual inconsistencies. The skeleton can be controlled, configured, and broken to investigate those questions before applying the lessons to other services. section 2.1 section 1.4

The same pattern applies to a platform. A platform walking skeleton combines existing tools around one useful capability: teams request isolated development environments through a platform API. Crossplane compositions define provisioning, vcluster supplies virtual Kubernetes clusters, and the Conference application is installed for teams to work on. This demonstrates a developer workflow without first building custom Kubernetes controllers. section 6.3 section 6.3.2

Figure 6.16 Using Crossplane and vcluster to create isolated environments for application development teams

Follow the request from the platform API through Crossplane and vcluster to an isolated environment for an application team. section 6.3.2

Listing 6.2 Environment definition as a Kubernetes resource
apiVersion: salaboy.com/v1alpha1
kind: Environment
metadata:
  name: team-a-dev-env          #1
spec:
  compositionSelector:
    matchLabels:
      type: development         #2
    parameters:                 #3
      installInfra: true

An Environment resource is the team's concrete request; its composition selector identifies the development environment to provision. section 6.3.2

Keep the first slice specific enough to test a real workflow, but small enough to change. Feedback from running it helps identify what an application needs in production and what a platform should offer next. For the platform, clear APIs and reduced developer cognitive load matter more than adding custom machinery. section 1.4 section 6.5

How Platform Engineering on Kubernetes covers it

How deep it goes
Traces an application use case and a platform provisioning workflow, while acknowledging that the simple platform prototype does not capture full platform complexity.
Examples
Uses the Conference call-for-proposals flow and an Environment resource that requests an isolated development cluster.
What it assumes
Requires a Kubernetes cluster to run the application and access to the platform API to request environments.
What you can do after
Apply it via Crossplane and vcluster to request and provision isolated development environments for application teams.
How it connects
Connects proof of concept, distributed applications, Kubernetes, platform APIs, Crossplane compositions, and virtual clusters.

Related concepts

This explainer was generated by Manning's knowledge graph from the text of Platform Engineering on Kubernetes. The section links point to the parts of the book it draws on.