API governance for AsyncAPI

A presentation at AsyncAPI Conference in September 2023 in London, UK by Lorna Jane Mitchell

Slide 1

Slide 1

API Governance for AsyncAPI Lorna Mitchell, Redocly @redocly ~ @lornajane

Slide 2

Slide 2

API governance Good API governance is invisible Without it: •designing changes is more difficult •changes get rejected and need repeat work •APIs become inconsistent •more difficult to adopt an API @redocly ~ @lornajane

Slide 3

Slide 3

@redocly ~ @lornajane

Slide 4

Slide 4

AsyncAPI and Governance AsyncAPI is complex! (it’s a feature, not a bug) •Many protocols •Often multiple API descriptions •Multiple tech stacks @redocly ~ @lornajane

Slide 5

Slide 5

Start with standards Written standards define your API identity. @redocly ~ @lornajane

Slide 6

Slide 6

Design good governance Start small, and formalise existing practices. Outputs are a written standards set, and linting rules. One size does not fit all! Consider mulitple standards and apply as appropriate @redocly ~ @lornajane

Slide 7

Slide 7

Designing rulesets •Level 0: Is the document valid? •Level 1: Does it meet basic (compliance) standards? •Level 2: Is it consistent with the rest of the API? •Level 3: Is it a joy to work with? @redocly ~ @lornajane

Slide 8

Slide 8

Governance processes Change management, done well @redocly ~ @lornajane

Slide 9

Slide 9

Non-lintable standards The machines cannot do everything * Humans must review changes too •would you want to use this API? •is the naming sensible and intuitive? •is the change consistent with the existing API? * Try asking an AI “does this naming make sense?” @redocly ~ @lornajane

Slide 10

Slide 10

Reviews matter In software we can iterate. In published interfaces, that’s harder. Build an API council •Product specialists •Technical experts •Customer advocates (UX, tech writers, DevRel) @redocly ~ @lornajane

Slide 11

Slide 11

Tools for API Governance https://www.asyncapi.com/tools @redocly ~ @lornajane

Slide 12

Slide 12

Redocly CLI: AsyncAPI Redocly CLI v1.2 and later has support for linting AsyncAPI @redocly ~ @lornajane

Slide 13

Slide 13

Lint AsyncAPI LED wall: https://github.com/magicmonkey/ledwall @redocly ~ @lornajane

Slide 14

Slide 14

Lint AsyncAPI LED wall: https://github.com/magicmonkey/ledwall @redocly ~ @lornajane

Slide 15

Slide 15

Lint AsyncAPI Configure the tool rules: spec: error channels-kebab-case: error Run the command: $ redocly lint ledwall.yaml validating ledwall.yaml… ledwall.yaml: validated in 5ms Woohoo! Your API description is valid. @redocly ~ @lornajane

Slide 16

Slide 16

Good API governance (without tears) @redocly ~ @lornajane

Slide 17

Slide 17

Resources •https://lornajane.net •https://redocly.com •https://www.asyncapi.com/tools •https://github.com/magicmonkey/ledwall @redocly ~ @lornajane