Visiškai optimizuota elektroninė parduotuvė vos per kelias minutes

Mūsų kuriamas įrankis Visma Webshop padeda itin lengvai sukurti internetinį puslapį/ elektroninę parduotuvę…

elektroninės parduotuvės optimizavimas

Sukurti internetinį puslapį jau nebėra taip sudėtinga kaip anksčiau, tam yra įvairiausių įrankių. Visgi, didėjant tokių įrankių pasirinkimui, atsiranda rizika, jog puslapis nebus kokybiškas, jį bus sunku sukurti arba jis neatitiks konkrečių verslo poreikių. Mūsų kuriamas įrankis Visma Webshop padeda itin lengvai sukurti internetinį puslapį. Optimizuota elektroninė parduotuvė  yra pasiekiama 24/7, automatizuoja sudėtingą finansinės apskaitos procesą, atitinka visus seo standartus, yra vizualiai patraukli bei nuolat prižiūrima profesionalų. Šiuo metu mūsų kuriamu produktu naudojasi apie 20 000 įmonių iš Šiaurės Europos.

Kuriamą svetainę visada galima matyti ir administratoriaus režime, tad nereikia spėlioti kaip ją atnaujinus atrodys vienas ar kitas vizualus elementas. Puslapį lengva paversti į elektroninę parduotuvę. Siekiama, jog mūsų kuriamas įrankis turėtų visas šiandieninei rinkai reikiamas integracijas, tarkime su Skandinavijoje populiariais mokėjimo portalais, kaip kad „Payson”, „Dibs”, „Nets” „Swish”, taip pat su visame pasaulyje populiariu „PayPal”. Produktas turi integracijas su Vismos apskaitos sistemomis, tai reiškia, kad kiekvienas internetinėje parduotuvėje atliktas užsakymas automatiškai nusiunčiamas apskaitos sistemai, apdorojamas, o naudotojui nereikia rūpintis e-parduotuvės buhalteriniais reikalais! Pasirūpinome ir būsimo puslapio matomumu internete bei socialiniuose tinkluose, tad turime integracijas su Google Analytics, Google AdWords, Facebook, Instagram ir kitomis pasaulyje itin populiariomis sistemomis. Keli su mūsų įrankiu sukurti internetinių puslapių pavyzdžiai: psofsweden bei cykelmotion.

Vienas didžiausių technologinių iššūkių projekte

Kaip ir pas kiekvieną internetinių puslapių teikėją, taip ir pas mus galima nusipirkti domen’ą ir jį priskirti mūsų produktui, tačiau turėjome bėda – tie domen’ai veikė tik per HTTP protokolą. Visa tai vyko seniai, dar tuomet, kai naršyklės neįspėdavo naudotojų apie nesaugius puslapius, tačiau jau tada supratome, kad ateityje ši problema eskaluosis. Įtikinome savo PO, kad pasinaudojus stipriu routeriu, social engineering ar kitais būdais iš puslapio buvo įmanoma nutekinti asmeninę informaciją. Tam, kad šio scenarijaus būtų išvengta, buvo būtina klientų domen’us adaptuoti HTTPS protokolui, o tam reikalingi sertifikatai. Paprastai kiekvienas klientas sertifikatu turėtų pasirūpinti pats, tačiau tai yra nepatogu ir daugeliu atveju kainuoja pinigus. Ir kadangi puslapis yra cloud’e, klientai negalėtų įdiegti sertifikato, netgi jį nusipirkę, nes serveriai cloud’e yra neprieinami paprastiems vartotojams. 

Ėmėmės veiksmų. Reikėjo nuspręsti, ar naudotojas sertifikatus įsigys pats ar tuo pasirūpinsime mes. Nusprendėme, kad naudotojai nenorės patys diegti sertifikatų (domenų pirkimas ir pridėjimas į WebShop jiems jau buvo techniškai sudėtingas, o sertifikatų gavimas keltų dar daugiau bėdų), tad nutarėme klientų sertifikatų gavyba pasirūpinti patys. Tam  naudodami LetsEncrypt API.  

Supratome, kad standartiniu būdu diegiant sertifikatus į serverius susidursime su daug problemų. Daugelis iš jų kyla dėl to, jog sistema naudoja ne vieną serverį. Taigi sertifikatą reiktų diegti į juos visus, taip pat kiltų problemų darant švarius diegimus. Tam, kad išvengtume šių bėdų, panaudojome IIS’o funkcionalumą pavadinimu centralized certificate storage (CCS). Jis leidžia nediegti sertifikatų į serverius, bet juos laikyti mūsų nurodytoje nuotolinėje failų saugykloje (file storage). 

And this is when the fun starts. Planavimo stadijai pasibaigus perėjome prie integracijos su LetsEncrypt API kūrimo. Šis API, mūsų sistemoje, veikia pagal tokį protokolą:  

  • Mes (API naudotojas) pranešame API, jog norime gauti sertifikatą tam tikram domen’ui. 
  • API nurodo specifinį turinį, kuris turi būti pasiekiamas per konkretų domeno URL. 
  • Šią žinutę išsaugome ir kai esame pasiruošę, pranešame API, jog jis gali atlikti patikrą. 
  • Jei viskas pavyksta, mūsų sistema išsyk gauna pranešimą, o tuomet prašo išduoti patį sertifikatą, kurį API ir išduoda. 
    • Jeigu įvyksta klaida, ją įrašome į log’us ir sertifikato išdavimo procesą kartojame kitą dieną. 
  • Sertifikatą konvertuojame į reikiamą PFX formatą ir įkeliame į internetinę saugyklą (CCS). Tokiu būdu visi serveriai žino, kad sertifikatas egzistuoja.

