מידע על API Gateway

שירותים מבוססי-אינטרנט מספקים כיום מגוון עצום של פונקציות, כלומר כל דבר, החל משירותי מפות, מזג אוויר ותמונות, ועד משחקים, מכירות פומביות וסוגים רבים אחרים של שירותים. לספקי שירות יש הרבה אפשרויות להטמעה, לפריסה ולניהול של השירותים שלהם. לדוגמה, שירות אחד יכול להיות מפותח ב-Java או ב-‎ .NET, ושירות אחר יכול להיות מפותח ב-Node.js.

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

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

מידע על Google Cloud שירותים

כשמפתחים שירותים ב- Google Cloud, יש הרבה אפשרויות להטמעת השירותים, כמו פונקציות של Cloud Run,‏ Cloud Run וסביבה רגילה של App Engine. הגמישות של Google Cloud מאפשרת לכם לבחור את ארכיטקטורת ה-Backend הנכונה בהתאם לדרישות השירות שלכם.

מפתחי אפליקציות הם הלקוחות של שירותים לקצה העורפי. מפתחי אפליקציות משתמשים בשירותים שלכם כדי להטמיע אפליקציות למכשירים ניידים או לטאבלטים, דרך אפליקציות שפועלות בדפדפן או דרך כל סוג אחר של אפליקציה שיכולה לשלוח בקשת שירות.

חשיפת שירותים לציבור באינטרנט יכולה להיות מאתגרת. כדי שספק שירות יצליח, הוא צריך:

  • אימות הגישה לשירות
  • העברת נתונים מאובטחת בין לקוחות לשירות
  • הגנה על השירות מפני מתקפות זדוניות
  • התאמת השירות בהתאם לעלייה או לירידה בשימוש
  • לספק לצוות התפעול של הקצה העורפי דרך לנטר ולעקוב אחרי השימוש בשירות
  • מעקב אחר השימוש כדי לספק פרטי חיוב מדויקים

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

API Gateway

‫API Gateway מאפשר לכם לספק גישה מאובטחת לשירותים שלכם באמצעות API בארכיטקטורת REST מוגדר היטב, שעקבי בכל השירותים שלכם, ללא קשר לאופן ההטמעה של השירות. ‫API עקבי:

  • מאפשר למפתחי אפליקציות להשתמש בשירותים שלכם בקלות
  • מאפשר לשנות את ההטמעה של שירות לקצה העורפי בלי להשפיע על ה-API הציבורי
  • המינוי מאפשר לכם ליהנות מתכונות ההרחבה, הניטור והאבטחה המובנות ב- Google Cloud

בתמונה הבאה אפשר לראות מפתחי אפליקציות ששולחים בקשות לשירותי הקצה העורפי שלכם דרך API Gateway:

שליחת בקשות לשירותי אינטרנט דרך API Gateway.

מפתחי אפליקציות משתמשים ב-REST API שלכם כדי להטמיע אפליקציות באמצעות API Gateway. מכיוון שכל ממשקי ה-API מתארחים ב-API Gateway, מפתחי אפליקציות רואים ממשק עקבי בכל השירותים לקצה העורפי.

אם פורסים את ממשקי ה-API ב-API Gateway, אפשר לעדכן את השירות לקצה העורפי, או אפילו להעביר את השירות מארכיטקטורה אחת לאחרת, בלי לשנות את ה-API. כל עוד ה-API של השירות שלכם נשאר עקבי, מפתחי אפליקציות לא יצטרכו לשנות אפליקציות שפרסמו בגלל שינויים בסיסיים בקצה העורפי.

API Gateway היא מערכת מבוזרת לניהול ממשקי API, שמספקת גם אירוח, רישום ביומן, ניטור ותכונות אחרות שיעזרו לכם ליצור, לשתף, לתחזק ולאבטח את ממשקי ה-API שלכם. ‫API Gateway משולב באופן טבעי עם Google Cloud ומטפל בכל המשימות שקשורות לעיבוד של קריאות API בו-זמניות, כולל ניהול תנועה, הרשאה ומעקב.

