Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

of

Beautiful APIs - SOSE2021 Keynote Slide 1 Beautiful APIs - SOSE2021 Keynote Slide 2 Beautiful APIs - SOSE2021 Keynote Slide 3 Beautiful APIs - SOSE2021 Keynote Slide 4 Beautiful APIs - SOSE2021 Keynote Slide 5 Beautiful APIs - SOSE2021 Keynote Slide 6 Beautiful APIs - SOSE2021 Keynote Slide 7 Beautiful APIs - SOSE2021 Keynote Slide 8 Beautiful APIs - SOSE2021 Keynote Slide 9 Beautiful APIs - SOSE2021 Keynote Slide 10 Beautiful APIs - SOSE2021 Keynote Slide 11 Beautiful APIs - SOSE2021 Keynote Slide 12 Beautiful APIs - SOSE2021 Keynote Slide 13 Beautiful APIs - SOSE2021 Keynote Slide 14 Beautiful APIs - SOSE2021 Keynote Slide 15 Beautiful APIs - SOSE2021 Keynote Slide 16 Beautiful APIs - SOSE2021 Keynote Slide 17 Beautiful APIs - SOSE2021 Keynote Slide 18 Beautiful APIs - SOSE2021 Keynote Slide 19 Beautiful APIs - SOSE2021 Keynote Slide 20 Beautiful APIs - SOSE2021 Keynote Slide 21 Beautiful APIs - SOSE2021 Keynote Slide 22 Beautiful APIs - SOSE2021 Keynote Slide 23 Beautiful APIs - SOSE2021 Keynote Slide 24 Beautiful APIs - SOSE2021 Keynote Slide 25 Beautiful APIs - SOSE2021 Keynote Slide 26 Beautiful APIs - SOSE2021 Keynote Slide 27 Beautiful APIs - SOSE2021 Keynote Slide 28 Beautiful APIs - SOSE2021 Keynote Slide 29 Beautiful APIs - SOSE2021 Keynote Slide 30 Beautiful APIs - SOSE2021 Keynote Slide 31 Beautiful APIs - SOSE2021 Keynote Slide 32 Beautiful APIs - SOSE2021 Keynote Slide 33 Beautiful APIs - SOSE2021 Keynote Slide 34 Beautiful APIs - SOSE2021 Keynote Slide 35 Beautiful APIs - SOSE2021 Keynote Slide 36 Beautiful APIs - SOSE2021 Keynote Slide 37 Beautiful APIs - SOSE2021 Keynote Slide 38 Beautiful APIs - SOSE2021 Keynote Slide 39 Beautiful APIs - SOSE2021 Keynote Slide 40 Beautiful APIs - SOSE2021 Keynote Slide 41 Beautiful APIs - SOSE2021 Keynote Slide 42 Beautiful APIs - SOSE2021 Keynote Slide 43 Beautiful APIs - SOSE2021 Keynote Slide 44 Beautiful APIs - SOSE2021 Keynote Slide 45 Beautiful APIs - SOSE2021 Keynote Slide 46 Beautiful APIs - SOSE2021 Keynote Slide 47 Beautiful APIs - SOSE2021 Keynote Slide 48 Beautiful APIs - SOSE2021 Keynote Slide 49 Beautiful APIs - SOSE2021 Keynote Slide 50 Beautiful APIs - SOSE2021 Keynote Slide 51 Beautiful APIs - SOSE2021 Keynote Slide 52 Beautiful APIs - SOSE2021 Keynote Slide 53 Beautiful APIs - SOSE2021 Keynote Slide 54 Beautiful APIs - SOSE2021 Keynote Slide 55 Beautiful APIs - SOSE2021 Keynote Slide 56 Beautiful APIs - SOSE2021 Keynote Slide 57 Beautiful APIs - SOSE2021 Keynote Slide 58 Beautiful APIs - SOSE2021 Keynote Slide 59 Beautiful APIs - SOSE2021 Keynote Slide 60 Beautiful APIs - SOSE2021 Keynote Slide 61 Beautiful APIs - SOSE2021 Keynote Slide 62 Beautiful APIs - SOSE2021 Keynote Slide 63 Beautiful APIs - SOSE2021 Keynote Slide 64 Beautiful APIs - SOSE2021 Keynote Slide 65 Beautiful APIs - SOSE2021 Keynote Slide 66 Beautiful APIs - SOSE2021 Keynote Slide 67 Beautiful APIs - SOSE2021 Keynote Slide 68 Beautiful APIs - SOSE2021 Keynote Slide 69 Beautiful APIs - SOSE2021 Keynote Slide 70 Beautiful APIs - SOSE2021 Keynote Slide 71 Beautiful APIs - SOSE2021 Keynote Slide 72 Beautiful APIs - SOSE2021 Keynote Slide 73 Beautiful APIs - SOSE2021 Keynote Slide 74 Beautiful APIs - SOSE2021 Keynote Slide 75 Beautiful APIs - SOSE2021 Keynote Slide 76 Beautiful APIs - SOSE2021 Keynote Slide 77 Beautiful APIs - SOSE2021 Keynote Slide 78 Beautiful APIs - SOSE2021 Keynote Slide 79 Beautiful APIs - SOSE2021 Keynote Slide 80 Beautiful APIs - SOSE2021 Keynote Slide 81 Beautiful APIs - SOSE2021 Keynote Slide 82 Beautiful APIs - SOSE2021 Keynote Slide 83 Beautiful APIs - SOSE2021 Keynote Slide 84 Beautiful APIs - SOSE2021 Keynote Slide 85 Beautiful APIs - SOSE2021 Keynote Slide 86 Beautiful APIs - SOSE2021 Keynote Slide 87 Beautiful APIs - SOSE2021 Keynote Slide 88 Beautiful APIs - SOSE2021 Keynote Slide 89 Beautiful APIs - SOSE2021 Keynote Slide 90 Beautiful APIs - SOSE2021 Keynote Slide 91 Beautiful APIs - SOSE2021 Keynote Slide 92 Beautiful APIs - SOSE2021 Keynote Slide 93 Beautiful APIs - SOSE2021 Keynote Slide 94 Beautiful APIs - SOSE2021 Keynote Slide 95 Beautiful APIs - SOSE2021 Keynote Slide 96 Beautiful APIs - SOSE2021 Keynote Slide 97 Beautiful APIs - SOSE2021 Keynote Slide 98 Beautiful APIs - SOSE2021 Keynote Slide 99 Beautiful APIs - SOSE2021 Keynote Slide 100 Beautiful APIs - SOSE2021 Keynote Slide 101 Beautiful APIs - SOSE2021 Keynote Slide 102 Beautiful APIs - SOSE2021 Keynote Slide 103
Upcoming SlideShare
What to Upload to SlideShare
Next
Download to read offline and view in fullscreen.

