Slide 1

Slide 1 text

https://youtu.be/kyum6GZp3r4

Slide 2

Slide 2 text

CREATING  THE NEW ADIDAS APIS ZDENEK “Z” NEMEC OLDRICH NOVAK https://goodapi.co @zdne GOOD API [email protected]

Slide 3

Slide 3 text

SPORTS COMPANY

Slide 4

Slide 4 text

TECH COMPANY

Slide 5

Slide 5 text

PAST‐ADIDAS APIS

Slide 6

Slide 6 text

LACK OF VISIBILITY AND GOVERNANCE

Slide 7

Slide 7 text

LACK OF CONSISTENCY AND QUALITY

Slide 8

Slide 8 text

LACK OF OWNERSHIP

Slide 9

Slide 9 text

LACK OF BUSINESS FOCUS API DESIGN FOLLOWING TECHNOLOGY NOT BUSINESS NEEDS

Slide 10

Slide 10 text

COMPLEX PROCESSES EXPOSING FUNCTIONALITY FOR CLIENTS

Slide 11

Slide 11 text

THE PROMISED LAND

Slide 12

Slide 12 text

REUSE OF EXISTING FUNCTIONALITY SINGLE SOURCE OF TRUTH COLLABORATION VISIBILITY Visibility

Slide 13

Slide 13 text

CONSISTENT DEVELOPER EXPERIENCE WHILE CONSUMING APIS SUPERB EXPERIENCE Client DX

Slide 14

Slide 14 text

SPEEDY DESIGN, DEVELOPMENT, TESTING AND PUBLISHING THROUGH STANDARDIZED AND HIGHL Y‐ AUTOMATED PROCESSES FAST DELIVERY Fast Delivery Server DX

Slide 15

Slide 15 text

PERFORMANCE, STABILITY & EXTENSIBILITY Performance Stability & Extensibility

Slide 16

Slide 16 text

SECURITY Security

Slide 17

Slide 17 text

CLEAR OWNERSHIP Ownership

Slide 18

Slide 18 text

HOW DID  WE GET THERE HOW DID  WE GET THERE

Slide 19

Slide 19 text

PEOPLE TOOLS PROCESSES

Slide 20

Slide 20 text

TRAINED EXPERTS STANDARDIZED TOOLS AUTOMATED PROCESSES

Slide 21

Slide 21 text

PEOPLE ORGANIZATION CHANGES, TRAININGS & THE ROLE OF THE API EVANGELIST

Slide 22

Slide 22 text

ADIDAS API LIFECYCLE

Slide 23

Slide 23 text

ADIDAS API LIFECYCLE 1 DESIGN DEVELOP & TEST DEPLOY PUBLISH CON SUM E AN ALYZE 2 3 4 5 6 7 UPDATE Prototype Feedback

Slide 24

Slide 24 text

1 DESIGN DEVELOP DEPLOY PUBLISH CON SUM E AN ALYZE 2 3 4 5 6 7 UPDATE DESIGN API Visibility Client DX Stability & Extensibility

Slide 25

Slide 25 text

API FIRST API IS PRODUCT

Slide 26

Slide 26 text

DESIGN-FIRST API DESCRIPTION IS CONTRACT

Slide 27

Slide 27 text

“The API description is the source of truth, NOT the API implementation.”

Slide 28

Slide 28 text

SINGLE REPOSITORY FOR CONTRACTS Visibility

Slide 29

Slide 29 text

DESIGN & IMPLEMENTATION MATURITY Client DX

Slide 30

Slide 30 text

WEB API DESIGN MATURITY MODEL http://amundsen.com/talks/2016-11-apistrat-wadm/2016-11-apistrat-wadm.pdf Source:

Slide 31

Slide 31 text

RESOURCE-CENTRIC DESIGN AT MINIMUM Web API Design Maturity Model Level 2

Slide 32

Slide 32 text

AFFORDANCE-CENTRIC DESIGN IDEALL Y Web API Design Maturity Model Level 3

Slide 33

Slide 33 text

RICHARDSON MATURITY MODEL https://martinfowler.com/articles/richardsonMaturityModel.html Source:

Slide 34

Slide 34 text

HTTP PROTOCOL SEMANTICS AT MINIMUM Richardson Maturity Model Level 2

Slide 35

Slide 35 text

HYPERMEDIA CONTROLS IDEALL Y Richardson Maturity Model Level 3 Stability & Extensibility

