« לעמוד הראשי

High Availability: Bitbucket Data Center VS GitLab HA

עדכון אחרון: 25.10.2020

gitlab bitbucket ha data center

אנו עוזרים באופן שוטף ללקוחותינו לתכנן ולממש פתרונות High Availability (להלן HA) ב- on-premises, ברשתות סגורות ובשילוב עננים, ולמגוון כלים – בפרט Bitbucket, GitLab, Jira , Artifactory, SonarQube ועוד,
ואנחנו נשאלים לעתים קרובות בנוגע לכלים לניהול קוד ובקרת תצורה: איזה פתרון HA עדיף: של GitLab או של Bitbucket ?

למעשה נושא ה- HA עצמו הוא נושא מורכב, ומכמה סיבות:

  • ישנן כל מיני דרכים לממש HA
  • הפתרון תלוי בצרכים של כל לקוח (האם לצורך ניתוב עומסים בלבד? או גם לתת שירות רציף ללא נפילות? ועוד)
  • העניין תלוי בכמה נקודות כשל הלקוח מוכן לספוג (אם בכלל)
  • זה תלוי גם בתקציב שהלקוח מוכן לשים (הכפלת רכיב לצורך HA משמעה לרוב עוד עלויות)

ולפעמים לקוחות רוצים HA אבל בפועל מתכוונים בכלל ל- DR  (שגם זה אפשרי בצורה טובה בחלק מהכלים).

 

bitbucket-vs-gitlab

כדי לענות על זה בצורה פשוטה ולא מסובכת מדי, אטען את הטענה הבאה, וגם אוכיח אותה:

בהנתן פתרון ה- HA של Bitbucket כפי שמוסבר כאן
ובהנתן פתרון ה- HA של GitLab כפי שמוסבר כאן
אזי GitLab , באמצעות חבילת Omnibus, יכול לספק HA (יתירות וזמינות גבוהה) לכל רכיב ע"מ להשיג HA רוחבי לכל הפתרון, בעוד ש- Bitbucket לא מספק יתירות לכל רכיב.

הוכחות:

  1. ב- Bitbucket, הקוד עצמו, כ- git repo's , יושב במשותף על NFS (כפי שמופיע בתרשים בקישור לעיל) . אם תהא נפילה ב- NFS או אובדן מידע – הכל יאבד.
    ב- GitLab , החל מגירסא 13.0 ( שיצאה במאי 2020) ניתן לבנות Gitaly Cluster , כך שיש כמה העתקים של ה- git repo ואין נקודת כשל בודדת (הסבר מפורט במאמר שכתבנו אז – כאן).
    בנוסף – במאמר מוסגר אציין שהרצת git מעל NFS עלולה לגרום לבעיות ביצועים (בעיה ידועה ומוכרת).
  2. המידע של ה- sessions מאוחסן ב- Bitbucket ב- application server . המשמעות היא שבמעבר לשרת אחר, ה- sessions יאבדו וכל המשתמשים יצטרכו להכנס (לעשות login) מחדש. וחלק מהמידע יאבד לגמרי (זה מוזכר במפורש במאמר של Atlassian לעיל).
    GitLab משתמש ב- Redis בתצורת HA ולכן מצב כזה לא יקרה.
  3. הפתרון הסטנדרטי של Atlassian מספק Shared DB – כלומר database משותף – שמהווה נקודת כשל בודדת (single point of failure).
    חבילת Omnibus של GitLab תומכת ב- HA של databases, כך שניתן לממש זאת בקלות רבה יותר.
  4. ב- GitLab ניתן להכפיל (ויותר) כל רכיב לצרכי יתירות, כפי שניתן לראות בדיאגרמה שבלינק שלעיל.

 

הערות:

  • שני המוצרים יודעים לספק פתרון active/active (אם כי בהבדלים ניכרים כאמור לעיל)
  • GitLab משמש במקרים רבים גם ככלי ה- CI/CD הארגוני (נוסף על היותו כלי SCM), ופתרון ה- HA מספק למעשה כיסוי מלא גם להיבטי CI/CD (כגון זמינות גבוהה של הרצת pipelines וביצוע deployment).
    Bitbucket on-prem , להבדיל, לא כולל פתרון CI/CD – כך שיש כאן יתרון מהותי נוסף ל- GitLab : בהקמת פתרון HA אפשר "לתפוס 2 ציפורים במכה אחת".
  • קיימת נטייה להתבלבל בין פתרון HA לבין פתרון DR.  ולכן Smart Mirroring של Bitbucket שמוסבר כאן הוא אינו פתרון HA . הוא נותן פתרון DR חלקי של שכפול ה- repos אבל ללא ה- metadata שבא איתם.
    ב- GitLab ניתן ליישם בעזרת "GitLab Geo" פתרון DR מלא יותר, שנותן DR גם למידע שמסביב ל- repo כמו user accounts, issues, merge requests, groups, project data ועוד.
  • דיסקליימר: אין לראות במאמר הנ"ל יעוץ גורף הנכון לכל סוגי הלקוחות והמשתמשים – תתכן שונות מלקוח ללקוח (אנו מספקים יעוץ פרטני עם מתן אחריות על ההמלצות שלנו – ובתשלום).

 

עדכון 25.10.2020:

הואיל והתוכנית העדכנית של חברת Atlassian היא לסגור את גירסאות Server ולהתמקד בפתרונות cloud, והואיל וגירסת Data Center בסופו של דבר מסתמכת על גירסת Server (כפי שכתוב כאן: "Bitbucket Data Center and Bitbucket Server are in fact the same build of Bitbucket") , אזי העתיד של גירסת Data Center לא כ"כ ברור בנקודת הזמן הנוכחית, ולא ברור מה תעשה איתו החברה בעתיד.
אנו נעדכן את המאמר הזה כאשר תתבהר התמונה (אפשר להירשם בתחתית המאמר לקבלת עדכונים)

נ.ב. לקוחות גם שואלים איזה פתרון יהא זול יותר מבחינת עלויות רישוי ומחירים (וגם עלות כוללת TCO) .  על זה לא אענה כאן מהסיבה שהיצרנים משנים את המחירים בתכיפות גבוהה. על זה נשמח לענות בצורה פרטנית בפניה אלינו.

 

חברת ALM-Toolobx מסייעת לחברות בבחירת כלי פיתוח, בדיקות, CI/CD וכלים לסביבות production, ובתכנון והטמעת פתרונות HA ו- DR אפליקטיביים. בין השאר אנו מייעצים בכלים מבוססי git ומוכרים רשיונות של GitLab ו- Bitbucket .
ליצירת קשר: devops@almtoolbox.com או טלפונית 072-240-5222 .

 

קישורים רלוונטים: