אם אתם שוקלים להפוך לאנשי DevOps בחברות הייטק, תצטרכו להכיר לא מעט מונחים ולהיחשף שהם לא רק טכנולוגיים, אלא גם מעוגנים בתרבות ההייטק ובמתודות עבודה הנהוגות בסקטור. כמו כן, תצטרכו להבין באמת כיצד עובד "פס הייצור" הזה של ההייטק, בו רעיון הופך למוצר בקצה התהליך. לעתים, ניווט בין המונחים הטכנולוגים ומונחי המתודה השונים, מרגיש קצת כמו ללמוד סינית. יתרה מכך, לעתים כדי להבין מונח מסוים, צריך להבין קודם לכן איך דברים עובדים באמת. משום כך, בחרנו להביא בפניכם מאמר שמסביר לעומק את אחד מהמונחים הללו, Nginx (מבוטא כ-“Engine X”). לאחר קריאה במאמר הלא-ארוך הזה, תדעו מה זה Nginx באמת, ותוכלו להבין טוב יותר את עולם העבודה של מפתחים, אנשי DevOps, ועוד.
כך מפתחים תוכנה בימינו
לפני שנסביר מה זה Nginx, ניתן מעט רקע הכרחי. בעבר פיתוח תוכנה נעשה בצורה לינארית, במה שכונה "שיטת המפל": מסיימים שלב אחד, ומתקדמים לשלב הבא, עד שיש מוצר שלם. כיום לעומת זאת פיתוח תוכנה נעשה בשיטת Agile, לפיה מספר דברים נעשים במקביל. בהתאם לכך, פיתוח תוכנה נעשה כך שיש אנשים שיש מפתחי תוכנה העוסקים בפיתוח, וכן אנשי Operations העוסקים בכל הנוגע ליצירת התשתיות למפתחים; אנשי ה-Ops מקימים שרתים ומטפלים בתקשורת, מרמת הכבלים לרמת הפרוקסי, וכן אחראים על ביצוע של כל מיני משימות שהן "בין תוכנה לחומרה". בתווך של הכל נמצאים אנשי ה-Devops, שהם מצד אחד מבינים את הצרכים של המפתחים, ומצד שני באים מעולם ה-Ops, ויודעים להעלות את קצב העבודה ולשפר תהליכים ביעילות.
למה באמת צריך אנשי DevOps? משום שבשנים האחרונות, הנושא של הקמת תשתיות למפתחים הפך מורכב יותר ויותר, משום ההסתמכות על תשתיות ענן: היום הקמת שרתים וסביבת פיתוח נעשית על שרתים מרוחקים, כלומר לא בשרתים המאוחסנים פיזית בשליטת החברה המפתחת, אלא בחברה המספקת שירותי ענן, שהם שרתי אינטרנט מהירים וחזקים מאוד, עליהם בנויה ומאוחסנת התוכנה. כדי לסבך עוד טיפה את העניינים, נסביר שגם את המילה "שרת" צריך לפרק, היות וישנם סוגים שונים של שרתים, המשמשים למטרות שונות.
אז מה זה Nginx?
כל זה מביא אותנו לעניינו: מה זה nginx? בעצם חלק גדול מהאתרים בעולם בנויים על שני שרתים: Apache או Nginx. שרת אפאצ'י הוא שרת המפותח במסגרת פרויקט קוד פתוח, והוא השרת הנפוץ ביותר בעולם ה-Web, וכן הוא ברירת המחדל במערכות לינוקס. שרת אפאצ'י תומך במגוון רחב של הרחבות, הוא מאפשר התאמות שונות למפתחים ועוד. שרת Nginx (גם הוא מפותח בקוד פתוח) הוא שרת אינטרנט שיש לו יכולת עיבוד מהירה במיוחד, ויכולת להתמודד עם עומס גדול של בקשות גולשים, תוך שימוש במשאבים מועטים. מול האפאצ'י, ה-Nginx הוא "רזה יותר" ביכולותיו, אך יעיל יותר בהתמודדות עם טקסט סטטי.
משום כך, ישנם אתרים ויישומי תוכנה רבים המשלבים שרתי Nginx עם שרתי אפאצ'י. למעשה השימוש הפופולרי והנפוץ ב-Nginx הוא כשרת פרוקסי הפוך: שרתי פרוקסי הפוכים יכולים לנצל משאבים של שרתים רחוקים, תוך שהם שומרים גרסת מטמון רחבה במחשב המקומי. לכן אם נדרש עיבוד בהמון בקשות בחלק מסוים לאתר, שולחים אותן לשרת Nginx, שיכול להתמודד איתן ביעילות, בעוד רוב החלקים באתר בנויים ב-Apache (בשרתי פרוקסי הפוך, הגולש לא יכול לדעת בכלל שמדובר בשרת נפרדים). כל זה מאפשר איזון עומסים יעיל באתר. כמו כן, שרתי Nginx מאפשרים להעניק שכבת הגנה נוספת כגון SSL וחומת אש.