или: Како АПИ* уме да те уништи 1

АПИ-ји су зло. Неизбежно. Зло. Сећам се да сам и ја писао неки АПИ, а учествовао сам и у писању другог. Зло су, кажем. Али овај један је био зло за велике паре. Ненадано. То ми није било јасно, али клијент је увек у праву. На крају крајева, то су његове паре. Ми смо ту само да аутсорсујемо.

Суштина је нешто као интернет-телевизија на захтев. Људи имају свој канал, и треба садржај тог свог канала да лепо прикажу на свом сајту, који смо ми радили. Колико сам начуо, или видео, за тај њихов АПИ и пратећи програм који уз њега долази (админ панел и статистике, шта већ) дато је $70000. Било је индиција да ће врло лако бити доплаћено још за једну преко потребну методу. Од тога ништа.

Клијент хоће плејлисту, што је и логично. Међутим, да бих ја добио плејлисту, треба са канала повући прво идентификаторе свих клипова, а онда за сваки клип повући све информације засебно. Трајање позива се креће 0.5-2 секунде. У зависности од ситуације некад то уме да потраје и дуже.

Жале се нама. Ми објаснимо ситуацију. Они потврде да би било супер да се АПИ прошири још за једну смешну функцију. Жалимо се ауторима. Аутори нам објасне да се то ради онако како ми већ радимо, и да је наше проширење немогуће. Крај приче.

Сајт ради, али понекад мало спорије. Нисам сигуран шта је урађено на фронту да би се поступак убрзао, али мислим да још увек главни део иде преко једног мог позива који позива удаљени сервер 9 пута у петљи. Шта је ту је.

Њихов АПИ бар ради како смо очекивали. Кад помислим на Гугл, или Фејсбук… Но, о томе неком другом приликом.

**
Техничка поука

После годину дана искуства више, и прочитане гомиле текстова, готово тренутно ми пада на памет могућност побољшања:

Паралелизовати 8 од 9 позива, од тренутка кад стигне одговор на први позив (пре тога је немогуће). Направити 8 нити, а онда покупити њихове резултате и све то вратити назад. Пошто су позиви ка удаљеним ресурсима спори и нису процесорски захтевни, требало би да убрзање буде приметно и преко threading библиотеке. Као друга солуција можда би могло да се отвори 8 нових процеса, али то би можда на крају могло бити спорије од нити. Ваљало би пробати у пракси.

Ако ме питате зашто то није урађено док је још било актуелно, постоји неколико фактора. Први је да је пројекат представљен као успутни и лаган (ово немојте покушавати код куће, тј. у својој фирми) и да нам не треба бог-зна-какав умни напор за њега (иако због лудих захтева фронтовцима иначе прокува мозак). Други је моје тадашње неискуство са таквим проблемима. Трећи је фактор превида очигледног када журиш да завршиш малу ствар јер те чека велика (у овом случају био сам паралелно и на једном великом пројекту који још увек! није угледао светлост дана). Ваљда су се и звезде некако поклопиле, па ме је мрзело да укључим мозак.
**

*АПИ – API – Application Programming Interface