Skip to main content

29 Tekniikkaa

29Tekniikka logo

Laravel-kehitys yrityssovelluksiin

Laravel on PHP-kehys, joka julkaistiin vuonna 2011. Se on siitä lähtien kasvanut PHP:n suosituimmaksi ohjelmistokehykseksi, ja sen asema on vakiintunut erityisesti verkkopalveluiden ja rajapintojen rakentamisessa.
Monessa organisaatiossa Laravel on jo käytössä. Joku on joskus rakentanut sovelluksen sillä, se on toiminut, ja nyt sitä pitäisi ylläpitää tai laajentaa. Kysymys ei ole siitä, kannattaisiko Laravel ottaa käyttöön. Kysymys on siitä, mitä sen kanssa tehdään seuraavaksi.
Teemme Laravel-kehitystä. Tässä tekstissä käydään läpi, millaisia projekteja teemme, mitä teknisiä valintoja teemme ja missä kohdissa Laravel-projektit yleensä kompastuvat.

Miksi Laravel

➠ PHP-kehyksiä on monta. Symfony on joustavampi. CodeIgniter on kevyempi. Yii on nopeampi tietyissä käyttötapauksissa. Silti Laravel on se, jota useimmat valitsevat.
➠ Syy ei ole tekninen. Se on ekosysteemi.
➠ Laravelin ympärille on rakentunut työkaluja, jotka kattavat lähes kaiken, mitä verkkopalvelun rakentamisessa tarvitaan. Forge palvelinten pystyttämiseen. Vapor serverless-julkaisuun. Nova ja Filament hallintapaneelien rakentamiseen. Horizon jonojen seurantaan. Telescope debuggaamiseen. Sanctum ja Passport autentikointiin. Cashier maksujen käsittelyyn. Socialite ulkopuolisiin kirjautumisiin.
➠ Nämä eivät ole pakollisia. Ne ovat työkaluja, jotka on rakennettu samalla ajattelutavalla kuin Laravel itse, ja ne toimivat yhteen. Tämä vähentää sitä työtä, joka menee siihen, että sovitetaan eri kirjastoja yhteen.
➠ Toinen syy on dokumentaatio. Laravelin dokumentaatio on poikkeuksellisen hyvä. Se on selkeä, se on ajantasalla ja se kattaa myös reunatapaukset. Tämä tarkoittaa, että uusi kehittäjä pääsee nopeasti alkuun, ja kokenut kehittäjä löytää vastauksen ongelmaan nopeammin kuin jos joutuisi lukemaan lähdekoodia.
➠ Kolmas syy on yhteisö. Laravelilla on aktiivinen yhteisö, joka julkaisee paketteja, kirjoittaa artikkeleita ja järjestää tapahtumia. Jos jokin asia pitää tehdä, on hyvin todennäköistä että joku on jo tehnyt sen ja julkaissut sen avoimena lähdekoodina.

Millaisia projekteja teemme

Laravel-projektit jakautuvat karkeasti kolmeen kategoriaan. Nämä eivät ole toisistaan erillisiä, ja usein sama projekti sisältää piirteitä kaikista kolmesta.

Verkkopalvelut ja rajapinnat

Tyypillisin Laravel-projekti on verkkopalvelu, joka tarjoilee sisältöä selaimelle tai rajapinnan kautta muille sovelluksille. Siinä on käyttäjähallinta, tietokanta, muutama integraatio ulkopuolisiin järjestelmiin ja käyttöliittymä, jonka kautta asioita hallitaan.

Tällainen projekti voi olla asiakasportaali, sisäinen työkalu, julkiselle internetille avattu palvelu tai taustajärjestelmä, jota käytetään muiden sovellusten kautta. Kokoluokka vaihtelee kymmenistä käyttäjistä satoihin tuhansiin.

Laravel sopii tähän hyvin, koska se tarjoaa valmiit ratkaisut yleisimpiin ongelmiin. Autentikointi, valtuutus, tietokantakyselyt, lomakkeiden validointi, virheiden käsittely. Nämä ovat asioita, jotka jokaisessa projektissa pitää tehdä, ja Laravelissa ne on jo tehty.

Hallintapaneelit ja sisäiset työkalut

