SlideShare une entreprise Scribd logo
1  sur  43
Télécharger pour lire hors ligne
API
OBLUDÁRIUM
MICHAL TÁBORSKÝ
Tallship.cz & Reflex Capital
Datascript API Konference 2018
EXPONÁT #1
MONOLIT
PROHLÍŽEČ APACHE
PHP
UI
KATALOG
SKLAD
NÁKUPNÍ KOŠÍK
SQL DATABÁZE
PROHLÍŽEČ APACHE
PHP
UI
KATALOG
SKLAD
NÁKUPNÍ KOŠÍK
SQL DATABÁZE
MOBILNÍ APLIKACE
PROHLÍŽEČ APACHE
PHP
PHP
UI
KATALOG
SKLAD
NÁKUPNÍ KOŠÍK
SQL DATABÁZE
API
MOBILNÍ APLIKACE
‣ SNADNÁ ROZŠIŘITELNOST
‣ RYCHLÉ ZAUČENÍ NOVÁČKŮ
‣ JEDNODUCHÉ NASAZENÍ
‣ JEDNODUCHÉ ŠKÁLOVÁNÍ VÝKONU
‣ OMEZENÝ POČET POUŽITÝCH
TECHNOLOGIÍ
+
‣ 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Í
-
PROHLÍŽEČ
MOBILNÍ APLIKACE
UI FRONTEND
API GATEWAY
KATALOGOVÁ SLUŽBA
SKLADOVÁ SLUŽBA
NÁKUPNÍ KOŠÍK SQL DATABÁZE
REDIS
ELASTICSEARCH
EXPONÁT #2
API NEAPI
SLOVO DNE:
ZPRÁVY
‣ Blokující
‣ Command pattern
‣ Manipulace s daty
‣ Sériové volání
‣ Silnější závislosti
‣ UI
Synchronní
‣ 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í
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
DANĚ
PŘÍKLAD 1
{
“label”: “tax”,
“net”: 100
}
label:tax → tax-svc
{
“label”: “tax”,
“net”: 100
}
label:tax → tax-svc
{
“label”: “tax”,
“net”: 100
}
return {
gross: net*1.22
}
{
“label”: “tax”,
“net”: 100,
“category”: “food”
}
label:tax → tax-svc
label:tax,category:food → tax-food-svc
{
“label”: “tax”,
“net”: 100,
“category”: “food”
}
label:tax → tax-svc
label:tax,category:food → tax-food-svc
{
“label”: “tax”,
“net”: 100,
“category”: “food”
}
return {
gross: net*1.10
}
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
DOPORUČENÍ
PRODUKTŮ
PŘÍKLAD 2
THE TAO OF
MICRO SERVICES
RICHARD RODGER
HTTP://SENECAJS.ORG/
https://www.manning.com/books/the-tao-of-microservices
EXPONÁT #3
DŮM HRŮZY
LIDOVÁ MOUDROST:
SDÍLENÁ RADOST JE DVOJNÁSOBNÁ RADOST
SDÍLENÝ SMUTEK JE POLOVIČNÍ SMUTEK
SDÍLENÁ DATABÁZE JE HORŠÍ NEŽ MONOLIT
https://stackoverflow.com/questions/900055/is-sql-or-even-tsql-turing-complete
https://stackoverflow.com/questions/900055/is-sql-or-even-tsql-turing-complete
ENTITNÍ / CRUD
SLUŽBY
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
}
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
}
PATCH /comment/123456
{
“approved”: true
}
PUT /approve-comment/123456
{}
“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/
YAGNI
YAGNI
(YOU AIN’T GONNA NEED IT)
VŠECHNY VÝROBKY APPLE
BUDOU MÍT AUTOMATICKY
SLEVU 100 KČ.
Josef Novák, obchodní ředitel
ZADÁNÍ Z BUSINESSU
Ř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!)
Ř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;
+}
SDÍLENÉ
KNIHOVNY
SDÍLENÉ KNIHOVNY
PROBLÉMY
▸Nekompatibilní návazné závislosti
▸Zvyšuje spřažení služeb
▸Často zbytečná abstrakce
▸YAGNI
SDÍLENÉ KNIHOVNY
ŘEŠENÍ
▸Pouze infrastrukturní knihovny
▸Nikdy ne business logika
▸Bez závislostí na dalších knihovnách
▸Klientské knihovny - meh…
DÍKY ZA POZORNOST
MICHAL TÁBORSKÝ
TALLSHIP.CZ & REFLEX CAPITAL
E: MICHAL@TABORSKY.CZ
T: @WHIZZ
W: HTTPS://TABORSKY.CZ

Contenu connexe

Similaire à API Obludárium (API 2018, Praha)

Product API in MallGroup
Product API in MallGroupProduct API in MallGroup
Product API in MallGroupJan Blaško
 
Noční můry webového vývojáře
Noční můry webového vývojářeNoční můry webového vývojáře
Noční můry webového vývojářeMichal Špaček
 
5 SCHP - bezpečnost OT final
5 SCHP - bezpečnost OT final5 SCHP - bezpečnost OT final
5 SCHP - bezpečnost OT finalpavelborek
 
