Skálázhatóság a Flutter projektekben
Tervezz hosszú távra!

Flutter projekt skálázhatóság és nehézségei
Gyakori kódbázis képe

A sikeres digitális termékek építése nem csak a mostani eredményekről szól, hanem a jövőre is gondol. Egy skálázható és jól karbantartható megoldás nem csak jelentős költségmegtakarítást eredményez a cég számára hosszú távon, de a fejlesztők motivációját és megelégedettségét is növeli. Érdekes módon, ha egy fejlesztő átvesz egy projektet, és azt jól strukturáltan találja, kevésbé kísérti a kód újraírásának gondolata. Ebben a bejegyzésben bemutatom, milyen technikai szempontokra érdemes odafigyelni.

Mitől lesz egy projekt skálázható?

A mai posztban ezekre a kérdésekre keressük a választ: skálázhatóság és hogyan kezeljük okosan a függőségeket? Miért fontos mindez nem csak a fejlesztők, hanem a cégvezetők számára is? Kitérünk a pubspec.yaml fájl finomságaira, a monorepo előnyeire és buktatóira, valamint megvizsgáljuk, hogyan segíthetnek a saját package-ek.

Skálázhatóság alatt a rendszer képességét értjük arra, hogy megnövekedett terhelés mellett is megfelelően működjön. Nem csak a felhasználói szám növekedése okozhat terhelést, hanem például egy vállalat üzleti növekedése is.

Egy skálázható mobilapp rugalmas, és lehetővé teszi a kód könnyű karbantartását és fejlesztését.

Miért fontos ez?

Mert a skálázható rendszerek költséghatékonyak és időt takarítanak meg a jövőben. Nem csak a fejlesztők, hanem az egész vállalat számára.

Egy skálázható rendszer nem csak költségeket és időt takarít meg, hanem a fejlesztői csapat motivációját is növeli.

Amikor egy csapat egy jól szervezett, skálázható kódbázison dolgozik, a code-review-k gyakorisága és a refaktorálások szükségessége is csökken. Emiatt a fejlesztők több időt tölthetnek a valódi problémamegoldással és az innovációval, ami általában magasabb munkamorált és jobb termelékenységet eredményez.

Függőségkezelés: a pubspec.yaml alapjai

A pubspec.yaml egy Flutter projekt lelke. Nem csak egy sima konfigurációs fájl, hanem az alkalmazásod ‘központi irányítója’. Itt határozhatsz meg függőségeket, vagyis kódcsomagokat és könyvtárakat, amelyek az alkalmazás működéséhez szükségesek.

Ezáltal megkönnyíti az egész csapat munkáját és egy helyen van összegyűjtve minden, ami az app működéséhez kell.

Emellett lehetőséget biztosít az Open Source közösség megoldásainak újra felhasználására. Ezzel időt és erőforrást takarítunk meg. A függőségkezelés így kulcsfontosságú a skálázhatóság és a fejlesztési idő optimalizálása szempontjából.

A monorepo előnyei és kihívásai

A monorepo, vagyis egyetlen kódtárba szervezett projektstruktúra előnyöket és kihívásokat is rejt. A monorepo önmagában nem egy különleges Git repozitori, hanem a benne lévő tartalom szervezési módja teszi azzá.

Előnyei közé tartozik az egységes verziókezelés, a közös függőségek könnyebb kezelése és a csapatmunka megkönnyítése. Egy ilyen rendszerben könnyebben nyomon követhetők a változások és egyszerűbben menedzselhetők a projekten belüli függőségek.

Ugyanakkor a monoreponak kihívásai is vannak: megfelelő infrastruktúra és eszközök nélkül könnyen kezelhetetlenné válhat. Különösen fontos itt a függőségkezelés, hiszen egy rosszul kezelt monorepo gyorsan kaotikussá válhat.

A monorepo kaotikussá válhat, ha nincs jól szervezett függőségkezelés és verziókövetés. Ha több projekt vagy modul egymástól függ, és nincs megfelelően kezelve ezek kapcsolata, akkor a kódbázis könnyen instabillá válhat.

