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.

API Obludárium (API 2018, Praha)

195 views

Published on

API a microservices se často setkávají a ne vždy se hodí pro tvorbu rozhraní microservice použít REST. V této přednášce se podíváme na některé méně tradiční formy přístupu k API, jako třeba event sourcing nebo m-n komunikace a ukážeme si zajímavé možnosti, které nám tyto formy přinášejí. A jak už to ve správném obludáriu musí být, některé exempláře budou opravdu strašidelné.

Published in: Software
  • Be the first to comment

  • Be the first to like this

API Obludárium (API 2018, Praha)

  1. 1. API OBLUDÁRIUM MICHAL TÁBORSKÝ Tallship.cz & Reflex Capital Datascript API Konference 2018
  2. 2. EXPONÁT #1 MONOLIT
  3. 3. PROHLÍŽEČ APACHE PHP UI KATALOG SKLAD NÁKUPNÍ KOŠÍK SQL DATABÁZE
  4. 4. PROHLÍŽEČ APACHE PHP UI KATALOG SKLAD NÁKUPNÍ KOŠÍK SQL DATABÁZE MOBILNÍ APLIKACE
  5. 5. PROHLÍŽEČ APACHE PHP PHP UI KATALOG SKLAD NÁKUPNÍ KOŠÍK SQL DATABÁZE API MOBILNÍ APLIKACE
  6. 6. ‣ SNADNÁ ROZŠIŘITELNOST ‣ RYCHLÉ ZAUČENÍ NOVÁČKŮ ‣ JEDNODUCHÉ NASAZENÍ ‣ JEDNODUCHÉ ŠKÁLOVÁNÍ VÝKONU ‣ OMEZENÝ POČET POUŽITÝCH TECHNOLOGIÍ +
  7. 7. ‣ SNADNÁ ROZŠIŘITELNOST ‣ RYCHLÉ ZAUČENÍ NOVÁČKŮ ‣ JEDNODUCHÉ NASAZENÍ ‣ JEDNODUCHÉ ŠKÁLOVÁNÍ VÝKONU ‣ OMEZENÝ POČET POUŽITÝCH TECHNOLOGIÍ + ‣ ŠPATNÁ ROZŠIŘITELNOST ‣ POMALÉ ZAUČENÍ NOVÁČKŮ ‣ OBTÍŽNÉ NASAZENÍ ‣ OBTÍŽNÉ ŠKÁLOVÁNÍ VÝKONU ‣ OMEZENÝ POČET POUŽITÝCH TECHNOLOGIÍ -
  8. 8. PROHLÍŽEČ MOBILNÍ APLIKACE UI FRONTEND API GATEWAY KATALOGOVÁ SLUŽBA SKLADOVÁ SLUŽBA NÁKUPNÍ KOŠÍK SQL DATABÁZE REDIS ELASTICSEARCH
  9. 9. EXPONÁT #2 API NEAPI
  10. 10. SLOVO DNE: ZPRÁVY
  11. 11. ‣ Blokující ‣ Command pattern ‣ Manipulace s daty ‣ Sériové volání ‣ Silnější závislosti ‣ UI Synchronní
  12. 12. ‣ Blokující ‣ Command pattern ‣ Manipulace s daty ‣ Sériové volání ‣ Silnější závislosti ‣ UI Synchronní ‣ Neblokující ‣ Snadnější rozšiřování ‣ Nelinearita ‣ Zamlžení závislostí ‣ Info pattern ‣ Observe / consume Asynchronní
  13. 13. ZPRÁVY PATTERN MATCHING ▸Nástroj škálování - psychologického ▸Zprávy jako sada klíč/hodnota ▸Směrování zpráv na základě hodnot ▸Inteligentní proxy | Message broker
  14. 14. DANĚ PŘÍKLAD 1
  15. 15. { “label”: “tax”, “net”: 100 }
  16. 16. label:tax → tax-svc { “label”: “tax”, “net”: 100 }
  17. 17. label:tax → tax-svc { “label”: “tax”, “net”: 100 } return { gross: net*1.22 }
  18. 18. { “label”: “tax”, “net”: 100, “category”: “food” }
  19. 19. label:tax → tax-svc label:tax,category:food → tax-food-svc { “label”: “tax”, “net”: 100, “category”: “food” }
  20. 20. label:tax → tax-svc label:tax,category:food → tax-food-svc { “label”: “tax”, “net”: 100, “category”: “food” } return { gross: net*1.10 }
  21. 21. ZPRÁVY VZORY (POČET ZPRÁV/POČET SLUŽEB) ▸ 1/2 Request/Response ▸ 1/2 Sidewinder ▸ 1/2 Winner take all ▸ 1/2 Fire and forget ▸ 2/2 Request/React ▸ 2*/2 Batch process reporting ▸ 1/n Orchestra ▸ 1/n Scatter/Gather ▸ 1/n Multiversion deploy ▸ m/n Chain (Choreography) ▸ m/n Tree
  22. 22. DOPORUČENÍ PRODUKTŮ PŘÍKLAD 2
  23. 23. THE TAO OF MICRO SERVICES RICHARD RODGER HTTP://SENECAJS.ORG/ https://www.manning.com/books/the-tao-of-microservices
  24. 24. EXPONÁT #3 DŮM HRŮZY
  25. 25. LIDOVÁ MOUDROST: SDÍLENÁ RADOST JE DVOJNÁSOBNÁ RADOST SDÍLENÝ SMUTEK JE POLOVIČNÍ SMUTEK SDÍLENÁ DATABÁZE JE HORŠÍ NEŽ MONOLIT
  26. 26. https://stackoverflow.com/questions/900055/is-sql-or-even-tsql-turing-complete
  27. 27. https://stackoverflow.com/questions/900055/is-sql-or-even-tsql-turing-complete
  28. 28. ENTITNÍ / CRUD SLUŽBY
  29. 29. GET /comment/123456 { “articleId”: 98765, “title”: “Můj názor”, “name”: “Věra Pohlová”, “text”: “Tyhle aféry každého jenom otravují. Já bych všechny ty internety a počítače zakázala.”, “approved”: false }
  30. 30. PUT /comment/123456 { “articleId”: 98765, “title”: “Můj názor”, “name”: “Věra Pohlová”, “text”: “Tyhle aféry každého jenom otravují. Já bych všechny ty internety a počítače zakázala.”, “approved”: true }
  31. 31. PATCH /comment/123456 { “approved”: true }
  32. 32. PUT /approve-comment/123456 {}
  33. 33. “WE NEED TO BE CAREFUL TO NOT PUSH WORK INTO THE GAPS BETWEEN SERVICES.” “…DESIGN APIS IN TERMS OF THE CALLER'S NEEDS RATHER THAN THE PROVIDER'S VIEW OF THE WORLD.“ Michael Nygard HTTP://MICHAELNYGARD.COM/BLOG/2018/04/EVOLVING-AWAY-FROM-ENTITIES/
  34. 34. YAGNI
  35. 35. YAGNI (YOU AIN’T GONNA NEED IT)
  36. 36. VŠECHNY VÝROBKY APPLE BUDOU MÍT AUTOMATICKY SLEVU 100 KČ. Josef Novák, obchodní ředitel ZADÁNÍ Z BUSINESSU
  37. 37. ŘEŠENÍ VARIANTA 1: ▸ Přidat databázovou tabulku, která definuje vazbu mezi značkou a výší slevy. ▸ Implementovat její použití v modelu produktu. ▸ Vytvořit administrační rozhraní nové tabulky: výpis, přidání, editace, smazání. ▸ Napsat dokumentaci, vyškolit uživatele (HAHAHA!)
  38. 38. ŘEŠENÍ VARIANTA 2: diff --git a/Price.class.php b/Price.class.php index e69de29..6b8619c 100644 --- a/Price.class.php +++ b/Price.class.php @@ -0,0 +1,3 @@ +if ($brand == "APPLE") { + $discount = 100; +}
  39. 39. SDÍLENÉ KNIHOVNY
  40. 40. SDÍLENÉ KNIHOVNY PROBLÉMY ▸Nekompatibilní návazné závislosti ▸Zvyšuje spřažení služeb ▸Často zbytečná abstrakce ▸YAGNI
  41. 41. SDÍLENÉ KNIHOVNY ŘEŠENÍ ▸Pouze infrastrukturní knihovny ▸Nikdy ne business logika ▸Bez závislostí na dalších knihovnách ▸Klientské knihovny - meh…
  42. 42. DÍKY ZA POZORNOST MICHAL TÁBORSKÝ TALLSHIP.CZ & REFLEX CAPITAL E: MICHAL@TABORSKY.CZ T: @WHIZZ W: HTTPS://TABORSKY.CZ

×