25 april 2019
Kleinere Magento 2 composer installaties
Yireo Blog
donderdag, 24 oktober 2019: Docker Fundamentals training in Soest, Nederland » Meer informatie
Yireo in het kort:

Verwijder onnodige Magento 2 core features via `replace`

Met Magento 2.3 is een standaard Magento installatie uitgegroeid tot honderden pakketjes. Maar niet iedereen heeft behoefte aan al deze functionaliteit: Sterker, de kans is groot dat deze overdaad in de weg gaat zitten. Gelukkig is er de composer replace truc waarmee bewust bepaalde pakketjes weggehaald kunnen worden.

De truc: Composer replace

De truc is niet nieuw: Composer heeft een replace mechanisme dat gebruikt kan worden om pakket A met pakket B te vervangen. Maar als B wordt omgewisseld met een wildcard *, dan is het resultaat dat pakket A wordt vervangen met niets - in andere woorden, het pakket wordt weggehaald.

"replace": {
    "a": "*"
},

Door een Magento installatie, gebaseerd op composeer, uit te rusten met een replace sectie in de composer.json file, kan er veel worden opgeschoond. Niet alles, want modules die je misschien niet nodig lijkt te hebben zouden een afhankelijkheid kunnen zijn van een ander pakketje.

Kudos aan IntegerNet

Bij het weghalen van pakketjes is het belangrijk de afhankelijkheden goed te controleren. Haal je immers te veel weg, dan eindig je misschien met een niet-werkende Magento installatie.

Het Duitse bedrijf integer_net heeft het ons makkelijk gemaakt: In hun blog Make Magento 2 small again hebben ze gedocumenteerd welke pakketten veilig weggehaald kunnen worden, zonder dat Magento breekt. Hun blog vormt een startpunt voor veel developers om daarna dingen aan te passen aan de eigen omgeving.

Wat weg te halen?

  • Distributed 3rd party packages: De Magento core bestaat inmiddels uit meerdere derde partij extensies, die zich een plek in de core hebben gekocht. Niet alleen is er de vraag of deze extensies nodig zijn (want sommigen zijn puur bedoeld voor de internationale markt), er zitten soms ook nog wel eens extra bugs: Temando, Klarna, Amazon, Dotmailer, Vertex.
  • Multi Source Inventory: Het nieuwe voorraadsysteem zit heel gaaf in elkaar, maar heb je dit wel nodig. Let op dat in de toekomst de oude inventory aanpak zal worden verwijderd, zodat je nog steeds een subset van MSI nodig zal hebben.
  • GraphQL: Deze API vervangt uiteindelijk SOAP en REST, maar zolang je niet met PWA bent begonnen, heb je deze modules niet nodig.
  • Overig: Gebruik je geen FedEx, New Relic, Swagger, UPS, Braintree, Signifyd, etcetera? Haal de module dan weg.

Wat kunnen we sneller maken?

Een kleinere Magento installatie heeft veel voordelen: Deployment zal sneller verlopen, misschien minder complexe issues qua development, maar vooral zal ook de productie site iets sneller werken aangezien de XML configuratie kleiner is geworden. Alleen dit al maakt de composer replace truc het onderzoeken waard.

Daarnaast zal een developer die code test ook blij worden: Het draaien van integration tests of MFTF neemt minder tijd in beslag. Sterker, specifiek voor dit soort zaken kan de installatie misschien nog meer gestript worden: Als jouw extensie alleen iets doen in de backend, waarom zou je de MFTF-tests van de voorkant draaien?

Nog meer pakketjes in de toekomst

Magento streeft een microservices-benadering na (of technischer: SOA), waardoor er nu plannen zijn om bestaande core-pakketten in nog kleinere pakketjes op te delen. Dit lijkt als een nadeel, maar het voordeel is dat er nog specifieker gekozen kan worden welke functionaliteit nodig is en welke niet.

Stel dat je bent overgestapt naar een PWA-oplossing in React, dan hoef je in de toekomst niet meer de Storefront-pakketjes van Magento modules te installeren (met ViewModels, Blocks, XML layout, PHTML templates, CSS).

Vervolgstap: Distributies

Zo zijn er flink wat combinaties te bedenken. Bij iedere combinatie van pakketjes zitten weer bepaalde scenarios: Een PWA-gebaseerde webshop (geen Storefront, wel GraphQL), een complex distributie-systeem (MSI), testing (geen derde partij extensies, geen fluff).

En natuurlijk jouw eigen voorkeuren: Nederlandse payment providers, Nederlandse shipment provider, ExtDN extensies, die ene gave Yireo extensie die je altijd installeert. Het leidt al snel tot het concept van Magento distributies waarbij je een specifieke distributie kiest voor het benodigde project. Of je eigen distributie bouwt.

Meer voordelen van de replace-truc

De replace-truc heeft overigens niet alleen het voordeel van de installatie kleiner maken. De truc kan je ook gebruiken als er in een bepaald pakket een bug zit, die maar niet wordt opgelost. Hiervoor zijn meerdere oplossingen te bedenken (composer patches, simpelweg een eigen clone eerder inladen via de juiste volgorde van repositories) maar de replace-truc hoort zeker in dit rijtje thuis.

Gebruik je de truc nog niet? Dan wordt het hoog tijd jouw Magento setup slanker te maken.

Geschreven door Jisse Reitsma op 25 april 2019

Behoefte aan een training op maat?
Dat gaat we doen!

Een training kan op maat en op locatie worden gegeven. Hierdoor weet je zeker dat de tijd optimaal wordt benut en dat de training zeker de moeite waard is. Om de training op maat te maken overleggen we eerst over de vorm en de onderwerpen. Hierna sturen we een offerte op. Zie hiervoor ook onze tarieven. Sinds 2011 hebben we al honderden bedrijven (geen grap en geen overdrijving) van een professionele opleiding voorzien. We beloven je dat het inspirerend en leerzaam is!