A magazintémától a projektgyakorlatig
A bejegyzéshez tartozó szolgáltatási és technikai oldalak
Video-Botschaft
Linux-szolgáltatások Delphi-vel éles környezetben
Kurze Einordnung, warum Delphi-basierte Linux-Services im Betrieb nicht an der Fachlogik scheitern, sondern an Logging, systemd-Integration, Updates und definiertem Fehlerverhalten – und welche Perspektive für robuste Nacht-3-Uhr-Setups zählt.
Video mit KI erstellt
Transkript anzeigen
Guten Tag. Die meisten Service-Probleme sind keine Programmfehler.
Es sind Betriebsfehler. Im Beitrag „Linux-Services mit Delphi im produktiven Betrieb“ geht es genau darum: Hintergrunddienste sind nur dann hilfreich, wenn man sie wie einen Produktbestandteil betreibt.
In der Praxis scheitert es oft an Basics: Wie startet und stoppt der Dienst sauber? Unter Linux übernimmt das meist systemd, also die Service-Steuerung fürs System.
Wie sieht Logging aus, sodass man nachts um drei Ursache statt Vermutung hat? Und was passiert bei Neustarts, Netzproblemen oder doppelten Jobs?
Die Kernaussage ist nüchtern: Fachlogik reicht nicht. Zustände, Updates, Rechte und Wiederanlauf müssen geplant sein.
Wenn Sie dazu Fragen haben, klären wir sie gern entlang Ihres Betriebsmodells.
A háttérszolgáltatások sok vállalati alkalmazásban a csendes termelékenységnövelők: adatimportok, exportok, fájl- és EDI-feldolgozás, szinkronizáció ERP/DMS/CRM rendszerekkel, időzített munkafolyamatok, értesítések vagy technikai interfészek biztosítása. A gyakorlatban azonban nem pusztán a funkció dönti el a sikert, hanem az a kérdés: üzemeltethető-e a szolgáltatás megbízhatóan, frissíthető-e, monitorozható-e és hibák esetén kontrolláltan visszaállítható-e?
Pontosan itt érdemes tárgyilagosan ránézni a Linux-szolgáltatások és a Delphi. Delphi sok szervezetnél már hordozó elem az üzleti logikában. Ha ezt a logikát értelmesen szerveroldalon újra lehet használni, konzisztens teljes architektúra jön létre: az üzleti szabályok nem kétszer vannak implementálva, a felületek stabilak maradnak, és a csapatok bevett eszközkészlettel dolgoznak. Ugyanakkor a Linux a szerveroldalon bevált építőelemeket hoz az üzemeltetéshez, automatizáláshoz és biztonsághoz.
A döntő pont: egy Linux-szolgáltatás nem egy „kis segédprogram”, amit mellékesen indítanak el. Ez a termék része, üzemeltetési felelősséggel. Ez a cikk konkrétan bemutatja, hogyan állíthatók fel a Delphi-alapú Linux-szolgáltatások gyártásban robosztusan: a folyamat- és állapotmodellektől kezdve a systemd-integráción, naplózáson, telepítéseken és frissítéseken át a monitorozásig, adathozzáférésig, biztonságig és tipikus hibaképekig. A cél egy olyan üzembeállítás, amely a gyakorlatban működik – akár hajnali 3-kor is.
Mikor érdemes Delphi-szolgáltatásokat futtatni Linux alatt
Egy Delphi-Linux-szolgáltatás akkor ésszerű, ha az alábbi minták egyike vagy többje teljesül:
- Meglévő Delphi-üzleti logika kerül szerveroldalon felhasználásra (pl. validálások, számítások, szabályrendszerek, import/export-parszerek).
- Háttérfeldolgozás az alkalmazás integráns része (pl. PDF-/reporting-pipelinek, feladat-sorok, batch-feldolgozás).
- Integrációs terhelés növekszik: sok rendszer, sok interfész, sok formátum, fontos a megbízható újrafuttathatóság (idempotencia).
- Modernizáció teljes újraírás nélkül: a logika egyes részei szolgáltatásokba kerülnek, miközben a desktop-klienst fokozatosan egyszerűsítik.
- REST-szerverek & szolgáltatások együtt átgondolandók: ugyanazok a kódstandardok, ugyanaz a naplózás/monitorozás, azonos roll-out folyamatok.
Kevésbé alkalmas egy Delphi-szolgáltatás Linux alatt, ha egy csapatnak egyáltalán nincs Delphi-kompetenciája és egyébként is szigorúan előírt egy standard platform (pl. meglévő Java/.NET-ökoszisztéma). Ilyen esetben nem a Delphi a technikai akadály, hanem a szervezeti beágyazás. Sok vállalatnál azonban a Delphi meglévő érték, amely a szolgáltatási rétegben stabilan újrahasználható – feltéve, hogy az architektúrát és az üzemeltetést gondosan megtervezik.
Architekturális alapok: folyamatmodell, állapotok, felelősségek
Egy éles szolgáltatás ritkán a „főfunkción” bukik el. Gyakrabban az egyértelműtlen állapotok okozzák a kudarcot: mi történik hálózati kimaradáskor? Hogyan viselkedik a szolgáltatás adatbázis-failover esetén? Feldolgozódik-e egy feladat kétszer? Definiált-e a viselkedés SIGTERM esetén? Pontosan ezért minden szolgáltatásnak világos folyamat- és állapotmodellre van szüksége.
Szolgáltatástípusok: Always-on vs. Worker vs. Job-Runner
A B2B környezetben három alapvető típus terjedt el:
- Always-on Daemon: folyamatosan futó folyamat, pl. listener, queue-fogyasztó, esemény-dispatcher, websocket-/push-komponens.
- Worker-Pool: több példány, amelyek párhuzamosan dolgoznak fel feladatokat egy sorból. A skálázás a folyamatok számán keresztül történik.
- Job-Runner (Timer): periodikusan indul, elvégzi a feladatokat, majd leáll. Linux alatt gyakran jobb systemd-timer/cron használata, mint saját ütemező szálaké.
Delphi a három mintát mind meg tudja valósítani. Az üzemeltetési szempontból azonban döntő, hogy a mintát tudatosan választják. Egy „always-on” folyamat, amely valójában csak 15 percenként csinál valamit, felesleges komplexitást okoz (memória-szivárgások később jelentkeznek, az idle állapotok nincsenek megfelelően kezelve). Fordítva: egy tiszta job-runner alkalmatlan lehet, ha alacsony késleltetés szükséges.
Idempotencia és újrafuttathatóság: a robosztusság magja
Professzionális üzemeltetés azt jelenti: a szolgáltatásokat újraindítják, deploymentek futnak, a hálózatok átmenetileg instabilak lehetnek, az adatbázisok karbantartási ablakokat tartanak, és a feladatok duplikáltan érkeznek. Ezért az idempotencia (többszöri futtatás mellékhatás nélkül) az importoknál, exportoknál és integrációknál alapelv.
Gyakorlatban ez azt jelenti:
- Minden feladatnak legyen egy egyértelmű Job-ID-ja és egy állapota (queued, running, succeeded, failed, dead-letter).
- A mellékhatásokat (pl. „számla elküldve”) dedikált igazolással kell tárolni, nem implicit módon a logokból következtetve.
- A retry-stratégiák legyenek központilag szabályozottak: backoff, maximális próbálkozások, világos megszakítási kritériumok, dead-letter-queue.
Ha az idempotenciát következetesen bevezetik, az üzemeltetés jelentősen nyer: egy újraindítás nem krízis, hanem ismert, kezelt eset.
systemd mint üzemeltetési alap: indítás, leállítás, újraindítás, korlátok
Linux alatt a systemd a legtöbb disztribúcióban a központi eszköz a szolgáltatások tiszta üzemeltetéséhez. Delphi-szolgáltatásoknál a systemd nem pusztán egy indító szkript, hanem a stabilitási architektúra része. Egy jól definiált unit-fájl gyakran a különbség „valahogy fut” és „professzionálisan üzemeltethető” között.
Fontos paraméterek az Unit-fájlban
Típusos Delphi-daemonoknál az alábbi szempontok relevánsak:
- Restart-Policy: pl. Restart=on-failure vagy always, RestartSec-tel kombinálva a crash-loopok elkerülésére.
- TimeoutStopSec és KillSignal: rendezetlen leállítás lehetősége (sorok kiürítése, DB-transzakciók tiszta lezárása).
- User/Group: a szolgáltatások ritkán fussanak rootként; principle of least privilege.
- WorkingDirectory és Environment: reprodukálható elérési utak és környezetek implicit feltételezések helyett.
- LimitNOFILE és erőforrás-korlátok: fontos sok egyidejű kapcsolat/fájl esetén.
- Naplózási csatlakozás: StandardOutput/StandardError journald-be, illetve szükség esetén továbbküldés központi log-rendszerbe.
Különösen a Restart-policy-ket tudatosan kell megválasztani. Egy folyamat, amely konfigurációs hiba miatt azonnal leáll, ne kerüljön végtelen újraindítási ciklusba és ne árasztson el egy rendszert. Ilyen esetekben hasznosak az exit-kódok és a „fail fast” világos hibaüzenettel.
Graceful shutdown Delphi-ban: SIGTERM nem részletkérdés
Linux üzemeltetésben egy szolgáltatást tipikusan SIGTERM-mel állítanak le. Egy Delphi-szolgáltatásnak ezt a helyzetet normál állapotként kell kezelnie: nem hirtelen megszakítás, hanem rendezett leállás.
Ez a gyakorlatban a következőket jelenti:
- Stop-flag beállítása, új feladatok nem fogadása.
- Folyamatban lévő feladatok befejezése vagy kontrollált megszakítása (a szemantika szerint).
- Transzakciók tiszta commit/rollback-je, kapcsolatok lezárása.
- Fontos állapotinformációk perzisztálása (pl. „X feladat megszakítva, retry lehetséges”).
A szolgáltatás, amely SIGTERM-re „durván meghal”, inkonzisztenciákat okoz és megnehezíti a karbantartást.
Konfiguráció: reprodukálható, verziózható, biztonságos
Sok éles üzem problémája végső soron konfigurációs hiba: rossz DB-host, hibás hitelesítési adatok, hiányzó elérési utak, eltérő timeout-értékek a környezetek között. Ezért a konfiguráció nem csak „egy INI fájl”, hanem koncepció.
Konfigurációs források és prioritások
Bevált egy többlépcsős modell:
- Alapértelmezett konfiguráció a kódban (biztonságos baseline, ésszerű timeoutok).
- Fájlalapú konfiguráció (pl. INI/JSON/YAML), amely verziózhatóan telepíthető.
- Környezeti változók a titkok és a környezetspecifikus beállítások számára (container-/CI-közeli, ne legyenek titkok a repo-ban).
Fontos a világos prioritás (pl. Env felülírja a fájlt, amely felülírja az alapértelmezettet) és egy indulási ellenőrzés, amely validálja a konfigurációt: kötelező mezők, elérhetőség, fájljogosultságok, minimális értéktartományok.
Secrets: ne tiszta szövegben, ne a logokban
B2B környezetben az adatbázis-jelszavak, API-tokenek, tanúsítványok és privát kulcsok a legfontosabb üzemeltetési vagyontárgyak közé tartoznak. Minimális követelmények:
- Titkok ne kerüljenek Gitbe és ne legyenek telepített konfigurációs fájlokban tiszta szövegként, amennyiben elkerülhető.
- Olvasási jogok Config/Secrets számára csak a szolgáltatás-felhasználónak.
- A logkimeneteknek következetesen maszkolniuk kell a titkokat (még exception-ök esetén is).
Akár Vault-rendszert alkalmaznak, akár klasszikus telepítéseket szigorú jogosultságokkal: döntő, hogy a titkok kezelése szisztematikus legyen.
Naplózás: a „hibaüzenet”-től a működési diagnosztikáig
Egy éles Linux-szolgáltatás csak annyira jó, mint a diagnosztikai képessége. A „volt egy hiba” önmagában nem segít. Hiba esetén az üzemeltetésnek és a fejlesztésnek rekonstruálni kell tudnia: mi volt a bemenet? Melyik verzió futott? Melyik lépésnél történt a hiba? Átmeneti hiba volt vagy adathiba?
Strukturált naplózás és korrelációs azonosítók
Interfészekkel rendelkező szolgáltatásoknál (REST, MQ, fájlimportok) két dolog kulcsfontosságú:
- Strukturált naplózás (key-value, JSON-szerű): service, version, env, job_id, customer_id (ha megengedett), duration_ms, result.
- Korrelációs ID: egy azonosító, amely komponenseken átívelően követhető (pl. a REST-kérésből a worker-feladatba).
Ezzel a módszerrel a gyártási hibák nemcsak megtalálhatók, hanem be is szűkíthetők: érinti-e minden ügyfelet? Csak egy adatforrást? Csak egy verziót? Csak egy példányt?
Log-szintek, zaj és operatív jelzések
Egy gyakori anti-minta a túl sok napló zaj nélkül: megabájtok „Processing…” üzenet minden pollnál. Ehelyett:
- INFO: releváns állapotváltozások (indítás, leállás, konfiguráció betöltve, feladat elindult/befejeződött).
- WARNING: várható eltérések (retry, átmeneti hálózati hiba, timeoutok).
- ERROR: nem várt hibák, manuális beavatkozás szükséges.
- DEBUG: célzottan aktiválható, időben behatárolt.
Különösen systemd/journald környezetben érdemes log-rotationt és megőrzési stratégiát tervezni. Retenciós koncepció nélkül a logok vagy túl rövid ideig érhetők el (nincs diagnosztika), vagy tárolási problémát okoznak (üzemeltetési kockázat).
Monitorozás és egészség: nem csak „fut” – hanem „szolgáltat”
Egy folyamat futhat, de szakmai értelemben holt lehet (deadlockban ragad, IO-ra vár, vagy nem dolgoz fel többé feladatot). A gyártásra kész rendszer monitorozása nemcsak a folyamat állapotát ellenőrzi, hanem a szolgáltatás egészségét is.
Health-checkek: Liveness, Readiness, Business-Checks
Delphi-szolgáltatásoknál három szint hasznos:
- Liveness: a folyamat él (systemd státusz, watchdog, egyszerű ping-endpoint).
- Readiness: a szolgáltatás készen áll (DB-kapcsolat lehetséges, konfiguráció érvényes, függő rendszerek elérhetők).
- Business-Check: ténylegesen dolgozik-e a szolgáltatás? pl. „utolsó sikeres feladat < 10 perc” vagy „sorhossz < küszöbérték”.
A business-szint gyakran a legerősebb a B2B üzemeltetésben, mert ez méri a valódi értéktermelést.
Metrikák: futási idők, hibaarányok, backlog
Ha a szolgáltatások növekednek, a logok önmagukban nem elegendők. A metrikák segítenek a trendek felismerésében:
- Áteresztőképesség (feladatok/perc), átlagos feladatidő, p95/p99 futási idők.
- Retry-arány, hibaarány hibakategóriák szerint (hálózat, adatok, auth).
- Sor-backlog, várakozási idők, dead-letter számlálók.
Még egy egyszerű observability-stack nélkül is sokat lehet elérni egyszerű exportokkal (pl. belső HTTP-endpoint vagy log-alapú parserek). Fontos a mérőszámok következetes definiálása és a küszöbértékek meghatározása.
Adathozzáférés és tranzakciók: FireDAC, connection-kezelés, pooling
Sok Delphi-szolgáltatás adatbázis-központú. Linux alatt a hozzáférés Delphi-ban tipikusan a BDE-Ablösung natív csatolással és natív klienskönyvtárakon keresztül szerveződik. A gyártási érettség szempontjából kevésbé a „helyes driverek” döntőek, sokkal inkább a connection- és tranzakciós modell.
Connection-életciklus: rövid életű vs. hosszú életű
Háttérfeladatoknál bevett gyakorlat:
- Feladatonként vagy feladat-batchenként megnyitni egy kapcsolatot, dolgozni, majd bezárni (robosztus hálózati zavarok esetén).
- Nagyon gyakori feladatoknál esetleg connection-pooling, de csak tiszta resettel a feladatok közt.
A hosszú élettartamú kapcsolatok működhetnek, de hálózati megszakadások vagy DB-failoverek esetén gyorsabban kerülhetnek nehezen diagnosztizálható állapotba. A rövidebb életű kapcsolatok gyakran robosztusabb alapértelmezést jelentenek – megfelelő timeoutokkal és retry-kkal kombinálva.
Tranzakciós határok és zárolási viselkedés
Gyakran a gyártási gondok túl nagy tranzakciókból fakadnak: hosszú zárak, blokkolt táblák, „minden beragad”. Jobb gyakorlat:
- Tranzakciókat az üzleti egységekhez igazítani (pl. „egy importrekord” vagy „egy dokumentum”).
- Köztes eredményeket perzisztálni az újrafuttathatóság érdekében.
- Hibákat tisztán osztályozni: adathiba (nem retry), hálózati hiba (retry), mellékhatás már megtörtént (idempotensen kezelni).
Párhuzamos workereknél a zárolási és deadlock-viselkedés tervezési tényező – nem csak DBA-téma.
Deployment és frissítések: reprodukálható, visszagörgethető, alacsony kockázat
Egy szolgáltatás sosem „kész”; frissítik. Ezért a deployment nem utómunka, hanem a megoldás része. A gyártásban három tulajdonság számít: reprodukálhatóság, rollback-képesség és alacsony kockázatú kiesés.
Verziózás és artefaktumok
Bevált gyakorlatok:
- Minden buildnek legyen egy egyértelmű verziószáma (SemVer vagy build-ID), és írja ki azt a naplókba indításkor.
- Az artefaktumok legyenek immutable: ugyanazt a verziót ne építsék újra és ne írják felül.
- Függőségek (pl. natív könyvtárak) a deploy részei legyenek vagy világosan dokumentálva.
Ezzel elkerülhető az a gyakori probléma, hogy a „X verzió” valójában szerverenként kicsit más.
Frissítési stratégiák: Rolling, Blue/Green, Stop/Start
Melyik stratégia illik, a mintától függ:
- Stop/Start: job-runnerekhez vagy nem kritikus szolgáltatásokhoz; egyszerű, de rövid kieséssel.
- Rolling Update: több példány egymás után újraindítva; sor-alapú rendszerekhez jól illik.
- Blue/Green: két elkülönített környezet, átkapcsolás load-balancerrel; nagyobb munka, minimális kockázat.
Fontos: egy frissítés csak akkor „biztonságos”, ha a szolgáltatás indításkor kompatibilis adatbázis-/sémaverziót vár vagy a migrációk kontrolláltan futnak. A séma-változtatások külön roll-out lépést igényelnek tervvel (előre-/visszafelé kompatibilis, vagy karbantartási ablak).
Biztonság és üzemeltetési keményítés: kis intézkedések, nagy hatás
Linux-szolgáltatások gyakran közel vannak az adatokhoz, interfészekhez és hitelesítő adatokhoz. Ezért a keményítés nem luxus. Néhány alapvető norma jelentősen csökkenti a kockázatot.
Least privilege és fájljogosultságok
- Saját szolgáltatás-felhasználó shell-bejelentkezés nélkül, minimális csoportjogokkal.
- Konfigurációs és titoktároló fájlok csak ennek a felhasználónak olvashatók.
- Írási jogok csak ott legyenek, ahol szükséges (pl. Working-Directory, spool, temp).
Hálózati határok és portkezelés
Ha egy Delphi-szolgáltatás portokat nyit (pl. mint REST-szerver), a következők tartoznak hozzá:
- Bind belső interfészekre, ha nincs szükség külső elérhetőségre.
- Tűzfalszabályok és hálózati szeparáció a „LAN-on nyitva” helyett.
- TLS-termináció gondos tervezése (reverse proxy, tanúsítvány-rotáció), a környezetnek megfelelően.
Még belső hálózaton sem érdemes a szolgáltatásoknak vakon bízniuk a kliensben. Azonosítás és jogosultságkezelés a tervezés része.
Gyakori hibaképek a gyakorlatban – és hogyan kerülhetők el
Éles üzem alatt gyakran visszatérő minták okozzák a csapatok időveszteségét. Néhány tipikus eset és ellenintézkedés:
„A szolgáltatás fut, de már nem dolgoz fel semmit”
- Oka: deadlock, blokkoló IO, néma újracsatlakozási probléma.
- Ellenvetés: mindenhol timeoutek; watchdog/health-business-check; worker-architektúra single-thread helyett; fail-fast rossz függőség esetén.
„Egy frissítés után a feladatok duplikálódnak”
- Oka: hiányzó idempotencia, nincs dedikált job-tábla, mellékhatások nem atomikusak.
- Ellenvetés: job-állapot DB-ben, egyedi constrained, Outbox-/Inbox-minta, deduplikálható események.
„A naplók nem segítenek – csak stacktrace-ek kontextus nélkül”
- Oka: strukturálatlan naplózás, nincs korrelációs ID, nincs job-kontekstus.
- Ellenvetés: strukturált logmezők, Job-ID, input-forrás, futásidő, eredmény, hibakategória.
„A szolgáltatás terhelés alatt összeomlik”
- Oka: kontrollálatlan párhuzamosság, hiányzó backpressure, túl sok DB-kapcsolat, túl nagy tranzakciók.
- Ellenvetés: worker-limit, sorhossz-korlátok, connection-limit, kis tranzakciók, puffer és retry.
Az együttműködés REST-szerverekkel és meglévő vállalati szoftverrel
Sok architektúrában nem „egyetlen szolgáltatás” létezik, hanem egy csomag REST-szerverből, háttér-workerekből és kliensekből. Delphi-projektekben gyakran célszerű a közös üzleti logikát tiszta modulokban tartani, míg a szállítás- és üzemeltetés-specifikus részeket szétválasztani.
Rétegek egyértelmű szétválasztása (funkcionálisan és technikailag)
Egy pragmatikus felépítés:
- Domain/üzleti logika: szabályok, validáció, számítások, use-case-ek.
- Infrastruktúra: DB-hozzáférés, fájlrendszer, HTTP-kliensek, messaging.
- Adapterek: REST-endpointok, service-loop, CLI-runner, systemd-közeli indítási logika.
Ez a szétválasztás nem elméleti. Lehetővé teszi, hogy ugyanaz az üzleti logika a REST-szerverben és a workerben is felhasználható legyen, miközben az üzemeltetési szempontok (timeoutok, retry-k, naplózás, health) következetesen implementálhatók.
Multiplatform szemlélet: Delphi mint egységes kódalap
Ha egy cég már Delphi-t használ kliensoldalon (Windows-kliensekhez), akkor egy Linux-szolgáltatás lehet a következő logikus lépés: ugyanaz a nyelv, hasonló könyvtárak, egységes build-pipeline-ok. A nyereség azonban csak akkor valósul meg, ha tudatosan tisztelik a platformhatárokat (fájlútvonalak, case-sensitivity, locale/encoding, szolgáltatásfelhasználó-jogok, deploy-konvenciók). A multiplatform az üzemeltetésben mindig „részletmunka” – ezért érdemes korán tervezni.
Gyakorlati ellenőrzőlista: minimálisan szükséges elemek egy éles Delphi-Linux-szolgáltatáshoz
- systemd Unit megfelelő Restart-/Timeout-szabályokkal, saját szolgáltatás-felhasználó, definiált elérési utak.
- Graceful Shutdown (SIGTERM), nincs adatinkonzisztencia leálláskor.
- Konfigurációs modell validálással, titkok biztonságos kezelése, titkok ne legyenek a logokban.
- Strukturált naplózás verzióval, Job-ID-vel, korrelációs ID-vel, futásidővel, hibakategóriával.
- Health-checkek (legalább Readiness + Business-Check) és definiált metrikák.
- Idempotens feladatfeldolgozás, retry/backoff, dead-letter koncepció.
- Deployment egyértelmű verziózással, rollback-stratégiával, tervezett séma-migrációkkal.
- Erőforrás- és terheléskoncepció: párhuzamosság, korlátok, timeoutok, connection-kezelés.
Következtetés: Delphi alatt Linux nem kivétel – ha az üzemeltetés része a tervezésnek
Linux-szolgáltatások Delphi-dal a gyártási üzemeltetésben nagyon megbízható opciók, ha teljes értékű rendszerkomponensként kezelik őket: világos architektúrával, gondos systemd-integrációval, robosztus hibakezelési és állapotmodellel, reprodukálható naplózással, monitorozással és telepítéssel. A technikai megvalósítás ritkán a kockázat; a kockázat a „üzemeltetési részletekben” van, amelyek túl későn derülnek ki.
Akik ezeket a részleteket már a kezdetektől tervezik, karbantartható szolgáltatás-landscape-ot kapnak: az üzleti logika konzisztensen hasznosul, az integrációk stabilan végrehajtódnak, és a környezet megbízhatóan üzemeltethető – beleértve a frissítéseket, újraindításokat és az incidenseket.
Ha szeretnék felmérni, hogyan vihető át meglévő Delphi-üzleti logikájuk Linux-szolgáltatásokba, workerekbe és REST-szerverekbe (beleértve üzemeltetési és telepítési koncepciót), szívesen tisztázzuk a feltételeket strukturáltan egy technikai első megbeszélésen: Kapcsolat.
Következő lépés
Ha a téma valós projektté válik, az architektúrát, a meglévő rendszert és az üzemeltetést már korán együtt kell értékelni.
Nemcsak egyedi kérdésekben támogatunk, hanem akkor is, amikor forráskódrészletekből, örökölt rendszerekkel kapcsolatos témákból vagy portálötletekből robusztus vállalati projektet kell kialakítani.
- A jelenlegi állapotot, a célállapotot és a műszaki kockázatokat együttesen értékeljük.
- REST, az adathozzáférés, a portálok és a Rollout nem kerülnek utólagos teendőkként elhalasztásra.
- Már korán láthatja, melyik út gazdaságilag és üzemeltetési szempontból életképes.