Najnovijim tehnologijama do prednosti nad konkurencijom — kako smo izgradili novu verziju ManageWPa

Nemanja Aleksić iz Devane deli sa nama poslovne razloge i konkretne odluke koje su doneli u potpunom prerađivanju njihovog najuspešnijeg proizvoda — ManageWP-a. Zašto su se odlučili za Angular, Symfony, i druga rešenja, pogledajte u članku.

Nemanja Aleksić - 26. Mart, 2015.

“Srce i duša kompanije su kreativnost i inovacija” su reči Bob Igera, direktora Volt Diznija. “Ako kaniš pobijediti, ne smiješ izgubiti” je druga velika mudrost kojom smo se vodili kada smo se u Devana Technologies odlučili za neobičan potez u evoluciji softvera.

ManageWP, naš glavni proizvod koji WordPress developerima olakšava proces pravljenja i održavanja sajtova, se od 2014. koristi za upravljanje preko četvrt miliona WordPress sajtova. Logični korak u IT industriji je ili da se nastavi razvoj proizvoda uz backward kompatibilnost, ili da se krene sa nečim novim.

 

Imajući u vidu da se vremenom pojavilo više konkurenata podržanih multimilionskim investicionim fondovima, odlučili smo se za treći put: uz znanje koje smo stekli u poslednjih 5 godina i povratne informacije naših korisnika, odluči smo da potpuno refaktorišemo kod i ponovo izgradimo ManageWP uz pomoć najnovijih tehnologija.

Kako to sve izgleda iz ugla ljudi koji su ga napravili?

Frontend — prelazak na Angular

angular

Doneta je odluka da se frontend i bekend apliakcije potpuno odvoje, pre svega kako bi se izbeglo izgrađivanje frontenda u bekend kodu i kako bi se izbegao rizik da se zbog kozmetičkih izmena stvore neočekivani problemi. Ono što je najbitnije, korisnici su oduševljeni povećanjem performansi ManageWPa. Serviranje statičkih frontend fajlova znači da su kontrole prisutne istog trenutka kada se otvori stranica.

Odlučili smo se za AngularJS pre svega zato što je kod napisan na pravi način daleko stabilniji nego pri korišćenju alternativa. Razlog za ovo je činjenica da frejmvork ima sjajne alate koji minimiziraju prostor za grešku.

Vođeni idejom da stvorimo aplikaciju sa instantnim odzivom, odlučili smo da koristimo “Streaming JSON” koncept. To je sistem koji koristimo da kontinualno komuniciramo podatke iz bekenda dok je zahtev još u toku, tako da sada korisnik može da prati progres svake akcije u realnom vremenu. Takođe, moguće je slanje više zahteva u isto vreme.

Backend — Symfony, API

symfony

Symfony je frejmvork za koji smo se odlučili i koristimo full stack njegovih komponenti, i njegova arhitektura i fleksibilnost su nam od velikog značaja. Ono što nam moćni frejmvork omogućava je brzo dodavanje novih funkcionalnosti i maksimalno pojednostavljeno održavanje.

U srcu APIa nalazi se komponenta koju smo krstili kao “komunikator”, odgovorna za sigurnu komunikaciju sa svakim sajtom.

Za ovo smo koristili sjajnu Guzzle HTTP client biblioteku, koja nam je omogućila da pravimo asinhrone pozive, radimo pametnu rekonfiguraciju u letu (na primer kada su sajtovi iza loše podešenog load balancera), usporimo pozive ka opterećenim serverima, keširamo pronađeni hostname (za ovo koristimo Redis), i strimujemo poruke direktno od ManageWP Worker plugina na frontend (npr. “Backup file upload in progress – 60% at 16MB/s”).

Plan je da se odužimo zajednici tako što ćemo open-sourceovati neke od gore pomenutih komponenti.

API je veliko unapređenje u odnosu na staru aplikaciju, i posebno smo obatili pažnju na dokumentaciju i konzistentnost. Kao jezgro svih dolazećih API poziva koristili smo  Symfony form komponentu, što je omogućilo da za svaki zahtev koji aplikacija ne prepozna prikaže i odgovarajući error message.

Formatom podataka upravlja JMS serializer komponenta, koja nam omogućava konzistentnost u svim elementima aplikacije. Ovo takođe koristimo za automatski generator API dokumentacije, koji će uskoro biti javno dostupan. Naše mobilne aplikacije za Android i iOS već koriste deo APIa, i to znači da će se uskoro drugi servisi moći da se integrišu sa ManageWP APIjem.

Dizajn je bitan koliko i funkcije proizvoda

dizajn

Prilično smo se bavili istraživanjem prethodnih godina, pre svega putem intervjua, anketa, korisničkog feedbacka, analiziranjem korisničkih sesija, razgovorom sa Customer Happiness timom i sl. jer je to jedini način da dizajn Oriona bude potpuno usmeren na krajnjeg korisnika.

ManageWP ima dosta sjajnih funkcija koje su većini korisnika rešavali problem. Međutim, nedostajala nam je vizuelna konzistentnost različitih funkcija. Nismo želeli da odradimo samo “fejslift”, hteli smo da naše znanje i iskustvo iskoristimo kako bi postigli mnogo više.

Sada imamo potpuno novi korisničk interfejs, potpuni vizuelni ribrending našeg proizvoda koji ćemo nastaviti da “uzgajamo” u budućnosti.

Ipak, dizajn je daleko više od piksela na ekranu i on zahteva donošenje velikog broja odluka kako bi se ostvario krajnji cilj, a to je olakšavanje života naših korisnika. Potrudili smo se da u potpunosti pojednostavimo celokupno iskustvo korišćenja Oriona.

Korisnika fokusiramo na samo jedan zadatak, odnosno alat u datom trenutku, umesto da ga dočekujemo sa brdom alata koji ga dovode u poziciju da treba da troši vreme u potrazi jednog koji mu je trenutno neophodan. Ovo je zapravo bio jedan od ključnih razloga zbog kojih korisnici nisu uspevali da otkriju sve mogućnosti starog ManageWPa. Taj problem smo prevazišli jednostavnim pitanjem “Šta je to što želite da postignete (ovim alatom)?”

Pored toga, unapredili smo sposobnost aplikacije da uči i prepoznaje potrebe i ponašanje korisnika kako bi mu ponudio najbolje moguće predloge pri obavljanju određenog zadatka. Npr. ako neko ažurira određeni plagin iznova i iznova mi ga pitamo da li želi da u buduće automatski radimo to ažuriranje.

Šta očekujemo da postignemo primenom novih tehnologija na postojeći proizvod

Kad se pravi iteracija postojećeg proizvoda velika prednost da već ima korisnike koji su spremni da plaćaju, i koji imaju ideju kako se može unaprediti. Kada se takve ideje primene u proizvodu od starta celokupno iskustvo je daleko bolje.

Sa tehnološke strane smo u konstantnoj trci sa konkurencijom — pošto je deo našeg softvera javno dostupan pod GPL licencom, svako unapređenje naši konkurenti iskopiraju u roku od nekoliko dana.

Da bi se sa tim izborili odlučili smo da igramo na naše snage: Sjajan tim developera koji konstantno usvajaju nove tehnologije nepoznate konkurentima i intimno poznavanje mentaliteta WordPress korisnika koje nam dozvolja da napravimo interfejs koji je zadovoljstvo koristiti. Plan je da nas Orion stavi barem godinu dana ispred konkurencije.