3. 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č
4. 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
5. Kde vzít nové
funkce?
Bohužel nerostou na stromě.
Bidding
PředvyplnitEAN
AuditURL
Monitoring
Kontrola
pravopisu
Vyžaduje to
● Nápad
● Vývojáře
● Refaktoring
● Spoustu času
6. 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í
9. 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?
10. OAuth 2.0 v Mergadu (online režim)
Koncový
uživatel
Chráněné
API zdroje
Autorizační
server
Aplikace
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
11. 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
12. 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živatel
práva číst tato
data?
ANO
200 OK
NE
ANO
401 Unauthorized
13. 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
15. 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
16. 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
17. 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.
18. 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
19. 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í.