Slide 36

Slide 36 text

HYPERMEDIA SOLVES MANY DESIGN PATTERNS RELATIONS, COLLECTIONS, PAGINATIONS, EMBEDDING, VERSIONING AND BEYOND-CRUD OPERATIONS Stability & Extensibility

Slide 37

Slide 37 text

HAL HYPERTEXT‐APPLICATION LANGUAGE

Slide 38

Slide 38 text

HAL RMM Level 2 RMM Level 3

Slide 39

Slide 39 text

DESIGN GUIDELINES Fast Delivery Client DX Security Stability & Extensibility

Slide 40

Slide 40 text

DESIGN-TIME GOVERNANCE

Slide 41

Slide 41 text

ADIDAS API GUIDELINES https://www.gitbook.com/book/adidas-group/api-guidelines/

Slide 42

Slide 42 text

ADIDAS API GUIDELINES Protocol-level Message-level Application-level Functional Requirements Governance Non-Functional Requirements Governance Execution Evolution Security Usability Maintainability Scaleability Extensibility https://www.gitbook.com/book/adidas-group/api-guidelines/

Slide 43

Slide 43 text

OPEN-SOURCED ON GITHUB Visibility https://github.com/adidas-group/api-guidelines

Slide 44

Slide 44 text

DESIGN CONSISTENCY Client DX Fast Delivery HOW TO MAKE EVERYBODY FOLLOWS THE GUIDELINES

Slide 45

Slide 45 text

AUTOMATED DESIGN CHECKS USING APIARY  STYLE GUIDE

Slide 46

Slide 46 text

AUTOMATIC DESIGN GOVERNANCE

Slide 47

Slide 47 text

1 DESIGN DEVELOP DEPLOY PUBLISH CON SUM E AN ALYZE 2 3 4 5 6 7 UPDATE DEVELOP & TEST‐API

Slide 48

Slide 48 text

BOILERPLATES, TEMPLATES & GUIDELINES Fast Delivery Server DX

Slide 49

Slide 49 text

SPRINGBOOT MICROSERVICE MAVEN ARCHETYPE

Slide 50

Slide 50 text

CONTRACT VERIFICATION Fast Delivery Server DX

Slide 51

Slide 51 text

DREDD — HTTP‐API TESTING FRAMEWORK

Slide 52

Slide 52 text

CONTRACT VERIFICATION Dredd CLI API Description API Implementation Endpoint 1 Endpoint 2 Endpoint 3 Endpoint 4

Slide 53

Slide 53 text

JENKINS DREDD PLUGIN

Slide 54

Slide 54 text

JENKINS DREDD+APIARY PLUGIN

Slide 55

Slide 55 text

AUTOMATED SECURITY CHECK Security Work in Progress SECURITY‐AT THE SOURCE

Slide 56

Slide 56 text

Performance Fast Delivery Server DX 1 DESIGN DEVELOP DEPLOY PUBLISH CON SUM E AN ALYZE 2 3 4 5 6 7 UPDATE DEPLOY API

Slide 57

Slide 57 text

No content

Slide 58

Slide 58 text

Security Ownership 1 DESIGN DEVELOP DEPLOY PUBLISH CON SUM E AN ALYZE 2 3 4 5 6 7 UPDATE PUBLISH API

Slide 59

Slide 59 text

EXPOSE API USING MASHERY

Slide 60

Slide 60 text

ARCHITECTURE

Slide 61

Slide 61 text

ADIDAS API MANAGEMENT  GUIDELINES NAMING CONVENTIONS, PACKAGING, THROTTLING, AUTHENTICATION AND KEY POLICES

Slide 62

Slide 62 text

MASHERY TOOLBELT Fast Delivery AUTOMATED API MANAGEMENT PROVISIONING USING THE API DESCRIPTION. FOLLOWING API MANAGEMENT  GUIDELINES

Slide 63

Slide 63 text

MASHERY TOOLBELT https://www.npmjs.com/package/mashery-toolbelt Work in Progress https://github.com/adidas-group/mashery-toolbelt

Slide 64

Slide 64 text

Client DX Stability & Extensibility 1 DESIGN DEVELOP DEPLOY PUBLISH CON SUM E AN ALYZE 2 3 4 5 6 7 UPDATE CONSUME API

Slide 65

Slide 65 text

