הרצאה: עבודה בענן – למה, איך ומה השירותים המובילים¶
הקדמה – למה בכלל ענן?¶
בעולם המודרני, כמעט כל מערכת אינטרנטית גדלה במהירות, ויש לה צרכים דינמיים:
-
יותר משתמשים → יותר עומס
-
זמינות גבוהה → לא יכול להיות downtime
-
גמישות לפרויקטים חדשים → לא רוצים לנהל שרתים פיזיים
הפתרון הוא Cloud Computing – עבודה בענן.
מה זה עבודה בענן?¶
שימוש במשאבים (שרתים, אחסון, מסדי נתונים, רשתות) שמסופקים כשרות דרך האינטרנט, במקום לנהל אותם אצלנו פיזית.
יתרונות:
-
אין צורך בקניית שרתים פיזיים
-
תשלום לפי שימוש (Pay-as-you-go)
-
גמישות להגדיל/להקטין משאבים מהר
-
שילוב עם שירותים מוכנים (DB, Queue, Storage, ML וכו’)
ספקי ענן מובילים¶
AWS – Amazon Web Services¶
-
הספק הענן הגדול ביותר בעולם
-
שירותים כמעט לכל צורך:
-
חישוב: EC2, Lambda
-
אחסון: S3, EFS
-
מסד נתונים: RDS, DynamoDB
-
רשת: VPC, Route53, CloudFront
-
תורים ואירועים: SQS, SNS, EventBridge
-
ניטור ובקרה: CloudWatch, CloudTrail
-
ספקים נוספים¶
-
Microsoft Azure
-
Google Cloud Platform (GCP)
עקרונות בסיסיים ב-AWS¶
-
Regions & Availability Zones
-
Region = אזור גיאוגרפי (למשל: ארה"ב מזרח)
-
AZ = מרכזי נתונים פנימיים בתוך Region
-
מאפשרים זמינות גבוהה (High Availability)
-
-
Services as a Service
-
IaaS (Infrastructure as a Service): שרתים ו-storage
-
PaaS (Platform as a Service): DB, ML, DevOps pipelines
-
SaaS (Software as a Service): Gmail, Salesforce, Slack
-
-
Elasticity
-
משאבים גדלים/קטנים לפי הצורך
-
מאפשר חיסכון בכסף
-
סקיילינג – למה זה חשוב?¶
מערכת לא יכולה לעבוד טוב אם:
-
עומס פתאומי של משתמשים
-
בקשות כבדות כמו יצירת PDF או עיבוד תמונות
שני סוגי סקיילינג¶
1. Vertical Scaling¶
-
הגדלת כוח שרת קיים:
- CPU, RAM, Disk
-
כמו לתת לשרת “שרירים גדולים יותר”
-
דוגמה: מ־t2.medium ל־t2.2xlarge
יתרונות:
-
פשוט יותר ליישם
-
אין צורך בשינויים בקוד
חסרונות:
-
גבול עליון – אי אפשר להגדיל לנצח
-
נקודת כשל יחידה – אם השרת נופל, הכל נופל
2. Horizontal Scaling¶
-
הוספת שרתים נוספים
-
הפצה של עומס בין השרתים (Load Balancer)
יתרונות:
-
כמעט אין גבול עליון
-
יותר עמידות – אם שרת אחד נופל, השאר ממשיכים
חסרונות:
-
דורש יותר תכנון:
-
Shared state
-
Database scaling
-
Session management
-
Auto Scaling ב-AWS¶
AWS מאפשר להגדיל ולהקטין אוטומטית את מספר השרתים לפי תנאים:
-
CPU usage גבוה → להוסיף instance
-
עומס נמוך → להקטין instance
שירותים:
-
EC2 Auto Scaling – לשרתי EC2
-
ECS / EKS Auto Scaling – ל-Docker/Kubernetes
-
Lambda – serverless scaling אוטומטי (אין שרתים בכלל)
שירותים נפוצים בפרויקט שלנו¶
יש מאות שירותים שונים ומוצרים בAWS, ולהכיר את כולם ולדעת במה להשתמש ואיך זה עניין של ניסיון.
עליכם לקרוא ולהכיר את השירותים הבסייסים.
חישוב:¶
- EC2 – שרתים וירטואליים
- Lambda – פונקציות serverless
אחסון:¶
- S3 – קבצים ותמונות
- EBS / EFS – דיסקים לשרתים
מסדי נתונים:¶
- RDS – SQL managed
- DynamoDB – NoSQL managed
תורים ואירועים:¶
- SQS – תורים
- SNS – שליחת הודעות למספר Consumers
- EventBridge – חיבור אירועים בין שירותים
דוגמה ארכיטקטונית – TRIP בענן¶
User → API Gateway → Lambda/EC2 → DB (RDS)
↘ SQS → Worker → Email Service
S3 ← Upload trip images
CloudFront ← serve static files
Auto Scaling Group ← EC2 instances
CloudWatch ← monitor CPU, Errors
- עומס גבוה → EC2 Auto Scaling מוסיף instances
- שירותי S3 + CloudFront משרתים תמונות של טיולים במהירות
- הרמת kafka על ec2, (במקום להשתמש בSQS או SNS)
נסו לקרוא על כל אחד מהservice-ים ולהבין כיצד הכל יכול להתחבר.