73 lines
6.6 KiB
Markdown
73 lines
6.6 KiB
Markdown
# Read-it-later AI Summarizer
|
|
|
|
## 1. Opis aplikácie
|
|
**Read-it-later** je moderná mikroslužbová webová aplikácia, ktorá slúži ako inteligentný archív článkov. Používateľ vloží URL adresu dlhého článku, aplikácia ho automaticky stiahne a pomocou modelu umelej inteligencie (AI) vygeneruje jeho stručné zhrnutie. Výsledok si používateľ môže neskôr kedykoľvek prečítať v responzívnom webovom rozhraní.
|
|
|
|
## 2. Architektúra a využité Cloud technológie
|
|
Aplikácia je nasadená v prostredí verejného cloudu **AWS (Amazon Web Services)** a využíva plne automatizovaný prístup Infrastructure as Code (IaC) cez Terraform.
|
|
* **Virtual Private Cloud (VPC):** Izolovaná sieť s nakonfigurovanými podsúbormi a bezpečnostnými skupinami pre riadenie sieťovej prevádzky.
|
|
* **EC2 (Elastic Compute Cloud) & Docker:** Dva dedikované virtuálne servery bežiace na OS Amazon Linux 2023. Jeden zabezpečuje web (Nginx a FastAPI) a druhý slúži pre výpočetne náročnejší AI model. Samotné nasadenie beží vo vnútri **Docker** kontajnerov orchestráciou cez Docker Compose.
|
|
* **Amazon RDS pre PostgreSQL:** Plne spravovaná relačná databáza, do ktorej sa ukladajú používateľské záznamy, originálne texty a AI zhrnutia. Trvalé zväzky (Persistent Storage - EBS a RDS Storage) sú šifrované a zabezpečujú trvalé uchovanie dát aj po reštarte služieb.
|
|
* **AWS Route 53:** Služba DNS, ktorá automaticky spravuje doménové záznamy a prekladá doménu na verejnú IP adresu (Elastic IP) hlavného servera.
|
|
* **SSL a HTTPS:** Smerovanie z verejného internetu je zabezpečené certifikátmi od Let's Encrypt, pričom Nginx slúži ako reverzný proxy server (`jonasal/nginx-certbot`).
|
|
|
|
## 3. Analýza nákladov (1 rok)
|
|
Odhadovaný prevádzkový profil: **1000 používateľov za deň** a maximálna veľkosť databázy **50 GB**.
|
|
Keďže prevádzkujeme model umelej inteligencie, je vyžadovaný aspoň jeden výkonnejší stroj (`t3.medium`). Kalkulácia nezahŕňa doménový poplatok u registrátora tretej strany.
|
|
|
|
| Služba AWS | Typ / Špecifikácia | Fakturačný interval | Cena za mesiac | Cena za 1 rok |
|
|
| :--- | :--- | :--- | :--- | :--- |
|
|
| **EC2 (Web Server)** | `t3.micro` (2 vCPU, 1 GiB RAM) + 30GB EBS gp3 | Hodinový | ~ $7.60 | ~ $91.20 |
|
|
| **EC2 (AI Server)** | `t3.medium` (2 vCPU, 4 GiB RAM) + 30GB EBS gp3 | Hodinový | ~ $30.40 | ~ $364.80 |
|
|
| **Amazon RDS** | `db.t4g.micro` (PostgreSQL) | Hodinový | ~ $11.90 | ~ $142.80 |
|
|
| **RDS Storage** | 50 GB `gp2` zväzok pre databázu | Mesačný GB | ~ $5.75 | ~ $69.00 |
|
|
| **Route 53** | 1 Hosted Zone + DNS dopyty | Mesačný | ~ $0.50 | ~ $6.00 |
|
|
| **Sieť (Data Transfer)** | Odhadovaný odchádzajúci prenos dát | Za GB | ~ $2.00 | ~ $24.00 |
|
|
| **Spolu (Odhad)** | | | **~ $58.15** | **~ $697.80** |
|
|
|
|
## 4. Opis odovzdaných súborov
|
|
* `prepare-app.sh`: Skript pre plne automatické vytvorenie klaudového prostredia.
|
|
* `remove-app.sh`: Skript pre deštrukciu všetkých cloudových služieb.
|
|
* `terraform/`: Priečinok obsahujúci kompletnú deklaratívnu definíciu AWS infraštruktúry (IaC). Obsahuje `.tf` súbory pre siete, servery, databázu a bezpečnosť.
|
|
* `web/`: Zdrojové kódy webovej časti (HTML/CSS), backendu (FastAPI v Pythone), konfiguračný súbor pre Nginx a Docker prostredie.
|
|
* `summarizer/`: Kód PyTorch AI mikroslužby vrátane `Dockerfile` a `requirements.txt` pre stiahnutie modelu BART.
|
|
* `.github/workflows/`: Skripty pre automatické CI/CD (kontinuálna integrácia a doručovanie), ktoré aplikáciu zostavia a nasadia po každej zmene v zdrojovom kóde.
|
|
|
|
## 5. Konfigurácia (Terraform & CI/CD)
|
|
Infraštruktúra je definovaná formou kódu cez Terraform. Terraform konfigurácia (`ec2.tf`, `vpc.tf`, `rds.tf`) automaticky prepojuje sieťové rozhrania, nastavuje pravidlá Firewallu (Security Groups) a vytvorí kľúče pre SSH prístup.
|
|
Softvérové nasadenie zabezpečujú bez-agentové GitHub Actions. Aplikácie sa po commite zabalia do Docker imidžov, uložia sa do GitHub Container Registry (GHCR) a následne sa prostredníctvom SSH tunelu automaticky stiahnu a spustia cez `docker-compose` na cieľových virtuálnych strojoch v AWS.
|
|
|
|
## 6. Návod na použitie
|
|
1. Otvorte ľubovoľný webový prehliadač a prejdite na adresu URL poskytnutú po inštalácii (napríklad `https://devopspavel.me`).
|
|
2. Do vstupného poľa vložte odkaz na dlhý internetový článok, ktorý si prajete zosumarizovať.
|
|
3. Kliknite na tlačidlo **Save**.
|
|
4. Systém odošle požiadavku do umelej inteligencie a o niekoľko sekúnd zobrazí originálny link spoločne so skráteným AI textom.
|
|
|
|
## 7. Záloha dát (Backup)
|
|
Záloha používateľských dát je spravovaná automaticky priamo na úrovni Amazon RDS (Automated Backups). Databáza má predvolene nastavené 7-dňové retenčné obdobie, počas ktorého AWS vykonáva denné kópie (snapshots).
|
|
V prípade potreby manuálnej zálohy (Full Backup) do súboru je nutné:
|
|
1. Pripojiť sa cez SSH na Web Server inštanciu (`t3.micro`), ktorá má prístup do privátnej siete RDS.
|
|
2. Vykonať príkaz: `pg_dump -h <adresa_rds> -U appuser -d aisummarizer -F c -f zaloha.dump`.
|
|
|
|
## 8. Záznamy o prístupoch z internetu
|
|
Logy o pripojeniach používateľov je možné sledovať priamo z Nginx kontajnera. Pre zobrazenie najnovších prístupov z internetu:
|
|
1. Pripojte sa na Web Server prostredníctvom priloženého SSH kľúča.
|
|
2. Pre zobrazenie "live" prístupov spustite: `sudo docker logs -f nginx`
|
|
Tieto logy zaznamenávajú zdrojovú IP adresu, prehliadač a typ dopytu (GET/POST).
|
|
|
|
## 9. Podmienky spustenia skriptov
|
|
Pre úspešné spustenie skriptov `prepare-app.sh` a `remove-app.sh` je nutné:
|
|
1. Mať v operačnom systéme nainštalovaný nástroj **Terraform** (verzia >= 1.0).
|
|
2. Mať nainštalovaný balík **AWS CLI**.
|
|
3. Mať v systéme nakonfigurované platné prístupové kľúče `AWS_ACCESS_KEY_ID` a `AWS_SECRET_ACCESS_KEY` do prostredia AWS.
|
|
4. Používať Unix/Linux/macOS terminál pre bezproblémové spustenie `.sh` súborov.
|
|
|
|
## 10. Zoznam externých zdrojov a využitie Generatívnej AI
|
|
Pri návrhu architektúry, vývoji aplikácie a tvorbe infraštruktúry bol využitý generatívny model umelej inteligencie **Antigravity (Google DeepMind)**.
|
|
Model bol použitý ako inteligentný agent (Pair-programming) predovšetkým na:
|
|
- Tvorbu a optimalizáciu **Python skriptov** (FastAPI backend a PyTorch AI Summarizer).
|
|
- Pripravenie deklaratívnych `.tf` konfigurácií a GitHub Actions Pipelines.
|
|
- Štruktúrovanie a formátovanie tejto dokumentácie v slovenskom jazyku.
|
|
|
|
Aplikácia interne využíva Open-Source zmenšený model `facebook/bart-large-cnn` zverejnený na platforme HuggingFace pre úlohy sumarizácie textu.
|