jak probíhal vývoj platformy pro vývojáře
TRANSCRIPT
Jak Mergado manipuluje s
produkty?S pomocí pravidel a výběrů.
Vstupní XML feed
Výstupní XML feed
<product>
Pravidlo:CPC = 2 Kč
<product>
<product>
<product><product>
<product>
<product>
<product>
<product>
CPC = 2 Kč<product>
PRICE_VAT > 100 Kč
Další funkce Mergada a výzvy pro vývojáře
● Převody mezi formáty XML, napojení na reklamní systémy
■ Heureka, Zboží.cz, Sklik, Google, Facebook, CJ.com, …
■ Celkově přes 50 různých formátů
● Parsování nevalidních XML
■ Vlastní parser XML
● Vlastní dotazovací jazyk
■ Mergado Query Language (MQL)
■ Deklarativní jazyk
● Real-Time analytika
■ Terabajty dat
● Audit XML
Kde vzít nové funkce?
Bohužel nerostou na stromě.
Bidding
Před
vypl
nit E
AN
Audit UR
L
Monitoring
Kont
rola
pr
avop
isu
Vyžaduje to
● Nápad
● Vývojáře● Refaktoring
● Spoustu času
Co kdybychom tvorbu nových funkcí zpřístupnili i externím vývojářům?
● Nové funkce by přibývaly ve formě aplikací
■ zcela oddělené od jádra Mergada
● Výhody
■ Outsourcing nových funkcí
■ Jádro se neznečišťuje novým kódem
■ Nižší nároky na údržbu a vývoj
■ Lepší použitelnost rozhraní
● Nevýhody
■ Menší dohled nad novými funkcemi
■ Vysoká počáteční investice
■ Horší použitelnost rozhraní
Ale kde vlastně začít?
● Jak budou aplikace komunikovat s jádrem?
● Jak bude fungovat autentizace?
● Co správa oprávnění?
● Jak vývojářům platformu zpřístupnit?
● Jaké bude jejich workflow?
● Kde aplikace poběží?
● Jaké technologie budou mít vývojáři k dispozici?
OAuth 2.0 v Mergadu (online režim)
Koncový uživatel
Chráněné API zdroje
Autorizační serverAplikace
1. autorizační požadavek
2. autorizační kód
3. autorizační kód
4. access token
5. access token
6. chráněný zdroj
OAuth 2.0 v Mergadu (offline režim)
Chráněné API zdroje
Autorizační server
Aplikace
1. refresh token
2. access token
3. access token
4. chráněný zdroj
● Během povolení aplikace uživatelem si autorizační
server uloží refresh token
● Ten pak aplikace použije k vyžádání access tokenu
Mergado API v0.3.1● Aplikace se autorizují přes OAuth 2.0
● Komunikace probíhá přes HTTP JSON API
● Oprávnění aplikace stanovují OAuth scopy
■ Uživatel uděluje práva (scopy) při zapnutí aplikace
GET /api/users/42
Je token validní?
403 Forbidden
NE
Má aplikace práva číst tato
data?
ANO
NE
Má uživatelpráva číst tato
data?
ANO
200 OK
NE
ANO
401 Unauthorized
Nad rámec standardních API
● Uživatel může zapnout aplikaci pro e-shop
■ A více uživatelů může v Mergadu přistupovat k jednomu e-shopu
■ ⇒ access token se váže na entitu (na uživatele, e-shop nebo export)
● Mergado někdy komunikuje i s aplikací
■ ⇒ Aplikace potřebují mít vlastní API/webhook
● Aplikace někdy potřebují komunikovat s API periodicky
■ Zatímco uživatel není přihlášen v Mergadu
Developers
● https://developers.mergado.com
● Centrum pro vývojáře
● K registraci a správě aplikací
App Cloud
● Hosting pro aplikace
● MySQL, Redis, Apache, PHP
● V budoucnu Python a další jazyky
App Cloud
App 1
Mergado API
App 2
App N App M
Statistiky Analytika
Pravidla Výběry
Audit Elementy
ProměnnéNotifikace
Jak se aplikace zobrazuje v Mergadu?
● Primárně jako samostatná HTML stránka
■ IFRAME, kde src=”https://appcloud.mergado.com/...”
MERGADO
<IFRAME src=“https://appcloud...”/> <HTML> ... </HTML></IFRAME>
App: Logbook
Logbook content-type: text/html
App Cloud
● Sekundárně jako widget v přehledu zapnutých aplikací
■ Opět pouze HTML dokument v IFRAME
Servis pro vývojáře aplikací
● Hosting pro aplikace zajišťuje App Cloud
○ Technologicky je však možné použít vlastní hosting
● 70 % z částky zaplacené zákazníky se vyplatí vývojáři
○ 30 % je na provoz a další vývoj platformy
● Mergado dále pomáhá vývojářům marketingově
○ Prostřednictvím blogu, e-mailingem, atd.
Jaký je stav po roce vývoje?
73 API endpointů, rosáhlá dokumentace platformy v angličtině, 14 aplikací na produkci a 3 ve vývoji.
● Bidding Fox
● Feed Image Editor
● Pricing Rank
● Data Owl
● Weekday Bidding Booster
● … a další v Mergado Store
Závěrem: Pár poučení a návrhů na vylepšení
● Porozumění architektury
○ návrh HTTP API má smysl teprve až
v pozdějších fázích vývoje
● Neomezovat vývojáře příliš
○ začnou vymýšlet “hacky”
● Aplikace v docker kontejneru
○ jednodušší správa oprávnění,
○ jednodušší řízení zdrojů,
○ aplikace si navzájem nekradou zdroje,
○ aplikace si mohou v rámci kontejneru
nainstalovat co potřebují.