În Studii de caz

Studiu de caz: SimplySocial

SimplySocial

SimplySocial reprezintă o abordare unică în Social Media Marketing, fiind un SaaS (software as a service) prin intermediul căruia utilizatorii pot obține o strategie de comunicare online personalizată, asistență în generarea de conținut în Social Media și, bineînțeles, instrumentele online care facilitează acest proces.

În acest articol, veți afla ce tehnologii au fost folosite în dezvoltarea unui astfel de proiect și ce fel de provocări și probleme pot apărea, din experiența celor de la SimplySocial, relatată de către Tyler Arnold în cadrul ediţiei #18 a întâlnirilor GeekMeet din Timişoara, precum şi de către Valentin Bora, în speranța că aceste informații vă vor fi de ajutor în proiectele de care vă ocupați.

Pe scurt, despre SimplySocial

Compania a fost fondată de către 3 tineri antreprenori, Tyler Arnold (Alaska), Jeroen Erne (Olanda), precum și Valentin Bora (România), cu susţinerea a 9 investitori din Alaska și a fost lansată în data de 1 mai 2012.

Tyler Arnold , Jeroen Erne şi Valentin Bora

Procesul de dezvoltare a proiectului s-a desfășurat exclusiv în România, cu ajutorul unei echipe de dezvoltatori români, alegere datorată atât conexiunilor și comunităților în care este prezent Valentin, cât și unor motive financiare evidente, un cost scăzut fiind un avantaj competitiv relevant. De asemenea, interfaţa prietenoasă a SimplySocial a fost realizată tot de către un designer român, mai exact, Radu Ceucă.

În ceea ce privește funcționarea propriu-zisă a acestui serviciu, prima etapă constă într-o serie de întrebări simple, care să aducă informații despre utilizator sau despre compania pe care o reprezintă, după care se oferă asistență în crearea de conținut pentru canalele Social Media, precum și în distribuirea acestuia în intervalele de timp dorite, în momentele cu maxim de impact pentru audienţa fiecărui client.

Publicul ţintă al SimplySocial este alcătuit din politicieni, agenţii de publicitate şi companii. Conform unor studii recente menţionate de către fondatori, 66 % dintre adulţii care au o prezenţă online activează şi pe reţelele sociale, 47 % dintre utilizatorii de Social Media au interacţionat cu postările legate de politicieni sau politică, iar 86 % dintre specialiştii în marketing au declarat că vor să îşi intensifice activitatea în mediul online.

Proces de dezvoltare

Procesul de development a început în octombrie 2011, inițial cu doar 2 dezvoltatori. Au existat două aspecte esențiale în funcție de care s-a ales tehnologia necesară: client-side și heavy-lifting side. În cea dintâi, s-au folosit două platforme: Drupal și LAMP.

Referitor la heavy-lifting side, s-a folosit Python 2, precum și script-uri Drupal-aware PHP CLI. Există o anumită suprapunere între cele două, administrată cu ajutorul Supervisord, Beanstalkd și CouchBase.

Întrucât partea ce ține de Drupal este mai familiară dezvoltatorilor, în continuare veți găsi mai multe detalii despre partea heavy-lifting.

Heavy lifting side

Există multiple operațiuni care pot fi declanșate de către acțiunile clienților SimplySocial (cum ar fi oferirea unui răspuns la o întrebare postată în cadrul interfeței sau răspunsul la un comentariu postat pe Facebook) sau de către diverse evenimente externe (primirea unor mențiuni pe twitter sau a unor alerte Google). Astfel de evenimente nu ar trebui să afecteze performanța sau operațiunile normale pe care le desfășoară un utilizator. Astfel, există un anumit număr de queues (cozi), administrate cu Beanstalkd, cu diferite tipuri de sarcini care trebuie să fie rezolvate.

Acestea sunt atribuite unor așa-numiți “angajați”, implementați în Python (cei mai mulți dintre aceștia) sau PHP. Toate acestea au loc în linia de comandă. “Angajații” sunt menținuți în funcțiune cu ajutorul Supervisord, care are atât o interfață grafică plăcută, cât și capacitatea de a-i pune din nou în funcțiune în cazul în care se opresc. Acești “angajați” trebuie să funcționeze continuu și trebuie să fie mereu pregătiți pentru a prelua orice sarcină nouă, fiind gândiţi pentru a fi paralelizaţi în funcţie de numărul de cereri din fiecare coadă.

O abordare încercată în acest proiect a fost cea de programare defensivă. Întrucât se face integrare cu Facebook, twitter, YouTube, LinkedIn și multe alte servicii, precum și cu rețeaua, pot apărea oricând erori imprevizibile. Pentru a putea descoperi și înregistra astfel de erori, precum și pentru a “îngropa” sarcina care este executată, se folosesc try / except de la Python și try / catch de la PHP.

Astfel, scriptul continuă să execute următoarea sarcină. Acest aspect este extrem de important, întrucât permite inspectarea separată a sarcinilor “îngropate”, pentru a se putea descoperi ce nu a funcționat, după care se pot repara script-urile cu mai multe verificări sau se poate adăuga mai multă flexibilitate dacă este nevoie.

În felul acesta, datele nu se pierd niciodată. Singura problemă stă în faptul că se poate crea o aglomerație de sarcini îngropate (de rândul sutelor de mii), care pot îngreuna procesul de soluționare. Beanstalkd, sistemul de queue, este simplu și rapid, ceea ce îl face să fie o soluție viabilă pentru început. În cazul în care nevoile cresc, se poate folosi Celery, cu riscul ca acesta să consume multe resurse.

În ceea ce privește CouchBase, acesta este, oarecum, un hibrid între Memcached, Membase și CouchDb. În esență, este vorba despre un server NoSQL, care, pe scurt, permite replicarea și stocarea datelor sub formă de documente.

Se aruncă tot ceea ce trebuie să stocheze un script între sarcini, întrucât capacitățile de stocare ale Beanstalkd sunt slabe și nu este recomandat ca descrierile sarcinilor să fie aglomerate cu multe date. Întrucât, în cazul de față, se primesc date din surse multiple, de pe rețele sociale și alte servicii, organizate în moduri diverse, este cel mai ușor ca aceastea să fie formatate JSON și stocate în CouchBase.

Pe urmă, acestea sunt stocate în Drupal pentru specificațiile ce țin de client-side, fără a fi obligatoriu ca toate datele din CouchBase să ajungă în MySQL. Script-urile pot fi procesate rapid folosind „in-memory with persistence”, după care se stochează rezultatul pentru client. Alte baze de date specializate precum cele graph-based ar putea fi folosite în viitor.

În total, dezvoltarea s-a întins pe parcursul a 8 luni, timp în care s-au strâns circa 60.000 de linii de cod doar pentru partea executata în Drupal și aproximativ 3500 de ore de dezvoltare.

Lansare SimplySocial

Vedeți mai jos clipul de lansare al SimplySocial și o parte din provocările mai puțin formale întâmpinate de către aceștia: