Cerințe

Nanjing este o soluție software pentru industria de evenimente, care ar ajuta tehnicienii în procesul de asamblare a ecrane pe scară largă pentru festivaluri precum Tomorrowland sau pentru conferințe precum Samsung keynote.
În domeniul evenimentelor, o problemă foarte mare care trebuie rezolvată este logistica implicată în transportul și asamblarea echipamentului audio și video. Pentru video, gândiți-vă doar la festivaluri precum Tomorrowland, care au ecrane de 40x40 metri și că aceste ecrane trebuie să fie transportate, instalate și întreținute.
Ecranele destinate festivalurilor sunt compuse din panouri LED de aproximativ 500x500 centimetri. Aceste panouri sunt conectate între ele în mod serial, astfel încât să poată propaga semnalul video prin cablajul intern.
Pentru a distribui semnal video pe aceste panouri, se utilizează mai multe distrocasete (casete de distribuție a semnalelor) care sunt toate conectate, la rândul lor, la un procesor video. Acest procesor video este inima spectacolului, deoarece acesta este punctul în care inginerii A / V trebuie să intervină pentru a regla setările legate de panouri, cum ar fi calibrarea culorilor sau rutarea semnalului.
Proiectul Nanjing trăiește în interiorul hardware-ului de procesare de imagine și rulează pe un procesor de 4 nuclee cu 1GB RAM ARM.

Soluție

Deoarece soluția Nanjing a fost destinată pentru a funcționa într-un mediu foarte limitat, am pornit prin a face benchmarkingul mai multor stack-uri de tehnologie pentru a stabilii performanța, pentru a găsi cel mai bun stack care ar putea gestiona caracteristicile de nivel enterprise.
Proiectul în sine a fost o provocare atât pentru performanță, cât și pentru experiență.
UI-ul ar trebui să permită utilizatorilor să manipuleze și să mapeze cu ușurință reprezentările vizuale ale panourilor LED, care, în viața reală, pot depăși numărul de 1000. Aceasta înseamnă că a trebuit să creăm un fel de "zonă de lucru" unde inginerii A / V ar putea plasa panouri în sloturile dorite și apoi le vor trimite semnale video. Viteza de randare a devenit astfel importantă.
Deoarece majoritatea inginerilor A / V sunt obișnuiți să lucreze pe mac-uri, am proiectat UX-ul în conformitate cu Apple Human Interface Guidelines.
Stratul logic al aplicației ar trebui să permită actualizări în timp real pentru mai multe atribute ale panoului. Pentru aceasta am bazat toată comunicarea pe websocket-uri peste implementarea clientului nostru (nu exista nici o implementare client de non-blocare STOMP pentru Spring).
După realizarea fezabilității, am creat un proces de dezvoltare bazat pe metodologia Agile pentru realizarea soluției.

Tehnologii

Webflux

Spring Webflux as a non-blocking and fast solution that would interact with the low level FPGA code in order to manipulate panel states

Angular

Angular 6 as a client SPA that would consume a socket based API

Redis

Redis was used as a fast key-value storage that would be kept in sync with the panels

D3.js

D3 js was used for creating a user "workspace" that would allow the user to perform operations such as zoom, pan, drag and drop to draw shapes from panels and so on.

gatling

We used gatling.io in order to constantly measure for performance issues. We created a set of socket based gatling tests that would be run by Jenkins CI run against an environment each time a merge request would be opened.

This website uses cookies.