✕ סגור 
צור קשר
תודה על ההתעניינות .

Thank you! Your submission has been received!

Oops! Something went wrong while submitting the form

גם אתם יכולים להקים תשתית בכמה שורות, ובשפה שלכם

עידן שמש
|
Jul 29, 2020
alt="blogs"
Event
Events
alt="blogs"
alt="blogs"
title="Google"

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

כלומר, אנחנו יכולים להקים את מערכת ההפעלה, ה-DB, שרת ה-Web, ה-Proxy ואת יתר הרכיבים הנחוצים למערכות שלנו בלחיצת כפתור (או כמה פקודות ב-CLI לרציניים שבינינו), דבר המאפשר הקמה של סביבות במהירות וכמובן מאפשר לשמור על אחידות בין הסביבות השונות (למשל בין סביבת הבדיקות לסביבת הייצור).

קיימים מספר כלים אשר מאפשרים לעשות זאת, ביניהם ניתן למנות את Terraform, Chef, Puppets, AWS Cloud Formation ועוד .

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

התהליך הזה בין המפתח לאיש ה-DevOps לא תמיד עובד בצורה חלקה, לא תמיד המפתח יודע להסביר את הצורך המלא של האפליקציה,

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

לכאן נכנס AWS CDK – AWS Cloud Development Kit, כלי שהוא בעצם מעטפת לקוד פתוח מבוסס NodeJS אשר מאפשר כתיבת IaC עבור AWS (נכון לכתיבת שורות אלו) בשפות שרוב המפתחים מכירים:  JavaScript, TypeScript, Java, Python ו- #C.

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

לצורך הדגמה של הפשטות שלו, נבנה RestAPI שמחזיר את תוכן הקובץ my_file.txt מ-S3 Bucket.

לצורך כך אנחנו צריכים:

1 Lambda Function

1 API Gateway

1 S3 Bucket

לאחר הורדה והגדרה של ה-CDK (לינק להסבר בסוף הכתבה),

ניצור תיקייה עבור הפרויקט ונאתחל אותה ע"י הרצה של הפקודה:


במקרה הזה, בחרתי להשתמש ב- Python, אבל אתם יכולים לבחור בשפה אחרת כמובן.

נתקין את הספריות הרלוונטיות לפרויקט שלנו שמטפלות ב: S3, Lambda ו- APIGateWay:

נעבור על חלק מהקוד, את הקוד המלא יהיה ניתן להוריד מה-Git שלי:

בחלק הראשון של הקוד, הגדרנו את ה- Lambda שלנו, קבענו שסביבת הריצה שלה היא Python 3.8, ושהקוד שלה כתוב בקובץ mylambda אשר נמצא בתיקייה lambda תחת הפרוייקט.

לאחר מכן, יצרנו S3 Bucket ונתנו הרשאת קריאה ל- Lambda,

ה-CDK ידע להוסיף לRole של ה Lambda הרשאת קריאה מה-Bucket בצורה אוטומטית, וכל זה בשורת קוד אחת.

מכיוון שאנחנו לא יודעים מה יהיה שם ה-Bucket עד לרגע היצירה, נוסיף את שם ה- Bucket למשתנה המערכת של ה- Lambda.

ובחלק האחרון, הגדרנו את ה  API Gateway Endpoint עבור ה- Lambda שלנו.

 

נעלה את מה שכתבו לחשבון ה-AWS שלנו באמצעות הפקודה

מרגע זה, ה-CDK מבצע השוואה בין המצב הקיים בענן לקוד, הוא מבצע המרה של הקוד שלנו.

ל- AWS CloudFormation, מעלה אותו ואת כל שאר הרכיבים שכתבנו, כמו קוד ה- Lambda ל- S3 Bucket ייעודי עבור ה- CDK ולסיום מפעיל את ה- CloudFormation אשר מבצע בפועל את ההגדרה של כל הרכיבים.

פקודות נוספות:

  • cdk diff – מבצעת השוואה בין הקוד שלנו למה שקיים בפועל, ניתן להריץ אותה בזמן הפיתוח כדי לוודא שאנחנו נוגעים ברכיבים הנכונים.

  • cdk synth – מבצעת המרה של הקוד שכתבנו ל- CloudFormation, ניתן לקבל את התוצאה בפורמט JSON או YAML.

  • cdk destroy – מוחקת את כל הרכיבים מהענן ומחזירה את המצב לקדמותו.

  • cdk bootstrap – מכינה את החשבון שלנו לעבודה עם ה- cdk.

 

כפי שהבטחתי במהלך הכתבה, מצרף קישורים שימושיים:

https://github.com/idanshemesh/cdk_s3__lambda_example - קוד המקור לדוגמא שהצגתי.

https://docs.aws.amazon.com/cdk - מדריך למפתח ו- cdk API

https://cdkworkshop.com- סדנא מעולה, שמסבירה בפשטות כיצד עובדים ומגדרים אותו.

 

המאמר נכתב ע"י עידן שמש, ארכיטקט בכיר, CloudBuzz

לפרטים נוספים, ניתן לפנות אלינו למייל: Info@cloudbuzz.co.il

 



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

