2.7 סקייל
אז מה קורה כשהאתר שלנו גדל מאוד? ואנחנו מתחילים לקבל המון בקשות אינטרנט?
פתאום פתרון של apache ליצירת כמה אתרים על אותו מחשב זה כבר לא פתרון כזה טוב- הנה כמה פתרונות אחרים.
Web Cache – מטמון רשת¶
אז Web Cache הוא מנגנון שמטרתו לאחסן עותקים של דפי אינטרנט, תמונות, קבצי JavaScript ו-CSS כדי להפחית את זמן הטעינה ולצמצם את העומס על השרת.
סוגי Web Cache¶
-
סוג Browser Cache – הדפדפן שומר עותקים של קבצים סטטיים כדי לטעון אתרים מהר יותר.
-
סוג Proxy Cache – שרתי ביניים כמו Squid Cache מאחסנים תוכן כדי לשפר ביצועים עבור משתמשים מרובים.
-
סוג CDN Cache – רשת שרתים מבוזרת המאחסנת תוכן קרוב למיקום המשתמש.
-
סוג Application Cache – מערכות כמו Redis ו-Memcached מאחסנות נתונים כדי להפחית קריאות למסד הנתונים.
דוגמה לכותרות HTTP המשמשות למטמון:¶
-
Cache-Control– מציין כמה זמן ניתן לשמור את הנתונים בזיכרון מטמון. -
Expires– תאריך התפוגה של המטמון. -
ETag– מזהה ייחודי לתוכן, כדי לבדוק אם הוא השתנה.
CDN – Content Delivery Network¶
הCDN הוא רשת של שרתים שמטרתה להפיץ תוכן סטטי ודינמי בצורה יעילה ומהירה יותר.
כיצד עובד CDN?¶
-
המשתמש מבקש תוכן מהאתר.
-
ה-CDN מזהה את מיקום המשתמש ומפנה אותו לשרת הקרוב ביותר.
-
אם התוכן קיים במטמון השרת המקומי, הוא נשלח מיד.
-
אם התוכן אינו במטמון, הוא נשלף מהשרת המקורי ונשמר במטמון להבא.
יתרונות ה-CDN:¶
-
שיפור ביצועים – טעינת דפים מהירה יותר.
-
חיסכון בתעבורה – מפחית עומס על השרת המרכזי.
-
אבטחה משופרת – מונע מתקפות DDoS על ידי פיזור העומס.
דוגמה לשימוש ב-CDN בקובץ HTML:¶
Load Balancer – איזון עומסים¶
הLoad Balancer הוא רכיב שמפצל תעבורה בין מספר שרתים כדי למנוע עומסים על שרת אחד ולשפר את היציבות.
סוגי Load Balancers¶
-
Load Balancer מבוסס תוכנה – Nginx, HAProxy.
-
Load Balancer מבוסס חומרה – פתרונות כמו F5 Networks.
-
Load Balancer בענן – AWS Elastic Load Balancer (ELB), Google Cloud Load Balancer.
אסטרטגיות איזון עומסים¶
-
Round Robin – כל בקשה מועברת לשרת הבא בתור.
-
Least Connections – הבקשה נשלחת לשרת עם הכי פחות חיבורים פעילים.
-
IP Hash – חלוקה לפי כתובת ה-IP של המשתמש.
דוגמה להגדרת Load Balancer ב-Nginx:¶
upstream backend {
server server1.example.com;
server server2.example.com;
}
server {
location / {
proxy_pass http://backend;
}
}
Kubernetes – קוברנטיס¶
כמו שלמדנו בקורס תכנות, Kubernetes (K8s) היא מערכת לניהול קונטיינרים המאפשרת פריסה, ניהול ואיזון עומסים של אפליקציות מבוססות Docker.
מושגים חשובים בקוברנטיס:¶
-
Pod – יחידת הפריסה הבסיסית שמכילה קונטיינרים.
-
Node – שרת שמריץ Pods.
-
Cluster – קבוצה של Nodes העובדים יחד.
-
Deployment – הגדרת אופן הפריסה של Pods.
-
Service – מאפשר תקשורת בין Pods ושירותים חיצוניים.
דוגמה לקובץ YAML של Deployment בקוברנטיס:¶
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app-container
image: my-app:latest
ports:
- containerPort: 80
-
replicas: 3– מריץ שלושה עותקים של האפליקציה. -
image: my-app:latest– משתמש בגרסה העדכנית של התמונה. -
containerPort: 80– מאזין לבקשות בפורט 80.
סיכום¶
השימוש ב-Web Caching, CDN, Load Balancer וקוברנטיס מאפשר שיפור ביצועים, ניהול עומסים ואבטחה גבוהה יותר. שילוב של טכנולוגיות אלו מאפשר יצירת מערכות ווב מהירות, יציבות וסקיילביליות.