אמזון מציגה את ElastiCache

אמזון מכריזה היום (ג’) על שירות חדש (עדיין ב–Beta), הפונה למשתמשים שביצועי האפליקציה שלהם יקרים להם ועד היום סבלו קשות או נמנעו משרותי AWS. את השירות החדש מכנה החברה ElastiCache

צילום: צילומסך, עיבוד תמונה

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

I/O – קצבי הקריאה/כתיבה לדיסק (פיזי או וירטואלי) מוגבלים וככל שיש יותר פעולות כאלו, כך גם התור לקבלת השירות מהמערכת גדל ומשפיע ישירות על הביצועים. פעולות I/O קשורות קשר ישיר לכתיבה (כגון שמירת קבצים שהועלו על ידי משתמשים) או קריאה (פתיחת קובץ קוד, תמונה וכו’) של האפליקציה וכשיש עומס I/O, האפליקציה סובלת.

למי שיש ניסיון עם AWS, בטח כבר מודע לבעיות ה – I/O הקשות של סביבה זו (אפילו בעמוס מאד נמוך) וכמו רבים מחפש פתרון לבעיה זו, שבשלב זה לא ממש קיים (יש מספר פתרונות חלקיים לבעיה, אך כולם מייקרים מאד את השרות הבסיסי של AWS ולא מאפשרים להגיע לקצבים באמת מהירים, להם אנחנו רגילים מעולם החומרה הפיזית).

גישה ל – DataBase – לפני מספר שנים, כשאפליקציות Web רצו בעיקר על סביבות פיזיות, לרובן בעיות I/O לא ממש הפריעו (לפחות עד שהגיעו Web2.0, רשתות חברתיות ואתרי שיתוף למינהם). לעומת זאת מהיום שבו העלתי את אפליקציית ה – Web הראשונה שלי לאוויר, לפני הרבה מאד שנים, הייתי עסוק באיך לשפר את ביצועי האפליקציה ולא היה רכיב יותר חשוב להתרכז בו מבסיס הנתונים של האפליקציה.
יש המון שיטות וכלים לשיפור ביצועי DB. זה מתחיל ממבנה הנתונים, אינדקסים, שאילתות יעילות יותר, עובר דרך קונפיגורציה של שרת ה – DB (הן ברמת התוכנה וכמובן חומרה, הרבה חומרה) אבל כמעט תמיד, במקרים בהם יש צורך בביצועים גבוהים מבלי לשרוף אין סוף דולרים על שרתי על, הסיפור נגמר ב – Caching (מטמון בעברית אבל זאת הפעם האחרונה שאני הולך להשתמש בזה!).

כאמור, למשתמשי AWS אין חיים קלים בכל מה שקשור ל – I/O וגם בחזית ה – DB (עם קשר ישיר לבעיית ה – I/O של המערכת, מכיוון שביצועי DB מאד תלויים ב – I/O) יש לא מעט בעיות והמון משתמשים מתוסכלים. אמזון כרגיל מקשיבים למשתמשים ומכריזים היום על שירות חדש (עדיין ב – Beta), הפונה למשתמשים שביצועי האפליקציה שלהם יקרים להם ועד היום סבלו קשות או נמנעו משרותי AWS. לשרות החדש קוראים ElastiCache אבל לפני שנדבר על השרות החדש, עוד קצת רקע.

DataBase Caching

הרעיון מאחורי DB Caching הוא פשוט. במקום לגשת ל – DB, שהוא משאב יקר יחסית (ברוב המקרים מדובר בשימוש במשאבי רשת על מנת לגשת לשרת, שרות I/O על מנת לקרוא/לכתוב נתונים ועוד מספר לא מבוטל של פעולות “יקרות”) הנתונים שמורים חלקית וזמנית במקום שהגישה אליו “זולה” ומהירה יותר.

קחו לדוגמא עמוד רישום לשירות דמיוני, שכולל את ארץ המגורים של הנרשם. גם אם רשימת הארצות נמצאת בבסיס הנתונים, איזו סיבה יש לי לקרוא את הרשימה ישירות מתוך ה – DB, כל פעם שיש משתמש חדש שרוצה להירשם? הרי הרשימה הזאת היא סטטית כמעט לחלוטין, אפשר לשמור אותה כקובץ על הדיסק ולעדכן אותה פעם בשבוע (רק בשביל הדוגמא). גישה לקובץ טקסט על הדיסק מהירה פי כמה וכמה מכל שאילתא פשוטה ל – DB על מנת לשלוף את רשימת הנתונים. אמנם זאת דוגמא מאד פשוטה (אך יעילה) אבל גם הפתרונות היותר מתוחכמים עובדים על אותו עיקרון של הורדת מספר הגישות ל – DB עצמו על מנת לשפר ביצועים.

Memcached

אחד הכלים הפופולאריים לשיפור ביצועים באפליקציות Web בשנים האחרונות הוא Memcached. הרעיון של Memcached הוא לשמור בזיכרון (מכאן Mem), שהוא משאב מאד מהיר ויחסית זול, נתונים להם זקוקה האפליקציה ולאפשר למפתח לעדכן ולנהל נתונים אלו בקלות יחסית, בעזרת APIs פשוטים הנתמכים בשפות תיכנות רבות. אפליקציות מודרניות עושות כיום שימוש מסיבי ב – Memcached על מנת להחליף פונקציונליות כגון שמירת Sessions, שהיתה שמורה ל – DB לאורך השנים. נכון שלא מדובר על כלי המיועד אך ורק ל – DataBase Caching אבל מפתחים רבים עושים בו שימוש על מנת ליצור שכבת Cache לנתונים להם זקוקה האפליקציה. בנוסף לאפשרות לתכנת ממשקים בין האפליקציה ל – Memcached, מספר לא מבוטל של אפליקציות מגיעות היום עם Memcached Plugins מובנים, המאפשרים שימוש בכלי זה ללא כתיבת שורת קוד אחת וביצועים פנומנליים.

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

