← Vissza a bloghoz
Stratégia

Mikor van tényleg szüksége egy Shopify boltnak egyedi fejlesztésre?

Írta: Roland Nagy 7 perc olvasás

Időről időre jön hozzám valaki egy funkciókéréssel, és azzal nyit, hogy „ehhez valószínűleg egyedi fejlesztésre lesz szükségünk." Néha igazuk van. Gyakran nincs, és a beszélgetés érdekesebb része az, hogy kiderítsük, melyikről van szó, mielőtt bárki egyetlen sor kódot is megírna.

Az egyedi fejlesztés nem lehet egy új igény reflexszerű kiindulópontja, még akkor sem, ha néha egyértelmű válasz lehet, miután valóban megérted, mire van szüksége az üzletnek. A Shopify natív funkciói, egy jól felépített téma, és néhány jól megválasztott app valóban a boltok feladatainak nagy részét megoldja. A mérce annál, hogy „egyedi megoldásra van szükségünk," magasabb kellene legyen, mint ahogyan a legtöbb beszélgetés kezeli.

Ez nem azt jelenti, hogy az egyedi fejlesztést el kellene kerülni. Azt jelenti, hogy ki kell érdemelni.

Kezdd a legegyszerűbb dologgal, ami működik

A jó mérnöki munka sosem azt jelentette, hogy kódot írunk, amikor csak lehetőség van rá. Azt jelenti, hogy azt a megoldást választjuk, ami megbízhatóan elvégzi a feladatot a lehető legkevesebb olyan dologgal, ami elromolhat, amit karban kell tartani, vagy amit valakinek meg kell értenie hat hónap múlva.

A Shopify platform sokkal többet lefed, mint amire az emberek gondolnak. A metamezők kiválóan alkalmasak termékekhez, vásárlókhoz vagy magához a bolthoz kapcsolódó strukturált adatokra, de nem valódi helyettesítői egy megfelelő adatmodellnek, amint a kapcsolatok, munkafolyamatok vagy működési állapotok elkezdenek bonyolulttá válni. A Markets olyan módon kezeli a több pénznemet és a lokalizációt, ami korábban rengeteg egyedi logikát igényelt volna.

A Shopify Functions és a Flow egyaránt segít ebben, de eltérő problémákat oldanak meg. A Functions konkrét backend viselkedést bővít ki, például egyedi kedvezménylogikát, szállítási és fizetési testreszabást, vagy checkout validációt. A Flow inkább az esemény-vezérelt automatizálásról szól: műveletek kiváltásáról, amikor egy rendelés-, vásárló- vagy készletesemény történik. A kettő között meglepően sok üzleti logika fejezhető ki egyedi backend nélkül.

A szekciók és blokkok valódi kontrollt adnak a merchandising csapatoknak az elrendezés felett, kód érintése nélkül. Az app ökoszisztéma pontosan azért létezik, mert a legtöbb bolt ugyanazzal a néhány problémával találkozik: vélemények, előfizetések, hűségprogramok, upsellek, készletszinkronizálás.

Ha egy natív funkció vagy egy jó app megbízhatóan eljuttat annak nagy részéhez, amire szükséged van, akkor az egész dolog nulláról felépítése általában nem okos költés. Ettől nem lesz komolyabb vagy professzionálisabb. Gyakran csak drágább és törékenyebb lesz, valódi haszon nélkül.

Ahol a szabványos modell már nem illeszkedik

Az egyedi fejlesztésnek akkor kezd értelme lenni, amikor az üzlet nem azon a folyamaton működik, amire a Shopify tervezve lett, nem pedig akkor, amikor valami csak enyhén kényelmetlen.

