Mint már létrehozott egy speciális online banki 5 hónapig
Mivel ez nem a szokásos online banki és a nem szabványos általa kidolgozott, úgy döntöttem, hogy megosszák az adatokat hogyan csináltuk ezt a projektet, amely segített nekünk építeni, hogy kevesebb, mint 5 hónap, és beszélni néhány a technikai részleteket.
Más szóval, amit tettünk - nevezhetjük Agile (agilis szoftverfejlesztés), és ha pontosabb, az XP - Extreme Programming. Ez a fajta fejlődési folyamat már csiszolta sok a korábbi ügyfelek és nagyon sikeresen használták, és dolgozik az észt Swedbank-e.
építészet
„Mi az? Játssz keret a bank, akkor valószínűleg csak viccelsz?” - volt az első reakció a fejlesztők ismerős.
Lássuk, mi befolyásolta a döntést:
- Akartunk írni a Java, mert van egy csomó tapasztalat a nyelv és platform. Java nem halt meg, ha helyesen használja.
- Volt egy viszonylag kis csapat, és egy kis időt, ezért kellett a legtermékenyebb. Ez segített a fejlesztési környezet IntelliJ IDEA, mellesleg kifejlesztett Szentpéterváron.
- Java Linux alatt fut, a beadás időnként könnyebb és gyorsabb, mint mindenki ott windose. Ez erősítette meg egy sör mellett a rendszergazdák, kopott ugyanezzel az oldattal.
- Játssz keret teszi fejlesztése Java gyorsabban automatikusan újrafordítani és újratölti a kódot, és lehetővé teszi, hogy mindezt futtatni a gépen másodpercek nélkül felfalja hatalmas mennyiségű RAM, ami jellemző az alkalmazás-szerver a Java világ, és hogy nem olyan, mint az induló, ahol termelékenység értékes mindenek felett.
- Természetesen, mint sok más keretek között, a Play is megoldja a közös problémák webes alkalmazás fejlesztés a strukturálása a projekt stb nagyon elegáns, így könnyű dinamikus nyelvek Java világban. Sok ötlet ihlette a Ruby on Rails, Django Python, és még NodeJS.
Persze, ez nagyon hasznos, és a sok éves tapasztalattal rendelkezik a fejlődő korábbi online banki és egyéb önkiszolgáló rendszerek az interneten. Nyilvánvalóan már pontosan tudta, hogy mit akarunk létrehozni egy nagyon rugalmas platformot kifejezetten az online banki alapú játék.
Mi mást kaptunk egy jó játék?
Játszani - ez teljesen hontalan keretet. Úgy működik, mint tervezték, és működtesse a HTTP - a szerver nem tud semmit a munkamenet felhasználó nem osztja extra memória őket, hogy az alkalmazás skálák lineárisan - növelésével a szerverek számát a két alkalommal képesek vagyunk kiszolgálni kétszer annyi felhasználók. Eddig csak két és nagyon enyhén terhelt. Szerverek található különböző adatközpontok közötti, valamint a terhelés elosztása DNS-en keresztül. Mivel a felhasználói munkamenet információt tárolnak csak a süti, majd ősszel az egyik ilyen felhasználók dobnak a második anélkül, hogy egy új bejárat.
Azt is ad nekünk a lehetőséget, hogy az alkalmazás frissítéséhez a közepén a nap anélkül, hogy elveszítené aktív felhasználó. Az indulás napján, akkor az alkalmazás frissítésére 4-szer, és mind ezt, miközben, hogy megkaptuk több mint 10 kérelmet másodpercenként felhasználók. Természetesen a felhasználó adatait a cookie bejelentkezett, így a felhasználó nem tudja hamisítani őket.
Elfedésére az alacsony teljesítményű fékek használjuk játszani integráció memcached, ami nem egy szabványos megoldás a Java világ. Munka közben a cache, mi, természetesen figyelembe véve, hogy a bejegyzéseket nem lehet, de ha ott vannak, nem csinál felesleges és fékezését lekérdezéseket az ABS. Mi is podgruzhaem adatok ügyfélszámlák és kártyák mielőtt tudta meg az SMS-kód a hitelesítéshez.
Betölteni a háttérben nagyon hasznos számunkra natív módon támogatja a Munka-s játék. alapján működő kvarc. Amikor belép a helyes jelszót, akkor csak fuss aszinkron módon, hogy a megfelelő munka egy külön téma. Job-ek általunk is használt, és sok más háttér feladatokat az online banki - feldolgozásából származó rendszeres kifizetések elfogadását megelőző banki üzenetek SMTP.
Ha már kezdett beszélni aszinkron, meg kell jegyezni, és a lehetőséget, lejátszás szolgálni több egyidejű HTTP kérések egy szál, mint szintén nagyon dicsérik NodeJS. Ez ment a memória és tálaljuk sokkal nagyobb számú felhasználó kevesebb folyamatokat. Játszik kiváló keretet biztosít alapján indukciós Promise-s és folytatása s, elvégzi a legtöbb I / O műveletek aszinkron, felszabadítva flow ebben az időben más feladatok (azok számára, akik a saját téma).
tesztelés
Amennyiben lejátszás nem felelne meg az elvárásainknak - az automatizált teszteket (és hogyan mást több frissítést naponta a harci rendszer nélkül regresszió?)
Játssz nyújt tesztelés támogatása. de véleményünk, nem egészen megfelelő - nem akartuk, hogy a teszteket a böngésző, különösen unit-teszteket, és szerettük volna, hogy van egy kényelmes módja, hogy írjon kódot TDD (Test Driven Development) módszer, azaz a írni egy teszt még nem létező kódot, majd írjuk meg a kódot a vizsgálat, mint a készen teszt. A legtöbb funkció fedezhető unit-teszteket indul és gyorsabban fut, mint az integráció. Amikor az alkalmazás kell működnie harmadik fél rendszerek, teszünk nekik próbakeresést válaszokat az eredeti formájában és olvasó egység-teszt, amely fogadja a tárolt válaszok a felek a rendszer bemeneti és érvényesítse az értelmezés a bemenet. Ez nagyon kényelmes a fejlesztési és dokumentáció a rendszer viselkedését.
A többi használjuk szeleniddel könyvtárban. cégünk által fejlesztett alapján szelén WebDriver. Ez lehetővé teszi, hogy írjon tömör felhasználói felület tesztek, kezelni egy igazi böngészőt. Amikor futtatja teszteket JUnit automatikusan elindítja az egész internetes bank teszteléséhez a memórián tárol ezt hozza létre a szükséges táblákat töltik a vizsgálati adatok, fut a böngésző, majd kivégezték már saját teszt scriptek. Mindez csak néhány másodperc, ami fontos a produktív fejlődés. Minden teszt, amely a legtöbb funkciót a kérelem fut egy kicsit több, mint 5 perc, ami nekünk elég gyors visszajelzést esetén regresszió. Persze, hogy elérjék ezt a sebességet, már ment keresztül sok stádiumában optimalizálás. A fő motiváció az volt, hogy optimalizálja az összes tesztet része a épít, hanem menekülni belőle, ahogy az a legtöbb projekt.
Mert épít használjuk Jenkins. Figyeli bármilyen változás a kódot, és azonnal tesz egy új építésű, előre tesztek futtatását. Teljesen automatikus. Amikor meg kell létrehozni bármilyen változás a harci környezetben, egyszerűen vegye ezen utolsó udavshiysya építeni semmit speciálisan erre nincs szükség. Ha szeretne egy gyors javítás, elegendő elkövetni változás verzionálás (git), és 5 perc után meg lehet fogadni. Általános szabály, hogy az ilyen távon épít tartalmazhat más, nem sürgős változás, hiszen korábban már vizsgált idején, nincs probléma velük bekerülni a harci környezetben. És a frissítések gyakran, a változás mértéke van állítva egy időben kicsi, így a valószínűsége, hogy egy nagy kár nagyon kicsi, és térjen vissza az előző verziót ha szükséges, ezen fut a többlet kockázatot.
Egy kicsit bonyolultabb dolog a az adatbázis frissítését szerkezet - de tartalmaz beépített támogatást Játék evolúciós szkriptek (más néven delta-scriptek). Amikor telepítünk egy új építésű internetes bank ellenőrzi a jelenlegi felülvizsgálata az adatbázisban, és biztosítja, hogy minden új változásokat, ha szükséges, mint például új táblák, hozzátéve oszlop, index, és még ezekhez kapcsolódó változtatások adatmigrációkban. Minden építmények Internet Banking teljes körű scriptek, hogy lehet használni, hogy újra a teljes adatbázis a semmiből (kivéve az adatok). Ennek köszönhetően nagyon könnyen emelkedik egy új fejlesztői környezet, illetve tesztelni, ha szükség van rá.
Egyszerűség / használhatóság
Annak ellenére, hogy minden a harangok és a síp és hatékony módja az, senki nem fogja használni az új internetes bank, ha az bonyolult és érthetetlen a felhasználó számára. „Ne akard hiszem” jól ismert könyv az úgynevezett Steve Krug ebben a témában.
Az elején a fejlődés, van egy cél, hogy az internet-Bank érthető az átlagember, nem csak egy könyvelő vagy közgazdász. Normális ember nem tudni, hogy mi a folyószámlahitel számla vagy játszik három különálló, hogy megértsék, mit töltenek a pénzüket, így online banki kell elég erősen ahhoz, hogy az érkező adatokat az ABS. Az sem túl a felhasználó túlzott száma részleteket. Mindent meg kell rövid és lényegretörő.
Egy másik fontos szempont - az ötlet, hogy ellenőrizze a valódi emberek - háziasszonyok, iskolások, a vállalat alkalmazottai, stb Ebből a célból, a bank volt a használhatóság-tesztelés, amelynek során az önkéntesek arra kérték, hogy nem egy konkrét munka (például „van beállítva, hogy 100 $ a nagymama”), és nézni, hogy milyen gyorsan és egyszerűen a felhasználók kezelni őket. Ez egy másik fajta visszajelzést kell építeni egy sikeres és intuitív termék. Ez lehetővé teszi, hogy írjon egy unalmas felhasználói dokumentációt egyébként senki sem olvassa.
Ha a rendszer fut ugyanaz a hiba lép fel, ahelyett, hogy a technikai visszaélések megmutatjuk a felhasználó egy űrlapot hibakódot és a képesség arra, hogy mi vezetett, vagy csak vent az érzelmeiket. Ha küld egy visszacsatoló üzenetet küldött, amely lehetővé teszi, hogy gyorsan megtalálja a hiba okát, a naplóban, és még reagálni a felhasználót, ha a korrekciókat. Ez nagyban segített az első napon a nyilvános elindítása.
biztonság
Az online banki biztonsági írhat sokat. Mi szorítkozunk, hogy a Play keret, ha helyesen használják azonnal megakadályozza az ilyen leggyakoribb vektorok támadások XSS (cross-site scripting) és az SQL Injection - mindent, ami megjelenik a felhasználó áthalad a kényszerű eskeyping és minden küldött az adatbázis segítségével JPA / JDBC Bindi és küldeni a szerver elkülönítve a szöveg a kérés, kizárva annak lehetőségét, a felhasználó változás segítségével ügyesen összeállított lekérdezések. Ez a gyakorlat elemi, de mégis, a biztonsági ellenőrzés szakértői egy magyar cég elismerte, hogy ez volt az első kérelem valaha tesztelték őket, ahol nem volt komoly biztonsági réseket. Örömünkre, de természetesen csak egy keret nem tudja teljesen megoldani az összes problémát a biztonsággal kapcsolatos. A fejlesztők mindig emlékezni magát olyan dolgok, mint tartozó továbbított azonosító vagy számlaszámok az ügyfél aktív munkamenet. Annak érdekében, hogy ne hagyja valahol egy lyuk, csak segít a figyelem a részletekre, és éves tapasztalattal rendelkezik webes alkalmazások fejlesztése. Ehhez mi csak abban az esetben kellett is a Play, és tiltsa automatikus betöltését a tárgyak az adatbázisból az azonosító a bejövő kérést. Emellett van még ravaszabb támadást CSRF (cross-site request hamisítás), vagy akár a HTTP-válaszok felosztására, munkamenet-, visszajátszás támadások, stb megelőzésére szoruló részéről programozók.
Egy másik fontos tényező a biztonság és a vizsgálat alá vont - minden olyan tevékenységet vagy jelentkezve részletesen kompakt formában feldolgozásra alkalmas standard unix-tools, kötegek egyedi kérés azonosítója és a munkamenet. Kiválasztása működő platform online banking (Linux), ebben az esetben is fontos.
Összességében mi nagyon érdekel, és örömmel dolgozzon ezt az alkalmazást. Reméljük, hogy az egyszerűség és érthetőség, az új internetes bank belátható, Budapest Bank ügyfelei. És nekünk, a fejlesztők, nincs is jobb, mint a saját kódját, dolgozik egy harci környezetben, és teszi a felhasználók életét egy kicsit könnyebb! Abban a pillanatban, hogy továbbra is fejleszteni, hogy az új, érdekes lehetőségeket hamarosan elérhető a felhasználók számára. **
Megnéztem az új bank honlapján, és azonnal jött az egész dal. Jelenleg névtelen felhasználóként bármely oldalon, próbáltál már ha a „bejelentkezés” linkre „be kell jelentkezned ahhoz, hogy proceeed (sic!)” Box böngészőben más, mint a Chrome? ;)
Jó olvasni, egészségére!
Ahogy egy régi felhasználó az Internet bank BSP (valamint más online bankok, beleértve a fejlett TCS), azt akarom mondani, hogy a projekt minden bizonnyal a siker! Is, nem tudok említeni a viszonylag gyors javítást talált (korai szakaszában) hibákat, amelyek én, mint egy felhasználó írta támogató banka.Snimayu kalap, jól sikerült!