ElastiCache

אז למה אני מספר לכם את כל זה? כי המוצר החדש של AWS הוא למעשה Memcached ארוז כשירות, למשתמשי הענן של אמזון. האמת שאין הרבה מה לפרט מעבר לזה. השירות החדש יעבוד בדיוק כמו כל התקנה אחרת של Memcached, זאת על מנת לאפשר מעבר פשוט לשירות והוא כולל את כל ה – Goodies שאמזון מציעה בשרותי ה – AWS האחרים שלה:

תשלום על פי שימוש – אתה בוחר את גודל מכונת ה – Cache שלך מתוך מבחר של 7 סוגים (החל מ – 1.3GB של זיכרון ועד 64GB, אם בא לכם לטעון את כל בסיס הנתונים שלכם לזיכרון). התשלום הוא על מכונה (Node) ותעבורת נתונים.

יכולת גדילה – בעזרת כלים פשוטים אפשר להוסיף Caching Nodes על מנת להתמודד עם עומסים גבוהים.

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

כאמור השרות הושק ב – Beta והוא זמין, נכון להיום, בחווה אחת בלבד של אמזון (US East). אמנם לא מדובר בשיפור ביצועים ישיר של שרותי ה – RDS של אמזון, אבל בהחלט מדובר בכלי שיאפשר ליותר אפליקציות להנות משרותי AWS מבלי לוותר על ביצועים.

אם הייתי צריך להמר על הפיתוח המשמעותי הבא עליו אמזון עובדים היום, הייתי הולך על Storage מהיר, על מנת לפתור את בעיות ה – I/O מהן סובלות המערכות שלהם. רק תדמינו פתרון Storage עם קצבים להם אנחנו רגילים ממערכות Netapp, IBM או EMC בעולם הפיזי, כחלק מהשרות של AWS. אני ממש מחכה לזה.

וידאו: אמזון מסבירה על ElastiCache

 

הפוסט פורסם לראשונה בבלוג מעונן חלקית

Avatar

בועז זינימן

בועז זינימן מנהל את מעונן חלקית, בלוג בעברית המוקדש ברובו למחשוב ענן (Cloud Computing) וטכנולוגיה בכלל. בועז משמש כדירקטור טכנולוגיה ותשתיות ענן בחברת Zend Technologies ובארבעת השנים האחרונות הוא ניהל את הצוותים הטכנולוגיים ב – Zend, כולל תיכנון ופיתוח כל מערכות ה – Web, פתרונות Hosting, אסטרטגיית IT ותשתיות.

הגב

9 תגובות על "אמזון מציגה את ElastiCache"

avatar
Photo and Image Files
 
 
 
Audio and Video Files
 
 
 
Other File Types
 
 
 

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

סידור לפי:   חדש | ישן | הכי מדורגים
רומן
Guest

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

תודה.

אהרון
Guest

איך עומד AWS מבחינת ביצועים מול Google App Engine ?
ל GAE כבר יש שירות Memcache

בועז זינימן
Guest

@רומן – אם אתה מחפש מדריכים איך להשתמש ב – memcached יש לכל שפה ושפה. תתחיל באתר שלהם ומשם אני בטוח שתמצא. השימוש ב – elasticache אמור להיות זהה לחלוטין (למעט שלב הקמת השרת שאותו מקבלים כשרות מאמזון).

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

יקיר
Guest

אהלן,
רציתי לשאול משהו על ענן בכללי ולשאול מה הפיתרון של אמאזון לבעיה…
הבעיה שלנו היום בעולם היא שיש לנו יותר מדי ‘מידע’… יש לנו יכולות עיבוד מספיק טובות אפילו על מחשב PC. הבעיה העיקרית שלנו היא בעיית ה I/O של שליפת הנתונים וכתיבתם…. רציתי לדעת איך אמאזון באה לפתור את הבעיה הזו?

בועז זינימן
Guest

@יקיר – אם תקרא שוב את הפסקה האחרונה של המאמר תראה שאין כיום פתרון מוצלח לבעיה זו על AWS. לכן אני מהמר על משהו בכיוון זה שיצא בקרוב מהצוות של אמזון.

שי בן משה
Guest

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

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

ענת
Guest

כל גרסה שהיא בטא בדרך כלל מופצצת באגים, אך לפי הסיקור כאן, כבר עכשיו הפיתוח החדש עובד לא רע… ח”ח לאמזון… (-:

בועז זינימן
Guest

@שי – אתה מבין מצויין ואפילו צודק אבל היתרון הגדול של memcached הוא שניתן לגשת אליו ממספר שרתים בו זמנית, לשמור מידע על מספר nodes ולסנכרן בינהם ועוד מספר תכונות שקשה מאד להשיג עם קבצים. לקבצים יש יתרון על שרת מקומי בלבד אבל כשמתחילים לשתף מידע בין שרתים כל היתרונות הולכים לאיבוד.

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

שי בן משה
Guest

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

wpDiscuz

תגיות לכתבה: