Sprout Engineering Reinventing approach to big data Artboard 1 copy

اختراع مجدد رویکرد Sprout Social به داده های بزرگ

Rate this post

Sprout Social در هسته خود یک شرکت داده محور است. Sprout هر روز میلیاردها پیام را از چندین شبکه اجتماعی پردازش می کند. به همین دلیل، مهندسان Sprout با یک چالش منحصربه‌فرد مواجه می‌شوند—نحوه ذخیره و به‌روزرسانی چندین نسخه از یک پیام (یعنی ریتوییت‌ها، نظرات، و غیره) که با حجم بسیار بالا وارد پلتفرم ما می‌شوند.

از آنجایی که ما نسخه‌های متعددی از پیام‌ها را ذخیره می‌کنیم، مهندسان Sprout وظیفه دارند چندین بار در روز جهان را «بازآفرینی کنند» – یک فرآیند ضروری که نیازمند تکرار در کل مجموعه داده‌ها است تا هر بخش از یک پیام اجتماعی را در یک «منبع حقیقت» ادغام کند.

برای مثال، پیگیری لایک‌ها، نظرات و ریتوییت‌های یک پست توییتر. از لحاظ تاریخی، ما برای نگهداری و کار بر روی چنین حجم زیادی از داده‌ها به خوشه‌های Hadoop خود مدیریتی تکیه کرده‌ایم. هر خوشه Hadoop مسئول بخش‌های مختلف پلت‌فرم Sprout خواهد بود – رویه‌ای که در تیم مهندسی Sprout برای مدیریت پروژه‌های کلان داده در مقیاس به آن تکیه می‌شود.

کلیدهای رویکرد داده های بزرگ Sprout

اکوسیستم Hadoop ما به Apache Hbase، یک پایگاه داده مقیاس پذیر و توزیع شده NoSQL وابسته است. آنچه که Hbase را برای رویکرد ما در پردازش کلان داده حیاتی می کند، توانایی آن در انجام نه تنها اسکن دامنه سریع در کل مجموعه داده ها، بلکه در انجام جستجوهای سریع، تصادفی و تک رکورد است.

Hbase همچنین به ما اجازه می‌دهد تا داده‌ها را به‌صورت انبوه بارگیری کنیم و داده‌های تصادفی را به‌روزرسانی کنیم تا بتوانیم راحت‌تر پیام‌هایی را که از نظم خارج می‌شوند یا با به‌روزرسانی‌های جزئی دریافت می‌کنند و سایر چالش‌های داده‌های رسانه‌های اجتماعی را مدیریت کنیم. با این حال، خوشه‌های هدوپ با مدیریت خود، مهندسین زیرساخت ما را با هزینه‌های عملیاتی بالا، از جمله مدیریت دستی بازیابی فاجعه، گسترش خوشه و مدیریت گره، تحمیل می‌کنند.

برای کمک به کاهش زمان مدیریت این سیستم‌ها با صدها ترابایت داده، تیم‌های زیرساخت و توسعه Sprout گرد هم آمدند تا راه‌حلی بهتر از اجرای خوشه‌های خود مدیریت Hadoop پیدا کنند. اهداف ما این بود:

  • به مهندسان Sprout اجازه دهید تا مجموعه‌های داده بزرگ را بهتر بسازند، مدیریت کنند و کار کنند
  • سرمایه گذاری زمانی مهندسان برای مالکیت و نگهداری دستی سیستم را به حداقل برسانید
  • کاهش هزینه های غیرضروری تامین بیش از حد به دلیل گسترش خوشه
  • ارائه روش‌های بازیابی بلایای طبیعی و قابلیت اطمینان

همانطور که جایگزین‌های سیستم کلان داده فعلی خود را ارزیابی می‌کردیم، تلاش کردیم راه‌حلی پیدا کنیم که به راحتی با پردازش‌ها و الگوهای فعلی ما ادغام شود و زحمت عملیاتی ناشی از مدیریت دستی یک خوشه را کاهش دهد.

ارزیابی جایگزین های الگوی داده جدید

یکی از راه حل هایی که تیم های ما در نظر گرفتند، انبارهای داده بود. انبارهای داده به عنوان یک فروشگاه متمرکز برای تجزیه و تحلیل و تجمیع داده ها عمل می کنند، اما در مقایسه با Hbase شباهت بیشتری به پایگاه های داده رابطه ای سنتی دارند. داده های آنها ساختار یافته، فیلتر شده و دارای یک مدل داده دقیق است (یعنی داشتن یک ردیف برای یک شی واحد).

برای استفاده ما از ذخیره و پردازش پیام‌های اجتماعی که نسخه‌های زیادی از یک پیام را در کنار هم دارند، انبارهای داده مدلی ناکارآمد برای نیازهای ما داشتند. ما نتوانستیم مدل موجود خود را به طور موثر با انبارهای داده تطبیق دهیم و عملکرد بسیار کندتر از آنچه پیش‌بینی می‌کردیم بود. قالب‌بندی مجدد داده‌های ما برای انطباق با مدل انبار داده، نیاز به سربار عمده‌ای دارد تا در جدول زمانی که داشتیم، دوباره کار کنیم.