Bet negi viskas ims ir pavyks ir pirmo sykio? Aišku, kad ne! Įdiegę sprendimo prototipą susidūrėme su dar viena bėda. Mūsų sistema turi default domen’ą www.yourvismawebsite.com, kurį kontroliuoja Visma ITC. Šis domen’as yra pasiekiamas per HTTPS protokolą, taigi turi sertifikatą, kurio slaptažodį kontroliuoja VIsma ITC. Dėl CCS specifikos šis sertifikatas turėjo būti saugomas kartu su kliento sertifikatais, taip pat visi sertifikatai esantys CCS turi turėti tą patį slaptažodį. Vienas iš paprasčiausių sprendimų būtų suvienodinti www.yourvismawebsite.com sertifikato slaptažodį su kliento sertifikato slaptažodžiais, tačiau ITC kas metus šiuos slaptažodžius keičia, tad šis sprendimas negalėjo būti taikomas. Norint turėti 100 % uptime kasmet, tiesiog pakeisti slaptažodžių negalime, nes tuo metu kliento domen’ai neveiks. 

Sprendimas, kurį pritaikėme šiai bėdai yra panašus į blue green deployments. Sukūrėme dvi failų saugyklas, kurias naudojo CCS. Kol sertifikatų slaptažodžio atnaujinti nereikėjo, sistema naudojo tik vieną failų saugyklą (A). Atėjus laikui keisti slaptažodį, visi sertifikatai buvo palaipsniui perkeliami į saugyklą B, tuo pačiu pakeičiant jų slaptažodį į naują. Kadangi sistema vis dar dirba su saugykla A, jokių trukdžių klientai nepatiria. 

Po kurio laiko liepame WebShop imti sertifikatus ne iš saugyklos A, bet iš saugyklos B ir taip visos svetainės ima naudoti sertifikatus su pakeistu slaptažodžiu. Saugykloje A, kuri jau yra nenaudojama, senus slaptažodžius laikome dar savaitę dėl saugumo sumetimų. Po savaitės saugykla A išvaloma, taip saugykla A ir B pasikeičia rolėmis. 

Continuous Deployment ir 100 % uptime

Visas mūsų kuriamas produktas yra debesyje, o tai yra labai patogu, kadangi dinamiškai, reaguodami į besikeičiančias sistemos apkrovas galime automatiškai „užkurti” daugiau serverių, kol apkrovos sumažėja. T.y. apkrova nėra pastovi, jai įtakos turi sezoniškumas (kalėdinis laikotarpis, black friday ir t.t.) ar bot’ai. Vystyti sistemai naudojame šias technologijas: 

  • ASP.NET  
  • Entity framework 
  • Jquery.

Versijų atnaujinimams (t.y. deliverinim’ui) naudojame TeamCity ir Octopus. Šios sistemos yra naudojamos kodo kompiliavimui ir jo diegimui į serverius. Sistemos monitoring’ui naudojame Application Insights. Turime mechanizmą, kuris esant kritinei situacijai sistemoje (tarkime, sistema yra nepasiekiama arba labai yra labai daug klaidų) – praneša mums apie problemas. Tam naudojame Heartbeats / Application Insights alert mechanizmą. Automatiniams GUI testavimams naudojame Selenium. Taip pat verta paminėti, jog stengiamės kuo daugiau dirbti ties testavimo automatizavimu. Viena mūsų siekiamybių – Continuous Deployments. Link to jau žengėme ne vieną žingsnį, pavyzdžiui, dažnai mergin’ame į pagrindinį source control branch’ą (Continuous Integration). Taip pat jau porą metų kas savaitę, o kartais ir dažniau, atnaujiname sistemos versijas. Kitas žingsnis sumergin’us kodą automatiškai atnaujinti sistemos versijas darbinėje aplinkoje. Džiaugiamės, jog turime 100% uptime, tad jokių erzinančių užsklandų su užrašu „techninė profilaktika”.

Komanda, keliausianti pažiūrėti šiaurės pašvaisčių

Šiuo metu Lietuvos komandoje esame keturi, visi full – stack programuotojai. Patys produktą ir testuojame. Kartais darome ir integracines užduotis. 

Nepaisant, jog kartkartėmis patraukiame vienas kitą per dantį , mūsų komanda tikrai draugiška. Padedame vienas kitam, kartu pietaujame ir artimiausiu metu planuojame kelionę į Norvegiją pasižiūrėti šiaurės pašvaisčių. Komandoje daug diskusijų – visi domisi nūdienos aktualijomis, tad nuobodu tikrai nebus. 

Junkis prie mūsų ir prižadame tau daug įdomių iššūkių bei tikrai linksmą kolektyvą.

Daugiau informacijos

Most popular

  • Azets komanda – kas svarbu skaitmenizuojant verslo procesus?

    Ar kada norėjote, jog visi gauti popieriniai laiškai, sąskaitos ir kiti dokumentai imtų ir taptų elektroniniai? O gal būtų patogu matyti visą su darbo užmokesčiu, grafiku bei atostogomis susijusią informaciją vienoje vietoje? Pateikti atostogų prašymus ar pranešti, jog susirgote? Tokias sistemas ir dar daugiau kuriame mes – Azets komandos IT specialistai. Nors kolegų rate ir […]

  • Cloudblogmin

    Journey to serverless

    In this article I will tell more about the journey to serverless. I will explain the reasons why we have decided to move from traditional Virtual Machines to Serverless framework and AWS services, I will introduce components of architecture and lastly, I will reveal our future work. I’ve joined my new team recently and it […]