Prezentace z odborné snídaně v Profnitu 19. 6. 2018. Bitcoin (kryptoměny), burzy, vývoj burzy Coinmate na „zelené louce“, její další rozvoj, aktuální otázky související s boomem kryptoměn.
4. 4
Co je Bitcoin (kryptoměny)
› Digitální (krypto) měna
– Plně decentralizovaná
– Žádný prostředník
– Nízké transakční poplatky
– Pseudonymní
– Otevřený kód
– V provozu od roku 2009
5. 5
Bitcoinové burzy
› Bitcoinové burzy
– MT. Gox (Magic: The Gathering Online
eXchange)
– Bitstamp.net
– BTC-e.com
– Bitfinex.com
› Funkce burzy
– Registrace uživatelů, správa účtu,
obnovení hesla, …
– Verifikace uživatelů, AML procesy
– Vklady a výběry FIAT měn a kryptoměn
– Obchodování – mezi uživateli
– API
– Reporty, statistiky, grafy
– Administrace
9. 9
Proof of Concept
› Požadavky:
– Bootstrap
– Load on demand
– Živá aktualizace grafu a jiných komponent
– Bezpečnost, javascriptové GUI, integrace
se Springem
› Zkoumané technologie
– JSF
– Vaadin
– Zkoss
› Vítězí Zkoss
– Slibuje Bootstrap, load on demand, http push
– Moderní AJAXový Java framework
– Vaadin nelze integrovat s Bootstrapem
– V JSF by http push byl pracný
› Angular a React.JS nebyly prověřené
2014
Duben
11. 11
xStage Env.
Ideální podoba cesty jednoho řádku kódu
Vývojář VCS Continuous
Integration
Quality Gate Test Env.
Monitoring & Planning
Testing
Production
12. 12
Způsob spolupráce
› FTFP
– V rámci iterací fixovaný rozsah, cena a čas
– Zákazník ví, co a za kolik dostane
– Nevhodné pro často se měnící požadavky a priority
› Bodyshop
– Fixované zdroje, zákazník platí za odpracované hodiny
– Vyšší organizační nároky na straně zákazníka
– Zodpovědnost a rizika nese zákazník
› Teamlease
– Sehraný tým, specificky připravený pro danou poptávku
• Složení týmu je naše zodpovědnost – zákazník říká požadovanou kapacitu
• Zákazník se nestará o organizaci týmu
– Zodpovědnost za dodání je na týmu, zákazník platí za odpracované hodiny
– Máme větší možnosti uplatnit široké zkušenosti s dlouhodobým dodáváním
a rozvojem IT systémů
– Změny v týmu na naše náklady
14. 14
Rozvoj formou teamlease
› Zákazník investuje do rozvoje
opatrně
– Prioritu měly úkoly viditelné
pro klienty
› Release
– 1 velký (půl roku práce)
– 4 střední (cca měsíc práce)
– drobné úpravy a bug fixy
2016 2017
Leden Červen
15. 15
Průběžný vývoj
› 2014 – zahájení produkčního provozu
› 2015 – nové platební metody, Quick Buy/Sell, USD EUR
› léto 2016 – tradeview, CZK/BTC
› zima 2017 – automatizace verifikace klientů
› červen 2017 – migrace do AWS
16. Infrastruktura
› Spravuje si zákazník
› Původně menší hosting serverů v Anglii
– Problém s DDoS
› Azure
– Výhodné podmínky
– Virtuální servery s Linuxem
› Nutná reinstalace
– Nutný upgrade OS
– Nutný licenční upgrade DB
– Revize infrastruktury po 2 letech
– Zákazník si již nechce spravovat servery sám
› Přebíráme i správu infrastruktury
2016 2017
Červen
2015
Leden
2014
Říjen Prosinec
17. 17
Migrace do Amazon Web Services
› Azure
– Zákazník má předplacené kredity
– Omezené možnosti správy Linux serverů
– Nemá managed Oracle DB
› AWS
– Zákazník preferuje, je tam i burza Bitstamp
– Lepší podpora Linux serverů
– Má managed Oracle DB (RDS)
› Migrace dat
– Postupná migrace pro zkrácení doby odstávky
19. 19
Růst kryptoměn i projektu
› Roste cena BTC i počty zákazníků burzy
› Problémy trhu
– Forky – BitcoinCash, Seqwit, Segwit2x
– Dlouhá doba zpracování transakcí
– Velké poplatky
› Zákazník má hodně požadavků
– Nutná prioritizace do releasů
– Více požadavků na správu klientů automatizace
› Release
– Větší jednou za 1–2 měsíce
2017 2018
ČervenČervenec
20. 20
Pracovní proces
› Rozšiřování týmu
› Pro zachování podpory častých změn jsou nutné úpravy procesu
› Paralelní práce na jednotlivých požadavcích
– Zadání
– Hrubá analýza a prioritizace
– Analýza
– Detailní odhady pracnosti
– Implementace
› Vytvoření releasu z implementovaných částí
– Přechod ze SVN na Git
RELEASE 10
RELEASE 11
ZADÁNÍ PRIORITIZACE
ANALÝZA
A ODHADY
IMPLEMENTACE
ZADÁNÍ PRIORITIZACE
ZADÁNÍ PRIORITIZACE
ANALÝZA
A ODHADY
IMPLEMENTACE
ZADÁNÍ PRIORITIZACE
ANALÝZA
A ODHADY
ZADÁNÍ PRIORITIZACE
ANALÝZA
A ODHADY
IMPLEMENTACE
NASAZENÍ
NASAZENÍ
21. 21
Průběžný vývoj
› 2014 – zahájení produkčního provozu
› 2015 – nové platební metody, Quick Buy/Sell, USD EUR
› léto 2016 – tradeview, CZK/BTC
› zima 2017 – automatizace verifikace klientů
› červen 2017 – migrace do AWS
› září 2017 – automatické výběry přes Fio banku
› říjen 2017 – Litecoin a usnadnění přidávání dalších měn
› prosinec 2017 – Bitcoin Cash
› únor 2018 – Admin GUI Angular
› duben 2018 – analýza projektu BitcoinPay
› červen 2018 – dva nové měnové páry (celkem 6 párů)
22. 22
Infrastruktura
› Docker
– Kontejner = virtualizace na úrovni jádra
– Izolace
– Peněženky kryptoměn
› Ansible
– Automatizace instalace a konfigurace
– Slouží zároveň jako dokumentace
– Zatím používáme: běžná správa serverů
(řízení přístupů, nasazování aplikace)
– Plán: instalace nových serverů
23. 23
Automatizace nasazování do produkce
› Standard – automatické nasazování na testovací prostředí
› Obsah dodávky
– změny DB
– backend
– frontend
– konfigurační soubory
– statický web
› Nasazení do produkce na 3 kliknutí
– Vytvoření dodávky – build server Jenkins
– Kontrola změn konfigurace – merge v Gitu
– Nasazení – Ansible
› Doba odstávky pro standardní nasazení
– Původně 0,5–2 h
– Aktuálně 3 min
– Možnost další optimalizace
› Můžeme nasazovat i během dne
24. 24
Zabezpečení
› Dodržování bezpečnostních standardů
› Rozdělení na backend a frontend
› Zabezpečení peněženek kryptoměn
– Hot wallet – na serveru, malé procento financí
– Cold wallet – offline, většina financí, hardwarová peněženka Trezor
› Docker
– peněženky kryptoměn v kontejnerech (nemusí být důvěryhodné)
– izolace kódu od zbytku infrastrukturu
28. 28
Shrnutí
› Aplikovali jsme naše standardy softwarového vývoje
› Na základě obecných business požadavků jsme sami připravili
specifikaci pro projekt v akceptovaném rozsahu
› Zkušenosti z podobné domény (bankovnictví) jsme přenesli
do oblasti kryptoměn
› Forma spolupráce se přizpůsobila potřebám projektu
v jednotlivých fázích vývoje (FTFP -> TeamLease)
› Rychle jsme doplnili specifické know-how (Blockchain, AWS)