ההשפעה של מהנדסים ראשיים באדריכלות תוכנה והחלטות עיצוב
מהנדסים ראשיים הם המנוף הטכני של ארגוני תוכנה מודרניים, המשפיעים על תרומה של קוד בודד.החלטותיהם מעצבים את האדריכלות הבסיסית ועיצוב המערכות, השפעה ישירה על יכולת סקאלה, שמירה על יכולת וכדאיות עסקית ארוכת טווח.הבנת האופן שבו מנהיגים טכניים בכירים אלה פועלים - ואת המשקל הספציפי שלהם בחירותיהם לשאת - חיוני עבור כל ארגון הנדסי המנסה מצוינות תפעולית וחדשנות.
התפקיד של מהנדס ראשי
מהנדס ראשי יושב בצומת של מומחיות טכנית עמוקה וחשיבה עסקית אסטרטגית.בניגוד למהנדסי הצוות שעשויים להתמקד בבעיות מורכבות ספציפיות, מהנדסים ראשיים לוקחים מבט רחב מערכתי, לעתים קרובות פועלים על פני קבוצות ופרויקטים רבים.הם לא רק תורמים בודדים בכירים ביותר; הם פועלים כ מכפילים כוחיים אשר מציבים כיוון טכני, מנטור מהנדסים אחרים, ומניעים קוהרנטיות ארכיטקטונית על פני הארגון להנדסה כולה.
תפקיד זה שונה מזה של אדריכל תוכנה ייעודי או מנהל טכני.אדריכלים בדרך כלל מגדיר טביעות אצבע ברמה גבוהה אבל לא יכול להישאר עם יישום.מנהלים מעדכנים אנשים ותהליך. מהנדסים ראשיים משלבים את שניהם: הם נשארים מעורבים עמוק קוד, ביקורות, ודיונים עיצוב תוך כדי דבקות גם עבור החלטות טכניות כי תואמים עם מטרות עסקיות שלהם מגיע ממומחיות מוכחת, לא היררכיה פורמלית, נותן להם את האמינות, לתת את האמינות לאמינות על מנת לקבל החלטות השכבת כדי פריסה כדי להפיץ נתונים.
בפועל, מהנדס ראשי יכול לבלות יום הערכה של טכנולוגיית מסד נתונים חדשה, המוביל סקירה ארכיטקטורת עבור שירות חדש, בעיות בפתרון אירוע ייצור, והדרכה צוות על תבניות עיצוב API.ההשפעה שלהם מורגשת בבריאות ארוכת הטווח של בסיס הקוד ואת המהירות שבה צוותים יכולים לספק תכונות ללא צמצום החוב הטכני.
פיתוח תוכנה
ארכיטקטורת תוכנה היא על המבנים הבסיסיים המגדירים מערכת: מרכיביה, מערכות היחסים שלהם, והעקרונות השולטים בעיצובם ובאבולוציה שלהם.מהנדסים ראשיים הם ה-Arbiters העיקריים של מבנים אלה.החלטותיהם על דפוסים אדריכליים, ערימות טכנולוגיה, ודאגות ממושכות, יוצרים את השפע שעליו כל לוגיקה יישום מונחה.
בחירת דפוס אדריכלי
אחת ההחלטות הבולטות ביותר שהמהנדס הראשי עושה היא בחירת הסגנון האדריכלי של מערכת – או להנחות את האבולוציה של דפוס קיים. Common כוללים מיקרו-שירותים, ארכיטקטורות מונוליטיות, מערכות מונחות אירועים, וארכיטקטורה ממוקדת שירות. לכל אחד יש פערים מסחריים עמוקים. לדוגמה, בעוד מיקרו-שירותים יכולים לספק יכולת עצמאית של גיבוש צוות ואוטונומיה, הם מציגים מורכבות בניהול נתונים מבוזרים, רשתות ניהול נתונים, מהנדסי מסחר ומעבדות, על פני מבנה מסחר ראשי.
מהנדס ראשי מנוסה יודע שהאדריכלות הטובה ביותר היא זו שמתאימה להקשר הנוכחי.הם עשויים לתמוך במונוליטיקה ממונונית היטב בחייו של סטארט-אפ, ובהמשך להנחות את המעבר למיקרו-שירותים כמו צרכי סקאלה, כמו גם לאכוף עקרונות אדריכליים מרכזיים: הפרדה של חששות, הפיכה חופשית, דבקות גבוהה, והסתמכות על משאבים חיצוניים כגון LTF:0 Martin Fowical שימושי של דיונים אלה, אך מספק את עקרונות עבודה של 1:1-זמנית, אך ורק על בסיס שימושי.
החלטות טכנולוגיות
בחירת טכנולוגיות - הכנת שפות, מסדי נתונים, מערכות מסרים, שירותי ענן - היא תחום אחר שבו מהנדסים מרכזיים יש השפעה גדולה.הבחירות האלה הן לעתים רחוקות על איזה כלי הוא "טוב ביותר"; במקום זאת, הם כרוכים בהערכה של גורמים כמו היכרות צוות, בגרות אקולוגית, תמיכה קהילתית, רישוי, עלות, ותחזוקת לטווח ארוך. מהנדס ראשי חייב לאזן את כל המתקנים החדשים נגד הסיכון של היכרות עם מצבי כישלונות או כישלונות לא ידועים.
לדוגמה, בחירת חנות מסמך NoSQL על מסד נתונים יחסי עשוי לשפר את מהירות המפתח עבור סממות גמישות אבל סיבוך מחויבויות ודיווח. מהנדס ראשי יוביל אדריכלים וצוותים באמצעות תהליכי קבלת החלטות מובנים, לעתים קרובות באמצעות רשומות החלטות אדריכליות (ADRs) כדי לתעד רציונלי.הם גם לבסס מכשולים תפעוליים - כגון רשימות טכנולוגיה מאושרות או ביקורות עיצוב חובה - כדי למנוע את הארגון מסחף לסיוט קוגניטיבי ולהגדיל את החיכוך תפעולי.
דאגות הקשורות ל-Cros-Cutting
אדריכלות אינה רק על קידוד פונקציונלי; היא חייבת לענות לדרישות לא פונקציונליות (NFRs) כי חתך את המערכת כולה. אבטחה, ביצועים, זמינות ויעילות עלות הן חששות ראשוניים.מהנדסים ראשיים להבטיח כי אלה אינם לאחר מחשבה. הם אלה פרקטיקות כמו הגנה לעומק, קצב, מצמצם, שוברי מעגלים, ושפל חינניח. בעת תכנון יכולת מדרגת, הם מעדיפים דפוסים כמו מאורע ומיקורק CQ, וכאשר הם יכולים לעמוד בעומס המתאים, ולוודא קיבולת הנדסית תואמת באמצעות קיבולת הכאוס.
מנהיגות בתחום זה כוללת לעיתים קרובות תקני כתיבה, סקירה של עיצובים לציות, והפעלה של רטרוספקטיבציות אירועים המזין בחזרה לשיפורים אדריכליים.ה-FLT:0Google SRE ספר פיתוי 1 מבטאת רבים מהעקרונות הללו, והמהנדסים העיקריים הם אלה שמתאימים אותם להקשרים הארגוניים שלהם.
החלטות עיצוב בכל רמה
מעבר לאדריכלות ברמה גבוהה, מהנדסים מרכזיים משפיעים על החלטות עיצוב מפורטות הקובעות כמה טוב הארכיטקטורה מממשות בקוד.אלה כוללים חוזים API, מודלים של נתונים, אסטרטגיות טיפול שגיאות, גישות בדיקה ודפוסי פריסה. בעוד צוותים בודדים מקבלים החלטות עיצוב יומיומיות עד היום, המהנדס הראשי מספק את המסגרת ולעתים קרובות סוקר מסמכים עיצוב קריטיים או משתתף בסקירות קוד עבור רכיבי ליבה.
API ו- Interface Design
די עיצוב APIs לגרום לבעיות קידוד: אסטרטגיות הפיכה הדוקות, טקסים יקרים, ושילובים קשים.מהנדסים ראשיים מגדירים מוסכמות עבור ממשקי RESTful או gRPC, אסטרטגיות קידוד ופורמטים תגובה שגיאה. הם דוחפים לדפוסים עקביים כך שהצרכנים יכולים לחזות התנהגות.לדוגמה, הם עשויים לחייב כי כל ה- API מחזיר שגיאות בנויות קודים שניתן למכונה וכל המוטציות הן ניתוק במהירות של מערכות חדשות.
מודלים ואחסון
הנתונים הם הדם של רוב המערכות, והמהנדסים העיקריים עושים או מאשרים החלטות מודל נתונים מפתח.הם מחליטים על נורמליזציה לעומת דה-נורמליזציה, אסטרטגיות מפתח עיקריות, תוכניות אינדקס וניהול מחזור חיים של נתונים.הם גם מייעץ על פערים בין עקביות וזמינות, לעתים קרובות מתייחס משפט CAP או מודל PACELC בסופו של דבר. בעת אימוץ עמידות פוליגלובט, הם להבטיח נתונים על פני עקביות גסה על פני מוטציות ותבניות הוא כמו סאגה או רזולוציה של קיבולת היא עם רזולוציה.
אחריות וסובלנות
תכנון לכישלון הוא סימן ההיכר של הנדסה בוגרת.מהנדסים ראשיים תומכים בדפוסים כמו פיגור אקספוננציאלי, תהלוכות זמן, ראשי ראשים, ועסקאות מסכימות.הם מניעים את אימוץ בדיקות בריאות, פורצי מעגל, והפסקתי חסד.החלטותיהם סביב אסטרטגיות פריסה - פריסות ירוקות כחולות, מהדורות יכולות, דגלים תכונה - באופן ישיר את יכולת ההתאוששות של המערכת ואת היכולת של הצוות להתאושש במהירות שגיאות.
מינוף חדשנות וחובות טכניים
אתגר ראשוני למהנדסים ראשיים הוא ניהול החוב הטכני תוך מתן אפשרות לחדשנות.הם חייבים להחליט מתי לקבל יעילות לטווח קצר למהירות ומתי להשקיע במימוש כדי למנוע הדבקה ארוכת טווח.זה דורש הבנה עמוקה של מפת דרכים המוצר, יכולת צוות, ועלות המורכבות האמיתית.
מהנדסים ראשיים לעתים קרובות להוביל יוזמות לשלם את החוב: הגירה ממסגרות מורשת, פיצול מונוליטיות, שיפור כיסוי הבדיקה, או צינורות פריסה אוטומטי.הם גם להזיז תוספות חדשות למערכת, להבטיח כי כל תכונה חדשה או שירות מוצדק על ידי ערך עסקי ואינו מוסיף מורכבות מיותרת.הם משתמשים במדדים כמו מורכבות מחזורית, chuph קוד, ואירוע לזהות אזורים זקוקים לתשומת לב.
חשוב לציין, הם גם לטפח תרבות הנדסית שבה חדשנות בטוחה.על ידי השקעה בפרקטיקה טובה של בדיקות, שילוב מתמשך, וצייתנות, הם מאפשרים לצוותים להתנסות ללא שידור הייצור.הם אלהפים הוכחה של פרויקטים של תפיסה עבור טכנולוגיות חדשות וליצור מרחב עבור האקרים או החידושים. גישה מאוזנת זו מונעת הן קיפאון והן כאוס, מה שהופך את הארגון להתאמה והתאמה.
מסקנה
ההשפעה של מהנדסים ראשיים על ארכיטקטורת תוכנה והחלטות עיצוב לא ניתן להפריז.הם הם הדירקטורים של חזון טכני, להבטיח כי מערכות בנויות על יסודות מוצקים, בעודם מתאימים לשינויים בדרישות.השפעתם חודרת כל בחירה ארכיטקטונית - החל מתבנית התגברה לחוזה ה- API המצויר בחיוב - וההנחיות שלהם לגבי חששות ממושכים כמו אמינות, אבטחה, ושמירה על יכולת גבוהה למנוע התחדשות ורווחים.
ארגונים שמשקיעים בטיפוח מהנדסים חזקים ועצימים אותם עם סמכות קבלת החלטות אמיתית רואים מהירות הנדסית גבוהה יותר, שיעורי תקרית נמוכים יותר, ומשלוח צפוי יותר.אלה יחידים אינם אופציונליים; הם מהווים גורם הצלחה קריטי עבור כל חברה המונעת על ידי טכנולוגיה השואף לבנות מערכות תוכנה חזקות, מדרגיות וארוכות-זמן.
לקריאה נוספת על שיטות אדריכליות ועיצוב הטובות ביותר כי מהנדסים ראשיים לעתים קרובות אלוף, מתייחס לכותבים על (FLT:0) ארכיטקטורת ארכיטקטורת קיקט 1:1 על ידי רוברט C. מרטין ו-FLT:2 (Google Cloud Architecture Framework) 3FLT, המספקים תבניות מעשיות עבור מערכות בקנה מידה ארגוני.