כלי הפיתוח שאתם חייבים להכיר
קבלו את ארגז כלי הפיתוח שחובה להחזיק קרוב לשימוש תכוף
רגע לפני שאנחנו יוצאים לקרב המכריע רצוי מאוד לוודא שכולם עשו את ההכנות הרצויות, כדי שלא נגלה באמצע הדרך שהמימיות ריקות. גם בעולם פיתוח התוכנה צריך לבצע את ההכנות הללו. אמנם מדי פעם תמצאו חבורה מצומצמת של יוצאי ממר"ם או 8200 שמצליחים לעשות קפיצה קוואנטית ולשנות את התעשייה, אבל גם הם בד"כ הגיעו עם הרגלים ותשתיות מוכנות מהבית.
אז מה צריך להכין?
Source Control: המקום שבו ישמר הנכס החשוב ביותר שלכם אחרי האנשים. הכלים המובילים היום הם TFS בעולם המיקרוסופט, SVN בעולם שאינו מיקרוסופט (וגם לא מעט מפתחי .Net נהנים פחות או יותר להשתמש בו) ו – Git הכוכב העולה החדש המגיע מעולם הפיתוח המבוזר של הקוד הפתוח. כמובן שיש כלים נוספים בינהם כלי Rational.
כלי ניהול משימות: המקום שבו תרשמו את המשימות שלכם. הכלי הבסיסי ביותר שכולכם תחזרו אליו (או תתחילו איתו) כששום דבר לא יעבוד: הלוח המחיק או ה – White Board. מלבדו ישנם כלים רבים המתחלקים לשלושה סוגים:
- כלים הכוללים תמיכה בניהול תהליך ניפוי הבאגים (Bugzilla ו – Trac).
- כלים עם אוריאנטציה של ניהול משימות כדוגמת BaseCampHQ (מוגש בהמלצה חמה).
- כלים שמשתלבים בסביבת הפיתוח כדוגמת ה – TFS של מיקרוסופט וה – Rational של IBM.
סביבת הפיתוח: לכל שפה ולכל מפתח יש סביבת העבודה המועדפת עליו, ולכן אני אמנע מלהמליץ לכם במה לבחור. עם זאת ישנם תוספים רבים שמאוד מומלצים כדי לשפר את איכות הקוד ומהירות הכתיבה שלו. לדוגמה למפתחי .Net השימוש ב – Resharper הוא הכרח ותצטרכו לפתוח את הכיס בשבילו.
Unit Tests: כתבתם קוד? רצוי מאוד שתהיה לכם סביבה מסודרת לכתיבת בדיקות יחידה (וגם בדיקות נרחבות יותר במקרה הצורך). מימוש טוב של בדיקות אלו יאפשר לכם לבצע אוטומציה מלאה לקוד ולזהות שבירה שלו (ולחסוך הרבה שעות שינה וכאבי לב). הסביבה הנפוצה ביותר בתחום היא משפחת ה – XUnit הכוללת את JUnit ל – Java, ה – NUnit לעולם ה – .Net ו – SimpleTest לעולם ה – PHP. ההמלצה שלי: אל תחפשו בכלל פתרון אחר למשפחה הזאת. טיפ למתקדמים: תוכלו לשלב פתרונות Mock המסמלצים מוצרים חיצוניים כמו בסיסי נתונים על מנת לבודד את בדיקות היחידה שלכם. אחת החברות המובילות בשוק זה היא TypeMock הישראלית.
Code Review Procedures: רגע לפני שאתם מכניסים את הקוד לתוך כלי ניהול התצורה שבחרתם, מומלץ מאוד שכל שורת קוד ששונתה תעבור לפחות עין בוחנת נוספת. איך עושים את זה? ראו את הפוסט אז מה היה לנו?
Continuous Integration: או בקיצור CI: אחרי שכתבתם קוד מסודר, הטמעתם מערכת ניהול תצורה ויש לכם אפילו 100% כיסוי עם בדיקות אוטומטיות, למה לא לדאוג שהגרסה האחרונה שנמצאת במערכת בקרת התצורה תקינה ואין בה באגים? למה לחכות עד לסיום הגרסה ובדיקות האינטגרציה? בחירה בכלי מתאים כדוגמת TeamCity, FinalBuilder או Jenkins (לשעבר Hudson) יעשו את העבודה. הכלים הללו יודעים לזהות ביצוע Commit במערכת ה – Source Control שלכם, למשוך את הקוד, לבצע Build ואפילו להריץ את כל (או חלק מ)בדיקות האוטומציה שלכם. המתקדמים ביניכם יוכלו לשלב גם Build לילי עם בדיקות מסיביות יותר כדוגמת בדיקות עומסים.
רוצים להוציא מהם עוד? הכלים הללו גם יודעים לאתחל את בסיס הנתונים ואפילו לממש את השלב הבא: Continuous Deployment שיביא את הקוד שלכם ממש אל המשתמשים.
Continuous Deployment: או בקיצור CD: מימשתם את התהליך שבודק את הקוד? נותנים שירות ללקוחות שלכם (לדוגמה מערכת SaaS)? פתרונות ה – CD לוקחים אתכם צעד אחד קדימה, ומתקינים את הקוד בשידור חי אצל המשתמשים שלכם. עם קצת מיומנות ובטחון תגיעו לעד עשרות התקנות בייצור ביום! הכלים שישמשו אתכם למהלך הם Selenium, BuildBot, Atlassian Bamboo, Chef ו – Puppet.
Logging/Tracing/Analytics: מעלים את הקוד לייצור? רוצים לדעת מה הולך שמה? רוצים לראות איזה Exceptions עפו? במה משתמשים באמת משתמשים ובמה לא? מבחר כלים ואמצעים יעמדו לרשותכם:
Logging/Tracing: הכלי הבסיסי ביותר, שילוב של API חיצוני בתוך הקוד יאפשר לכם לתפוס שגיאות או לציין נקודות משמעותיות בתוך הקוד ולרשום אותן החוצה לעיון מאוחר יותר. השליטים הבלתי מעורערים בתחום הזה הם כלי ה – Log4X וביניהם Log4J ו – Log4Net. המלצה חמה: אם המערכת שלכם גדולה, אל תתפתו לשמור את קבצי ה – Log בבסיס הנתונים עצמו. הסיבה לכך היא שזהו מתכון בטוח לבעיות ביצועים בייצור, ולטבלאות שיהיה קשה מאוד לתשאל אותן במקרה הצורך. התחליף המומלץ הוא שמירת הנתונים לדיסק ושימוש בכלי MapReduce ובראשם ה – Hadoop לביצוע אנליזות.
Analytics: רוצים לדעת איפה המשתמשים שלכם? כמה זמן הם בכל עמוד? ומה המסלול האהוב עליהם? Google Analytics החינמי הוא הכלי הבסיסי ביותר והנפוץ ביותר בתחום. אם אתם רוצים לדעת אינפורציה נוספת תוכלו לעשות שימוש בכלים נוספים שכל אחד מהם מביא את היכולות שלו:
- מפות חום: רוצים לדעת על מה המשתמש מסתכל? איפה הוא מתמקד במסך? איך הוא מטייל בעמוד? ClickTale ישמחו לעזור לכם בנושא.
- היזון חוזר? בשוק כלי Feedback רבים, המאפשרים לכם לקבל סיוע בזמן אמת מהמשתמשים שלכם, מתלונות ועד להמלצות. בין הכלים המובילים: Kampyle, GetSatisfaction ו – uservoice. תוכלו להשתמש בכלים הללו גם כדי לתעדף תכונות חדשות במוצר בשיתוף הקהילה וגם כדי לייצר קהילת משתמשים מסביב למוצר.
- רוצים לדעת מטריקות מדויקות עבור כל משתמש: totango של גיא נירפז תשמח לעזור לכם בקרוב.
ניטור סביבת הייצור: שתי משפחות מוצרי הניטור הנפוצות ביותר כיום בתחום האינטרנט (ולא רק לניטור של ה – CPU Utilization אלא גם כמה Signups לדקה יש במערכת) הם Nagios ו – Zabbix. המערכות הללו ידאגו שתתעוררו באמצע הלילה אם עשיתם שטויות במהלך היום…
הגב
17 תגובות על "כלי הפיתוח שאתם חייבים להכיר"
* היי, אנחנו אוהבים תגובות!
תיקונים, תגובות קוטלות וכמובן תגובות מפרגנות - בכיף.
חופש הביטוי הוא ערך עליון, אבל לא נוכל להשלים עם תגובות שכוללות הסתה, הוצאת דיבה, תגובות שכוללות מידע המפר את תנאי השימוש של Geektime, תגובות שחורגות מהטעם הטוב ותגובות שהן בניגוד לדין. תגובות כאלו יימחקו מייד.
אחרי למעלה משנה שימוש ב-GIT ליותר מעשה פרויקטים, ממליץ עליו לכל מפתח קוד פתוח, הוא עובד מצויין גם בסביבת לינוקס וגם חלונות. כלי פשוט, נוח וקל לשימוש, אחד היחידים שבאמת שומר על הקוד שלכם, כלי שמצריך קצת שינוי תפיסה מכאלה שהתרגלו ל-SVN, אה ולינוס טורבלדס כתב אותו.
יגאל,
תודה על ההמלצה, אתה לא היחיד, ואני חושב שגם מתכנתי קוד לא פתוח לא יסבלו יותר מדי :-)
ממשיכים לפתח,
משה קפלן
כסטודנט שצריך לבחור כלי ניהול גרסאות לצורך פרוייקט, דווקא הייתי רוצה לשמוע יותר על GIT. הזכירו את הכלי בהרצאות, אך עיקר ההתמקדות הייתה ב-SVN ו-Mercurial.
אשמח לשמוע יותר על GIT, ועל השוואה (בעיקר בין GIT ל-Mercurial, ששניהם עובדים כניהול גרסאות ביזורי בניגוד ל-SVN הריכוזי) בין הכלים השונים מאנשי המקצוע המנוסים.
תודה, ושבוע טוב,
גלעד.
תודה רבה! אני כנראה אלך על מע' מבוזרת. כלומר git או mercurial.
בפוסט שפרסמת, דווקא נראה שיש עדיפות ל-mercurial (לפחות לטענת המחבר),
אבל git נפוצה יותר בארץ. אגב, בפוסט מוזכרת גם Bazaar, ומאחר שאנחנו עובדים ב-ubuntu, אולי כדאי לבדוק גם אותה. בכל מקרה, תודה! אני אבדוק את שתי (3?) האופציות…
Redmind rocks
הזכרת מספר כלי ניהול משימות…
רדמיין היא כלי מדהים (מבוסס רובי) אשר מנהל משימות, וויקי וניהול קבצים פר פרויקט, אינטוגרציה מעולה לsource control – גיט וכדומה – אם היכולת לראות קומיטים ודיף וויזואלי על ההבדלים בין גרסאות.
אנו עובדים עם רדמיין כבר יותר מ3 שנים אפילו יצא לי להרצות על מספר פלאגינים מתקדמים שלו והשימוש שלנו בהם בדרופלקון בשיקאגו – מומלץ!
תודה ליאור!
בהחלט כלי מעניין, וטוב לשמוע המלצה חמה (בד"כ אנשים נותנים למשפחות הכלים הללו מילים חמות אחרות : -). ההמלצה האישית שלי בנושא הזה היא BaseCamp.
ממשיכים לפתח,
משה קפלן
http://blogs.microsoft.co.il/blogs/vprnd
sed s/redmind/redmine/
http://www.redmine.org/
בנוגע לcontinuous deployment כלים רלונטיים הם Apache ZooKeeper, Capistrano ן LinkedIn/Glu.
כלים כמו Puppet וChef הם עבור קונפיגורצית מכונות, הם לא דינמיים מספיק עבור CD. לא ניתן לבנות בעזרתם מערבת הגנה חיסונית גמישה מספיק לפריסה בקצבים גבוהים.
http://mevuzar.blogspot.com/
שלום ישי,
תודה על העדכונים והתיקונים! ובכלל תודה על הדחיפה של הנושא הזה בארץ!
אגב הפודקאסט שנמצא בקישור יותר ממומלץ (ובכלל הפודקאסטים של רברסים מומלצים http://www.reversim.com)
ממשיכים לפתח
משה קפלן
http://blogs.microsoft.co.il/blogs/vprnd
הכי פשוט…
תודה! :-)
תודה לך שי,
ממשיכים לפתח,
משה קפלן
http://blogs.microsoft.co.il/blogs/vprnd
גלעד, יש מידע על git, mercurial ו bazzar בפוסט הזה – http://www.newsgeek.co.il/distributed-source-control-systems-2/
כמו כן, יש מידע על מערכות ניהול פרוייקטים בפוסט הזה – http://www.newsgeek.co.il/project-management-systems/
משה, אחלה סקירה. ממצה ומאירת עיניים
זהר, תודה,
פוסטים (ועבודה) מצויינים כרגיל,
ממשיכים לפתח,
משה קפלן
http://blogs.microsoft.co.il/blogs/vprnd
אלו מסוג התגובות שאתה לא בטוח אם הן אמיתיות או פשוט SEO,
ניתן לך להנות מחמת הספק :-)
ממשיכים לפתח,
משה קפלן