Egy nagy csapat esetében az egyes tagok változtatásai könnyen “összeütközhetnek”, ami hibákat és felesleges munkát generál. Ezért a kódminőség ellenőrzése, például code-review és tesztelés, kritikus jelentőségű egy monorepo esetében.

Saját Package-ek: a karbantarthatóság és skálázhatóság eszközei

A saját package-ek létrehozása segít modularizálni az alkalmazást. Ez lehetővé teszi a kód újrafelhasználását és a fejlesztői csapatok közötti együttműködést. A saját package-ek azért is jók, mert lehetővé teszik az alkalmazás egyes részeinek izolált fejlesztését és tesztelését. Ennek következtében a kód karbantarthatóbb és könnyen skálázható lesz.

Még jobb, ha ezek a package-ek Open Source közösséggel is megoszthatóak, ami további elismerést és visszajelzést generál. Nem beszélve az “ingyen” javításokról.

Leggyakoribb a domain-alapú szervezés. Ez lehetővé teszi a csapatok számára, hogy külön felelősségi körökre koncentráljanak. Ez nemcsak a fejlesztési időt csökkenti, hanem a kód minőségét is javítja, mivel minden csapat mélyebb szakértelmet fejleszthet ki a saját domainjében.

Ez az elképzelés tökéletesen illeszkedik a mikroszolgáltatásokhoz hasonló architektúrákhoz és a nagyobb, összetett rendszerekhez.

A modularizálásnál általában a következő szempontok alapján szokták az alkalmazást package-ekbe szervezni:

  1. Biztonságért felelős modul: Autentikáció, titkosítás, és jogosultság-kezelés.
  2. Hálózati Kommunikáció: API hívások, WebSocket kommunikáció.
  3. Domain Logika: Üzleti logika, adatmodellek, és adatmanipulációs metódusok.
  4. UI/UX Komponensek: Újrafelhasználható widgetek, stílusok, reszponzív design.
  5. Adattárolás: Lokális adatbázis kezelés, cache.
  6. Közös Funkcionalitás: Navigáció, állapotkezelés.
  7. Fizetési megoldások: Tranzakciók, online vásárlások, és kapcsolódó biztonsági intézkedések.

A fő cél itt a szorosan összefüggő funkciók csoportosítása és azok elkülönítése. Ezek különböző fejlesztési fázisokban vagy csapatok által lehetnek kezelve. Ezzel könnyebbé válik a karbantartás és a skálázás.

Összefoglalás

A skálázhatóság nem csupán technikai, de üzleti előnyöket is hoz.

Egy jól skálázható rendszer csökkenti a fejlesztési és karbantartási költségeket, növeli a fejlesztői csapat motivációját, és biztosítja a jövőbeni rugalmasságot. A monorepo struktúra és a modularizált kódbázis segíthetnek ebben.

A központi csomagkezelő (pubspec.yaml file) pedig lehetővé teszi, hogy könnyen integráljuk a már létező, kipróbált megoldásokat, időt és erőforrást spórolva.

Összességében, a skálázhatóság nem csupán a fejlesztők, hanem a cégvezetők számára is kulcsfontosságú.

A Flutter eszköztára rendkívül sokoldalú és hatékony, így skálázható és karbantartható alkalmazások fejlesztéséhez kiváló választás.

További írásaim is érdekelhetnek:

2 év és 10 ügyfelem kiszolgálásának tapasztalatai
Egyszer fent, egyszer lent

Amikor belekezdtem a saját vállalkozásomba, kevés elgondolásom volt a vállalkozói létről. Halványan körvonalazódott egy cél, egy vízió, de a gyakorlat hozta meg az igazi tapasztalást. Tudtam, hogy szeretek emberekkel foglalkozni, szeretem a vállalkozás vezetést. Sok mindennel találkoztam az elmúlt 2 év és több, mint 10 ügyfelem projektje kapcsán, amit összegyűjtöttem.

Honnan lesznek ügyfeleim?

Kezdőként a legnehezebb bejutni a piacra. Nem kezdőként pedig bent maradni 🙂

A viccet félre téve, valahol el kell kezdeni. Először érdemes egy listát készíteni, hogy mihez értesz. Mi jöhet számításba? Hogyan fog a saját szolgáltatásod beleilleszkedni a mindennapjaidba. Igen, jól olvasod! Ha a munkaidőd után kell még plusz tanulással, ismeretek elsajátításával és munkával foglalkoznod, akkor azzal kalkulálnod kell.

Kicsit könnyebb, ha már pl. a meglévő tudásodat kell eladnod. Persze felkészültnek kell lenned, ezért bele kell tenned a munkát, minden nap.

Nem árt, ha van egy víziód, hogy merre fog tartani a piacod. Ha meglátod a lehetőséget egy felfutó vagy felkapott dologban. Ezért kezdtem én a Flutter irányába fordulni. Az egyre nagyobb programozói hiány, és a digitalizáció miatt egyre több és több IT projekt kiszolgálását nem lehet könnyen megoldani. Paradigma váltásra van szükség. Ezt hozza el a Flutter cross-platform (keresztplatformos) megoldása. Szükség lesz Webre, mobil app-okra, esetleg asztali alkalmazásokra, amit egyre kisebb, de hatékonyabb csapatokkal kell megoldani. Erről írtam korábban pár gondolatot.

Keresd a saját területeden, hogy miben vagy jó? Nem kell világmegváltás, csak a saját, más nézőpontod.

Számos helyen kereshetsz ügyfeleket: LinkedIN, Facebook, freelancer portálok, stb.. A lényeg, hogy passzívból aktívba kell átmenned! A “várakozóból” a “cselekvőbe”. Meg kell szólítanod Ügyvezetőket, CEO-kat, CTO-kat! Céges honlapokat kell böngészned, hogy szükség lehet-e valamire nekik, ami neked van. Ez egy másfajta gondolkozást igényel, mert észre kell venni, hogy te most nem terméket akarsz vásárolni tőlük, hanem pontosan annak a terméknek a fejlesztésében akarsz segíteni.

Ez talán az egyik legnehezebb része: láthatónak lenni. Én alapvetően nagyon nehezen írok emailt, hívok fel telefonon cégvezetőt, de ezt kell tenni. Minél többet gyakorolsz, annál jobban fog menni! Kitartás!

Ki mondja meg a következő lépést?

Bármibe is kezdj, senki sem fogja megmondani, hogy hogyan csináld. Ez nagyon jó, és felemelő érzés, hiszen ezért kezdted el az egészet 🙂

Másrészről kőkemény kitartást igényel. Napi szinten kell sok döntést meghoznod. Csinálnod akkor is, amikor nem látszik. Stratégiákat kigondolnod, amiket működtetned kell.

Kipróbálsz egyvalamit, ami mellett ki kell tartanod. Nem lehet csapongani. Melyik lesz a te formátumod? A te hangod? Konzisztensnek kell maradnod, de időnként át kell nyergelned másra, hogy azt is kipróbáld. Ez lesz a stratégia része, hogy ezt hogyan tedd?

Csábító a sok-sok platform, ahol megmutathatod magad. Melyiket válaszd? Nos, a mai trendek azt mutatják, hogy bárhova bele lehet “paszírozni” az üzenetedet. De jó ez neked? Hiteles vagy? Kell-e neked?

Gondold át, hogy melyik az, amit (az elején) egyedül, rendszeresen tudsz üzemeltetni? Meg tudod tanulni ezen keresztül, hogy mit szeretnél elmondani. Amikor ki kell szervezned (delegálni), akkor tudd, hogy miről beszélsz, mert érted.

Senki sem fog helyetted gondolkozni, cselekedni.

Neked kell a szerződéseid feltételeit kidolgozni. Nem elsőre, de a harmadik-ötödik-tizedik után már rá fogsz érezni.

Az ügyfelemet a saját üzlete érdekli