راه حل دیگری که ما به دنبال آن بودیم خانه های دریاچه داده بود. Lakehouse‌های داده مفاهیم انبار داده را گسترش می‌دهند تا داده‌های ساختارمند کمتر، ذخیره‌سازی ارزان‌تر و یک لایه امنیتی اضافی در اطراف داده‌های حساس فراهم شود. در حالی که لیک‌هاوس‌های داده بیش از آنچه انبارهای داده می‌توانستند ارائه می‌کردند، به اندازه راه‌حل فعلی Hbase ما کارآمد نبودند. از طریق آزمایش رکورد ادغام و الگوهای پردازش درج و حذف، ما نتوانستیم تأخیرهای قابل قبولی برای نوشتن برای کارهای دسته ای خود ایجاد کنیم.

کاهش سربار و نگهداری با AWS EMR

با توجه به چیزهایی که در مورد راه‌حل‌های انبار داده و راه‌حل‌های Lakehouse یاد گرفتیم، شروع به جستجوی ابزارهای جایگزین در حال اجرا Hbase مدیریت‌شده کردیم. در حالی که تصمیم گرفتیم استفاده فعلی ما از Hbase برای کاری که در Sprout انجام می‌دهیم موثر باشد، از خود پرسیدیم: «چگونه می‌توانیم Hbase را بهتر اجرا کنیم تا بار عملیاتی خود را کاهش دهیم و در عین حال الگوهای استفاده اصلی خود را حفظ کنیم؟»

این زمانی بود که ما شروع به ارزیابی سرویس مدیریت شده Elastic Map Reduce (EMR) آمازون برای Hbase کردیم. ارزیابی EMR مستلزم ارزیابی عملکرد آن به همان روشی بود که انبارهای داده و دریاچه‌ها را آزمایش کردیم، مانند آزمایش دریافت داده‌ها برای اینکه ببینیم آیا می‌تواند الزامات عملکرد ما را برآورده کند یا خیر. ما همچنین مجبور بودیم ذخیره سازی داده ها، در دسترس بودن بالا و بازیابی فاجعه را آزمایش کنیم تا اطمینان حاصل کنیم که EMR با نیازهای ما از دیدگاه زیرساختی / اداری مطابقت دارد.

ویژگی‌های EMR راه‌حل خود مدیریت فعلی ما را بهبود بخشید و ما را قادر ساخت تا از الگوهای فعلی‌مان برای خواندن، نوشتن و اجرای مشاغل به همان روشی که با Hbase انجام دادیم، دوباره استفاده کنیم. یکی از بزرگترین مزایای EMR استفاده از سیستم فایل EMR (EMRFS) است که داده ها را به جای خود گره ها در S3 ذخیره می کند.

چالشی که ما متوجه شدیم این بود که EMR گزینه‌های دسترسی بالا محدود داشت، که ما را به اجرای چندین گره اصلی در یک منطقه در دسترس یا یک گره اصلی در چندین منطقه در دسترس محدود می‌کرد. این خطر با استفاده از EMRFS کاهش یافت زیرا تحمل خطای بیشتری را برای بازیابی فاجعه و جدا کردن ذخیره‌سازی داده از توابع محاسباتی فراهم می‌کرد. با استفاده از EMR به عنوان راه حل ما برای Hbase، ما می توانیم مقیاس پذیری و بازیابی خرابی خود را بهبود بخشیم و مداخله دستی مورد نیاز برای حفظ خوشه ها را به حداقل برسانیم. در نهایت، ما به این نتیجه رسیدیم که EMR بهترین گزینه برای نیازهای ما است.

فرآیند مهاجرت از قبل به راحتی آزمایش شد و برای انتقال میلیاردها رکورد به خوشه‌های جدید EMR بدون هیچ گونه خرابی مشتری اجرا شد. خوشه های جدید عملکرد بهتری را نشان دادند و هزینه ها را تا حدود 40 درصد کاهش دادند. برای مطالعه بیشتر در مورد اینکه چگونه انتقال به EMR به کاهش هزینه‌های زیرساخت و بهبود عملکرد ما کمک کرد، مطالعه موردی Sprout Social با AWS را بررسی کنید.

چیزی که یاد گرفتیم

اندازه و وسعت این پروژه به ما، تیم مهندسی قابلیت اطمینان پایگاه داده زیرساخت، این فرصت را داد تا به صورت متقابل با چندین تیم مهندسی کار کنیم. در حالی که چالش برانگیز بود، ثابت شد که نمونه ای باورنکردنی از پروژه های مقیاس بزرگی است که می توانیم در Sprout به عنوان یک سازمان مهندسی مشترک با آنها مقابله کنیم. از طریق این پروژه، تیم زیرساخت ما درک عمیق تری از نحوه استفاده، ذخیره و پردازش داده های Sprout به دست آورد و ما برای کمک به عیب یابی مشکلات آینده مجهزتر هستیم. ما یک پایگاه دانش مشترک در میان تیم‌های متعدد ایجاد کرده‌ایم که می‌تواند به ما در ساختن نسل بعدی ویژگی‌های مشتری کمک کند.

اگر به چیزی که ما می سازیم علاقه دارید، به تیم ما بپیوندید و امروز برای یکی از نقش های مهندسی باز ما درخواست دهید.

نوشتهٔ پیشین
ابزارهای مختلف مراقبت از مشتری مسنجر فیس بوک چیست؟
نوشتهٔ بعدی
API چیست و چرا برای اجتماعی مهم هستند؟

پست های مرتبط

برای نوشتن دیدگاه باید وارد بشوید.
فهرست