➠ Oma kategoria ovat hallintapaneelit ja sisäiset työkalut. Nämä ovat sovelluksia, joita käytetään organisaation sisällä. Ne eivät ole asiakkaille suunnattuja, ja niiden käyttäjäkunta on rajattu.
➠ Tyypillinen esimerkki on järjestelmä, jossa hallitaan tuotteita, tilauksia, asiakkaita tai sisältöä. Se ei ole monimutkainen käyttäjälle, mutta sen taustalla on paljon logiikkaa.
➠ Laravel sopii tähän hyvin erityisesti siksi, että sen ekosysteemissä on valmiita ratkaisuja hallintapaneelien rakentamiseen. Filament on erityisen hyvä työkalu tähän. Sen avulla perusasiat saa käyttöön nopeasti, ja räätälöinti on mahdollista silloin kun sitä tarvitaan.
➠ Olemme rakentaneet hallintapaneeleja, jotka korvaavat kymmeniä Excel-tiedostoja ja sähköpostiketjuja. Tämä on usein se projekti, jossa hyöty näkyy nopeimmin. Ihmiset säästävät tunteja viikossa, ja se on helppo mitata.

Taustajärjestelmät ja integraatiot

Kolmas kategoria ovat taustajärjestelmät, jotka eivät näy käyttäjälle lainkaan. Ne pyörivät taustalla, käsittelevät dataa ja keskustelevat muiden järjestelmien kanssa.

Tyypillinen esimerkki on järjestelmä, joka hakee dataa yhdestä järjestelmästä, muokkaa sitä ja lähettää sen eteenpäin toiseen. Tai järjestelmä, joka käsittelee saapuvia tiedostoja ja tallentaa ne tietokantaan. Tai järjestelmä, joka ajaa laskelmia säännöllisesti ja tuottaa raportteja.

Laravel sopii tähän hyvin, koska sen jonojärjestelmä on kypsä ja luotettava. Taustatehtävät voidaan siirtää jonoihin, jolloin ne eivät hidasta käyttäjän toimintaa. Horizon tarjoaa näkyvyyden siihen, mitä jonoissa tapahtuu.

Teknisiä valintoja, joita teemme

Jokaisessa Laravel-projektissa tehdään joukko valintoja, jotka määrittelevät sen, millainen sovelluksesta tulee. Tässä on ne, joita itse suosimme ja miksi.

Laravel-versio

Käytämme uusinta vakaata versiota. Laravel julkaisee uuden pääversion vuosittain, ja jokainen versio saa tietoturvapäivityksiä kaksi vuotta julkaisusta. Vanhojen versioiden käyttäminen on riski, koska ne eivät saa enää korjauksia.

Autentikointi

Sanctum on nykyään oletusvalinta rajapintojen autentikointiin. Se on kevyempi kuin Passport ja riittää useimpiin käyttötapauksiin. Passport on tarpeen vain, jos tarvitaan OAuth2-protokollan täyttä tukea.

Testaus

Pest on nykyaikainen testauskehys, joka on rakennettu PHPUnitin päälle. Se on syntaksiltaan selkeämpi kuin PHPUnit, ja se on nykyään Laravel-projektien oletusvalinta. Kirjoitamme testit jokaiselle projektille, myös pienille.

Koodin muotoilu

Laravel Pint on virallinen työkalu koodin muotoiluun. Se pitää tyylin yhdenmukaisena riippumatta siitä, kuka koodia kirjoittaa.

Tietokanta

PostgreSQL on oletusvalintamme. Se on teknisesti edistyneempi kuin MySQL, ja se tukee esimerkiksi JSONB-tietotyyppiä, joka on hyödyllinen joustavassa datassa. MySQL on edelleen hyvä valinta, jos organisaatiolla on jo osaamista siitä tai jos järjestelmäintegraatiot sitä vaativat.

Frontend

Laravel tukee useita eri lähestymistapoja. Inertia.js on nykyään suosituin, koska se yhdistää Laravelin backendin ja Reactin tai Vuen frontendin ilman erillistä rajapintaa. Livewire on vaihtoehto, joka pitää kaiken PHP:ssä. Perinteinen Blade-template toimii edelleen, jos sovellus on yksinkertainen.

Staattinen analyysi

Larastan on PHPStanin laajennus, joka ymmärtää Laravelin rakenteet. Se löytää virheitä, joita ei muuten huomattaisi ennen tuotantoa.

Nämä valinnat eivät ole ainutlaatuisia. Ne ovat yleisiä Laravel-yhteisössä, koska ne toimivat hyvin yhteen.

Missä Laravel-projektit kompastuvat

