Om antwoorden op deze vraag te vinden, is True in gesprek gegaan met Daniel de Groot, Chief Commercial Officer van True; Martijn van Calker, Solutions Architect bij True; Henno Schooljan, DevOps Engineer bij Bitfactory; en Jurgen Jansma, Medior Developer bij Bitfactory. Bitfactory is een digital agency voor strategie, design en technologie. Met meer dan 45 medewerkers ontwikkelt Bitfactory sites, shops en apps voor haar klanten en helpt ze de volgende stap te zetten op het gebied van digitalisering. De agency staat in de top 3 van de Emerce100. Deze blog is een initiatief van True en Dutch Laravel Foundation.
Laravel: een lichtgewicht en sterk verbeterd framework
Allemaal zijn ze het erover eens: Laravel is een lichtgewicht en compleet framework voor app-ontwikkeling. Het framework staat bekend als betrouwbaar en stabiel. Ook diverse CMS’en, waaronder OctoberCMS, zijn op Laravel gebouwd. “Als een organisatie een Laravel app bij ons host, maken we ons geen zorgen. Al deze apps draaien vrijwel zonder uitzondering als een zonnetje. Er is geen sprake van excessief geheugengebruik”, zegt Daniel. “Laravel is lean and mean opgezet en ook geschikt om in de Cloud te gebruiken.”
Dat betrouwbare en stabiele is zelfs als je met Laravel een systeem van platformen, websites en API’s ontwikkelt, die moeten koppelen met externe systemen, zoals IoT devices en PoS systemen die in fysieke winkels als losse Laravel applicaties draaien, geeft Jurgen (foto onder) als voorbeeld mee.
“Laravel is de afgelopen jaren heel snel volwassen geworden. Dat zie je onder meer in duidelijke upgrade-instructies en de tijd die het nu kost om een kleine update door te voeren. Het framework maakt het eenvoudig om hier build/deployment pipelines voor in te richten, waardoor een kleine update zo is gedaan“, zegt Henno. Martijn: “De stabiliteit is de afgelopen jaren sterk verbeterd, met een enorme community die daar hard aan heeft gewerkt. Laravel is daarmee een veilige en goede keuze voor framework om (cloud native) apps mee te ontwikkelen.
Het mooie aan Laravel: het draait vrij makkelijk in containers op Kubernetes
“Het toffe aan Laravel is dat het framework relatief makkelijk in een container draait. Laravel heeft namelijk zelf al gezorgd voor abstractie van functionaliteiten, denk aan een file system om afbeeldingen te uploaden. Op deze manier heeft het framework al componenten staan die aansluiten bij cloud native development en bij Kubernetes. Zo kun je sneller optimaal de cloud omgeving benutten”, zegt Martijn. “Er is één ‘maar’: je moet het wel expliciet inregelen, configureren en er over nadenken. Dat is overigens een uitdaging over het algemeen als je met Kubernetes gaat werken.”
Schalen met Laravel op Kubernetes: uitdagingen voor database load en stateless containers
De uitdagingen van Laravel op Kubernetes, en schaalbaar maken van je app, zitten dan ook niet zozeer in het gebruiken van het framework in een container. Het zit meer in elementen als de state van containers en database load.
Voor Laravel apps op Kubernetes moet je, net als bij andere frameworks op het platform, rekening houden met stateless containers, als component voor schalen van je app. Een container kan van de ene naar de andere node gaan, zichzelf vernieuwen, uitvallen of vervangen worden. “Het is een van de onderdelen van The Twelve Factor App waar je ook bij Laravel rekening moet houden. Afbeeldingen, sessies en data moeten beschikbaar en persistent blijven, ook als een container opnieuw start”, zegt Martijn.
Daniel: “Daar heb je met de database dus ook mee te maken. Voor je Laravel applicatie op Kubernetes moet je de state zoveel mogelijk uit je applicatielaag halen en via een aparte service regelen. Databases staan daarvoor over het algemeen buiten het Kubernetes cluster en sessies kunnen worden opgeslagen in een eigen specifieke service. Laravel maakt de integratie hiervan mogelijk, waardoor het gebruiken van die externe diensten vaak alleen configuratie nodig heeft. Dit maakt het schalen van je applicatie veel makkelijker op zo’n platform.”
Tegelijk zijn dit nog niet echt de grootste uitdagingen om je Laravel apps op Kubernetes te draaien. Daniel: “Wat ik bij onze klanten zie, is dat de uitdaging meer ligt in de cultuur shift in de organisatie. Een Laravel app op Kubernetes ontwikkelen en schalen heeft namelijk een DevOps manier van werken nodig. De uitdaging is dat in je teams en organisatie krijgen.”
De voordelen en grote kracht van Laravel schalen op Kubernetes
Door bestaande abstractielagen en het lichtgewicht framework is de stap naar Kubernetes iets makkelijker. En dan kun je met je app de voordelen van het platform realiseren. “De kracht van Kubernetes is dat het automatisch schaalt. Als ontwikkelaar heb je dan alleen nog te maken met containers. De eerder genoemde abstracties in Laravel om stateful gegevens centraal te benaderen, zorgen dat het framework zich goed leent voor deze autoscaling”, zegt Henno (foto onder).
Jurgen: “Ook het deployen van applicaties is een grote kracht. Het komt steeds meer bij developers te liggen in plaats van bij systeembeheerders of operations. Clusters worden self service hosting, zodat developers daar hun applicaties zelf op kunnen zetten. Het vereist wel kennis en begrip van Kubernetes, maar geeft ook meer mogelijkheden voor deployment.”