API Governance for AsyncAPI Lorna Mitchell, Redocly
@redocly ~ @lornajane
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
@redocly ~ @lornajane
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
Start with standards Written standards define your API identity.
@redocly ~ @lornajane
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
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
Governance processes Change management, done well
@redocly ~ @lornajane
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
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
Tools for API Governance https://www.asyncapi.com/tools
@redocly ~ @lornajane
Slide 12
Redocly CLI: AsyncAPI Redocly CLI v1.2 and later has support for linting AsyncAPI
@redocly ~ @lornajane
Slide 13
Lint AsyncAPI LED wall: https://github.com/magicmonkey/ledwall
@redocly ~ @lornajane
Slide 14
Lint AsyncAPI LED wall: https://github.com/magicmonkey/ledwall
@redocly ~ @lornajane
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
Good API governance (without tears)
@redocly ~ @lornajane