Перейти к содержимому

فكّر زي الـ Architect: قطع 43 ثانية خلّى GitHub بطيء 24 ساعة

Abdelrahman Mahmoud

0:00 / 0:00

فكّر زي الـ Architect: قطع 43 ثانية خلّى GitHub بطيء 24 ساعة

38 просмотров · 10 дн. назад
Abdelrahman Mahmoud
210 подписчиков
38 просмотров · 10 дн. назад
في 21 أكتوبر 2018، الشبكة في GitHub اتقطعت 43 ثانية… والخدمة فضلت متأثرة 24 ساعة و11 دقيقة. في الفيديو ده بنعيش الليلة دي مع GitHub لحظة بلحظة (كل المواعيد بتوقيت UTC، من تقرير GitHub نفسه)، وعند كل لحظة بنسأل سؤال الـ architect، وبنجاوبه بتشغيل حقيقي على جهازي بـ MySQL (نفس الـ database اللي GitHub كانت بتستخدمها). وفي الآخر بنثبت بالأرقام: المشكلة في قرار التصميم، مش في الأداة (MySQL و PostgreSQL + Patroni). كل رقم في الفيديو من تشغيل حقيقي، وكل كلمة جديدة ليها تعريف بسيط على الشاشة ومصدره. ⏱️ الفصول 00:00 البداية 00:40 قبل العطل: لو وقعت، مين ياخد مكانها؟ 02:09 22:52 الشبكة اتقطعت: رقم قديم ولا نستنى؟ 04:56 خلال الـ 43 ثانية: promote للغرب و split-brain 06:25 23:19 GitHub اختارت إيه؟ 07:13 23:19 وقّفوا الـ webhooks: الباقي يقف؟ 08:32 16:45 تاني يوم: إعادة الإرسال… مرتين؟ 10:50 16:45 ليه 24 ساعة؟ تمن اللي بتحتفظ بيه 12:33 الأداة ولا التصميم؟ 20:25 sync حلّ الـ split-brain؟ 29:51 الخلاصة 🧪 الـ 14 script اللي في الفيديو (شغّلها بنفسك — 12 منهم محتاجين Docker): https://gist.github.com/Abdoam/5ce1e3... 📚 المصادر اللي اتقرت على الشاشة GitHub, October 21 post-incident analysis (2018): https://github.blog/news-insights/com... Brewer, CAP Twelve Years Later (InfoQ): https://www.infoq.com/articles/cap-tw... Gilbert & Lynch 2002, Brewer's Conjecture: https://www.comp.nus.edu.sg/~gilbert/... MySQL 8.4 Manual — GTIDs, Semisynchronous Replication, rpl_semi_sync_source_timeout, Glossary: https://dev.mysql.com/doc/refman/8.4/en/ Patroni README + Replication modes: https://github.com/patroni/patroni PostgreSQL, About: https://www.postgresql.org/about/ GitHub Docs — About webhooks: https://docs.github.com/en/webhooks/a... GitHub Docs — What is GitHub Pages?: https://docs.github.com/en/pages/gett... Stripe — Idempotent requests: https://docs.stripe.com/api/idempoten... AWS Price List API (us-east-1), RDS + S3: https://pricing.us-east-1.amazonaws.c... AWS — What is AWS: https://aws.amazon.com/what-is-aws/ AWS Well-Architected, Reliability: https://docs.aws.amazon.com/wellarchi... Microsoft, Queue-Based Load Leveling: https://learn.microsoft.com/en-us/azu... BIPM, SI prefixes: https://www.bipm.org/en/measurement-u... ملاحظات: أرقام صفحة الدفع نموذج (simulation) مش قياس لشركة حقيقية. المعمل بيعمل promote بإيده في MySQL، و Patroni في PostgreSQL؛ Orchestrator نفسه مش في المعمل. أرقام GitHub (43 ثانية، 24 ساعة و11 دقيقة، 954، خمسة مليون، 80 ألف، حوالي 200 ألف) من تقريرهم، مش من قياسنا.