לדלג לתוכן

2.7 סקייל

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

Web Cache – מטמון רשת

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

סוגי Web Cache
  1. סוג Browser Cache – הדפדפן שומר עותקים של קבצים סטטיים כדי לטעון אתרים מהר יותר.

  2. סוג Proxy Cache – שרתי ביניים כמו Squid Cache מאחסנים תוכן כדי לשפר ביצועים עבור משתמשים מרובים.

  3. סוג CDN Cache – רשת שרתים מבוזרת המאחסנת תוכן קרוב למיקום המשתמש.

  4. סוג Application Cache – מערכות כמו Redis ו-Memcached מאחסנות נתונים כדי להפחית קריאות למסד הנתונים.

דוגמה לכותרות HTTP המשמשות למטמון:
Cache-Control: max-age=3600, must-revalidate
Expires: Wed, 10 Apr 2025 12:00:00 GMT
ETag: "abc123"
  • Cache-Control – מציין כמה זמן ניתן לשמור את הנתונים בזיכרון מטמון.

  • Expires – תאריך התפוגה של המטמון.

  • ETag – מזהה ייחודי לתוכן, כדי לבדוק אם הוא השתנה.


CDN – Content Delivery Network

הCDN הוא רשת של שרתים שמטרתה להפיץ תוכן סטטי ודינמי בצורה יעילה ומהירה יותר.

כיצד עובד CDN?
  1. המשתמש מבקש תוכן מהאתר.

  2. ה-CDN מזהה את מיקום המשתמש ומפנה אותו לשרת הקרוב ביותר.

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

  4. אם התוכן אינו במטמון, הוא נשלף מהשרת המקורי ונשמר במטמון להבא.

יתרונות ה-CDN:
  • שיפור ביצועים – טעינת דפים מהירה יותר.

  • חיסכון בתעבורה – מפחית עומס על השרת המרכזי.

  • אבטחה משופרת – מונע מתקפות DDoS על ידי פיזור העומס.

דוגמה לשימוש ב-CDN בקובץ HTML:
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>

Load Balancer – איזון עומסים

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

סוגי Load Balancers
  1. Load Balancer מבוסס תוכנה – Nginx, HAProxy.

  2. Load Balancer מבוסס חומרה – פתרונות כמו F5 Networks.

  3. 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 וקוברנטיס מאפשר שיפור ביצועים, ניהול עומסים ואבטחה גבוהה יותר. שילוב של טכנולוגיות אלו מאפשר יצירת מערכות ווב מהירות, יציבות וסקיילביליות.