האצת אפליקצית סלולר באמצעות Reverse proxy

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

בגלל שמדובר רשת סלולרית, ה-Latency גבוה ולכן יש חשיבות גדולה מאוד ל-API מהיר במיוחד. בנוסף, ה-API חייב להכיל Secure Token כדי להגן על מסד הנתונים מפני שימוש בלתי מורשה/הצפה של המערכת וכדי להגן על משתמש האפליקציה (מהסביבה שלו) בעת שימוש ב-WIFI כל המידע יעבור דרך SSL.

"אז מה הבעיה? תשתמש ב-CDN"

יש כמה סיבות למה לא כדאי להשתמש ב-CDN:

  • השימוש ב-SSL יצרוך תעבורה נוספת והעלות תהיה גבוהה עוד יותר.
  • מדובר בפרויקט לטווח ארוך ובמידה והאפליקציה תצליח, העלויות הגבוהות של שימוש ב-CDN יגמרו את כל התקציב לפני שהפרויקט יגיע לאיזון כלכלי.
  • כמעט שום חברת CDN לא מאפשרת שימוש ב-Secure token, בודדות החברות שכן (הן דורשות SSL ועוד 200$~ כל חודש בשביל האפשרות הזאת) ואני לא מעוניין בחתונה קתולית עם שום חברה.
  • כבר היום יש לי שרתים בארה"ב ובאירופה שניתן להשתמש בהם.
  • בעתיד אני יכול להשיג ביצועים טובים יותר באמצעות הטמעת Memcached במערך (שכפול המסד ל-Memcached ופיזור הנתונים ב-3 שרתי Memcached – שרת בכל יבשת).

הפתרון: שימוש בשרתי GeoIP Reverse proxy עם Secure Tokens:

שרת ה-WEB הראשי ומסדי הנתונים יישבו בישראל, (כדי להפעיל את השירות בצורה מיטבית אני צריך שרתי Daemon הפזורים ב-3 יבשות (בנקודות הביקוש הגדולות ביותר), השרתים צריכים לתמוך ב:

  • HTTPS (תמיכה ב-SSL).
  • Reverse Proxy & Cache.
  • שרת קליל שיכול לעמוד בעומס של המון בקשות.
  • Secure tokens.
  • שינוי קונפיגורציה ללא Restart.
לסיכום:

ה-Reverse proxy היעיל ביותר שתומך בכל הפונקציות האלו הוא Nginx ולכן גם אשתמש בו לפרויקט, לצערי הוא לא השרת המהיר ביותר, Varnish יכול לטפל בעשרות אלפי בקשות בשנייה, אבל Varnish לא תומך ב-Secure tokens וב-SSL).

פורסם בקטגוריה כללי. אפשר להגיע לכאן עם קישור ישיר.

תגובה אחת על האצת אפליקצית סלולר באמצעות Reverse proxy

  1. פינגבאק: האצת ביצועי Reverse proxy ע”י SSH Tunnel | אבי קינן – מחשבים וכו'

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *