Dlaczego na serwerze lepszy jest Linux?

20 października 2022
Jakub Rojek Jakub Rojek
Wygenerowane za pomocą: https://openai.com/dall-e-2/
Kategorie: Dla klientów, Wdrożenia, Administracja

Większość klientów wychodzi z założenia, że skoro korzystają z usług software house'u, to zupełnie nie muszą przejmować się tym, czy i jak oprogramowanie będzie działać - czekają tylko na końcowy rezultat. Oczywiście, nie do przesady - jak najbardziej powinni być (i zwykle są) zainteresowani postępem prac, a także dosyć zaaferowani tym, ile pieniędzy pochłonie nie tylko sama realizacja, ale i infrastruktura naokoło. Do tej ostatniej należą takie pozycje, jak między innymi treść regulaminów, domena oraz serwer. I to właśnie serwery są często gorącym tematem, omawianym bardzo wnikliwie, głównie ze względu na związane z tym koszty i chęć zapewnienia dobrej prędkości działania. Szczególnie ożywione rozmowy toczą się w momencie, kiedy po stronie zleceniodawcy istnieje osoba techniczna, która będzie utrzymywać serwer lub go wręcz tworzyć.

I w tym miejscu czasami (szczególnie w większych przedsiębiorstwach) pojawia się temat Linuxa jako systemu operacyjnego instalowanego na serwerze. Dla wielu administratorów i programistów - wybór bardzo oczywisty, wręcz automatyczny. Ale bywają sytuacje, w których osoby techniczne z różnych firm trochę przestraszeni pytają, czy jednak nie może być Windows. Tutaj zwykle następuje zdecydowane "nie" ze strony firmy IT, a to z takiego powodu, że...

No właśnie - dlaczego właściwie Linux jest preferowanym wyborem dla serwerów i to specjaliści tego OS-a (ang. Operating System) stanowią większość społeczności administracyjno-wdrożeniowej w branży IT? Z czego to wynika i czy faktycznie Windows nigdy nie jest odpowiedni? Przyjrzyjmy się argumentom, których zazwyczaj brakuje na żywo podczas tego typu dyskusji, gdyż temat wydaje się oczywisty i nikt nie jest przyzwyczajony do wyjaśniania takich kwestii. A warto go usystematyzować.

Stabilność

Pierwsza i najważniejsza sprawa - Linux (a właściwie systemy unixowe) są bardzo stabilne. Jest to wynik tego, że jako twór opensource'owy i wykorzystujący opensource'owe narzędzia, jego kod źródłowy jest szeroko dostępny i możliwy do modyfikacji. Co za tym idzie - przez lata tysiące entuzjastów poprawiały i nadal ulepszają system oraz jego komponenty, wznosząc jakość na niespotykany poziom, nieosiągalny nawet dla komercyjnych firm. No, może z tym trochę przesadziłem, ale sami przyznacie, że o ile wokół "stabilności" Windowsa narosło wiele żartów, o tyle w tym aspekcie Linux ma bardzo dobrą reputację. Na uwagę zasługuje choćby brak częstych awarii, wycieków pamięci (ang. memory leaks) i typowych zawieszeń systemu - systemy z logiem pingwina potrafią działać bez przeszkód naprawdę długo, jeśli są dobrze utrzymywane. A nawet jeśli bierze się za ich obsługę mniej doświadczona osoba, która choć trochę zna ich specyfikę, to i tak stają się bardziej solidne niż "okienka".

Bezpieczeństwo

Pokłosiem powyższego punktu jest także bezpieczeństwo, tak ważne przy udostępnianiu nie tylko aplikacji webowych, ale jakichkolwiek zasobów w sieci publicznej. Wrócę na chwilę do kwestii open source - jako że kod systemu i wielu jego pakietów jest jawny, to został przebadany na setki różnych sposobów i dzięki temu zabezpieczony pod wieloma kątami. Dołączając do tego rozbudowany system uprawnień, możliwość łatwego ograniczenia widoczności plików oraz zaawansowane mechanizmy w rodzaju SELinux, "pingwinek" u podstaw jest dosyć bezpieczny, a przy doświadczonym administratorze można spać spokojnie o dostęp do danych. Oczywiście, do tego dochodzą typowe narzędzia ograniczające ruch sieci oraz blokady portów, co na Linuxie jest dość łatwe w konfiguracji (choć zapewne spece od "Windy" również mogą to powiedzieć o swoim "podopiecznym") i w ten sposób podnoszą poziom ochrony. Co do bezpieczeństwa Windowsa - oczywiście, jego wystawienie w sieci nie oznacza, że serwer organizuje drzwi otwarte, ale z pewnością słyszeliście o wielu lukach bezpieczeństwa systemu Microsoftu, podczas gdy unixopodobne powłoki występują w tych raportach rzadziej. A to wszystko przy akompaniamencie faktu, że Linux jest łatwiejszy w konfiguracji do udostępniania czegokolwiek - przez lata stał się pod tym kątem bardziej naturalny, a jednocześnie bezpieczniejszy. Choć zapewne ponownie, co specjalista to różna opinia.