API DOCUMENTATION INTERACTIVE, CODE SAMPLES & DEBUGGING PROXY Client DX

Slide 66

Slide 66 text

DEVELOPER PORTAL APPLICATION KEYS PROVISIONING, GETTING STARTED & USAGE PRINCIPLES Work in Progress Client DX

Slide 67

Slide 67 text

DEVELOPERS PORTAL Work in Progress

Slide 68

Slide 68 text

LOOSE COUPLING CLIENT MUST FOLLOW ROBUSTNESS PRINCIPLE, AND ACT INDEPENDENTL Y, NOT‐ASSUMING ANY INTERNAL IMPLEMENTATION OF THE SERVICE Client DX Stability & Extensibility

Slide 69

Slide 69 text

Visibility 1 DESIGN DEVELOP DEPLOY PUBLISH CON SUM E AN ALYZE 2 3 4 5 6 7 UPDATE ANALYZE API

Slide 70

Slide 70 text

ANALYZE

Slide 71

Slide 71 text

AUTOMATED API AVAILABILITY TESTING  WITH RUNSCOPE

Slide 72

Slide 72 text

Stability & Extensibility Client DX 1 DESIGN DEVELOP DEPLOY PUBLISH CON SUM E AN ALYZE 2 3 4 5 6 7 UPDATE UPDATE API

Slide 73

Slide 73 text

CHANGES & VERSIONING

Slide 74

Slide 74 text

–Mark Nottingham “The fundamental principle is that you can’t break existing clients, because you don’t know what they implement, and you don’t control them. In doing so, you need to turn a backwards-incompatible change into a compatible one.”

Slide 75

Slide 75 text

NO URI VERSIONING https://blog.goodapi.co/ https://blog.apisyouwonthate.com/

Slide 76

Slide 76 text

RULES FOR EXTENDING • You MUST NOT take anything away (related: Minimal Surface Principle , Robustness Principle) • You MUST NOT change processing rules • You MUST NOT make optional things required • Anything you add MUST be optional (related Robustness Principle)

Slide 77

Slide 77 text

CHANGE MANAGEMENT • Resource identifier including any query parameters and their semantics • Resource metadata • Action the resource affords • Relation with other resources • Representation format ANY‐CHANGE TO IS SUBJECT TO RULES FOR EXTENDING

Slide 78

Slide 78 text

BACKWARD INCOMPATIBLE CHANGES IMPLIES NEW RESOURCE VARIANT /greeting?first=John&last=Appleseed /named-greeting?first=John&last=Appleseed first and last are optional but first needs to be made required

Slide 79

Slide 79 text

ADIDAS API LIFECYCLE 1 DESIGN DEVELOP & TEST DEPLOY PUBLISH CON SUM E AN ALYZE 2 3 4 5 6 7 UPDATE Prototype Feedback

Slide 80

Slide 80 text

FULL PICTURE

Slide 81

Slide 81 text

AUTOMATED CONTRACT-DRIVEN API LIFECYCLE

Slide 82

Slide 82 text

Bitbucket Apiary Jenkins Mashery API Gateway Mashery Cloud K8s Platfrom API Consumer Apiary Documentation Apiary Mock Service API Description API Description Service Implementation Apiary Style Guide Dredd Plug-in Apiary Test Reporter Apiary adidas team APIs Apiary Documentation Apiary Mock Service Analytics Admin Mashery Toolbelt 2 3 4 5 6 7 1 1 Design 2 Develop 3 Deploy 4 Publish 5 Use 6 Analyze 7 Update Security Checks Runscope Kibana

Slide 83

Slide 83 text

http://goodapi.co/api-lifecycle

Slide 84

Slide 84 text

THE FUTURE: REDESIGN B2B BUSINESS & ENABLE DIGITAL  CREATION THROUGH APIS

Slide 85

Slide 85 text

COMPLETE B2B HAPPENING  THROUGH APIS

Slide 86

Slide 86 text

DIGITAL  CREATION: CREATING  THE NEW

Slide 87

Slide 87 text

THANK YOU ZDENEK “Z” NEMEC OLDRICH NOVAK https://goodapi.co @zdne GOOD API [email protected]

Slide 88

Slide 88 text

Q&A ZDENEK “Z” NEMEC OLDRICH NOVAK https://goodapi.co @zdne GOOD API [email protected]

Slide 89

Slide 89 text

https://www.karliekloss.com