tanszek:oktatas:informacios_rendszerek_integralasa:12_factor
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| tanszek:oktatas:informacios_rendszerek_integralasa:12_factor [2026/03/14 11:07] – [Konténeres megoldás] knehez | tanszek:oktatas:informacios_rendszerek_integralasa:12_factor [2026/03/16 09:35] (current) – [Hibás gyakorlat] knehez | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== 12-Factor App módszertan | + | ===== 12-Factor App módszertan ===== |
| ===== 1. faktor: Codebase ===== | ===== 1. faktor: Codebase ===== | ||
| Line 11: | Line 11: | ||
| Ha van egy webalkalmazásunk, | Ha van egy webalkalmazásunk, | ||
| - | * egy fejlesztői telepítés a programozók számára, | + | * egy **fejlesztői** telepítés a programozók számára, |
| - | * egy staging rendszer tesztelésre, | + | * egy **staging** rendszer tesztelésre, |
| - | * egy production rendszer a valódi felhasználóknak. | + | * egy **production** rendszer a valódi felhasználóknak. |
| A három környezet nem három külön projekt, hanem ugyanannak az alkalmazásnak három külön futtatási példánya. | A három környezet nem három külön projekt, hanem ugyanannak az alkalmazásnak három külön futtatási példánya. | ||
| Line 24: | Line 24: | ||
| </ | </ | ||
| - | ==== Hibás | + | ==== Hibás |
| < | < | ||
| Line 326: | Line 326: | ||
| < | < | ||
| - | flowchart | + | flowchart |
| A[Git repository] --> B[Dependency file] | A[Git repository] --> B[Dependency file] | ||
| B --> C[Automatikus telepítés] | B --> C[Automatikus telepítés] | ||
| Line 353: | Line 353: | ||
| Például: | Például: | ||
| - | | **Környezet** | **Adatbázis** | | + | ^ Környezet |
| | fejlesztői | localhost | | | fejlesztői | localhost | | ||
| | teszt | test-db | | | teszt | test-db | | ||
| Line 682: | Line 682: | ||
| Például Redis-ben: | Például Redis-ben: | ||
| - | <code> | + | <mermaid> |
| flowchart TD | flowchart TD | ||
| A[App instance 1] --> B[(Redis)] | A[App instance 1] --> B[(Redis)] | ||
| C[App instance 2] --> B | C[App instance 2] --> B | ||
| - | </code> | + | </mermaid> |
| Így minden alkalmazás példány ugyanazt az állapotot látja. | Így minden alkalmazás példány ugyanazt az állapotot látja. | ||
| Line 741: | Line 741: | ||
| * IIS | * IIS | ||
| - | Ebben a modellben a webszerver tölti be az alkalmazást, | + | Ebben a modellben a webszerver tölti be az alkalmazást, |
| - | + | ||
| - | A 12-Factor megközelítés ezzel szemben azt javasolja, hogy az alkalmazás **saját szervert indítson**, | + | |
| ==== Példa modern webalkalmazásra ==== | ==== Példa modern webalkalmazásra ==== | ||
| Line 908: | Line 906: | ||
| < | < | ||
| - | flowchart | + | flowchart |
| A[Terhelés növekedés] --> B[Új alkalmazás példány indítása] | A[Terhelés növekedés] --> B[Új alkalmazás példány indítása] | ||
| B --> C[Új példány fogadja a kéréseket] | B --> C[Új példány fogadja a kéréseket] | ||
| Line 928: | Line 926: | ||
| < | < | ||
| - | flowchart | + | flowchart |
| A[Stop jelzés] --> B[Folyamat befejezi az aktuális feladatot] | A[Stop jelzés] --> B[Folyamat befejezi az aktuális feladatot] | ||
| B --> C[Folyamat leáll] | B --> C[Folyamat leáll] | ||
| Line 962: | Line 960: | ||
| Például: | Például: | ||
| - | | **Fejlesztés** | **Production** | | + | ^ Fejlesztés |
| | SQLite adatbázis | PostgreSQL | | | SQLite adatbázis | PostgreSQL | | ||
| | lokális fájlrendszer | cloud storage | | | lokális fájlrendszer | cloud storage | | ||
| Line 979: | Line 977: | ||
| * ugyanaz az infrastruktúra | * ugyanaz az infrastruktúra | ||
| - | ==== Példa | + | ---- |
| + | |||
| + | ===== 11. faktor: Logs ===== | ||
| + | |||
| + | A tizenegyedik faktor szerint az alkalmazás **nem kezeli közvetlenül a log fájlokat**, | ||
| + | |||
| + | A logok gyűjtését, | ||
| + | |||
| + | ==== Mit jelent ez a gyakorlatban? | ||
| + | |||
| + | Az alkalmazás egyszerűen kiírja a naplóüzeneteket a standard outputra. | ||
| + | |||
| + | Például: | ||
| + | |||
| + | < | ||
| + | print(" | ||
| + | </ | ||
| + | |||
| + | vagy | ||
| + | |||
| + | < | ||
| + | console.log(" | ||
| + | </ | ||
| + | |||
| + | Az alkalmazás nem hoz létre saját logfájlokat és nem foglalkozik a logok archiválásával. | ||
| + | |||
| + | ==== Hagyományos megközelítés ==== | ||
| + | |||
| + | Régebbi rendszerek gyakran közvetlenül fájlba írják a logokat. | ||
| + | |||
| + | Példa: | ||
| + | |||
| + | < | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | Ez több problémát okozhat: | ||
| + | |||
| + | * a log fájl mérete folyamatosan nő | ||
| + | * nehéz több szerveren összegyűjteni a logokat | ||
| + | * a logok kezelése az alkalmazás feladata lesz | ||
| + | |||
| + | ==== Helyes megközelítés | ||
| + | |||
| + | Az alkalmazás csak kiírja az eseményeket, | ||
| < | < | ||
| flowchart LR | flowchart LR | ||
| - | A[Development] --> B[Staging] | + | A[Alkalmazás] --> B[Stdout log stream] |
| - | B --> C[Production] | + | B --> C[Log gyűjtő rendszer] |
| </ | </ | ||
| - | Mindhárom környezet ugyanazt az alkalmazást futtatja, csak más konfigurációval. | + | A log gyűjtő rendszer lehet például: |
| - | ==== Konténeres megoldás ==== | + | * log aggregator |
| + | * monitoring rendszer | ||
| + | * cloud log szolgáltatás | ||
| - | Docker | + | ==== Példa konténeres környezetben ==== |
| + | |||
| + | Docker | ||
| + | |||
| + | A Docker rendszer gyűjti és tárolja őket. | ||
| < | < | ||
| - | flowchart | + | flowchart |
| - | A[Docker Image] --> B[Dev környezet] | + | A[Application container] --> B[stdout] |
| - | | + | |
| - | A --> D[Production környezet] | + | |
| </ | </ | ||
| - | Ugyanaz az image kerül minden környezetbe. | + | ==== Cloud környezetben ==== |
| + | |||
| + | Cloud-rendszerekben a logok gyakran központi rendszerbe kerülnek. | ||
| + | |||
| + | Például: | ||
| + | |||
| + | * ELK stack | ||
| + | * Loki | ||
| + | * Cloud logging szolgáltatás | ||
| + | |||
| + | < | ||
| + | flowchart LR | ||
| + | A[Application] --> B[Log stream] | ||
| + | B --> C[Central log storage] | ||
| + | </ | ||
| ---- | ---- | ||
| + | |||
| + | ===== 12. faktor: Admin Processes ===== | ||
| + | |||
| + | A tizenkettedik faktor szerint az alkalmazáshoz tartozó **adminisztratív vagy karbantartási feladatokat külön folyamatként kell futtatni**, ugyanabban a környezetben, | ||
| + | |||
| + | ==== Példák adminisztratív folyamatokra ==== | ||
| + | |||
| + | Tipikus adminisztratív műveletek: | ||
| + | |||
| + | * adatbázis migráció | ||
| + | * adatjavító script futtatása | ||
| + | * cache törlése | ||
| + | * adat importálása | ||
| + | * egyszeri karbantartási feladat | ||
| + | |||
| + | Ezek a feladatok nem a webalkalmazás részeként futnak, hanem külön indított folyamatként. | ||
| + | |||
| + | ==== Példa: adatbázis migrációra ==== | ||
| + | |||
| + | Egy alkalmazás frissítése előtt gyakran szükséges az adatbázis szerkezetének módosítása. | ||
| + | |||
| + | < | ||
| + | python manage.py migrate | ||
| + | </ | ||
| + | |||
| + | Ez egy adminisztratív folyamat, amelyet külön kell elindítani. | ||
| + | |||
| + | ==== Példa architektúra ==== | ||
| + | |||
| + | < | ||
| + | flowchart TD | ||
| + | A[Web Application] | ||
| + | B[Admin Process] | ||
| + | |||
| + | A --> C[(Database)] | ||
| + | B --> C | ||
| + | </ | ||
| + | |||
| + | Az adminfolyamat ugyanazt az adatbázist használja, mint az alkalmazás, | ||
| + | |||
| + | ==== Fontos szabály ==== | ||
| + | |||
| + | Az adminfolyamatoknak **ugyanazt a környezetet kell használniuk**, | ||
| + | |||
| + | Ez azt jelenti, hogy: | ||
| + | |||
| + | * ugyanaz a kódbázis | ||
| + | * ugyanaz a konfiguráció | ||
| + | * ugyanazok a függőségek | ||
| + | |||
| + | Így biztosítható, | ||
| + | |||
| + | ==== Példa konténeres környezetben ==== | ||
| + | |||
| + | Konténeres rendszerben egy admin-feladat külön konténerként is futtatható. | ||
| + | |||
| + | < | ||
| + | flowchart TD | ||
| + | A[Application container] --> C[(Database)] | ||
| + | B[Migration container] --> C | ||
| + | </ | ||
| + | |||
| + | A migrációs konténer csak egyszer fut le. | ||
| + | |||
tanszek/oktatas/informacios_rendszerek_integralasa/12_factor.1773486446.txt.gz · Last modified: 2026/03/14 11:07 by knehez