Az ügyfelemet természetes módon a saját üzlete érdekli. Nem szeretne mélységeiben pl. a technológiával foglalkozni. Ez rendjén van így. Nem azért választott engem, hogy még több feladatot és fókusz-elvonást kapjon cserébe. Helyette nekem együtt kell élnem az üzletével, a víziójával. Megpróbálom átérezni “helyette”, hogy mi a fontos neki. A biztonság.

Az, hogy ami már működik, az továbbra is működjön. Ha új igények jönnek a termékével kapcsolatban, az belátható időn belül elkészüljön. Ezzel aztán újabb, vagy a meglévők közül elégedettebb vevői lesznek. Ami további bevételt jelent neki. Tehát (áttételesen) én is részesülök belőle.

Az üzleti életben, ha fizetsz egy szolgáltatásért/termékért, és az pont csak annyit hoz, mint amennyit rászántál, akkor nullán vagy, nem történt semmi.

Érdemes volt kipróbálni! Ha egy kiadás újabb bevételeket generál, akkor megütötted a főnyereményt. Ennyire leegyszerűsíthető.

A bizalmadat veszik meg

Amikor végre megvan az ügyfél, próbáltok közösen dolgozni. Te pl. szoftvert fejlesztesz neki, ő pedig szerzi a vevőit.

Ebben az együttműködésben olyan belső “titkokat” is látsz, amit kívülálló nem. Látsz olyan, működésbeli hibákat, amiket a partner nem biztos, hogy lát, mert ő hajtja az üzletét. Ha van rá lehetőséged, segítsd azzal, hogy ezeket a tudtára hozod. Biztosan meg tudjátok közösen oldani, és te annál értékesebbé válsz ebben a kapcsolatban.

Légy olyan partner számára, akire számíthat a nehéz időkben (ilyenből kijut bőven egy vállalkozásban)! Rendezkedj be hosszú távra vele kapcsolatban.

Mi van akkor, ha már nem működik a kémia? Nos, előfordul. Csalódás van bármelyik oldalon. Ezt vállalni kell, és nyíltan megbeszélni. Nem házasságot kötöttetek, hanem üzletet. A megfelelő határidőket betartva, békében abba lehet hagyni a közös munkát.

Ettől emberileg még értékelhetitek egymást, hiszen a szakmai oldalon romlott el valami. Kicsi a (világ) piac, és nem tudhatod, hogy mikor fog neked segíteni újra, vagy éppen Te tudsz egy jó tippet adni neki.

Jó vállalkozást kívánok és kitartást hozzá!

money from wallet

Legjobb érvek egy mobil-alkalmazás megrendelése mellett
Ezeket ellenőrizd, mielőtt megrendeled

mobil-alkalmazás vagy weblap legyen

Az elmúlt több, mint 10 évben, amikor megjelentek az okos telefonok, egy új formátumot hoztak magukkal: az app-okat. Miben nyújt többet egy mobil-alkalmazás egy responsive weblap helyett? Ha komoly elhatározásunk van egy mobil-alkalmazás megrendelése mellett, akkor az elképzelésünknek már csak a pénztárcánk szabhat határt. Ár-érték arányban hogyan teljesítenek a jól bejáratott weblapokhoz képest? Ezt a témát járom körül.

Mit mutatnak az alkalmazás-áruházak statisztikái

Kezdjük a száraz számokkal, mert azok ritkán tévednek. A statista.com mutatóit megnézve, látható, hogy a mobil-alkalmazások letöltései töretlenek. Évről évre a bővülő készülékszám mellett az app letöltések is bővülnek.

mobil-alkalmazások letöltésének száma világszerte
A mobil-alkalmazások letöltésének száma világszerte 2016 és 2019 között

Az Apple App Store 2020 júniusi kimutatása szerint a letöltések 50%-át a következő kategóriák teszik ki: Játékok (22%), Üzleti (10%), Oktatás (9%), Életmód (9%). Ebből körvonalazódik, hogy melyek a nyerő irányok. A lista végéről nézve érdekes kép rajzolódik ki: Hírek, Orvoslás, Fotó és Videó, Sport, Social Networking, Vásárlás, Zene, stb. Kb. 2-3%-ot jelent minden egyes kategória. Az alacsony részesedés magyarázható azzal, hogy a hírekre ott van a web; fotó és videó, zenelejátszó alapból jár a telefonra, előre telepítve.