Olemme nähneet monta Laravel-projektia. Osa on hyvin hoidettu, osa ei. Tässä on yleisimmät asiat, jotka menevät pieleen.

Ei testejä

Projekti on rakennettu nopeasti, testit on jätetty pois, ja nyt kukaan ei uskalla tehdä muutoksia, koska pelätään että jokin hajoaa. Tämä on yleisin yksittäinen ongelma. Testien lisääminen jälkikäteen on työlästä, mutta se on usein halvempaa kuin koko sovelluksen uudelleenkirjoittaminen.

Logiikka väärässä paikassa

Laravelissa on selkeät paikat eri asioille. Controller hoitaa pyynnön, Model hoitaa datan, Service hoitaa logiikan. Kun nämä menevät sekaisin, koodi muuttuu vaikeaksi ymmärtää ja ylläpitää. Tämä on yleistä erityisesti projekteissa, jotka on rakennettu kiireessä.

Ei jonoja

Pitkäkestoiset operaatiot ajetaan synkronisesti, jolloin käyttäjä odottaa. Tämä on yksinkertaista mutta ei skaalaudu. Jonot ovat olemassa juuri tätä varten.

Ei ympäristöjen erottelua

Kehitys, testi ja tuotanto käyttävät samoja resursseja, tai konfiguraatio on sama kaikissa ympäristöissä. Tämä johtaa siihen, että testaus vaikuttaa tuotantoon, ja se on ongelma.

Liian monta pakettia

Laravel-ekosysteemi on laaja, ja on helppo asentaa paketti jokaiseen ongelmaan. Jokainen paketti on kuitenkin riippuvuus, joka pitää päivittää ja joka voi rikkoutua. Suosimme, että paketteja käytetään harkiten ja että jokainen paketti on perusteltu.

Ei välimuistia

Laravel tukee välimuistia usealla eri tasolla, mutta sitä ei käytetä. Tämä näkyy erityisesti sivuston nopeudessa, kun sama data haetaan tietokannasta joka kerta uudelleen.

Vanhentunut Laravel-versio

Projekti on rakennettu Laravel 8:lla, ja nyt ollaan versiossa 11. Päivittäminen versio kerrallaan on työlästä, mutta se on pakollista. Vanha versio ei saa tietoturvapäivityksiä.

Miten työ etenee

➠ Aloitamme keskustelulla. Kerrot, mitä tarvitset ja mitä sinulla on jo. Tämä ei maksa mitään eikä sido sinua mihinkään.
➠ Sen jälkeen teemme suunnitelman. Käymme läpi teknisen toteutuksen, aikataulun ja budjetin. Kerromme rehellisesti, jos jokin ei ole realistista tai jos jokin kannattaa tehdä eri tavalla kuin ajattelit.
➠ Toteutus etenee vaiheittain. Jokaisen vaiheen jälkeen näet, mitä on tehty ja mitä seuraavaksi. Näin pysyt mukana koko ajan etkä huomaa vasta lopussa, että lopputulos ei vastaa sitä mitä odotit.
➠ Kun työ on valmis, saat koodin ja dokumentaation itsellesi. Emme jää roikkumaan väliin.
➠ Jos kyseessä on olemassa olevan sovelluksen ylläpito tai jatkokehitys, aloitamme kartoituksella. Käymme läpi koodin, testit, riippuvuudet ja konfiguraation. Tämän perusteella tiedämme, mitä pitää korjata ja missä järjestyksessä.

Miksi teetämä meidän kanssa

Meillä on kokemusta Laravelista useiden vuosien ajalta. Olemme rakentaneet sovelluksia tyhjästä, jatkaneet muiden aloittamia projekteja, päivittäneet vanhoja versioita ja korvanneet hitaasti mätänev iä osia nykyaikaisemmilla.

Tiedämme, missä kohdissa Laravel-projektit yleensä kaatuvat, koska olemme nähneet ne kohdat useaan kertaan. Tämä ei tarkoita, että tekisimme kaiken oikein ensimmäisellä kerralla. Se tarkoittaa, että osaamme varautua ongelmiin ennen kuin ne ilmenevät.

Teemme työn itse. Emme alihanki projekteja eteenpäin. Se kuka myy on se joka tekee.

Ota yhteyttä

➢ Kerro projektistasi. Ei tarvitse olla valmis suunnitelmaa eikä tarkkaa budjettia. Riittää että kerrot mitä haluat saavuttaa.
➢ Vastaamme yleensä saman päivän aikana.