אם פייסבוק הייתה מדינה היא הייתה השלישית בגודלה בעולם- עם 350 מיליון משתמשים פעילים, 30 מיליון עדכוני סטטוס ביום וקרוב למיליארד תמונות שמועלות לשרתי פייסבוק מדי חודש- אין ספק שמדובר ברשת החברתית המובילה בעולם, ובאחד מאתרי האינטרנט בעלי שיעור החשיפה הגדול ביותר כמעט בכל מדינה (קיימת תמיכה בלמעלה מ-50 שפות).
הצמיחה המהירה של פייסבוק ברשת הובילה להשקת מערכת ה-Facebook Developer Platform במאי 2007, שאיפשרה למפתחים חיצוניים לפתח אפליקציות עבור פייסבוק. לא מעט חברות קפצו על המציאה, ובשילוב חכם של תוכן שיווקי ו-Micro Payments (רכישת תוכן וירטואלי בסכומים זניחים של סנטים בודדים) הגדילו את שיעור החשיפה שלהם בעשרות אחוזים מצד אחד, ומצד שני- רווח ישיר מ-Micro payments שעד אז נחשבו למקור הכנסה די משני. רק כדי לסבר את האוזן, זינגה- אותה חברה שהביאה לנו את אפליקציות הפראמויל והפוקר הפופולריות, מוערכת היום בשווי של כ-5 מיליארד דולר. כן, הכל מהפייסבוק. (וזה הגיע עד הפוליטיקה הבולגרית)
היום יש בפייסבוק כ-350,000 אפליקציות רשומות, המחולקות ל-FB Connect, Desktop ו-Platform (עוד נלמד על ההבדלים ביניהן בהמשך..). מתוכן 5000 אפליקציות בעלות למעלה מ-10,000 משתמשים בחודש. פייסבוק הוכיחו שאפשר להצליח מאוד גם בלי משחקים עתירי גרפיקה, תחכום או אתגר מיוחד- ועדות לכך ניתן לראות באפליקציות שנמצאות בצמרת כבר לא מעט חודשים: גידול חווה, דגים באקווריום או פוקר חברתי (עם פוקר אני זורם, אבל תסכימו איתי שבאינטרנט של 2007 אף אחד לא העלה בדעתו שמשחק כמו פארמויל יצליח ברמות כאלה...) . אה, שכחתי- חברתי זו מילת המפתח, וזה כל הרעיון שעומד מאחורי האפליקציות- אתה משחק עם החברים שלך, מתחרה בחברים שלך, משתף את ההצלחות שלך- לכל החברים שלך, ויכול לשלוח ולקבל מתנות- מהחברים שלך. מיזנתרופים החוצה, שיתוף זה שם המשחק.
פייסבוק והשוק הישראלי
כ-2.6 מיליון גולשים ישראלים חברים היום באתר, מה שמציב את ישראל במקום ה-13 מבחינת שיעור החדירה של פייסבוק ביחס לכלל האוכלוסייה, עם 36% (במקום הראשון במזרח התיכון). ההערכות הן שפייסבוק מתקרב לרוויה בישראל, שכן היקף החדירה לא עולה על 40% ברוב המדינות. במקום הראשון אגב, מככבת איסלנד עם 57% לעומת ארה"ב שעומדת על 39 אחוזים (כ-119 מיליון גולשים). סטטיסטיקות נוספות תוכלו למצוא כאן.
Facebook Architecture
לפני שנתחיל לפתח, חשוב להכיר טוב את הסביבה הטכנולוגית שמולה אנחנו עובדים. אז מה זה פייסבוק בעצם?
-
פייסבוק מורכב מכ-11,000 שרתי לינוקס Red hat Enterprise בתצורה מעוננת, 1800 שרתי MySQL ו-900 שרתי memcached שמאפשרים את הניווט המהיר בכל סלט המידע של הרשת.
-
בסה"כ מדובר בכ-28 טרה-בייט של זיכרון, כ-200,000 בקשות UDP עוברות שם בכל שנייה.
-
המערכת, שמבוססת על PHP, רצה על שרתי Apache ו-MySQL, עם אופטימיזציות ספציפיות לצרכים של הרשת.
-
המערכת משתמשת בשרתי memcached (מערכת ניהול קאש ואופטימיזציה מבוססת קוד-פתוח, נמצאת בשימוש ע"י מרבית האתרים הגדולים), לצורך שיפור מתמיד של ביצועי ה-DB.
-
בנוסף, פיתחו בפייסבוק את Thrift, פריימוורק ליצירת cross-language services, ומאפשר לנו כמפתחים לעבוד מול ה-API בכמעט כל שפה שנרצה (C++, JAVA, Python,c# וכמובן php).
אחרי שהכרנו מעט את המערכת (הענק הכחול :-) ), נדבר קצת על המבנה של פלטפורמת הפיתוח..
סוגי האפליקציות שניתן לפתח באמצעות Facebook Platform
Platform Applications
אפליקציות מבוססות web שמתארחות בשרתים מחוץ לפייסבוק. נכון לעכשיו מדובר בדרך הפופולריות ביותר, ובה גם נתמקד. המשתמש לא צריך לעשות דבר פרט לאשר לאפליקציה לגשת לפרטי המשתמש- ולהתחיל להשתמש בה.
Desktop Applications
אפליקציות חיצוניות, כמו הרחבות לדפדפנים, תוכנות עצמאיות וכו'.
Facebook Connect
פייסבוק מאפשרת למפתחים להטמיע את הפלטפורמה של הרשת באתרים חיצוניים. האינטגרציה באה לידי ביטוי ביכולת להכנס לאתר (במידה וקיים מנגנון ניהול משתמשים) באמצעות פרטי הכניסה לפייסבוק, יכולת להטמיע מערכת תגובות, דירוג פוסטים, Live-stream וכו'- כל זאת באמצעות חשבון הפייסבוק האישי. נדבר על כך בהרחבה בהמשך.
Facebook Platform Compnents
פלטפורמת הפיתוח של פייסבוק מורכבת מחמישה רכיבים, שמאפשרים לשכפל את ה-Look & Feel של פייסבוק באפליקציה, ולהתממשק ל-REST API בקלות:
-
FBML / XFBML (FaceBook Markup Language)- שפת תגיות שמזכירה מאוד את HTML במבנה שלה, לכל תג יש Prefix קבוע של fb:, המציין כי מדובר בתג FBML. מפורשת לרכיבי UI מוכרים של האתר- תמונות פרופיל, רשימות חברים וכו'. קיים שימוש רחב מאוד ב-FBML באפליקציות, וכדאי להכיר את התגיות הנפוצות.
-
FBJS- ספריית ג'אווה סקריפט לשימוש באפליקציות, מאפשרת לבצע פעולות שונות על ה-DOM. דומה כמובן לג'אווה סקריפט רגיל, עם הבדלים קטנים שנובעים משיקולי אבטחה של המערכת (לא ניתן לבצע למשל פעולות ב-OnLoad).
-
FQL- שפת שאילתות ל-API של האתר, סינטקס דומה מאוד ל-SQL, ולמי שיצא לכתוב שאילתה או שניים ב-SQL יסתדר במהירות עם המקבילה הפייסבוקית. מבחינת ביצועים FQL עולה על הפונקציות המובנות של ה-API, וכמובן גמישה יותר.
-
RESTful API- ה-API של האתר דרכו ניתן לגשת כמעט לכל המידע. ה-API מחולק לתת ספריות לפי נושאים- ניהול, הרשאות, אימות משתמשים, אירועים, פיד, הודעות, תמונות וכו'. ניתן להתממשק ל-API מכמעט כל שפת תכנות- דרך הספריות הרשמיות (ל-php, דוט נט, ActionScript, IPhone) או ספריות המפותחות ע"י הקהילה- לאנדרואיד, ג'אווה, פרל, פייתון, רובי ועוד.
-
Javascript FB Library- ספריית ג'אווה סקריפט ל-Facebook Connect, המיועדת לשימוש באתרים חיצוניים שמנצלים את יכולות האינטגרציה של פייסבוק (מערכת תגובות, ניהול משתמשים, Live stream וכו').
בחלקים הבאים נכיר את המבנה של אפליקציית פייסבוק, את ספריות הפיתוח הרשמיות לדוט נט, את נקודות ההשקה של האפליקציה שלנו עם האתר וכמובן נפתח אפליקציה שמנצלת את היכולות שניתנות לנו ע"י ה-Facebook Developer Platform.