Az digitális termékekre költött fogyasztói kiadásokat mutatja az alábbi grafikon. Ha az EMEA régiót nézzük (Europe, Middle-East, Africa), akkor az előre vetített bővülés több, mint 150%-os 2018-ról 2022-re.

mobil-alkalmazásokra vonatkozó fogyasztói költések világszerte
A mobil-alkalmazásokra vonatkozó fogyasztói kiadások világszerte 2017-ben, 2018-ban és 2022-ben, régiónként, milliárd USD-ben.

2018-ban a globális mobilalkalmazások bevétele több mint 365 milliárd USD volt. 2023-ban a mobil alkalmazások várhatóan több, mint 935 milliárd dollár bevételt generálnak fizetett letöltések és alkalmazáson belüli hirdetések révén.

mobil-alkalmazások bevétele világszerte
A mobil-alkalmazások bevétele 2014 és 2023 között világszerte, milliárd USD-ben.

A Freemium (Free + Premium) üzleti modell jól bevált a gyártóknak. Töltsd le ingyenesen, és ha már elkötelezett vagy, akkor apró költésekkel fizetek ki az egészet.

A fentiek alapján látható, hogy megfelelő bevételszerzési stratégiával lehet jelentősebb bevételeket generálni.

Ezeket számold bele egy mobil-app projektbe

Eldöntötted, hogy mégis belevágsz. Egy mobil-alkalmazás megrendelése a végszó!

A következő feladatokat kell számolni:

  • Projekt tervezése
  • Felhasználói élmény tervezése (UX design)
  • Felületek tervezése (UI design)
  • Megvalósítás, ami általában a legnagyobb részét teszik ki a munkának
  • Marketing feladatok: előtte, induláskor, utána
  • Az alkalmazások frissítése (legalább fél évente), hibajavítások

A fejlesztési idő, és ezáltal a költségek egy része egy jó kereszt-platformmal (cross-platform) csökkenthetőek. Nem mindegy, hogy kétszer kell egy alkalmazást megírni, vagy egyszer, és Androidra vagy iOS-re csak igazítani apróságokat.

Én a Flutter kereszt-platformot használom. Ennek előnyeiről itt írtam korábban. Létezik számos másik, ezeket előtte érdemes egyeztetni a megrendelővel, hogy milyen funkciókat vár. Vannak-e korlátai, amik nem, vagy csak körülményesen teljesíthetőek?

A költségek csak az egyik szempont

Előfordul, hogy egy cégnek egy mobil app egy névjegyet jelent. Ki lehet tenni, megmutatni, hogy ilyen is elérhető a portfóliójában. Ez egyfajta presztízs dolog.

Ne feledkezzünk meg a megkívánt funkciókról. Szeretnénk-e ismétlődő értesítéseket küldeni a felhasználóinknak, ami a marketingre fordított költségeinket javíthatja. Kell-e bele GPS funkció? Netán egy magával ragadó játékot álmodtunk meg? Fontos, hogy offline is bármikor elő tudja kapni a felhasználó?

Segítségképpen összegyűjtöttem egy listát, hogy ötleteket adjon, hogy miket kell mérlegelni a döntés előtt. A listában számos szempont szerepel, amiket érdemes átgondolni. A funkciólista alapján kirajzolódik, hogy mire lesz szükségünk: app vagy weblap?

Ellenörző-lista : Mikor van szükségem mobil app-ra?

Az email címed megadásával elfogadod az Adatkezelés tájékoztatót, és feliratkozol a hírleveleimre.

Az első hírlevélben a beállításait módosíthatod.
Kérem Az Ingyenes Ellenörző-listámat

Ide kérem a letöltési linket:

Remélhetőleg a cikk segített egy sikeres döntés előkészítésében, és spórolni a költségeken.

Ha maradt még kérdésed, akkor egyeztessünk egy ingyenes megbeszélést, ahol tovább pontosíthatod a céljaidat.

Borítókép: Allef Vinicius | Unsplash