Linux או Windows Server: מה לבחור לשרת?
השוואה מעשית בין Linux ל-Windows Server הכוללת עלויות רישוי, צריכת משאבים, ניהול מרחוק, Active Directory ומתאימות לעומסי עבודה ב-Web ו-Cloud.
התשובה הקצרה
עבור רוב עומסי העבודה של Web ו-Cloud, Linux היא ברירת המחדל: היא חינמית, קלה לצריכת משאבים, ועולם ה-open-source Server כולו בנוי עליה. Windows Server היא הבחירה הנכונה כאשר דרוש משהו מה-ecosystem של Microsoft באופן ספציפי, כגון Active Directory, ה-classic .NET framework שרץ רק ב-Windows, Microsoft SQL Server, או אפליקציית line-of-business שרצה ב-Windows בלבד. הבחירה אינה עוסקת בשאלה מי טובה יותר באופן מופשט, אלא באיזה עולם עומס העבודה שלך נמצא. להלן ההבדלים בפועל בעת הרצת כל אחת מהן על שרת.
עלות ורישוי
Linux היא חינמית להרצה. להפצות שרת נפוצות אין עלות התקנה על מספר בלתי מוגבל של מכונות, ותשלמו רק אם תרצו תמיכה בתשלום מספק מסוים. Windows Server היא תוכנה מורשית (licensed): אתם משלמים עבור כל שרת, הרישיון קשור בדרך כלל למספר ליבות המעבד (processor cores), וייתכן שיהיה צורך ברישיונות נוספים עבור client access. ב-VPS זה מתבטא לרוב במחיר גבוה יותר עבור תוכנית Windows מאשר תוכנית Linux באותו גודל, מכיוון שעלות הרישיון כלולה במחיר. בתוך צבר שרתים, להבדל ברישוי זה יש השפעה ממשית על התקציב.
צריכת משאבים
Linux קלה יותר. שרת Linux מינימלי פועל בנוחות עם כמות קטנה של RAM ודיסק, ללא שולחן עבודה גרפי, וזו הסיבה שהוא מתאים מאוד לתוכניות VPS קטנות. Windows Server נושאת יותר overhead בסיסי. Windows Server Core מצמצם את ה-graphical shell ועוזר, אך שרת Linux שמבצע את אותה עבודה זקוק בדרך כלל לפחות זיכרון ודיסק. ב-VPS קטן, ההבדל הזה קובע כמה מקום יישאר לאפליקציה בפועל.
ניהול מרחוק: SSH לעומת RDP ו-PowerShell
מנהלים שרת Linux באמצעות SSH, חיבור טקסטואלי ל-shell, שהוא קל, ניתן לכתיבת סקריפטים (scriptable), ועובד היטב גם בחיבור איטי. Windows Server מנוהלת באמצעות Remote Desktop, סשן גרפי מלא, ובאופן גובר גם באמצעות PowerShell, שהוא scripting shell חזק מאוד; החל מ-Windows Server 2019 היא כוללת גם שרת OpenSSH אופציונלי, כך שגם שם זמין shell מרחוק מבוסס טקסט בלבד. בשני העולמות האוטומציה פועלת היטב כיום. ההבדל המעשי הוא שניהול Linux מבוסס טקסט וקל לתנועה, בעוד שניהול Windows היה היסטורית מבוסס גרפיקה, כאשר PowerShell מצמצם את הפער. אם אתם מריצים many servers at once, מודל הטקסט וה-SSH גדל באופן טבעי עם כלים כמו Ansible.
Web ו-application stacks
ה-open-source web stack התפתח על גבי Linux. Nginx, Apache, רוב מסדי הנתונים, וסביבות ההרצה (runtimes) הנפוצות של שפות תכנות, כולם פועלים בצורה הטובה ביותר ומתועדים בצורה הטובה ביותר על Linux, וה-classic LAMP stack הוא טבעי ל-Linux. Windows Server מריצה עומסי עבודה של Web באמצעות IIS והיא הבית הטבעי עבור ה-classic .NET framework ו-Microsoft SQL Server. שימו לב ש-.NET מודרני, שנקרא בעבר .NET Core, הוא cross-platform ורץ היטב על Linux, לכן אפליקציית .NET חדשה אינה מחייבת שימוש ב-Windows כפי שעשה ה-framework הישן. התאימו את השרת ל-stack: web open-source על Linux, ושירותים ספציפיים ל-Microsoft על Windows.
Active Directory ו-Microsoft ecosystem
זוהי הסיבה הבודדת והברורה ביותר להריץ Windows Server. Active Directory, מערכת ה-directory והזהות שעליה בנויים רוב רשתות ה-Windows הארגוניות, היא תפקיד (role) של Windows Server, והיא מהווה את הבסיס ל-group policy, single sign-on וניהול מרכזי של שולחנות עבודה ב-Windows. אם הארגון שלכם פועל על Active Directory, Exchange, או מוצרי שרת אחרים של Microsoft, Windows Server אינו באמת אופציונלי עבור התפקידים הללו. שרת Linux יכול להצטרף ולבצע אימות מול דומיין Active Directory, אך הוא אינו מחליף את ה-domain controller עצמו.
אז במה כדאי להשתמש?
השתמשו ב-Linux עבור שרתי Web, hosting לאפליקציות, containers, וכל דבר שבו אתם רוצים עלות נמוכה, צריכת משאבים קטנה ואת ה-open-source ecosystem, המהווה את רוב עומסי העבודה הפונים לאינטרנט. השתמשו ב-Windows Server כאשר אתם זקוקים ל-Active Directory, ה-classic .NET framework, Microsoft SQL Server, או אפליקציה שרצה ב-Windows בלבד. ארגונים רבים מריצים את שניהם ובוחרים לפי תפקיד. אם מערכת ההפעלה שאתם שוקלים מול Linux היא FreeBSD ולא Windows, the Linux versus FreeBSD comparison עוסק בכך.
אם אתם שוקלים את צד ה-Unix באופן רחב יותר, FreeBSD 15 as a server operating system ראוי לבדיקה.
FAQ
Is Linux better than Windows Server?
אף אחת מהן אינה טובה יותר באופן מופשט. Linux היא ברירת המחדל הטובה יותר עבור web hosting, containers, ושרתים רגישים לעלות או מוגבלים במשאבים, מכיוון שהיא חינמית, קלה, וה-open-source ecosystem בנוי עליה. Windows Server טובה יותר כאשר דרושים Active Directory, ה-classic .NET framework, Microsoft SQL Server, או אפליקציית עסקית שרצה ב-Windows בלבד. התשובה הנכונה תלויה בעומס העבודה.
Is Linux more secure than Windows Server?
אף אחת מהן אינה מאובטחת באופן אוטומטי, וניתן להריץ את שתיהן בצורה מאובטחת. Linux מעניקה לכם משטח תקיפה (attack surface) ברירת מחדל קטן יותר בשרת: התקנה מינימלית אינה מריצה שולחן עבודה גרפי ופחות שירותים, ועדכוני אבטחה הם חינמיים בכל הפצה. Windows Server היא מטרה גדולה ואחידה יותר ל-malware נפוץ, אך Microsoft מעדכנת אותה בלוח זמנים חודשי צפוי והיא ניתנת לחיזוק (hardening) היטב. בפועל, החשיפה, הקונפיגורציה ומשמעת העדכונים קובעים את האבטחה הרבה יותר מהשם של מערכת ההפעלה.
Why is a Windows VPS more expensive than a Linux one?
מכיוון ש-Windows Server היא תוכנה מורשית ועלות הרישיון כלולה במחיר התוכנית, בעוד ש-Linux היא חינמית להרצה. ספק hosting משלם ל-Microsoft עבור כל שרת כדי להציע Windows, ועלות זו מועברת אליכם. VPS של Linux באותו גודל אינו נושא רישיון כזה, ולכן הוא בדרך כלל עולה פחות עבור אותם CPU, memory ודיסק.
Can I run .NET applications on Linux?
כן. .NET מודרני, שנקרא בעבר .NET Core, הוא cross-platform ורץ היטב על Linux, לכן אפליקציות .NET חדשות אינן דורשות Windows. החריג הוא ה-Windows-only .NET framework הישן וקוד התלוי ברכיבים ספציפיים ל-Windows, שעדיין זקוקים ל-Windows Server. בדקו לאיזו גרסת .NET האפליקציה מכוונת לפני שתבחרו את מערכת ההפעלה.
Do I need Windows Server for Active Directory?
עבור domain controller אמיתי של Active Directory, כן. Active Directory הוא תפקיד ב-Windows Server, ואין תחליף Linux מובנה עבור ה-domain controller עצמו. שרתי Linux יכולים להצטרף ולבצע אימות מול דומיין Active Directory, ו-Samba 4 יכול לשמש כ-domain controller מלא של Active Directory עבור דומיינים קטנים ובינוניים, עם מגבלות ידועות סביב forest trusts וכמה תכונות AD חדשות, אך רוב רשתות ה-Microsoft בייצור עדיין מריצות את ה-domain controllers שלהן על Windows Server.