Narzędzia programistyczne

Wielu programistów na co dzień pracuje na Windowsie, gdyż większość narzędzi jest dostępne w wersji dla "okienek". Natomiast nie da się ukryć, że Linux pod tym kątem jest nie tylko bardziej przyjazny dla osób technicznych, ale też istnieją całkiem popularne programy, które posiadają port wyłącznie na ten system. Przykłady podawaliśmy w artykule o WSL i jednym z nich jest choćby Redis, a więc znany system cache'owania. Jednak innym narzędziem, które co prawda istnieje w wersji na Windowsa, ale pod maską i tak wymaga oraz jest dostosowane do Linuxa, jest Docker, który spopularyzował mechanizm konteneryzacji, tak szeroko wykorzystywany obecnie w świecie programistycznym.

Także podstawowe komponenty, dostępne na Windowsie, są duże prostsze w użyciu na Linuxie. Przykładem jest LAMP, a więc akronim oznaczający zestaw Linux, Apache, MySQL i PHP (czasem zamieniany z Pythonem lub zapomnianym już nieco Perlem). Co prawda, to wszystko można zainstalować też na Windowsie w postaci pakietu XAMPP, ale instalacja i konfiguracja na "pingwinku" jest bardziej naturalna. A to prowadzi do tego, że jeśli wiadomo, że serwer będzie działał na Linuxie, to niekiedy opłaca się tworzyć oprogramowanie także na tym systemie, aby ograniczyć występowanie pewnych błędów, wynikających z różnic pomiędzy OS-ami. Najprostszym przykładem jest duża tolerancja Windowsa dotycząca wielkości liter w nazwach plików, podczas gdy Linux jest pod tym kątem bardziej restrykcyjny.

Warto też wspomnieć, że duże grono programistów nieco wiąże te dwa światy (wygodę użytkowania i dobrą platformę dla narzędzi) w postaci systemu macOS i sprzętu Apple'a. Jest to dobry wybór, o ile mamy odpowiednie zasoby, a niektórzy specjaliści od tak zwanego DevOps (Development and Operations) wskazują wręcz wprost, że na co dzień pracują na Macu ze względu na ogromny komfort pracy przy zachowaniu unixowego szkieletu.

Brak częstych restartów

Zdążyłem wcześniej wspomnieć o tym, że systemy linuxowe potrafią działać naprawdę długo bez restartu i liczymy to nie w miesiącach, ale w latach. Ponowne uruchomienie jest potrzebne w ograniczonej liczbie przypadków, związanych na przykład z aktualizacją jądra (kernela) systemu lub podniesieniem parametrów fizycznych (a i to nie zawsze, zwłaszcza jeśli mamy do czynienia z serwerami wirtualnymi). Jest to związane z architekturą tego systemu operacyjnego, która nie wymusza restartu w przypadku na przykład instalacji dodatkowego oprogramowania (oczywiście, poza nielicznymi wyjątkami). Dobrze wiemy, że na Windowsie jest zupełnie inaczej - instalacja większych, bardziej "osadzonych" w systemie programów wymaga ponownego uruchomienia, co oznacza częstsze przerwy w działaniu serwera opartego o Windows Server lub rzadsze aktualizacje. Być może ta wersja "okienek" jest w praktyce pod tym kątem inna, jednak trudno wyobrazić mi sobie, aby wyszła na prowadzenie w tym rankingu przed Linuxa.

Skoro mowa o aktualizacjach, to dobrze wiemy, że duże update'y Windowsa czasami nie przebiegają bez zakłóceń - co jakiś czas pojawiają się zgłoszenia o tym, że zainstalowanie pewnej wersji zepsuło jedną rzecz i trzeba było cofać się do wcześniejszej odsłony. Oczywiście, jest to incydentalne, ale mimo to przy Linuxie nie słychać o tego typu zdarzeniach.

Intuicyjnie można też podejrzewać (i potwierdzają to różne testy dostępne w Internecie), że Linux jest lżejszy, szybszy w działaniu niż Windows, między innymi dlatego, że w wersji serwerowej bardzo rzadko instalowane jest środowisko graficzne (GUI), które w większym stopniu wykorzystuje zasoby sprzętowe. W przypadku systemu Microsoftu wiemy, że interfejs "klikalny" jest koniecznością, a ten siłą rzeczy zabiera część mocy obliczeniowej. Zresztą, nie bez powodu "pingwina" można uruchomić w razie potrzeby na stosunkowo słabej maszynie.

Koszty