Néhány minta ismétlődően felbukkan. Foglalási vagy kapacitásalapú termékek, ahol a készlet nem egyszerű darabszám, hanem dátumoktól, időpontoktól vagy erőforrás-elérhetőségtől függ. Komplex termékkonfiguráció, ahol a vásárló egymástól függő opciókból állít össze valamit, ahelyett hogy egy fix rácsból választana variánsokat. B2B munkafolyamatok, amelyek túlnőnek azon, amit a Shopify natív B2B eszközei már lefednek, különösen Plus-on, ahol a céges fiókok, a tárgyalt árazás és a megrendelések elég jól kezelhetők dobozból kihúzva, de a szokatlan jóváhagyási láncok vagy egy adott üzletre jellemző beszerzési szabályok gyakran nem. Árazási logika, ami a vásárlói szegmenstől, mennyiségi kedvezményhatároktól vagy szerződési feltételektől függ, amelyek nem illeszkednek a Shopify szabványos kedvezménymodelljére. Csomagok vagy alapanyag-lista jellegű termékek, ahol egyetlen SKU, amit a vásárló megvesz, valójában több alkotóelemből is le kell hogy vonja a készletet. Működési munkafolyamatok, mint egy teljesítési sorrend vagy egy megfelelőségi lépés, amire az üzletnek valóban szüksége van, és amivel a Shopify sosem számolt.

Egyik sem egzotikus. Gyakoriak a valódi üzletekben, és amiben általában hasonlítanak, az az, hogy maga az üzleti logika lesz az, amit modellezned kell, nem csak a rá épülő storefront. Ez általában az a pont, ahol a Shopify alapértelmezett modelljének a megfelelő formára hajlítása elkezd többe kerülni, mint amennyit spórol.

Amikor az „telepítsünk még egy appot" már nem működik

Az appok a platform egyik legjobb tulajdonsága, nem egy kompromisszum. Egy jól megválasztott app általában olcsóbb, gyorsabb és biztonságosabb, mint az egyedi kód, mert valaki más tartja karban, javítja, és tartja kompatibilisen a Shopify változásaival.

A probléma nem az appok. Hanem az, amikor több app kerül egymásra halmozásra, hogy közelítsenek egyetlen üzleti folyamatot, mindegyik a saját adatszeletét tárolva és saját feltételezéseket téve arról, hogyan viselkednek a többiek. Egy előfizetés app, ami nem teljesen ért egyet egy csomagoló apppal abban, hogy mi számít „egységnek." Egy készlet app és egy foglalási app, amelyek mindketten azt hiszik, ők a készlet igazságforrása. Egy árazási app egy másik árazási app tetejére rétegezve, mert az első nem tudott kezelni egy konkrét esetet.

Minden egyes app önmagában rendben van. A teljes stack viszont egyre nehezebben átláthatóvá válhat, és minden újabb app, amit az előző korlátjának javítására adnak hozzá, egy újabb pontot ad hozzá, ahol a darabok csendben nem érthetnek egyet egymással. Ezen a ponton a komplexitás nő, nem csökken. Ez általában az a pillanat, amikor érdemes hátralépni, és megkérdezni, hogy egyetlen célra épített darab valójában egyszerűbb lenne-e, mint öt általános célú, összecsavarozva.

Az integrációknál válik leggyakrabban valószínűbbé az egyedi munka

ERP rendszerek, raktár- és teljesítési platformok, beszállítói vagy termékadat API-k, külső készletkezelés, egy CRM, egy foglalási vagy jegyértékesítési rendszer, ami teljesen a Shopify-on kívül létezik: ezek azok a rendszerek, amiknél a legvalószínűbb, hogy előbb-utóbb egyedi munkára lesz szükség. Ez nem ugyanaz, mintha azt mondanánk, hogy mindig szükség is van rá. Sokuknak már van szilárd, jól karbantartott konnektora, és egy jó konnektor valóban lehet a helyes válasz. Az egyedi integrációs munka akkor kezd relevánssá válni, amikor az a mód, ahogyan két konkrét rendszernek kölcsönhatásba kell lépnie, nem egyezik igazán semelyik létező konnektor rendeltetésével sem.

Az API hívás megírása a könnyű rész. Szinte bárki tud küldeni egy kérést és feldolgozni egy választ. A tényleges mérnöki probléma minden, ami körülötte van.

Kié melyik adatdarab, amikor két rendszer nem ért egyet. Mi történik, amikor egy webhook kétszer sül el, és hogy a rendszer úgy van-e felépítve, hogy ugyanannak az eseménynek a véletlen megismétlése ártalmatlan legyen, ahelyett hogy csendben megduplázna egy rendelést vagy dupla készletlevonást okozna (a fejlesztők ezt a tulajdonságot idempotenciának hívják). Mi történik, amikor egy webhook egyáltalán nem sül el. Hogyan kezelik egy rendelésszinkronizálás közepén bekövetkező részleges hibát, hogyan oldódnak fel az ütköző frissítések, és hogyan kerülöd el, hogy csendben elrontsd a készletszámokat, mert két rendszer harminc másodperc eltéréssel frissítette ugyanazt a SKU-t.

