Telecom News - VoIP OTT – על קוצו של קידוד ואיתות: תיאור בניית פתרון SDK משופר

VoIP OTT – על קוצו של קידוד ואיתות: תיאור בניית פתרון SDK משופר

דף הבית >> חדשות עולם המרכזיות ומוקדי השירות >> VoIP OTT – על קוצו של קידוד ואיתות: תיאור בניית פתרון SDK משופר
VoIP OTT – על קוצו של קידוד ואיתות: תיאור בניית פתרון SDK משופר
מאת: ניר סמיונוביץ, 8.3.15, 17:30ניר סמיונוביץ
 
במאי תיערך סדנה לפיתוח אפליקציות VoIP OTT באנדרואיד, שתועבר בחינם לעד 6 משתתפים ב-40 שעות, בה יילמדו עקרונות בסיס בכתיבת אפליקציות VoIP OTT. היא מיועדת לבעלי ניסיון בפיתוח אפליקציות או בעלי ניסיון בשפת JAVA.
 
אחד הנושאים החמים ביותר בתחום המחשוב הארגוני הוא BYODBring Your Own Device. מצד אחד, עולם ה-IT רואה ב-BYOD אמצעי לגיטימי להורדת עלויות המחשוב בארגון (דרך Desktop Virtualization וכו'), ומצד שני קיימות בעיות הנוגעות לאבטחת מידע.
 
אחד המקומות בהם BYOD היה קיים, הרבה לפני שהמושג היה בכלל שגור בפינו, היה עולם הטלפוניה הארגונית. ב-2006 הוציאה חברת נוקיה מכשיר מדהים – הנוקיה E61. לנוקיה E61, וכך כמעט לכל מכשירי סידרת ה-E, היה משולב Sip Client מובנה. כמעט כל אדם, שהתקין באותו זמן מרכזיית IP, רצה לחבר את הטלפון דרך רשת ה-Data של הארגון או דרך חיבור 3G למרכזיה הארגונית. הרי זה היה הפתרון לנושאי ה-Roaming הכל כך כואבים. אבל יחד עם זאת, שהמכשיר נתן את היכולות, עדיין הקידודים הנתמכים בטלפון לא איפשרו שירות הולם. כך, עולם זה נדם לו.
 
נתקדם קדימה בזמן 9 שנים ל-2015 ולמרבה הפלא, עדיין יש פתרונות למכביר בנושא, אבל עושה רושם, שכולם נופלים באותם מקומות. עדיין נושאי האינטגרציה בעיתיים, יש אפליקציות למכביר אבל אף אחת לא נותנת מענה מלא בצורה אינטגרטיבית. התוצאה ברורה: שלל אפשרויות כאשר לאף לא אחת מהן יש יתרון ברור אחת על השנייה.
 
מול עולם האפליקציות קיים עולם שלם המניע את העולם הזה - עולם ה-SDK. עולם שלם של ערכות פיתוח שונות המספקות את היכולת לכתוב אפליקציית OTT משלכם לכאורה במאמץ יחסית קטן. אבל, כמו כל עניין שיווקי, בין הפרסום לבין המציאות יש הרבה מאוד הבדל. לדוגמא, מרבית החברות בוחרות ב-PJSIP בתור ערכת הפיתוח הראשונה שלהם. הסיבה ברורה, מנוע בקוד פתוח, עלויות כניסה יחסית נמוכות ואפשרויות רישוי כלכליות וסבירות.
 
מול PJSIP, יש מנועי SDK נוספים של חברות כגון ZOIPER, COUNTERPATH, VAXVOIP, ACROBITS ועוד רבים וטובים.
 
אולם, לכל אחד מאלה יש מודל רישוי זה או אחר, חלק בנויים על מודל של עלות רישוי שנתית, חלק על עלות רישוי לכל תוכנה מורדת ולחלק מודל כל כך דרקוני, שאי אפשר אפילו לשנות את העיצוב של האפליקציה שלכם (במקרה שבחרתם ב-CSIPSIMPLE בתור הבסיס שלכם).
 
אז למה אני כותב על זה? לפני כשנתיים וחצי פנתה אלינו חברה וביקשה מאיתנו לבצע מחקר: האם קיים כלי המאפשר לכתוב Mobile SIP Phone בצורה יעילה, שתאפשר למפתחים להתרכז בשימושיות של האפליקציה, בלי צורך להתחיל להתעסק בכל מיני ענייני ,Sip שהם לא כל כך מכירים.
 
האמת הייתה, שלא מצאנו שום ,SDK שעשה את זה בצורה מספקת. כל SDK סיפק הרבה מאוד יכולות בתחום ה-SIP, אבל כאשר הגענו לנושא האינטגרציה, נאלצנו תמיד לעשות שמיניות באוויר כדי שהאפליקציה תעשה את מה שהיא צריכה לעשות, וגם זה לרוב היה צריך להיעשות ע"י העתקה של דוגמאות, שלא ממש התאימו, ובזבוז זמן בשינויי קוד, כאשר בחלק ניכר מהמקרים כל אלה לא היו ברורים למתכנתים כי הם אינם מגיעים מהעולם הזה.
 
לקחנו על עצמנו משימה, שמעט מאוד היו לוקחים: פיתוח SDK פשוט, שייתן גם איכות קוד גבוהה, גם יכולת אינטגרציה פשוטה, גם איכות קול משופרת ביחס למה שקיים והכי חשוב מבחינתנו, יכולת לתמוך בפלטפורמות שונות בצורה דומה. לקחנו לעצמנו פסק זמן של כמעט 3 חודשים מכל מה שעשינו באותה תקופה, ועבדנו על זה כעל אתגר מחשבתי. אחרי 3 חודשים קיבלנו תוצאה, שהייתה קרובה מאוד למה שרצינו.
 
על מה בנינו את הפתרון שלנו?
ידענו, שאנו רוצים לבנות את הפתרון שלנו על פתרונות מוכחים, אלמנטים טכנולוגיים העובדים בצורה ברורה עם יכולות ברורות, מדודות והכי חשוב - ניתנות לחיזוי ושליטה.
הכלים שנבחרו היו:
  • שכבת איתותים מבוססת PJSIP – אין מה לעשות, כשזה מגיע לספק שכבת SIP STACK מלאה, ללא מדיה, אבל עם כל האלמנטים הדרושים לבניית אפליקציה, ל-PJSIP יש מענה מלא. כמו כן, מודל הרישוי המאוד ברור של PJSIP איפשר אינטגרציה לאפליקציות צד ג' בצורה נוחה (כן, בשביל להכניס את PJSIP לאפליקציה שלכם, צריך לשלם למנהלי הפרויקט רישוי חד פעמי).
     
  • שכבת מדיה מבוססת WebRTC – מי שמכיר את PJSIP יודע, שיש לו שכבת MEDIA הנקראת PJMEDIA. הבעיה העקרונית הייתה, ש-PJMEDIA לא סיפק את הביצועים שרצינו, במיוחד בזמן עבודה ברשת תקשורת דור 3 או דור 2.5. אי לכך, בחרנו להשתמש בספריית ה-WebRTC של גוגל, שמספקת תמיכת Cross Platform באנדרואיד, iOS, PC ואפילו MacOS (כבר שמענו על יישום של הספרייה במכשירי Windows Mobile גם כן).
למרות שידענו והכרנו כל כלי בפני עצמו, החיבור ביניהם לא היה טריוויאלי, במיוחד בנושאי מיפוי הקידודים השונים ותמיכה בקידודים מתקדמים כגון OPUS ו-VP8.
 
מה ה-SDK בעצם עושה?
מי שמכיר SIP יודע, שכל דבר מתנהל לפי משהו הנקרא DIALOG. המטרה של ה-DIALOG היא לספק לנו מאין סדר הגיוני בתוך כל בלאגן האיתותים האפשרי של SIP. מימוש של DIALOG יכול להתבצע בכל מיני צורות. אולם, לנו, היה הכי הגיוני לבנות סט של מכונות מצבים שונות בתוך ה-SDK, שמממש את כל התרחישים הדרושים לצורך בנייה של אפליקציה. מתרחיש רישום, דרך חיוג ועד החלפת רשתות תקשורת בזמן אמת – לכל אלה חייב להיות משהו בתוך ה-SDK המטפל בהם בצורה שקופה.
 
בזמן הפיתוח היינו בקשר עם מפתחים מחברות שונות, שפיתחו מוצרי OTT שונים מסוגים שונים. גילינו, שלכולם היה מכנה משותף: היו להם מפתחי Mobile מעולים, שמבינים איך מערכות ההפעלה השונות מתפקדות. אולם, כשזה הגיע להבנת SIP, הם פשוט לא רצו להתעמק בנושא. בעבר, חברות בתחום ה-SMS וה-VoIP היו מתמקדות בטכנולוגיה אך ההתמקדות היום היא במוצר.

אחד הנושאים, שמרבית המפתחים העלו, היה עקומת הלימוד. עקומת הלימוד של PJSIP או של כלים אחרים הייתה פשוט גדולה מדי, לפעמים עד 3 חודשים. נתקלנו אפילו בחברה, שבנתה את האפליקציה שלה בתוך 9 חודשים 4 פעמים מחדש, כיוון שכל פעם התגלה משהו חדש, שדרש ממנה לשכתב חלקים ניכרים באפליקציה העוטפת שלה.
 
תפקיד ה-SDK הוא לשמש קופסה שחורה למפתח, רכיב תוכנתי כמעט הומוגני לחלוטין, שניתן לשלב אותו לקוד קיים, בלי צורך להתחיל לעשות שמיניות באוויר כדי לגרום לו לעבוד. כלומר, בניגוד לעבודה רגילה עם PJSUA הדורשת מהמפתח להסביר לאפליקציה מה קורה אחרי INVITE, ה-SDK יעטוף את הנושא לפונקציה אחת פשוטה וקריאה.
 
המבנה הכללי של ה-SDK תואם לתרשים המופיע מטה:
תרשים VoIP SDK
 
סוף דבר ומסקנות
לאחר כמעט 18 חודשים של פיתוח שלחנו את ה-SDK שלנו לכמה מפתחים כדי לקבל ביקורת על מה שנעשה. התגובות לא איחרו לבוא: כן, זה עבד, כן זה סיפק את הסחורה, אבל יש עוד עבודה לעשות כדי שזה יהיה מושלם. המשכנו לעבוד עוד 6 חודשים נוספים עד שהגענו לגרסה סופית, שסיפקה את הסחורה.
 
מקצת היכולות, שבנינו לתוך ה-SDK:
  • תמיכה בתנאי רשת מחמירים (יכולת עבודה אפילו ב-15% PACKET LOSS ועדיין אספקת שמע באיכות טובה).
  • תמיכה בקידודים משתני רוחב פס ומשתני קצב דגימה (VBR).
  • תמיכה בשינוי רשתות בזמן אמת (מעבר מ-WiFi לסלולר וחזרה).
  • תמיכה בשיחות ועידה (לא קיים במנוע המדיה של WebRTC).
  • ממשק פיתוח פשוט וברור בלי צורך לבצע הגדרות מיותרות ובניית תרחישים מיוחדים.
 
מאז השקת הגרסה הראשונה של ה-SDK לפני כשנתיים, ה-SDK הוטמע במספר אפליקציות שונות. כיום, מעל 150,000 משתמשי קצה משתמשים ב-SDK. מבדיקות, שערכנו עם מפתחים הרואים את ה-SDK פעם ראשונה, הם עוברים ממצב של "אין כלום" למצב של "בדיקות אינטגרציה בסיסיות" בזמן של 2 ימי עבודה.
 
בחודש מאי הקרוב, נפתח סדנה לפיתוח אפליקציות VoIP OTT באנדרואיד. הסדנה תועבר חינם לעד 6 משתתפים במשרדי החברה בנתניה. הסדנה תהיה במסגרת של 40 שעות אקדמיות, בה המשתתפים ילמדו את עקרונות הבסיס בכתיבת אפליקציות VoIP OTT. הסדנה מיועדת למפתחים בעלי ניסיון בפיתוח אפליקציות או בעלי ניסיון בשפת JAVA. לפרטים נוספים על הסדנה, ניתן לפנות בטלפון 073-2557799.
 
מאתניר סמיונוביץ,  מרץ 2015.
מנכ"ל  GreenfieldTech 
www.greenfieldtech.net
nirs@greenfieldtech.net
VoIP Picture



 
 
Bookmark and Share