ferenc.rocks/

Munkák » Go Grants

Go Grants – Pályázatkezelő platform

2012–2016 · Dinamikus űrlapok, riportolás, teljesítmény

A helyzet

A Go Grants egy pályázatkezelő platform volt, amelyet több mint 25 amerikai művészeti és támogatásokat kezelő szervezet használt, köztük olyan nagy intézmények is, mint a National Endowment for the Arts.

Amikor bekapcsolódtam a projektbe, a rendszer már élesben működött. Jelentkezési űrlapokat, adminfolyamatokat, riportokat, pontozást, adatimportot és ismétlődő pályázati ciklusokat kezelt.

Hasznos szoftver volt valódi felhasználókkal, de közben évek korábbi döntéseit, hibáit, lassú lekérdezéseit, teljesítményproblémáit és támogatási kéréseit is magával hordozta.

Hol volt a nehézség

A platform értékének nagy része a rugalmas pályázati űrlapokból származott. Az adminisztrátorok egyedi mezőket hozhattak létre, és minden pályázati ciklust a saját szervezetük igényeihez igazíthattak.

Ugyanez a rugalmasság azonban a riportolást és a teljesítményt is megnehezítette. A rendszernek sok jelentkezés nagyszámú egyedi mezőjét kellett lekérdeznie és összekapcsolnia, miközben bizonyos kapcsolatokat önmagában a tárolt adatokból is nehéz volt rekonstruálni.

A nagyobb jelentkezési határidők környékén a platform egy-két nap alatt körülbelül 10 000 pályázótól fogadhatott be adatokat.

A teljesítmény optimalizálása ezért nem egyszerű technikai rendrakás volt. Közvetlenül azon múlt, hogy a rendszer használható marad-e valódi határidős terhelés alatt.

Min dolgoztam

Több éven át azokon a részeken dolgoztam, amelyek könnyebben üzemeltethetővé tették a platformot: riportoláson, admin munkafolyamatokon és teljesítményen.

Ez magában foglalta a lassú SQL-lekérdezések felderítését, a PHP-kód profilozását, a memóriahasználat csökkentését és a nagy terhelést jelentő folyamatok tesztelését.

A mindennapi adminisztrációt is javítottam, például az ismétlődő pályázati ciklusok beállítását és az űrlapok kezelését.

Egy nagyobb refaktor során a frontend logikája újrahasznosíthatóbb struktúrába került, így az üzleti szabályok kevésbé szóródtak szét a felületi rétegben.

Miért fontos

A feladat az volt, hogy egy örökölt, élesben működő platform gyorsabbá, biztonságosabbá és könnyebben karbantarthatóvá váljon anélkül, hogy figyelmen kívül hagynánk a meglévő adatmodellt, felhasználókat és munkafolyamatokat.

Technikai háttér

PHP, Zend Framework, MySQL, SQL/EAV, jQuery, dinamikus űrlapok, riportolás, pontozás, adatimport, teljesítményoptimalizálás.