Ti nisi ni zagrebao po PHP ekosistemu a već ti dosadio
Evo ja ću da ti dam posao. Početna plata oko 1000 evra (zavisi od znanja i iskustva). Početna, znači može da ide samo na gore. U početku bi se radilo iz kancelarije, ali ako si ekstremno dobar i odgovoran možeš da radiš i od kuće.
Radi se na sistemu za online zakazivanje kod doktora u Kanadi. Potencijal za nekoliko miliona korisnika. Imamo tri front-enda za pacijente (android/ios aplikacija, saas web apilkacija koja može da se ugradi (embed) na sajt klinike i kiosk aplikacija koja se vrti na terminalima u samim klinikama), mada ti kao backend developer ne bi radio ni na jednoj od te tri aplikacije već na backendu koji je pisan u PHP-u (Laravel).
Backend se sastoji od četiri "admin panela" (za sekretarice, medicinske sestre, doktore i super-admine) i REST API-ja putem kojeg prethodno pomenute front-end aplikacije komuniciraju sa backendom.
Stack je AWS elastic beanstalk sa nekoliko produkcionih servera (Linux, nginx, PHP 7.1) gde load-balancer "balansira" saobraćaj između njih i odvojenim MariaDB (MySQL) serverima, jedan za pisanje podataka i nekoliko njih za čitanje podataka. Za keširanje koristimo redis, a za logove MongoDB. Kôd prolazi dva nivoa provere (development i staging serveri) pre puštanja na produkciju. Dozvoljeni downtime je 0 minuta radnim danima, u ekstremnim situacijama možemo da ugasimo aplikaciju vikendom (i to u vreme kad je u Kanadi noć) na tipa sat vremena, ali to se do sada nije dešavalo. Sva dokumenta se čuvaju na S3 serverima pošto load balancer u svakom momentu može da zameni produkcione instance i samim tim bi se izgubilo sve što je naknadno ubačeno (nije u git repo-u).
Backend se integriše sa nekoliko eksternih EMR (electronic medical record) sistema gde svaka klinika može da koristi bilo koji od njih (postoji ih sigurno desetak u Kanadi), a sa kojima moramo da sinhronizujemo sve preglede, doktore i pacijente; i sa druge strane sa centralnim državnim registrom termina za zakazivanje. Za komunikaciju sa ovim sistemima se koriste queued job-ovi jer svaki zahtev može da potraje i do par sekundi, a to ne sme da utiče na front-end deo admin panela. Pacijenti se obaveštavaju o svim promenama (zakazanim, otkazanim, kao i pomerenim pregledima) putem emaila, SMS-a, push notifikacija ili čak i automatizovanih telefonskih poziva (text-to-speech); u zavisnosti od toga da li imaju instaliranu mobilnu aplikaciju, unesenu email adresu ili broj telefona u svom profilu. Imamo i "subscription" listu gde se pacijentima javlja kada se oslobodi termin određenog doktora ili određene specijalnosti, kao i potpuno automatizovani sistem za obaveštavanje pacijenata ukoliko doktor kasni na zakazani pregled. Ima tu još nekoliko podsistema koje sam izostavio jer ne mogu sve ni da ih nabrojim ovako iz glave, tipa automatsko naplaćivanje ako se pacijent ne pojavi na pregledu ili ako ga otkaže manje od 24h pre zakazanog termina, ali budi siguran da na ovom projektu nikad nije dosadno i uvek ima šta da se radi.
Generisanje termina za preglede je prilično komplikovano (zato što ima više tipova termina; tipa za obične preglede, hitne preglede, kontrolne preglede, itd... a i za svakog doktora može da definiše različito trajanje pregleda) a pretraga i zakazivanje su još komplikovaniji (zato što, između ostalog, mora da se proveri da li doktor prihvata samo svoje pacijente, pacijente sa svoje klinike, pacijente sa "srodnih" klinika ili sve pacijente; kao i npr da li je pacijent maloletan ako se zakazuje za dete i sl). Ovo je naravno dosta uprošćeno objašnjenje, nekad ni ja sam ne znam šta se sve proverava u ovom procesu
Razlog zašto mi (i većina drugih firmi) koristimo framework (nebitno je da li je Laravel ili neki drugi, bitno je da ga čitava ekipa poznaje) je pod broj jedan organizacija kôda koja je svima koji rade na projektu poznata, odnosno kad jedna osoba napiše neki kôd, ostali ne moraju da gube vreme i gledaju u pasulj da bi videli "šta je pisac hteo da kaže". Pod broj dva je brzina razvoja aplikacije (sve ovo gore navedeno već postoji i napravljeno je za oko godinu - godinu i po dana), kao i praktično neograničen broj eksternih composer paketa koji mogu da završe neki deo posla. Takođe, napredno poznavanje SQL-a je jako važno, pošto i pored Eloquent ORM-a koji je odličan, često moramo da optimizujemo upite "ručno" kako bi se izvršavali brže.
Eto, ako misliš da ti je dosadio PHP (što znači da ga već imaš u malom prstu) i da možeš samostalno (ne sâm, već bez konstantnog zapitkivanja kolega kako se nešto radi) da radiš na jednom ovakvom projektu, javi se odmah, pošto firma u kojoj radim evo već nekoliko meseci ne može da nađe nekog ko bi mogao da radi na ovom projektu. Većina onih koji znaju nešto da rade su već zaposleni i imaju jako dobre plate, pa nisu ni zainteresovani da menjaju posao, a ostali uglavnom prodaju m*da za bubrege i sve znaju i sve umeju dok ne dođe trenutak da zaista pokažu to što znaju.
Laravel Srbija.
[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]