Ez nem kritikája az integrációkat kezelő appoknak. Sok közülük jól csinálja ezt a gyakori esetekben. De amint egy üzletnek olyan integrációs igényei vannak, amik arra jellemzőek, ahogyan ténylegesen működik, valakinek tudatosan meg kell terveznie azt a megbízhatósági réteget. Ez a tervezői munka valódi egyedi fejlesztés, még akkor is, ha nagyon kevés belőle néz ki úgy, mint egy új funkció megírása.

Amikor egy kerülőmegoldásból üzleti kockázat lesz

Egy rögtönzött kerülőmegoldás gyakran a helyes döntés. Ha valami időnként meghibásodik, és a következmény egy apró kellemetlenség, amit valaki kézzel kijavít, az egy ésszerű kompromisszum, főleg korai szakaszban.

Ez akkor szűnik meg ésszerű lenni, amikor egy hiba azt jelenti, hogy rossz ár kerül felszámításra, elad egy terméket, ami valójában nincs készleten, egy rendelés elvész két rendszer között, a vásárlói adatok kikerülnek a szinkronból, a checkout elromlik a vásárlók egy szegmensénél, vagy egy működési folyamat csendben szétesik, mert senki nem figyeli azt az automatizálást, ami összetartotta. Ezen a ponton a kerülőmegoldás valódi költsége nem a karbantartására fordított idő. Hanem a mögötte rejlő kockázat, és a kockázat általában sokkal drágább, mint amennyire a legtöbben előre beárazzák.

Egy CheckoutLabs döntési útmutató infografika, 'Tényleg szükséged van egyedi fejlesztésre?' címmel, négy kérdésen végigvezetve: meg tudja-e ezt a Shopify natívan csinálni, megoldja-e egy megbízható app, meg tudja-e oldani tisztán egy kis testreszabás vagy Flow automatizálás, és szükséges-e saját megoldás az üzleti logikának vagy integrációnak, végül azzal az alapszabállyal zárva, hogy az egyedi fejlesztés akkor legyen a végpont, amikor az egyszerűbb opciók már nem illeszkednek az üzlethez.

A valódi kérdés

Segít, ha ezt kevésbé merev technikai hierarchiaként, inkább rövid kérdéssorozatként gondolod végig, mivel minden opció valójában másfajta problémára illik. Meg tudja ezt a Shopify már natívan csinálni? Van egy megbízható, létező app, ami megoldja? Elég egy kis téma- vagy platformszintű bővítés? Ténylegesen megkívánja az alapul szolgáló üzleti logika egy egyedi appot vagy integrációt? Egy specializáltabb architektúra csak akkor kerülhet szóba, amikor ezek az egyszerűbb opciók egyértelműen már nem illeszkednek. Ha ebben a sorrendben haladsz végig, az nem garantálja mindig a legolcsóbb választ, de ésszerű módja annak, hogy kizárd az egyszerűbb opciókat, mielőtt a legdrágábbhoz nyúlnál.

Az érdemi kérdés nem az, hogy „építsük-e ezt egyedileg vagy sem." Egyszerűbb ennél: mi a legkevésbé bonyolult megoldás, ami megbízhatóan támogatja, ahogyan az üzlet ténylegesen működik, anélkül hogy csendben több problémát okozna egy év múlva.

Ha egy kész megoldás megbízhatóan megoldja a problémát, az egyedi felépítés nulláról általában pénzkidobás. Ha az üzletnek folyamatosan küzdenie kell a platformmal azért, hogy megtegyen valamit, amit rendszeresen meg kell tennie, az általában annak a jele, hogy az egyszerűbb opciók kimerültek, és a megfelelő dolog felépítése az, ami valójában pénzt spórol a jövőben.

A legtöbbször a válasz nem olyan drámai, mint bármelyik szélsőség. Inkább arról van szó, hogy figyeljünk oda, a vonal melyik oldalán áll az üzlet ténylegesen.