0 Likes

Share

Download to read offline

Beautiful APIs - SOSE2021 Keynote

Download to read offline

Web service APIs are everywhere. In this talk we will show different visualizations obtained from a collection of real-world APIs, highlighting some design primitives, patterns and anti-patterns for API structures. We will also take the audience on a tour of how API evolve over the years and how the relationship between APIs and the Web continues to change over the decades.

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

Beautiful APIs - SOSE2021 Keynote

  1. 1. Beautiful APIs Cesare Pautasso c.pautasso@ieee.org Opening Keynote Fifteenth IEEE International Conference on Service-Oriented System Engineering (SOSE2021) August 23, 2021, Virtual Oxford, UK http://www.pautasso.info/
  2. 2. Contents • Motivating Example • Interfaces vs. APIs • API Tree Structures • API Tree Structure Evolution • API Evolution Tree Rings • Web and APIs
  3. 3. Abstract Web service APIs are everywhere. In this talk we will show different visualizations obtained from a collection of real-world APIs, highlighting some design primitives, patterns and anti-patterns for API structures. We will also take the audience on a tour of how API evolve over the years and how the relationship between APIs and the Web continues to change over the decades.
  4. 4. Gas Station EV Charge Station Scan credit card Fill up tank Get receipt Scan customer loyalty card Register customer info Register payment details wait Receive network id card Connect car to plug (?) Scan network id card Charge wait some more
  5. 5. Every Component has an Interface Consumer Provider
  6. 6. Every Architecture has an API
  7. 7. Connect and Separate Outside Inside API
  8. 8. Application Developers (1998)
  9. 9. Integration Developers (2013)
  10. 10. Mashup Developers (2014)
  11. 11. Low Code ''Developers'' (2020)
  12. 12. API Technology • Local / Remote Deployment • Programming Language Speci c / Independent • XML / JSON / String Payloads • Formal / Informal Description
  13. 13. API Technology • Local / Remote Deployment • Programming Language Speci c / Independent • XML / JSON / String Payloads • Formal / Informal Description
  14. 14. Operations = Resource Path + Method
  15. 15. Multiple Representations
  16. 16. Read-Only Collection
  17. 17. Read-Only
  18. 18. Read-Only
  19. 19. Read-Only
  20. 20. Read-Write
  21. 21. Read-Write
  22. 22. Read-Write-Delete
  23. 23. Remote Procedure Call
  24. 24. Actions
  25. 25. Actions and HTTP Methods
  26. 26. Structured Read-Write
  27. 27. Deep Structured Read-Write
  28. 28. Collection
  29. 29. G GE ET T /users /users 2 20 04 4 N No o C Co on nt te en nt t POST /users POST /users 201 Created 201 Created Location: /users/{id} Location: /users/{id} G GE ET T /users/{id} /users/{id} 2 200 OK 00 OK PUT /users/{id} PUT /users/{id} 200 OK 200 OK DELETE /users/{id} DELETE /users/{id} 200 OK 200 OK Collection Conversation
  30. 30. CRUMD Collection
  31. 31. CRUMD Collections
  32. 32. Collections Mix
  33. 33. Collection with Commands
  34. 34. GET, POST, DELETE, PUT
  35. 35. GET, POST, DELETE, PUT, PATCH
  36. 36. PUT Setters
  37. 37. POST-less
  38. 38. NoSQL API
  39. 39. CRUD API
  40. 40. SQL API
  41. 41. SpareMoney
  42. 42. SpareMoney
  43. 43. CarService API
  44. 44. CarService API
  45. 45. OpenTrials API
  46. 46. OpenTrials API
  47. 47. Flat API
  48. 48. Flat API
  49. 49. OpenPAI RESTful API
  50. 50. OpenPAI RESTful API
  51. 51. Clamp Rest API
  52. 52. Clamp Rest API
  53. 53. ID Vault
  54. 54. ID Vault
  55. 55. LibOpenStorage
  56. 56. LibOpenStorage
  57. 57. BMInventory
  58. 58. BMInventory
  59. 59. MADApp API
  60. 60. MADApp API
  61. 61. Welcome to the guided tour of the Beautiful API Evolution virtual exhibition.
  62. 62. SpareMoney Welcome to the guided tour of the Beautiful API Evolution virtual exhibition. 1 month 11 days Age 27 Paths 45 Commits
  63. 63. Each line represents an operation. Its color corresponds to the HTTP method.
  64. 64. Ingenico Server Each line represents an operation. Its color corresponds to the HTTP method. 5 days Age 36 Paths 16 Commits
  65. 65. Multicolored lines represent paths that provide multiple operations with different HTTP methods. Operations are not always added to a path at the same time.
  66. 66. Harbor API Multicolored lines represent paths that provide multiple operations with different HTTP methods. Operations are not always added to a path at the same time. 3 months 14 days Age 19 Paths 50 Commits
  67. 67. Time ows outwards. The oldest API structures are shown around the center. The latest version is on the outer ring.
  68. 68. eCards API Time ows outwards. The oldest API structures are shown around the center. The latest version is on the outer ring. 1 month 13 days Age 21 Paths 38 Commits
  69. 69. This API was born as a read-only API and later acquired some POST endpoints. We can also spot a rare transition from GET to POST on the same endpoint.
  70. 70. CarService API This API was born as a read-only API and later acquired some POST endpoints. We can also spot a rare transition from GET to POST on the same endpoint. 1 month 26 days Age 49 Paths 95 Commits
  71. 71. The circular rings represent time intervals. This read-only API is more than one year old.
  72. 72. OpenTrials API The circular rings represent time intervals. This read-only API is more than one year old. 1 year 2 months 16 days Age 24 Paths 102 Commits
  73. 73. The distance between the circular rings is proportional to how many commits have been pushed within the 6 months interval. This 3.5 year old API underwent a lot of changes in the rst 6 months and almost stabilized afterwards.
  74. 74. Flat API The distance between the circular rings is proportional to how many commits have been pushed within the 6 months interval. This 3.5 year old API underwent a lot of changes in the rst 6 months and almost stabilized afterwards. 3 years 10 months 16 days Age 51 Paths 37 Commits
  75. 75. This API is less than one year old, but it did already undergo a radical change once, when most of its old paths have been pruned.
  76. 76. OpenPAI RESTful API This API is less than one year old, but it did already undergo a radical change once, when most of its old paths have been pruned. 11 months 13 days Age 73 Paths 36 Commits
  77. 77. If the previous API changed radically once, this one underwent such transitions regularly. We can spot at least three bundles of paths that have been replaced together every six months or so.
  78. 78. Clamp Rest API If the previous API changed radically once, this one underwent such transitions regularly. We can spot at least three bundles of paths that have been replaced together every six months or so. 2 years 7 months 24 days Age 90 Paths 33 Commits
  79. 79. Welcome to the CRUD style API, with endpoints providing four operations (GET, DELETE, PUT and PATCH).
  80. 80. ID Vault Welcome to the CRUD style API, with endpoints providing four operations (GET, DELETE, PUT and PATCH). 1 month 27 days Age 22 Paths 86 Commits
  81. 81. Here is another one, with half CRUD endpoints and half read-only. This is also an API that has been growing for almost four years by always adding more paths along the way.
  82. 82. Apacta Here is another one, with half CRUD endpoints and half read-only. This is also an API that has been growing for almost four years by always adding more paths along the way. 3 years 11 months 12 days Age 81 Paths 28 Commits
  83. 83. The designers of this API have been experimenting with many different styles over its 2 years of existence. Some experiments were short lived, while others withstood the test of time.
  84. 84. LibOpenStorage The designers of this API have been experimenting with many different styles over its 2 years of existence. Some experiments were short lived, while others withstood the test of time. 2 years 19 days Age 105 Paths 48 Commits
  85. 85. Here we can see that only one path introduced with the rst release has survived until the current version. Most of the current paths are new, and most of the original ones have been removed.
  86. 86. BMInventory Here we can see that only one path introduced with the rst release has survived until the current version. Most of the current paths are new, and most of the original ones have been removed. 5 months 4 days Age 56 Paths 132 Commits
  87. 87. Here we see a clear case of API designers lacking some colors in their palette. For some reason, clients can only GET, POST and DELETE.
  88. 88. MADApp API Here we see a clear case of API designers lacking some colors in their palette. For some reason, clients can only GET, POST and DELETE. 3 years 1 month 21 days Age 90 Paths 75 Commits
  89. 89. This 2.5-years-old API was born as a Remote Procedure Call API. Then it matured to become RESTful.
  90. 90. OpenStorage SDK This 2.5-years-old API was born as a Remote Procedure Call API. Then it matured to become RESTful. 2 years 9 months 23 days Age 187 Paths 192 Commits
  91. 91. Beautiful API Evolution Beautiful API Evolution
  92. 92. Web ↔ APIs Web as a tunnel 2000 ''It's not RESTful enough'' 2010 Web browser as a tunnel 2020
  93. 93. More Examples • Cesare Pautasso, , Leanpub, 2020 • Cesare Pautasso, , Leanpub, 2021 Beautiful APIs Beautiful API Evolution
  94. 94. Microservice API Design Patterns https://microservice-api-patterns.org
  95. 95. References • Souhaila Serbout, Cesare Pautasso, Uwe Zdun, Olaf Zimmermann, From OpenAPI Fragments to API Pattern Primitives and Smells, Proc. of the European Conference on Pattern Languages of Programs (EuroPLoP 2021), Kloster Irsee, Germany, July 2021 • Fabio Di Lauro, Souhaila Serbout, Cesare Pautasso, , Proc. 21st International Conference on Web Engineering (ICWE2021), Biarritz, France, Springer, May 2021 (Best Paper Award) • Cesare Pautasso, Ana Ivanchikj, Silvia Schreier, , Proc. of the 21st European Conference on Pattern Languages of Programs (EuroPLoP 2016), Kloster Irsee, Germany, July 2016, pp. 4:1-4:22 • Daniel Lübke, Olaf Zimmermann, Cesare Pautasso, Uwe Zdun, Mirko Stocker, , Proc. of the 24th European Conference on Pattern Languages of Programs (EuroPLoP 2019), Irsee, Germany, July 2019 • Olaf Zimmermann, Mirko Stocker, Uwe Zdun, Daniel Lübke, Cesare Pautasso, , Joint Post-proceedings of the First and Second International Conference on Microservices (Microservices 2017/2019) • Cesare Pautasso, , Leanpub, 2020 • Cesare Pautasso, , Leanpub, 2021 Towards Large-scale Empirical Assessment of Web APIs Evolution A Pattern Language for RESTful Conversations Interface Evolution Patterns - Balancing Compatibility and Flexibility across Microservices Lifecycles Introduction to Microservice API Patterns (MAP) Beautiful APIs Beautiful API Evolution

Web service APIs are everywhere. In this talk we will show different visualizations obtained from a collection of real-world APIs, highlighting some design primitives, patterns and anti-patterns for API structures. We will also take the audience on a tour of how API evolve over the years and how the relationship between APIs and the Web continues to change over the decades.

Views

Total views

35

On Slideshare

0

From embeds

0

Number of embeds

3

Actions

Downloads

0

Shares

0

Comments

0

Likes

0

×