Bezpečnost Wordpressu - 4. WP konference
Bezpečnost Wordpressu - 4. WP konferenceBezpečnost Wordpressu - 4. WP konference
Bezpečnost Wordpressu - 4. WP konferenceVladimír Smitka
 
NoSQL databáze, MongoDB
NoSQL databáze, MongoDBNoSQL databáze, MongoDB
NoSQL databáze, MongoDBLukáš Korous
 
Jak vypadá ideální bankovní API?
Jak vypadá ideální bankovní API? Jak vypadá ideální bankovní API?
Jak vypadá ideální bankovní API? Petr Dvorak
 
vSphere automation workshop python
vSphere automation workshop pythonvSphere automation workshop python
vSphere automation workshop pythonVladan Laxa
 
2019 03-20 snidane-serie-kuchyne-full
2019 03-20 snidane-serie-kuchyne-full2019 03-20 snidane-serie-kuchyne-full
2019 03-20 snidane-serie-kuchyne-fullProfinit
 
Čtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScriptČtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScriptCtvrtkoncz
 
Vilibald Wanča - Api design-lifecycle
Vilibald Wanča - Api design-lifecycleVilibald Wanča - Api design-lifecycle
Vilibald Wanča - Api design-lifecycleCtvrtkoncz
 
Odpoledne se Seznamem II - Provozní bezpečnost
Odpoledne se Seznamem II - Provozní bezpečnostOdpoledne se Seznamem II - Provozní bezpečnost
Odpoledne se Seznamem II - Provozní bezpečnostchaplin06
 
Problémy ICT a zkušenosti z jiných oborů
Problémy ICT a zkušenosti z jiných oborůProblémy ICT a zkušenosti z jiných oborů
Problémy ICT a zkušenosti z jiných oborůJiří Napravnik
 
Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)Pavel Růžička
 
Rockaway AWS Hackaton – Kick-off Meeting Brno
Rockaway AWS Hackaton – Kick-off Meeting BrnoRockaway AWS Hackaton – Kick-off Meeting Brno
Rockaway AWS Hackaton – Kick-off Meeting BrnoRockawayCapital
 

Similaire à API Obludárium (API 2018, Praha) (20)

Product API in MallGroup
Product API in MallGroupProduct API in MallGroup
Product API in MallGroup
 
Noční můry webového vývojáře
Noční můry webového vývojářeNoční můry webového vývojáře
Noční můry webového vývojáře
 
5 SCHP - bezpečnost OT final
5 SCHP - bezpečnost OT final5 SCHP - bezpečnost OT final
5 SCHP - bezpečnost OT final
 
Asynchronně v PHP
Asynchronně v PHPAsynchronně v PHP
Asynchronně v PHP
 
Bezpečnost Wordpressu - 4. WP konference
Bezpečnost Wordpressu - 4. WP konferenceBezpečnost Wordpressu - 4. WP konference
Bezpečnost Wordpressu - 4. WP konference
 
NoSQL databáze, MongoDB
NoSQL databáze, MongoDBNoSQL databáze, MongoDB
NoSQL databáze, MongoDB
 
Jak vypadá ideální bankovní API?
Jak vypadá ideální bankovní API? Jak vypadá ideální bankovní API?
Jak vypadá ideální bankovní API?
 
vSphere automation workshop python
vSphere automation workshop pythonvSphere automation workshop python
vSphere automation workshop python
 
TNPW2-2016-05
TNPW2-2016-05TNPW2-2016-05
TNPW2-2016-05
 
2019 03-20 snidane-serie-kuchyne-full
2019 03-20 snidane-serie-kuchyne-full2019 03-20 snidane-serie-kuchyne-full
2019 03-20 snidane-serie-kuchyne-full
 
Čtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScriptČtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScript
 
Vilibald Wanča - Api design-lifecycle
Vilibald Wanča - Api design-lifecycleVilibald Wanča - Api design-lifecycle
Vilibald Wanča - Api design-lifecycle
 
Odpoledne se Seznamem II - Provozní bezpečnost
Odpoledne se Seznamem II - Provozní bezpečnostOdpoledne se Seznamem II - Provozní bezpečnost
Odpoledne se Seznamem II - Provozní bezpečnost
 
TNPW2-2014-05
TNPW2-2014-05TNPW2-2014-05
TNPW2-2014-05
 
Problémy ICT a zkušenosti z jiných oborů
Problémy ICT a zkušenosti z jiných oborůProblémy ICT a zkušenosti z jiných oborů
Problémy ICT a zkušenosti z jiných oborů
 
Sexy infrastruktura
Sexy infrastrukturaSexy infrastruktura
Sexy infrastruktura
 
App Engine Kick Start
App Engine Kick StartApp Engine Kick Start
App Engine Kick Start
 
TNPW2-2013-07
TNPW2-2013-07TNPW2-2013-07
TNPW2-2013-07
 
Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)
 
Rockaway AWS Hackaton – Kick-off Meeting Brno
Rockaway AWS Hackaton – Kick-off Meeting BrnoRockaway AWS Hackaton – Kick-off Meeting Brno
Rockaway AWS Hackaton – Kick-off Meeting Brno
 

API Obludárium (API 2018, Praha)