כלומר, אנחנו יכולים להקים את מערכת ההפעלה, ה-DB, שרת ה-Web, ה-Proxy ואת יתר הרכיבים הנחוצים למערכות שלנו בלחיצת כפתור (או כמה פקודות ב-CLI לרציניים שבינינו), דבר המאפשר הקמה של סביבות במהירות וכמובן מאפשר לשמור על אחידות בין הסביבות השונות (למשל בין סביבת הבדיקות לסביבת הייצור).

קיימים מספר כלים אשר מאפשרים לעשות זאת, ביניהם ניתן למנות את Terraform, Chef, Puppets, AWS Cloud Formation ועוד .

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

התהליך הזה בין המפתח לאיש ה-DevOps לא תמיד עובד בצורה חלקה, לא תמיד המפתח יודע להסביר את הצורך המלא של האפליקציה,

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

לכאן נכנס AWS CDK – AWS Cloud Development Kit, כלי שהוא בעצם מעטפת לקוד פתוח מבוסס NodeJS אשר מאפשר כתיבת IaC עבור AWS (נכון לכתיבת שורות אלו) בשפות שרוב המפתחים מכירים:  JavaScript, TypeScript, Java, Python ו- #C.

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

לצורך הדגמה של הפשטות שלו, נבנה RestAPI שמחזיר את תוכן הקובץ my_file.txt מ-S3 Bucket.

לצורך כך אנחנו צריכים:

1 Lambda Function

1 API Gateway

1 S3 Bucket

לאחר הורדה והגדרה של ה-CDK (לינק להסבר בסוף הכתבה),

ניצור תיקייה עבור הפרויקט ונאתחל אותה ע"י הרצה של הפקודה:


במקרה הזה, בחרתי להשתמש ב- Python, אבל אתם יכולים לבחור בשפה אחרת כמובן.

נתקין את הספריות הרלוונטיות לפרויקט שלנו שמטפלות ב: S3, Lambda ו- APIGateWay:

נעבור על חלק מהקוד, את הקוד המלא יהיה ניתן להוריד מה-Git שלי:

בחלק הראשון של הקוד, הגדרנו את ה- Lambda שלנו, קבענו שסביבת הריצה שלה היא Python 3.8, ושהקוד שלה כתוב בקובץ mylambda אשר נמצא בתיקייה lambda תחת הפרוייקט.

לאחר מכן, יצרנו S3 Bucket ונתנו הרשאת קריאה ל- Lambda,

ה-CDK ידע להוסיף לRole של ה Lambda הרשאת קריאה מה-Bucket בצורה אוטומטית, וכל זה בשורת קוד אחת.

מכיוון שאנחנו לא יודעים מה יהיה שם ה-Bucket עד לרגע היצירה, נוסיף את שם ה- Bucket למשתנה המערכת של ה- Lambda.

ובחלק האחרון, הגדרנו את ה  API Gateway Endpoint עבור ה- Lambda שלנו.

 

נעלה את מה שכתבו לחשבון ה-AWS שלנו באמצעות הפקודה

מרגע זה, ה-CDK מבצע השוואה בין המצב הקיים בענן לקוד, הוא מבצע המרה של הקוד שלנו.

ל- AWS CloudFormation, מעלה אותו ואת כל שאר הרכיבים שכתבנו, כמו קוד ה- Lambda ל- S3 Bucket ייעודי עבור ה- CDK ולסיום מפעיל את ה- CloudFormation אשר מבצע בפועל את ההגדרה של כל הרכיבים.

פקודות נוספות:

  • cdk diff – מבצעת השוואה בין הקוד שלנו למה שקיים בפועל, ניתן להריץ אותה בזמן הפיתוח כדי לוודא שאנחנו נוגעים ברכיבים הנכונים.

  • cdk synth – מבצעת המרה של הקוד שכתבנו ל- CloudFormation, ניתן לקבל את התוצאה בפורמט JSON או YAML.

  • cdk destroy – מוחקת את כל הרכיבים מהענן ומחזירה את המצב לקדמותו.

  • cdk bootstrap – מכינה את החשבון שלנו לעבודה עם ה- cdk.

 

כפי שהבטחתי במהלך הכתבה, מצרף קישורים שימושיים:

https://github.com/idanshemesh/cdk_s3__lambda_example - קוד המקור לדוגמא שהצגתי.

https://docs.aws.amazon.com/cdk - מדריך למפתח ו- cdk API

https://cdkworkshop.com- סדנא מעולה, שמסבירה בפשטות כיצד עובדים ומגדרים אותו.

 

המאמר נכתב ע"י עידן שמש, ארכיטקט בכיר, CloudBuzz

לפרטים נוספים, ניתן לפנות אלינו למייל: Info@cloudbuzz.co.il

 



לפרטים נוספים ויצירת קשר עם נציג אורקל

תודה הודעתך התקבלה

הודעתך לא התקבלה - נסה שוב מאוחר יותר

עידן שמש

הירשם לרשימת הדיוור של IsraelClouds

Thank you! Your submission has been received!

Oops! Something went wrong while submitting the form

מילון מונחיםהשירותים שלנו תנאי שימושהרשמה לניוזלטרמדיניות פרטיות