Dla wielu jest to najważniejszy punkt i choć niektórzy powiedzą, że przecież Windows nie jest aż taki drogi, to w ogólnym rozrachunku i przy utrzymaniu kilku serwerów sprawa może wyglądać inaczej. Największą zaletą Linuxa jest jego cena, która wynosi 0 (słownie: "zero"). To darmowy i otwarty system operacyjny, który został stworzony z założeniem, aby każdy mógł sobie na niego pozwolić. Oczywiście, istnieją niedarmowe dystrybucje lub z abonamentowym wsparciem, ale na serwerze całkowicie wystarczy np. Ubuntu Server, który jest nieodpłatny. To też sprawia, że stosunkowo łatwo zacząć swoją przygodę z Linuxem i poznać jego podstawy (choć, oczywiście, do bycia ekspertem jeszcze wówczas daleka droga). Łatwiej też znaleźć poradę w sieci dotyczącą konfiguracji darmowego systemu niż kosztownego kolosa jakim jest Windows.

To główny powód, dla którego ok. 99% usług hostingowych oferuje serwery właśnie z tą wersją powłoki - nawet, jeśli cena tych hostingów wydaje nam się dość wysoka, to jest to koszt samego wsparcia i sprzętu. Zauważcie, że usługi z zainstalowanym systemem Windows Server są jeszcze bardziej kosztowne. Zresztą, nie tylko ze względu na cenę samego OS-a, ale także ze względu na większe wymagania sprzętowe, konieczność udostępnienia zdalnego pulpitu oraz mniejszą dostępność specjalistów.

Czy Windows w ogóle nie nadaje się na serwery?

Tak nie można powiedzieć. Windows Server jest szeroko wykorzystywany, choć z naszych doświadczeń wynika, że raczej w wewnętrznych sieciach np. urzędów czy dużych firm. Aczkolwiek software house'y operujące technologiami .NET oraz SQL Server mogą twierdzić, że serwery windowsowe w ich przypadku są bardziej na miejscu, choć istnieją też linuxowe porty oraz odpowiednie pakiety do Apache2/NGINX. Także osoby bardzo niedoświadczone mogą pierwsze kroki w hostowaniu czegokolwiek stawiać właśnie na zwykłym Windowsie - przyznaję, że mieliśmy jeden projekt, w którym klient dla bardzo małej wewnętrznej aplikacji udostępnił zwykłego Windowsa z XAMPP-em. O dziwo, wystarczyło, ale był to jeden taki przypadek.

Także duże pakiety składające się z programu desktopowego (lub wielu programów) często korzystają z Windowsa, ale tutaj związane jest to zazwyczaj z instalacją w sieci wewnętrznej konkretnej firmy, co jest połączone np. z protokołem LDAP (czyli Active Directory na "okienkach"). To królestwo ogromnych systemów korporacyjnych, tworzonych od wielu, wielu lat.

Natomiast nie widuje się raczej serwerów macOS-owych. To się po prostu nie opłaca - ich zaletą jest szkielet unixowy, a ten jest przecież dostępny w darmowych Linuxach, podczas gdy platforma od Apple'a kosztuje krocie.

Podsumowanie

Mam nadzieję, że mimo braku wgłębiania się w detale, udało się dostarczyć argumentów za tym, aby jednak trzymać się Linuxa jako głównego systemu operacyjnego wprowadzanego na serwery. Oczywiście, to nie znaczy, że Windows jest zupełnie bezużyteczny - to nadal niezły OS, potrzebny w konkretnych zastosowaniach, jednak w większości przypadków i standardowych technologii to Linux wiedzie prym z uwagi na swoją stabilność, bezpieczeństwo i cenę. W dodatku jego popularność sprawia, że łatwiej znaleźć administratora systemu spod znaku pingwina (nawet mniej doświadczonego) niż specjalistę od "okienek".

Pozdrawiam i dziękuję - Jakub Rojek.

Bibliografia i ciekawe linki

  1. https://itsfoss.com/linux-better-than-windows/
  2. https://www.tecmint.com/why-linux-is-better-than-windows-for-servers/
  3. https://www.ionos.com/digitalguide/server/know-how/linux-vs-windows-the-big-server-check/
  4. https://www.fosslinux.com/45759/linux-vs-windows-server.htm
  5. http://sql.pawlikowski.pro/2016/11/20/instalacja-mssql-w-ubuntu-pierwsze-wrazenia/
  6. https://www.c-sharpcorner.com/article/how-to-deploy-net-core-application-on-linux/
  7. https://www.phoronix.com/review/windows2019-linux-bsd
  8. https://www.phoronix.com/review/ryzen-server-os
Lubimy pisać, nawet bardzo, ale na co dzień tworzymy aplikacje webowe i mobilne. Sprawdź niektóre z wykonanych przez programów.

O autorze

Jakub Rojek

Główny programista i współwłaściciel Wilda Software, z wieloletnim doświadczeniem w tworzeniu i rozwoju oprogramowania, ale także w pisaniu tekstów na różnorakich blogach. Zaprawiony w boju analityk i architekt systemów IT. Jednocześnie absolwent Politechniki Poznańskiej i okazjonalny prowadzący zajęcia na tej uczelni. W wolnych chwilach oddaje się graniu w gry wideo (głównie w karcianki), czytaniu książek, oglądaniu futbolu amerykańskiego i e-sportu, odkrywaniu cięższej muzyki oraz wytykaniu innym błędów językowych.

Jakub Rojek