מה זה API?

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

לדוגמה, בטבלה הבאה מתוארת דוגמה ל-API בארכיטקטורת REST שיכול להחזיר מידע על ספר:

מאפיין (property) ערך תיאור
כתובת URL https://www.mybooksapi.com/books/info מחזירה את שם הספר, המחבר ותאריך הפרסום שלו על סמך מספר הספר התקני הבינלאומי (ISBN).
פועל HTTP GET שליחת בקשת GET ל-API.
פרמטר של שאילתה isbn מעבירים את מספר ה-ISBN של הספר, כלומר את המזהה של הספר.
נתוני תשובות
{
  "title" : "book_title",
  "author" : "author_name",
  "published" : "publish_date"
}
אובייקט JSON שמכיל את פרטי הספר.
קוד תגובה 200 הבקשה בוצעה בהצלחה.

הדוגמה הבאה מציגה בקשת curl שאפשר להשתמש בה כדי לקבל מידע על ספר עם מספר ISBN ספציפי:

curl -X GET https://www.mybooksapi.com/books/info?isbn=0385504217

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

מכיוון שאפליקציות שמשתמשות בממשקי API רגישות לשינויים, ממשקי API מרמזים גם על חוזה בין ספקי API לבין צרכני API. החוזה מבטיח שה-API ישתנה לאורך זמן בצורה צפויה. לדוגמה, יכול להיות ש-API של ספרים יעודכן כדי להוסיף פרמטרים נוספים של שאילתות, כמו title או author, או לשנות את ה-JSON של התגובה כדי להוסיף מידע נוסף על הספר.

הגדרת API

מגדירים API שנפרס ב-API Gateway כמפרט OpenAPI 2.0. הרכיבים העיקריים של הגדרת API כוללים:

  • כתובת ה-URL או נקודת הכניסה של שירות הקצה העורפי
  • פורמט הנתונים של כל נתון שמועבר בבקשה ל-API
  • פורמט הנתונים של כל הנתונים שמוחזרים על ידי השירות בתגובה מה-API
  • מנגנון האימות שמשמש לשליטה בגישה לשירות

אחרי שמגדירים את ה-API, משתמשים בממשק שורת הפקודה gcloud כדי להעלות אותו להגדרת API ב- Google Cloud:

משתמשים ב-gcloud כדי להעלות את מפרט ה-API אל Google Cloud.

פריסת הגדרת API ב-API Gateway

כדי ליצור את ה-API, פורסים את הגדרות ה-API ב-API Gateway. משתמשים בפקודה gcloud כדי לפרוס את הגדרות ה-API:

משתמשים ב-gcloud כדי לפרוס את מפרט OpenAPI.

אחרי פריסת הגדרת ה-API, הלקוחות יכולים לבצע קריאות REST ל-API.

ניהול API

אחרי הפריסה וההפעלה, אפשר לעקוב אחרי פעילות ה-API, כמו מדדי שימוש ויומנים. כשלקוח שולח בקשה ל-API, ‏ API Gateway מתעד מידע על הבקשה והתגובה. בנוסף, API Gateway עוקב אחרי זמן האחזור, התעבורה והשגיאות.

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

שליטה בגישה ל-API

‫API Gateway מאפשר להגדיר את ה-API כך שיידרש אימות לפני שהלקוח יוכל לגשת אליו. ‫API Gateway תומך באותו מנגנון אימות ובאותו תחביר שמשמשים את Cloud Endpoints, כולל שימוש ב:

אפשר גם להשתמש ב Google Cloud מסוף כדי לשתף את ה-API עם מפתחים אחרים, כדי שהם יוכלו להפעיל את ה-API וליצור מפתחות API כדי להפעיל אותו.

בנוסף להגדרת מנגנון אימות כדי לאמת את זהות המשתמש, ה-API צריך גם להחליט מה המשתמש המאומת יכול לעשות עם ה-API. מידע נוסף זמין במאמר שיטות אימות ב-Google.

המאמרים הבאים