Prečo aktualizovať softvér?
- bezpečnosť
- opravy chýb
Ako vybrať správny softvér?
Mali by sme používať hlavne také programy, ktoré sú jednoduché, spoľahlivé, majú pravidelné aktualizácie, nevyžadujú ďalšie programy, sú efektívne (rýchle, mala spotreba RAM), …
Ako zistím, či mnou vybraný program (knižnica, aplikácia) vyhovuje?
- Je obsiahnutá v inštalačkách CentOS / Fedora. Tu to vyzerá, že si sysadmin uľahčiť robotu, ale balíčky v CentOS/Fedora používa veľa ľudí, určite sa už niekto pozrel na ich bezpečnosť, máme ďalšieho vývojára, ktorý sa o balík stara (packager), robí im to veľkú reklamu a teda viac používateľov aj vývojárov.
- Má dostupnú: webovú stránku (nemyslím stránku na pip a podobne) archív stiahnití starších verzií stránku s hlasením chýb (bugzilla, issue tracker, … pull request)
- Je dostupná EOL verzia s dlhodobou podporou? Ako dlho je podporovaná daná verzia? Pokiaľ je balík v CentOS 7, podpora je zvyčajne zabezpečovaná vývojármi Red Hat po dobu života CentOS 7. Pre CentOS 8 to platí len pokial to nie je voliteľné ako modul. Moduly majú zvlášť definovanú dobu podpory. Po skončení podpory je nutné aktualizovať, zákazník to musí zaplatiť, takže možno sa skôr vyplatí zákazníkovi pri vývoji použiť niečo iné, co bude pri vývoji trocha drahšie, ale ušetrí na údržbe.
- Má aktívny vývoj (pozrieť posledné commity).
- Nemá priveľa otvorených chýb bez riešenia.
- Má viac vývojárov.
- Je opensource / má otvorenú licenciu, za ktorú netreba platiť, ale mám aj väčšiu pravdepodobnosť, že ju firma zrazu nezruší. Pri closed-source aplikáciách sa nenájde iný vývojár, ktorý by ďalej riešil údržbu.
- Koľko RAM a výkonu potrebuje, napr.:
- elasticsearch aspon 1 GB navyše (aj prázdna inštancia)
- mongodb tiež asi 1-5 GB navyše
- redis je OK pre cache, ale zalohovanie a ukladanie velkých dát je problematické Zákazník musí zbytočne platiť za hardvér navyše.
- Aké má závislosti? Koľko ďalších programov potrebuje na prevádzku, ktoré sa automaticky nainštalujú cez pip, npm a podobne. Ak má aplikácia závislosti, neinštakujte ich cez pip/npm, ale radšej požiadajte o inštaláciu z CentOS / Fedora. Ak inštalujete sami, tak pre každú takúto aplikáciu treba ísť znova tento postup. Následne každú ručne doinštalovanú knižnicu treba pravidelne aktualizovať a sledovať či nepribudli ďalšie závislosti.
Samozrejme aplikácia nemusí spĺňať všetky tieto požiadavky. Niektoré som ani nedefinoval presne. Mala by ale spĺňať vačšinu z nich. Ak aplikácia nespĺňa viac z nich, mal by som sa zamyslieť, ako ju nahradiť. Či existuje iná, ktorá je z tohto pohľadu lepšia.
Prečo nepoužívať ručné inštalácie aplikácií pod rootom?
curl https://server/script | bash
Je to veľmi nebezpečné, neviete, čo sa vlastne spustí. Pokiaľ príkaz spustíte ako bežný používateľ, tak to máte čiastočne pod kontrolou, pretože skript dostane len obmedzený prístup. Pozor ale na zadanie hesla cez su/sudo.
make install / composer
Inštalácia zbehne, ale skúste urobiť odinštalovanie. Niektore programy majú sice make uninstall, ten ale väčšinou neudržiavajú a kompletnú odinštaláciu neurobia.
A čo docker / podman ?
- Zložité sledovanie, co v image je a čo a kedy treba aktualizovat
- Aktualizácia vyžaduje reštart kontajnera. Niekedy zbehne rýchlo, ale zvyčajne je to aspoň krátka odstávka navyše.
- Ak používate rozne OS, sú tam rôzne verzie knižníc, ktoré nemôžu byť zdieľané v RAM, teda zaberajú viac pamäte.
- Build/update nemôže byť rýchlejší ako rsync.