זרם את פיתוח המיקרו שירותים עם Dapr ו-Amazon EKS

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

Dapr, או סביבת הריצה לאפליקציות מבוזרות, היא סביבת ריצה קוד פתוחה לבניית מיקרוסרוויסים בעננים וסביבות Edge. היא מספקת לבלוקים בנייה פלטפורמה-לא תלויתית כמו גילוי שירות, ניהול מצב, פרסום/הרשמה, וניתוח מראש. Dapr העבירה לרמת השכיחות הגבוהה של CNCF (מוסד המחשוב הענן הנייטיבי) וכיום בשימוש בעסקים רבים.

בשילוב עם שירות Amazon Elastic Kubernetes (Amazon EKS), שירות Kubernetes ניהולי מופעל מהענן של AWS, Dapr עשוי להאיץ את המעבר למיקרוסרוויסים וקונטיינרים, מאפשר למפתחים להתמקד בכתיבת הלוגיקה העסקית בלי לדאוג לתשתיות. Amazon EKS עושה את ניהול אשכולות Kubernetes קל, מאפשר סילוק נפשי עם שינויים בעומסי עבודה.

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

קריאת שירות

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

עם קריאת השירות של Dapr, בעיות אלו הופכות להיות חלק מהעבר. השירותים שלכם יכולים לתקשר בקלות זה עם זה באמצעות פרוטוקולים סטנדרטיים בתעשייה כמו gRPC ו-HTTP/HTTPS. קריאת השירות מטפלת בכל העומס, החל מרישום וגילוי שירותים ועד חזרת בקשות, הצפנה, בקרת גישה, ומעקב מפוזר.

ניהול מצב

בלוק הבנייה של ניהול המצב של Dapr מפשט את הדרך שבה מפתחים עובדים עם המצב באפליקציות שלהם. הוא מספק API עקבי לאחסון ושליפת נתוני מצב, ללא קשר לאחסון המצב הבסיסי (למשל, Redis, AWS DynamoDB, Azure Cosmos DB).

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

דרישות מוקדמות

כדי לעקוב אחרי הפוסט הזה, עליך להיות בעל:

ארכיטקטורת אפליקציה

בתרשים שמתחת לכתבה, יש לנו שני שירותים מיקרו: אפליקציית Python ואפליקציית Node.js. אפליקציית ה-Python יוצרת נתוני הזמנה וקוראת לקצה ה-/neworder שנחשף על ידי אפליקציית ה-Node.js. אפליקציית ה-Node.js כותבת את נתוני ההזמנה הנכנסים לאחסון מצב (במקרה זה, Amazon ElastiCache) ומחזירה מזהה הזמנה לאפליקציית ה-Python כתשובה.

על ידי השתמשות בבנקאי הקריאה לשירות של Dapr, אפליקציית ה-Python יכולה לתקשר בצורה חלקה עם אפליקציית ה-Node.js מבלי לדאוג לגילוי שירות, תקן API, אבטחת ערוץ תקשורת, טיפול בתקלות או תצפיתות. היא מממשת mTLS כדי לספק תקשורת מאובטחת בין שירותים.

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

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

קבוצת Amazon EKS מארחת מרחב שמוכנה בשם dapr-system, המכילה את רכיבי פלטפורמת השליטה של Dapr. ה-dapr-sidecar-injector מטמיע באופן אוטומטי ריצת Dapr לתוך הקפצות השירותים הקטנים שמאופשרים על ידי Dapr.

שלבי קריאת השירות

  1. שירות יוצר הזמנות (יישומון Python) קורא לשיטת האפליקציה של ה-Node, /neworder. בקשה זו נשלחת לצד Dapr המקומי, הפועל באותו קפץ כמו היישומון Python.
  2. Dapr מפתיר את היישומון היעד באמצעות ספק ה-DNS של קבוצת Amazon EKS ושולח את הבקשה לצד ה-Node של היישומון.
  3. צד ה-Node של היישומון משלח אז הבקשה למיקרוסרוויס של היישומון ה-Node.
  4. היישומון ה-Node כתב את זיהוי ההזמנה שקיבל מהיישומון Python ל-Amazon ElasticCache.
  5. היישומון ה-Node שולח את התגובה לצד Dapr המקומי שלו.
  6. צד ה-Node של היישומון מעביר את התגובה לצד Dapr של היישומון ה-Python.
  7. צד ה-קרון של היישומון Python מחזיר את התגובה ליישומון ה-Python, שהתחיל את הבקשה לשיטת האפליקציה של ה-Node /neworder.

שלבי ההתקנה

צור ואשר את אשף EKS

כדי להקים אשף Amazon EKS (שירות Kubernetes אלסטי) תצטרך למעקב אחר מספר שלבים. הנה סקירה גובהנית של התהליך:

דרישות מוקדמות

  • התקן והגדר את AWS CLI
  • התקן את eksctl, kubectl, ו- AWS IAM Authenticator

1. צור אשף EKS. השתמש ב־eksctl כדי ליצור אשף בסיסי באמצעות פקודה דומה לזו:

Shell

 

2. הגדר את kubectl. עדכן את kubeconfig שלך כדי להתחבר לאשף החדש:

Shell

 

3. אמת את האשף. בדוק האם הצמתים שלך מוכנים:

Shell

 

התקן DAPR על האשף EKS שלך

1. התקן את DAPR CLI:

Shell

 

2. אמת את ההתקנה:

Shell

 

3. התקן את DAPR ואמת:

Shell

 

רכיבי Dapr statestore ו־pubsub נוצרים בקירוב הברירת מחדל. תוכל לבדוק זאת על ידי השימוש בפקודה הבאה:

Shell

 

הגדר את Amazon ElastiCache כציר המצב שלך ב-Dapr

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

קבע את קבוצת האבטחה של ה-ElastiCache כך שתאפשר חיבורים מהאשכול שלך ב-EKS. לצורך פשטות, השאר אותו ב-VPC כמו האשכול שלך. שים לב לכתובת האינטרנט של המטמון, שנזדקך בשלבים הבאים.

הפעלת אפליקציה לדוגמה

1. שכפל את המאגר של ה-Git של האפליקציה לדוגמה:

Shell

 

2. צור את redis-state.yaml וספק את כתובת ה-Amazon ElasticCache עבור redisHost:

YAML

 

החל yaml תצורה עבור רכיב אחסון מצב באמצעות kubectl.

Shell

 

3. העלה שירותים קטנים עם ה-sidecar. 

עבור אפליקציית הצומת של השירות הקטן, נווט אל קובץ ה-/quickstarts/tutorials/hello-kubernetes/deploy/node.yaml ותראה את ההערות הבאות. זה מודיע לפלטפורמת השליטה של Dapr להכניס תוסף צד וגם להקצות שם לאפליקציית Dapr.

YAML

 

הוסף הערת שירות service.beta.kubernetes.io/aws-load-balancer-scheme: "internet-facing" ב-node.yaml כדי ליצור AWS ELB.

YAML

 

השג את אפליקציית הצומת באמצעות kubectl. נווט אל התיקייה /quickstarts/tutorials/hello-kubernetes/deploy ובצע את הפקודה הבאה.

Shell

 

קבל את ה-AWS NLB, שמופיע תחת כתובת ה-IP החיצונית, בפלט של הפקודה הבאה. 

Shell

 

נווט אל התיקייה /quickstarts/tutorials/hello-kubernetes, שיש בה את קובץ ה-sample.json כדי לבצע את השלב הבא.

Shell

 

ניתן לאמת את הפלט על ידי גישה לנקודת הקצה /order באמצעות המאזין בדפדפן.

Plain Text

 

תראו את הפלט כך: {“OrderId”:“42”}

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

נווטו אל תיקיית /quickstarts/tutorials/hello-kubernetes/deploy ובצעו את הפקודה הבאה.

Shell

 

4. אימות ובדיקת ההפצה של האפליקציה שלך.

עכשיו שיש לנו את שני שירותי המיקרו המופעלים. האפליקציה של פייתון יוצרת הזמנות ומקראת ל/neworder כפי שמוצג בלוגים למטה.

Shell

 

SystemVerilog

 

ניתן לראות שאפליקציית הנוד מקבלת את הבקשות וכותבת למאגר המצב Amazon ElasticCache בדוגמתינו. 

Shell

 

SystemVerilog

 

על מנת לאשר אם הנתונים נשמרים ב-Amazon ElasticCache אנו ניגשים לנקודת הקצה /order למטה. מחזירה את מזהה ההזמנה האחרון, שנוצר על ידי אפליקציית הפייתון.

Plain Text

 

תראו פלט עם הזמנה האחרונה כך: {“OrderId”:“370”}

ניקוי

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

נווטו אל תיקיית /quickstarts/tutorials/hello-kubernetes/deploy כדי לבצע את הפקודה הבאה.

YAML

 

ניתן להשליך את אשכול ה-EKS שלך באמצעות הפקודה eksctl ולמחוק את Amazon ElastiCache.

נווטו אל התיקייה שיש בה את קובץ ה-cluster.yaml המשמש ליצירת האשכול בשלב הראשון.

Shell

 

סיכום

Dapr ו-Amazon EKS יוצרים ברית עוצמתית עבור פיתוח שירותי מיקרו. Dapr מפשט דאגות חותכות, בעוד ש-EKS ניהלת את תשתיות ה-Kubernetes, מאפשרת למפתחים להתמקד בלוגיקת עסקית עיקרית ולשפר את היציבות.

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

Source:
https://dzone.com/articles/streamline-microservices-development-with-dapr-amazon-eks