00:00:00Episode stand up kali ini akan sangat spesial karena Casey yang akan melakukan intronya.
00:00:05Casey, apa yang akan kita bahas hari ini?
00:00:09Halo semuanya dan selamat datang di stand up.
00:00:14Nomor 45,
00:00:156 podcast teknologi terbaik di Spotify menurut sesuatu yang paling baru.
00:00:23Benar..
00:00:29Anyway, maaf.
00:00:30Hari ini di stand up, saya ingin membahas sesuatu.
00:00:33Saya akan bicara tentang AWS outage yang terjadi di bulan Oktober,
00:00:38tapi saya melakukannya karena saya ingin membahas hal yang lebih besar,
00:00:43yaitu ide tentang benar-benar memahami sesuatu versus mengatakan kamu memahami sesuatu..
00:00:49Jadi seperti salah satu hal yang sering terjadi,
00:00:52terutama menurut saya pada orang-orang yang masih awal dalam karir programming mereka,
00:00:57seperti kalau kamu junior programmer atau semacamnya,
00:01:00kamu baru masuk.
00:01:01Dan saya tahu ini pasti terjadi pada saya,
00:01:03adalah kamu ingin terlihat seperti kamu tahu sesuatu,
00:01:06kan?
00:01:06Seperti kamu tidak ingin terlihat seperti kamu tidak mengerti apa yang sedang terjadi.
00:01:11Jadi ada banyak tekanan eksternal,
00:01:13entah itu benar-benar ada atau tidak,
00:01:15kamu merasa seperti kamu harus bilang bahwa kamu memahami sesuatu atau pura-pura memahami sesuatu,
00:01:21bahkan jika itu sedikit samar atau kamu tidak benar-benar mengerti..
00:01:26Dan bahkan jika itu bukan salahmu,
00:01:28seperti bahkan jika hal itu tidak dijelaskan dengan benar atau tidak menyertakan informasi penting,
00:01:34kamu tetap terdorong untuk pada dasarnya bertindak seolah kamu tahu apa itu,
00:01:38kan?
00:01:39Karena itu membuat kamu terlihat lebih pintar atau semacamnya,
00:01:42atau setidaknya tidak membuat kamu terlihat junior,
00:01:45kan?
00:01:46Dan jadi salah satu hal yang setidaknya saya temukan saat saya bertambah tua dan memprogram,
00:01:51punya lebih banyak pengalaman programming dan hal-hal seperti itu,
00:01:55adalah sekarang saya hampir terlalu sering meminta hal-hal untuk dijelaskan.
00:01:59Seperti saya akan,
00:02:00saya tidak peduli terlihat bodoh sama sekali..
00:02:03Saya seperti, tunggu dulu, kembali lagi.
00:02:05Seperti saya tidak mengerti bagian itu.
00:02:06Seperti, apa maksudmu dengan ini?
00:02:08Atau seperti, apa arti istilah itu atau apa pun?
00:02:10Karena sekarang saya memang tidak terlalu peduli tentang itu..
00:02:12Seperti saya tidak terlalu khawatir.
00:02:14Dan saya ingin benar-benar tahu karena saya punya begitu banyak pengalaman programming di mana saya pikir saya tahu sesuatu atau saya pura-pura tahu sesuatu dan itu kembali menyerang saya..
00:02:22Saya seperti, saya ingin benar-benar tahu.
00:02:24Seperti saya ingin memastikan bahwa ketika saya punya penjelasan tentang sebuah bug atau saya pikir saya tahu alasan dari perlambatan performa,
00:02:31saya selalu di belakang kepala saya,
00:02:33saya seperti,
00:02:33jika saya belum benar-benar sampai ke dasarnya,
00:02:36itu bisa jadi sesuatu yang lain.
00:02:37Bisa jadi,
00:02:38bisa jadi hal yang sebenarnya masih bersembunyi di sana.
00:02:41Dan saya hanya tidak tahu karena saya belum benar-benar melihatnya sampai habis.
00:02:45Saya hanya,
00:02:45saya melanjutkan karena itu nyaman atau apa pun..
00:02:48Jadi alasan saya ingin membahas pemadaman DynamoDB adalah karena baru-baru ini terjadi serangkaian pemadaman besar yang cukup menonjol.
00:02:55Jadi ada pemadaman besar yang melumpuhkan Google dan ternyata masalahnya adalah mereka tidak menangani field yang kosong dengan benar,
00:03:02kan?
00:03:03Jadi dalam pemrograman mereka,
00:03:04cara mereka memprogram,
00:03:06mereka seperti,
00:03:06oke,
00:03:07kita punya hal ini.
00:03:08Kita memuat beberapa JSON dan jika tidak ada isinya di JSON,
00:03:11kita seperti,
00:03:12melakukan dereferensi pointer null atau semacamnya,
00:03:14kan?
00:03:15Benar-benar seperti itu, kan?
00:03:16Dan kemudian ada yang dengan CrowdStrike di mana mereka melumpuhkan seluruh dunia dengan layar biru.
00:03:22Dan itu,
00:03:22mereka memberikan penjelasan yang sangat bagus,
00:03:25seperti penjelasan yang benar-benar baik.
00:03:27Mereka bilang,
00:03:28kami melakukan hal tertentu dengan ukuran array ini dan kami punya terlalu banyak aturan.
00:03:32Jadi array-nya meluap, kan?
00:03:34Dan jadi ini cukup bagus ketika mereka memberikan apa yang mereka sebut RCA atau analisis akar penyebab,
00:03:39kan?
00:03:40Ketika mereka bilang seperti,
00:03:41inilah alasan kami mengalami pemadaman.
00:03:43Ketika saya membacanya,
00:03:45saya tidak merasa ada banyak pertanyaan yang tidak terjawab di pikiran saya.
00:03:49Seperti mungkin saya tidak tahu seperti secara literal baris kode yang,
00:03:52karena mereka mungkin tidak mempublikasikan secara literal potongan kodenya,
00:03:56tapi mereka memberi saya cukup informasi sehingga saya seperti,
00:04:00oke,
00:04:00saya paham bagaimana seseorang menulis kode ini dan saya paham hal bodoh yang mereka lakukan,
00:04:05kan?
00:04:05Seperti, oke, jangan lakukan hal itu.
00:04:07Saya paham.
00:04:08Dan saya benar-benar seperti, oke..
00:04:10Dengan yang DynamoDB itu, karena muncul di podcast ini, kan?
00:04:14Kita membahasnya waktu itu, orang itu di guitar center, kan?
00:04:19Yang seperti,
00:04:20saya mendengar seseorang berbicara di pub,
00:04:24kan??
00:04:24Ya.
00:04:25Luar biasa.
00:04:25Di sini kita melihat programmer yang sulit ditemui,
00:04:28makhluk sederhana yang menghabiskan sebagian besar waktunya bekerja sendirian,
00:04:32sering kali dalam kegelapan,
00:04:33tapi tunggu dulu,
00:04:34ada seseorang yang salah di internet.
00:04:36Coder kita langsung beraksi,
00:04:38mencapai kecepatan puncak 120 kata per menit sebelum flash,
00:04:41sebuah website light mode..
00:04:42Musuh alami dari para pecinta kode ini membuat teman kita terpana.
00:04:45Perburuannya terhenti.
00:04:46Kita harus menangkap mereka lain kali.
00:04:48Ketika tidak di depan komputer mereka,
00:04:50mereka bisa menghabiskan waktu berjam-jam menggambar simbol-simbol kasar,
00:04:53sesuatu yang mereka sebut whiteboard.
00:04:55Para peneliti telah menemukan ribuan dialek yang sering kali lebih dari selusin digunakan dalam satu kantor.
00:05:00Namun,
00:05:00belum ada ahli bahasa yang berhasil menguraikan apa tujuannya..
00:05:03Makhluk yang sombong,
00:05:04tubuh mereka telah berevolusi selama ribuan tahun untuk bisa duduk dalam postur yang tidak biasa sambil melihat diri mereka sendiri secara online.
00:05:13Ini sering berlangsung selama berjam-jam menggunakan alasan mereka sedang menunggu code review,
00:05:18tapi ketika ditekan mengapa mereka begitu tidak aktif.
00:05:21Dan akhirnya,
00:05:22setelah seharian mencapai sangat sedikit,
00:05:24para keyboard warrior kita siap untuk tidur.
00:05:27Baca sebentar dan lampu mati..
00:05:29Selamat malam, coder kecil.
00:05:30Jadi bagaimana saya bisa tidur nyenyak di malam hari?
00:05:32Nah,
00:05:33saya punya Sentry untuk membantu saya menghancurkan bug-bug itu.
00:05:36Dan saya tidak,
00:05:37saya tidak berbicara tentang bug-bug kecil remeh dari South Dakota yang mati di musim dingin.
00:05:42Saya berbicara tentang bug-bug hutan yang besar dan ganas.
00:05:45Dan saya tidak takut pada mereka,
00:05:47ngomong-ngomong,
00:05:48cuma,
00:05:48tapi saya bisa menghancurkan bug-bug itu dengan Seer oleh Sentry.
00:05:52Jadi saya agak lebih termotivasi tentang yang satu itu untuk seperti,
00:05:55oke,
00:05:56biarkan saya coba lihat seperti apa,
00:05:58berapa banyak informasi yang sudah mereka posting.
00:06:00Dan saya telah membaca,
00:06:01saya sudah agak membaca setelahnya,
00:06:03mereka punya ringkasan di mana mereka memposting RCA dan itu sangat samar.
00:06:07Seperti RCA itu tidak benar-benar menjelaskan banyak hal.
00:06:10Saya kemudian menyadari bahwa mereka memposting presentasi lengkap seperti di re:Invent di bulan Desember,
00:06:16mereka,
00:06:16atau saya rasa saya tidak tahu apakah re:Invent itu di bulan Desember,
00:06:20tapi videonya diunggah di bulan Desember dari presentasi re:Invent di mana mereka membahas pemadaman ini..
00:06:26Jadi saya pergi dan menonton semuanya.
00:06:28Dan setelah membaca seluruh RCA dan menonton seluruh presentasi,
00:06:32saya masih merasa seperti.
00:06:34Saya tidak melihat penjelasan sebenarnya tentang bug-nya di sini,
00:06:38kan?
00:06:39Seperti saya mencoba mencari tahu apa bug yang sebenarnya dan itu tidak pernah dijelaskan..
00:06:45Jadi yang ingin saya lakukan adalah membahas hal itu,
00:06:48menjelaskan mengapa menurut saya mereka tidak menjelaskan apa bug-nya dan menggunakannya sebagai contoh bahwa saya rasa orang-orang tidak seharusnya langsung bilang,
00:06:55Oh,
00:06:56oke,
00:06:56saya paham apa bug-nya.
00:06:57Karena ada orang yang membalas saya dan bilang,
00:06:59Oh,
00:07:00biar saya jelaskan bug-nya ke kamu.
00:07:02Lalu mereka cuma menjelaskan hal yang sama.
00:07:04Saya bilang, itu bukan bug-nya.
00:07:05Jadi semua orang seolah-olah terdorong untuk bilang,
00:07:07saya paham.
00:07:08Karena saya sudah membacanya.
00:07:09Padahal tidak,
00:07:10kalau kamu tidak bisa memberitahu saya apa sebenarnya bug itu,
00:07:13berarti kita belum selesai di sini..
00:07:14Kita seharusnya punya penjelasan yang lebih lengkap.
00:07:17Jadi apakah semua yang saya katakan masuk akal?
00:07:19Ya.
00:07:19Pertama-tama,
00:07:20saya cuma ingin bilang,
00:07:21saya paham persis apa yang kamu maksud,
00:07:23Casey..
00:07:23Langsung dari awal, kan.
00:07:25Langsung gitu.
00:07:26Kamu kayak,
00:07:27oke,
00:07:27saya tahu,
00:07:28saya tahu persis apa yang kamu maksud.
00:07:31Tidak ada pertanyaan dari saya.
00:07:34Tidak ada hambatan.
00:07:35Terima kasih semuanya.
00:07:37Saya baik-baik saja..
00:07:39Sampai jumpa besok.
00:07:40Tidak masalah.
00:07:41Saya cuma ingin bilang,
00:07:42saya sangat suka mendengarkan Casey bicara di podcast ketika saya mendengarkan di Spotify,
00:07:47tapi juga sekarang,
00:07:48saya bisa mendengarkan kamu bicara selama satu jam.
00:07:51Mantap juga shoutout-nya untuk Spotify.
00:07:53Saya baru mau bilang,
00:07:55saya baru mau bilang,
00:07:56apalagi kalau kamu mendengarkan di Spotify,
00:07:58kualitasnya luar biasa.
00:08:00Kamu juga dapat bonus ekstra, kan?
00:08:02Kamu dapat semua obrolan sebelum dan sesudah ekstra yang sebenarnya.
00:08:05Kami mulai memposting versi yang lebih panjang di Spotify yang lebih banyak ekstra-nya.
00:08:10Ya.
00:08:11Waktu yang kurang dari topik bukan tentang topik,
00:08:14tapi sedikit lebih banyak ngobrol di Spotify karena penonton live mendapatkan obrolannya..
00:08:19Mereka bisa masuk ke sini.
00:08:21Mereka bisa dengar tentang trash dan kecanduan Pokemon-nya,
00:08:23yang mungkin bahkan kamu tidak tahu karena kamu tidak,
00:08:26kamu mendengarkan ini di YouTube,
00:08:27kan?
00:08:28Kamu tidak, kamu tidak akan mendengar semua hal seru itu.
00:08:30Itu agak sulit dijual untuk 10 menit pertama video YouTube.
00:08:33Sangat sulit dijual untuk video YouTube.
00:08:35Seperti,
00:08:36saya akan menonton empat orang bicara tentang sesuatu yang bahkan tidak saya mengerti.
00:08:40Dan namanya dynamo DB.
00:08:41Yep..
00:08:41Karena kita mulai podcast-nya,
00:08:42mungkin kita harus memperkenalkan Adam.
00:08:43Oh ya.
00:08:44Itu poin yang sangat bagus..
00:08:45Kita belum melakukannya sama sekali.
00:08:47Halo.
00:08:47Ceritakan sedikit tentang mengapa kamu ada di podcast hari ini..
00:08:50Karena saya ada di rumah TJ alasan nomor satu,
00:08:54alasan nomor satu kenapa TJ mewajibkan semua orang yang mengunjungi rumahnya untuk masuk podcast.
00:09:01Sudah beberapa kali agak canggung.
00:09:04Ya.
00:09:05Yup.
00:09:05Siapa kamu sebenarnya??
00:09:07Selain AWS hero.
00:09:08Saya bahkan bukan itu, saya bukan AWS hero.
00:09:12Baiklah..
00:09:13Dikeluarkan dari kelompok superhero.
00:09:15Gimana itu caranya?
00:09:16Kamu cuma tidak, tidak diperpanjang..
00:09:18Saya hero satu periode dan mereka memutuskan,
00:09:20Oh,
00:09:21kamu,
00:09:21apakah itu kayak bayar?
00:09:23Kamu bayar untuk jadi hero??
00:09:24Tidak, tidak, saya cuma, saya tidak terlalu peduli lagi.
00:09:27Tidak pernah membahasnya.
00:09:29Jadi mereka kayak, mungkin dia bukan hero lagi.
00:09:31Sekarang dia villain.
00:09:32Casey terlihat seperti dia bagian dari semacam misteri pembunuhan.
00:09:36Dia berdiri di sana.
00:09:37Oh dude.
00:09:38Kita, kita akan segera dapat, uh, seperti, uh, siapa itu?
00:09:41Nick Hill.
00:09:41Orang yang melakukan semua gambar di papan.
00:09:44Lalu muncul.
00:09:45Casey Muratori.
00:09:45Itu yang kamu pikirkan.
00:09:47Muratori.
00:09:47Apakah Muratori atau Muratori?
00:09:49Oh Tuhan.
00:09:49Kamu akan melakukan visual, kan?
00:09:51Jadi saya tahu ini podcast terbaik..
00:09:54Secara harfiah, ini yang terbaik untuk diikuti.
00:09:57Uh, pengucapannya Muratori oleh keluarga saya.
00:10:00Seperti hampir ada huruf Y di sana seperti Muratori,
00:10:04tapi itu benar.
00:10:05Tidak terlalu masuk akal karena itu bahasa Italia,
00:10:08itu nama Italia.
00:10:09Dan dalam bahasa Italia, akan jadi Muratori atau Muratori..
00:10:13Tidak masuk akal.
00:10:14Jadi mengapa, bagaimana bisa jadi mur, saya tidak tahu.
00:10:18Itu semacam hal imigran Italia Amerika yang terjadi.
00:10:22Sepertinya.
00:10:23Saya tidak tahu.
00:10:24Oke.
00:10:24Jadi pada dasarnya inilah yang mereka katakan..
00:10:28Mereka punya yang namanya endpoint API,
00:10:31tapi mereka menyebutnya begitu.
00:10:33Dan ini adalah alamat domain.
00:10:35Seperti kalau kamu mencari di DNS,
00:10:37ini adalah nama yang akan kamu cari untuk tahu ke mana kamu harus mengirim permintaan DynamoDB-mu.
00:10:44Dan hal-hal ini, sepertinya, terlihat seperti ini..
00:10:47Dan Adam mungkin bisa mengonfirmasi ini karena dia adalah,
00:10:51atau dulu adalah seorang hero.
00:10:53Mereka terlihat seperti, Oh, tertinggal.
00:10:56Ya.
00:10:56Kita, kita beberapa detik tertinggal.
00:10:58Karena video kita menghilang di river.
00:11:00Oh, itu dia.
00:11:01Jadi mereka terlihat seperti dynamodb.use-east-1.api.aws atau semacam itu.
00:11:05Dan sepertinya tergantung apakah kamu menggunakan IPv6 atau IPv4.
00:11:09Seperti mereka punya nama berbeda tergantung hal-hal tertentu atau apakah kamu menggunakan seperti yang spesifik,
00:11:15seperti mereka bilang pemerintah menggunakan yang berbeda atau apa pun.
00:11:19Jadi nama-nama ini seperti nama yang secara efektif kamu hardcode,
00:11:23sepertinya,
00:11:23ke dalam aplikasimu di mana kamu seperti,
00:11:26ketika saya perlu melakukan sesuatu dengan DynamoDB,
00:11:28saya akan seperti meminta ini.
00:11:30Apakah ini masuk akal.
00:11:31Dan apakah itu terdengar benar.
00:11:33Adam untuk seperti,
00:11:34karena saya tidak menggunakan hal-hal AWS.
00:11:36Ya?
00:11:37Ya?
00:11:37Ya.
00:11:38Itu benar..
00:11:38Jadi,
00:11:39kamu tahu,
00:11:39kamu,
00:11:40kamu meminta sesuatu seperti ini dan kamu akan mengirimnya dengan sempurna.
00:11:42Maksud saya, saya tahu apa yang dia katakan.
00:11:45Ya.
00:11:45Jadi itu kemudian akan mengarahkan kamu ke suatu tempat karena jelas tidak ada satu mesin yang akan menangani semua lalu lintas DynamoDB di seluruh alam semesta.
00:11:55Bahkan jika kamu membaginya berdasarkan wilayah,
00:11:58yang bisa kamu lihat di sini,
00:11:59kamu seharusnya memilih wilayah.
00:12:01Sepertinya kamu tidak,
00:12:02kamu tidak mengirimnya ke alamat utama.
00:12:05Kamu mengirimnya ke alamat regional atau mungkin ada alamat utama yang bisa kamu gunakan yang akan mengetahuinya.
00:12:11Saya tidak tahu..
00:12:13Tapi bagaimanapun,
00:12:14pada suatu titik kamu berbicara dengan ini dan ini perlu menunjuk ke yang secara efektif seperti skema load balancing.
00:12:22Jadi hal ini seharusnya menunjuk ke yang secara efektif mereka sebut pohon DNS..
00:12:27Meskipun mereka tidak pernah benar-benar menjelaskan sifat pohonnya sama sekali.
00:12:31Kedengarannya lebih seperti,
00:12:32seperti array berbobot,
00:12:33kalau boleh dibilang,
00:12:34di mana kamu hanya mengatakan,
00:12:36ini ada banyak mesin dan kamu akan memilih mesin-mesin itu berdasarkan bobot yang kami tetapkan sehingga kami bisa load balance,
00:12:42kan?
00:12:43Jadi jika sebuah mesin tertinggal,
00:12:44mungkin kami menetapkan bobotnya lebih rendah.
00:12:47Dan jika sebuah mesin tampak agak kosong,
00:12:49kami menetapkan bobotnya lebih tinggi.
00:12:51Dan jadi mereka menyebutnya pohon.
00:12:52Jadi saya mengasumsikan itu pohon.
00:12:54Mereka tidak pernah menjelaskan apa bagian pohonnya,
00:12:57tapi nama ini seharusnya menunjuk.
00:12:58Boleh saya interupsi sebentar??
00:13:00Ngomong-ngomong,
00:13:01ada seseorang yang mendapatkan promosi L6 mereka berdasarkan pohon itu.
00:13:04Jadi saya pikir lain kali kamu harus mencari tahu apa pohon itu.
00:13:07Karena itu sangat berarti bagi seseorang.
00:13:09Oke.
00:13:10Ada paket dan insinyur terjadi.
00:13:11Saya setuju.
00:13:12Pohon itu mungkin penting.
00:13:13Hanya saja tidak penting untuk bug ini.
00:13:15Dan bahkan itu,
00:13:16jadi saya akan katakan tidak perlu bagi mereka untuk menjelaskan pohon itu..
00:13:19Jadi saya tidak masalah bahwa mereka melewatkan apa yang sedang dilakukan pohon itu.
00:13:23Tapi saya punya pertanyaan cepat juga..
00:13:25Ya.
00:13:26Apakah itu disebut pohon karena itu analisis akar masalah atau tidak??
00:13:29Tidak ada lagi lelucon.
00:13:30Kita terlalu keluar topik.
00:13:32Saya minta maaf.
00:13:33Saya minta maaf.
00:13:34Jadi bagaimanapun, ini seharusnya menunjuk ke itu..
00:13:37Dan itu,
00:13:38semacam skema load balancing ini pada dasarnya dari entri DNS dan cara mereka menjelaskan ini dalam presentasi mereka adalah mereka akan menggunakan sesuatu seperti saya sebut plan one 45 dot dynamo DB,
00:13:48seperti DDB dot AWS,
00:13:49kan?
00:13:50Nah ini adalah root dari pohon itu,
00:13:52maksud saya,
00:13:52bukan root cause analysis,
00:13:54tapi seperti pohon ini,
00:13:55ini akan berisi seperti,
00:13:56ini adalah catatan level teratas dari banyak catatan yang memungkinkannya melakukan load balancing.
00:14:02Dan saya asumsikan route 53 semacam memiliki kemampuan load balancing ini.
00:14:06Saya membaca di antara baris presentasinya.
00:14:08Mereka tidak mengatakannya secara langsung,
00:14:10tapi saya asumsikan route 53,
00:14:12yang mereka lakukan semua ini melaluinya,
00:14:14yang mana adalah sistem DNS mereka sendiri,
00:14:16memungkinkan load balancing itu terjadi dengan Anda hanya mengatur hal-hal di sini yang mengatakan bagaimana load balancing seharusnya bekerja kan.
00:14:24Dan kemudian itu akan memilih mesin yang benar berdasarkan semacam randomisasi dalam bobot atau apa pun.
00:14:29Sekarang,
00:14:30yang mereka katakan adalah nama ini,
00:14:32yang benar-benar ada.
00:14:33Dan rupanya ada pohon atau semacam itu.
00:14:35Nama ini adalah yang mereka gunakan untuk presentasi saja.
00:14:38Mereka tidak pernah benar-benar menggunakan nama yang dapat dibaca manusia untuk plan ini,
00:14:43seperti one 45 yang saya tulis di sini atau apa pun.
00:14:46Sebenarnya itu adalah hash dari sesuatu.
00:14:48Jadi sebenarnya akan seperti,
00:14:49Anda tahu,
00:14:50zero a F E one,
00:14:51two,
00:14:51Anda tahu,
00:14:52nine a atau semacam itu,
00:14:53kan.
00:14:53Itulah yang sebenarnya ada di sana.
00:14:55Jadi jika Anda pergi dan melihat,
00:14:57Anda tidak akan melihat nama yang dapat dibaca manusia,
00:15:00atau setidaknya pada waktu itu,
00:15:02Anda tidak akan,
00:15:03saya kira Anda tidak akan melihat seperti plan one 45.
00:15:05Anda hanya melihat itu.
00:15:07Dan jadi idenya adalah, oke, pengguna akan menggunakannya.
00:15:10Mereka query nama ini route 53 akan mengarahkan mereka seperti ke sini.
00:15:14Dan ini adalah semacam pohon load balancing yang bisa digunakan route three yang akan memungkinkan Anda sampai ke tempat yang Anda butuhkan.
00:15:21Benar.
00:15:21Mereka akan memberi Anda mesin yang sebenarnya yang bisa Anda kirimi traffic pada akhirnya.
00:15:26Sekali lagi, mereka tidak menjelaskan semua itu.
00:15:29Jadi saya tidak tahu bagaimana semua itu bekerja.
00:15:31Saya tidak pernah menyentuh atau menggunakan route 53.
00:15:34Jadi saya tidak tahu,
00:15:35tapi kita hanya akan asumsikan itu terjadi karena itu tidak penting untuk bug ini..
00:15:41Kita punya AWS hero.
00:15:42Jadi jika Anda,
00:15:43jika Anda bingung,
00:15:44Anda selalu bisa tanya Adam dan dia mungkin punya wawasan lebih lanjut.
00:15:48Maksud saya, ya, silakan saja..
00:15:50Nah,
00:15:51route 53 memang memiliki banyak cara berbeda yang bisa Anda gunakan untuk membagi traffic.
00:15:54Jadi ya, weighted adalah salah satunya.
00:15:55Dan itu terdengar seperti yang mereka jelaskan..
00:15:57Jadi entah bagaimana mereka telah mengatur catatan-catatan ini dengan itu.
00:16:00Dan mereka hanya tidak mengatakan bagaimana,
00:16:02tapi sesuatu,
00:16:02sesuatu dalam format pohon melakukan itu.
00:16:04Tebakan saya adalah ada seperti weighted,
00:16:05seperti pohon memiliki seperti weighted seperti ada beberapa bobot di bagian atas yang bercabang ke lebih banyak bobot atau semacam itu,
00:16:10karena itu lebih mudah untuk ditangani karena ada banyak dari mereka atau semacam itu..
00:16:14Siapa yang tahu?
00:16:15Bagaimanapun, saya tidak tahu.
00:16:16Intinya, inilah yang seharusnya terjadi secara normal..
00:16:20Sekarang,
00:16:20alasan ini disebut plan 145 di sini,
00:16:22meskipun sebenarnya akan menjadi beberapa kode hash,
00:16:25tapi mereka menyebutnya sebagai seperti plan 145 adalah load balancing,
00:16:30seperti yang mungkin Anda bayangkan,
00:16:32harus terus-menerus karena mesin DynamoDB sedang melakukan sesuatu sepanjang waktu.
00:16:37Mereka menjadi lebih overloaded.
00:16:39Ada mesin yang down atau crash atau siapa tahu apa, kan??
00:16:43Bisa jadi sedang terjadi, dinonaktifkan.
00:16:45Kapasitas baru bisa ditambahkan.
00:16:48Jadi hal-hal ini harus terus diperbarui, sepanjang waktu.
00:16:51Jadi endpoint API utama yang Anda sambungkan ini,
00:16:55harus terus-menerus menyesuaikan pohon yang ditunjuknya.
00:16:59Dan cara mereka melakukannya adalah dengan membuat pohon lain,
00:17:03pohon yang akan mereka tuju,
00:17:05kan?
00:17:05Mereka membuat semacam, misalnya, plan 146 atau semacamnya.
00:17:10Dan mereka membuat seluruh pohonnya di sini.
00:17:13Lalu ketika sudah siap,
00:17:14seperti ketika pohon ini sudah selesai,
00:17:17mereka mengambil catatan ini,
00:17:19dan alih-alih mengarahkannya ke yang itu,
00:17:22mereka mengarahkannya ke yang ini,
00:17:24kan?
00:17:24Jadi Anda membuat yang baru,
00:17:26dan mereka pindah ke sana hanya dengan mengubah nama itu.
00:17:30Nah,
00:17:31karena alasan tertentu,
00:17:32dan alasan ini tidak benar-benar dijelaskan..
00:17:36Cara mereka menyiapkan proses itu adalah dengan membaginya menjadi dua bagian.
00:17:41Ada sesuatu yang disebut planner,
00:17:43yang pada dasarnya menentukan seperti apa pohon baru itu nantinya.
00:17:47Jadi bisa dibayangkan ada mesin yang disebut planner.
00:17:50Dan saya tidak tahu apakah itu mesin yang sebenarnya atau hanya proses yang berjalan di mesin tertentu yang juga menjalankan hal lain,
00:17:59entahlah.
00:17:59Tapi ada sesuatu yang disebut planner.
00:18:02Dan sejauh yang saya tahu,
00:18:03hanya ada satu,
00:18:04artinya hanya ada satu planner yang ada di sana dan menentukan seperti apa plan baru yang akan kita gunakan nantinya..
00:18:13Dan planner ini terus melakukannya.
00:18:16Jadi dia menghasilkan plan 145,
00:18:18lalu menghasilkan plan 146,
00:18:20kemudian 147,
00:18:21148,
00:18:229,
00:18:2210,
00:18:23dan seterusnya,
00:18:24kan?
00:18:25Dan terus saja menghasilkan plan selamanya,
00:18:28karena itulah tugasnya.
00:18:30Nah, ternyata planner tidak pernah benar-benar membuatnya.
00:18:35Tugasnya bukan untuk membuat plan tersebut di Route 53.
00:18:39Tugasnya hanya untuk menentukan seperti apa plan itu seandainya seseorang memasukkannya ke Route 53.
00:18:47Lalu mereka punya tiga enactor..
00:18:50Enactor-enactor ini mendapatkan plan dari planner,
00:18:59dan mereka memasukkannya ke Route 53.
00:19:06Apakah ini masuk akal?
00:19:08Nah,
00:19:08satu planner,
00:19:09sejauh yang saya pahami dari penyebutannya,
00:19:11tiga enactor.
00:19:12Tidak ada penjelasan mengapa bisa seperti ini.
00:19:15Mereka bilang alasan ada tiga enactor adalah agar toleran terhadap kesalahan,
00:19:19seperti jika salah satunya mati atau semacamnya.
00:19:22Tapi mereka tidak pernah menjelaskan mengapa Anda tidak perlu tiga planner juga,
00:19:26karena jika planner mati,
00:19:28maka enactor tidak punya apa-apa untuk dilaksanakan.
00:19:31Jadi tidak begitu masuk akal.
00:19:32Jadi tidak ada penjelasan dalam presentasi itu tentang mengapa struktur ini terlihat seperti ini.
00:19:38Ini sebenarnya tidak terlalu penting untuk bug yang terjadi bahwa strukturnya seperti ini,
00:19:43meskipun sebenarnya agak penting juga,
00:19:45seperti yang akan kita lihat nanti.
00:19:47Jadi saya agak bingung dengan fakta bahwa mereka tidak memberikan justifikasi untuk ini,
00:19:52tapi tidak apa-apa.
00:19:53Jadi semoga ini masuk akal.
00:19:55Kita punya planner.
00:19:56Kita punya tiga enactor.
00:19:57Enactor-enactor ini semua berusaha melaksanakan plan ini.
00:20:01Nah,
00:20:01yang terjadi di sini adalah bahwa karena,
00:20:03lagi-lagi,
00:20:04alasan yang satu-satunya yang mereka katakan dalam presentasi adalah agar lebih mudah dipahami.
00:20:09Ini satu-satunya informasi tentang hal itu.
00:20:12Mereka bilang agar lebih mudah dipahami.
00:20:14Karena lebih mudah dipahami,
00:20:16enactor-enactor ini menggunakan serialisasi.
00:20:18Jadi alih-alih mereka hanya mencoba membuat record,
00:20:21dan jika record sudah ada,
00:20:23ya tidak membuatnya atau semacamnya,
00:20:25dengan kata lain,
00:20:26saya punya tiga orang yang berjalan..
00:20:29Kita semua ingin membuat,
00:20:31misalnya,
00:20:32record tingkat atas ini,
00:20:34plan146.ddb.aws,
00:20:35kan?
00:20:36Kita semua berusaha melakukan hal itu.
00:20:38Salah satu dari kita melakukannya terlebih dahulu.
00:20:41Orang berikutnya mencoba melakukannya,
00:20:43dan ternyata sudah ada atau semacamnya,
00:20:46kan?
00:20:46Kita semua berusaha membuat record yang sama.
00:20:49Jadi secara teori,
00:20:50kita bisa saja punya tiga orang yang secara acak mengerjai bagian mana pun dari rencana yang sedang mereka kerjakan,
00:20:56dan secara teori seharusnya semua berjalan baik,
00:20:59kan?
00:20:59Dan saya agak merasakan,
00:21:01meskipun dia tidak mengatakannya secara terang-terangan,
00:21:04saya agak merasakan dari pembicaranya bahwa dia akan setuju dengan apa yang baru saja saya katakan,
00:21:10artinya mereka bisa saja membiarkan semuanya berjalan secara sembarangan dan seharusnya tidak masalah.
00:21:16Namun,
00:21:16dia bilang,
00:21:17mereka menggunakan serialisasi untuk memudahkan pemahaman.
00:21:20Yang dimaksud adalah alih-alih para enactor ini mengerjakannya seperti itu,
00:21:24yang mereka lakukan adalah mencoba memperoleh lock untuk endpoint mana pun yang sedang mereka coba perbarui.
00:21:30Jadi dengan kata lain,
00:21:32jika orang ini mencoba memperbarui salah satu dari ini,
00:21:35dan saya mendapat kesan bahwa itu terjadi jika Anda mencoba memperbarui yang ini,
00:21:39tapi bisa jadi jika Anda mencoba memperbarui yang ini,
00:21:43atau bisa jadi pada keduanya.
00:21:44Mereka tidak pernah benar-benar mengatakan 100%,
00:21:47jika saya ingat dengan benar,
00:21:49tepatnya di mana locking terjadi.
00:21:51Tapi locking terjadi dengan mereka berkata,
00:21:53oke,
00:21:54saya akan membuat lock yang berupa DNS record.
00:21:56Dan dengan memanfaatkan fakta bahwa Route 53 memiliki konsep atomic,
00:22:00yaitu,
00:22:01Anda tahu,
00:22:01saya bisa melakukan dua hal dan jika keduanya tidak akan berhasil,
00:22:05maka tidak akan melakukan keduanya..
00:22:08Mereka pada dasarnya membuat sistem locking yang mengunci melalui Route 53.
00:22:13Jadi DNS record Route 53 sebenarnya adalah lock record,
00:22:16jika itu masuk akal.
00:22:17Boleh saya tanya sesuatu?
00:22:18Ya.
00:22:19Anda bilang ini dilakukan melalui serialisasi?
00:22:21Saya tidak terlalu paham apa artinya.
00:22:23Karena saya pikir serialisasi hanya mengonversi dari satu memori ke representasi memori yang berbeda dari sesuatu.
00:22:29Maaf, serialisasi yang berbeda.
00:22:31Jadi ya, itu serialisasi.
00:22:32Dalam hal ini,
00:22:33yang kami maksud adalah serialisasi temporal secara harfiah,
00:22:36artinya mereka ingin para enactor ini memiliki semacam cara di mana mereka akan mengatur perilaku mereka menjadi urutan tertentu daripada hanya bersifat sembarangan.
00:22:45Dan cara mereka melakukannya adalah dengan locking.
00:22:48Jadi yang akan terjadi adalah,
00:22:50alih-alih orang ini hanya melakukan apa pun yang akan mereka lakukan,
00:22:54seperti,
00:22:54oke,
00:22:55saya akan seperti,
00:22:56saya menyelesaikan ini,
00:22:57saya akan mengarahkan orang ini ke plan 146 sekarang.
00:23:00Alih-alih melakukan itu,
00:23:01mereka mencoba memperoleh lock pada seperti ini,
00:23:04kan?
00:23:04Dan jika tidak mendapatkan lock,
00:23:06mereka tidak akan melakukan perubahan.
00:23:08Jadi hanya satu dari enactor ini yang bisa dalam proses memperbarui ini pada waktu tertentu.
00:23:13Apakah itu masuk akal?
00:23:14Mm hmm.
00:23:15Sekali lagi,
00:23:16tepatnya apa yang mereka coba lakukan dengan itu tidak pernah dijelaskan.
00:23:20Mereka hanya bilang memudahkan untuk dipahami dan berhenti sampai di situ.
00:23:24Jadi saya tidak tahu mengapa mereka pikir ini adalah peningkatan.
00:23:27Dan lucunya, inilah yang akhirnya mengungkap bug tersebut.
00:23:30Jadi ini bukan peningkatan.
00:23:32Kalau ada, ini mungkin malah buruk.
00:23:34Tapi jadi Casey,
00:23:35apakah Anda bilang mereka tidak punya seperti,
00:23:37mereka tidak punya alasan yang bagus untuk mereka bilang kita akan membuat enactor berjalan hampir seperti satu per satu?
00:23:44Mengapa mereka punya, mengapa mereka punya tiga enactor?
00:23:47Saya tidak mengerti.
00:23:48Seperti, mengapa mereka tidak hanya punya satu saja?
00:23:51Mereka hanya tidak mengatakan itu.
00:23:53Kita tidak tahu mengapa.
00:23:54Dan mereka tidak terlalu menjelaskan,
00:23:56seperti,
00:23:57saya tidak benar-benar mendengar penjelasan tentang bagaimana Anda memiliki tiga enactor bersamaan.
00:24:02Anda mengharapkan mereka bisa down,
00:24:04itulah sebabnya Anda punya tiga..
00:24:07Benar.
00:24:08Tapi mereka mengambil lock.
00:24:09Jadi apa yang terjadi jika orang ini mengambil lock lalu down??
00:24:13Seperti, saya tidak mendengar penjelasan untuk itu juga.
00:24:16Jadi ini semua sangat membingungkan bagi saya.
00:24:19Seperti saya,
00:24:20saya,
00:24:20saya tidak mengeluh tentang itu sebagai bagian dari apa yang kita bicarakan di sini,
00:24:25karena itu tidak penting untuk masalahnya bagi saya.
00:24:27Tapi sebagai presentasi,
00:24:29saya punya begitu banyak pertanyaan.
00:24:31Seperti saya berpikir,
00:24:32saya tidak mengerti mengapa kamu melakukan semua ini sejujurnya.
00:24:35Benar.
00:24:36Dan mungkin itu,
00:24:37lagi-lagi sebagian bisa jadi karena saya tidak menggunakan layanan AWS.
00:24:41Bisa jadi beberapa hal ini akan jelas jika kamu adalah seseorang yang rutin menggunakan Route 53 atau semacamnya,
00:24:47kamu akan berpikir,
00:24:48oh,
00:24:48itu karena kunci bisa diatur ke waktu tunggu atau maksud saya,
00:24:52saya tidak tahu.
00:24:52Benar.
00:24:53Tapi bagaimanapun, jadi ya, jadi mereka melakukan itu.
00:24:56Dan yang akhirnya terjadi untuk,
00:24:58untuk ini,
00:24:58hal yang mengungkap bug-nya adalah yang akhirnya terjadi adalah para enactor ini,
00:25:02ketika mereka tidak mendapatkan kunci,
00:25:05mereka hanya melakukan seperti mundur,
00:25:07kan?
00:25:07Pada dasarnya mereka akan seperti,
00:25:09oke,
00:25:09biarkan saya menunggu dan saya akan mencoba lagi.
00:25:12Jadi seorang aktor,
00:25:13ini seorang aktor mencoba untuk mendapatkan kunci,
00:25:16tapi orang lain sudah memiliki kuncinya.
00:25:18Jadi dia hanya menunggu sebentar.
00:25:20Dia mencoba untuk mendapatkan kunci lagi.
00:25:22Itulah yang akan terjadi.
00:25:23Benar.
00:25:24Dan apa yang mereka katakan terjadi adalah mereka menemui kasus patologis,
00:25:28kutipan,
00:25:28di mana salah satu enactor itu,
00:25:30kamu tahu,
00:25:31telah menerapkan beberapa rencana.
00:25:32Dan rencana itu, katakanlah sudah cukup lama.
00:25:35Saya pikir mereka menggunakan 110 sebagai contoh yang mereka gunakan.
00:25:39Jadi itu menerapkan rencana 110.
00:25:40Dan itu ingin mengarahkan,
00:25:42kamu tahu,
00:25:42itu seperti,
00:25:43saya harus mengatur API untuk mengarah ke 110 saya mencoba untuk mendapatkan kunci untuk memperbarui dynamodb.use.one atau apa pun,
00:25:50dan gagal karena orang lain sedang menerapkan rencana 111 atau semacamnya.
00:25:54Benar.
00:25:54Atau rencana 109 bisa jadi rencana sebelumnya.
00:25:57Jadi enactor lainnya melakukannya.
00:25:59Dia tidak bisa melakukannya.
00:26:00Dia mundur.
00:26:01Benar..
00:26:02Dan ingat enactor ini di sini, kita di 110.
00:26:05Dia mencoba, dia benar-benar ingin menerapkannya..
00:26:07Dia mencoba lagi.
00:26:08Orang lain memiliki kuncinya.
00:26:09Sekarang dia mencoba lagi, masih terkunci.
00:26:11Orang ini terjebak di 110,
00:26:13sangat berusaha untuk menerapkannya.
00:26:14Dia tidak bisa melakukannya.
00:26:16Rupanya ini terjadi begitu banyak kali sehingga enactor lainnya dan perencana hanya terus menghasilkan rencana baru sepanjang waktu ini.
00:26:22Benar..
00:26:23Enactor lainnya,
00:26:24mereka sampai ke sekitar 145 atau semacamnya dan 146 mereka menerapkan rencana yang jauh lebih maju dari 110.
00:26:30Benar.
00:26:31Dan orang ini masih terhenti karena dia hanya sial tidak pernah mendapatkan kuncinya.
00:26:36Benar.
00:26:37Akhirnya,
00:26:37pada suatu titik setelah seperti rencana 145 sudah diterapkan dan ditunjuk oleh beberapa enactor lain dan semua hal itu,
00:26:44rencana 110,
00:26:45enactor yang tidak aktif ini masih berusaha melakukannya akhirnya mendapatkan kuncinya.
00:26:50Maksud saya, itu seperti, ya.
00:26:52Dan kemudian dia berkata,
00:26:53oke,
00:26:54kita mengarah ke 110 sekarang.
00:26:56Ya.
00:26:56Benar..
00:26:58Jadi sekarang berada di rencana lama yang sudah basi,
00:27:00tapi ini sebenarnya seharusnya tidak menjadi masalah.
00:27:02Benar..
00:27:03Karena pada akhirnya lain kali beberapa enactor memiliki sesuatu,
00:27:05itu akan menjadi rencana yang jauh lebih baru.
00:27:07Mereka akan menerapkan rencana,
00:27:08kamu tahu,
00:27:09146 atau tujuh atau delapan atau apa pun.
00:27:11Dan kita akan mengarahkannya kembali ke ini dan kita kembali ke rencana yang baru.
00:27:14Jadi semua orang hanya akan mengalami penyeimbangan beban yang buruk selama beberapa menit,
00:27:17tapi kemudian akan baik-baik saja.
00:27:18Benar.
00:27:19Mereka memang mengalami penyeimbangan beban yang buruk setidaknya selama beberapa menit..
00:27:22Benar.
00:27:23Ya.
00:27:23Benar.
00:27:24Yah, itu jauh lebih buruk dari itu.
00:27:27Itulah yang seharusnya terjadi.
00:27:29Benar..
00:27:30Artinya seperti itulah cara mereka mengharapkan ini bekerja juga.
00:27:34Oke.
00:27:34Masalahnya adalah,
00:27:35mereka juga tidak ingin Route 53 menjadi tersumbat dengan semua rekaman ini.
00:27:40Karena jika mereka hanya membiarkannya begitu saja,
00:27:43pada akhirnya setelah,
00:27:44kamu tahu,
00:27:44tiga bulan,
00:27:45kamu memiliki seperti 8 miliar rekaman yang kamu masukkan ke Route 53 untuk setiap,
00:27:50kamu tahu,
00:27:50beberapa menit kamu memasukkan pohon besar dari bobot dan hal-hal semacam itu.
00:27:55Mereka berpikir,
00:27:56oke,
00:27:56pada suatu titik kita harus membersihkan rencana-rencana ini..
00:28:00Jadi enactor juga mencari plan yang lebih tua dari jumlah waktu tertentu.
00:28:05Dan jika mereka lebih tua dari jumlah waktu tertentu,
00:28:08mereka akan menghapusnya.
00:28:10Jadi yang terjadi adalah mereka menunjuk ke plan 110.
00:28:13Enactor ini akhirnya mendapatkan lock.
00:28:15Dia menunjuk ke 110.
00:28:17Enactor lain seperti, oh, wow, 110, wah, itu sudah tua.
00:28:20Kita harus menyingkirkan itu dan menghapusnya.
00:28:23Jadi sekarang DynamoDB us-east-1.api.aws menunjuk ke record yang tidak bisa di-resolve.
00:28:29Benar.
00:28:29Itu hanya sesuatu,
00:28:31sebenarnya,
00:28:31lagi-lagi,
00:28:32itu tidak akan terlihat seperti plan 110.
00:28:34Itu akan terlihat seperti OAFE129A,
00:28:37semacam hash,
00:28:38dot,
00:28:38kan,
00:28:39DDB.aws.
00:28:39Tapi dia menunjuk ke nama itu.
00:28:41Dan jika Anda menanyakan nama itu,
00:28:43Anda tidak mendapatkan apa-apa..
00:28:46Jadi yang akan terjadi pada saat itu adalah semua orang yang mencoba mendapatkan endpoint untuk mengirim sesuatu akan mendapatkan kembali nama yang tidak bisa di-resolve,
00:28:54pada dasarnya.
00:28:55Benar.
00:28:55Dan saya tidak benar-benar tahu apa yang terjadi di Route 53 ketika itu terjadi,
00:28:59tapi pada dasarnya Anda akan mendapatkan kembali sesuatu yang tidak bisa Anda gunakan atau hanya omong kosong untuk IP,
00:29:05entahlah.
00:29:05Tapi apapun itu,
00:29:06jika Anda benar-benar mencoba menggunakannya,
00:29:08Anda tidak akan mendapatkan respons.
00:29:10Benar..
00:29:10Menarik.
00:29:11Apakah ini karena AWS tidak menggunakan cukup Rust karena itu jelas merupakan bug use-after-free?
00:29:16Dan jadi saya pikir Rust akan menyelesaikan itu, kan?
00:29:19Jika Anda menulis ulang Route 53 sepenuhnya dalam Rust,
00:29:22jelas,
00:29:22semua masalah ini tidak ada.
00:29:24Tidak,
00:29:24untuk spesifiknya,
00:29:25saya pikir dalam presentasi,
00:29:27mereka memang mengatakan,
00:29:28bukan tentang Rust,
00:29:29tapi mereka mengatakan apa yang akan terjadi secara spesifik,
00:29:32yaitu saya pikir ketika Anda meminta hal ini atau hal ini atau hal itu,
00:29:36saya tidak tahu yang mana yang mereka maksud,
00:29:38karena saya tidak bisa mengingat dengan jelas,
00:29:41Anda hanya akan mendapatkan kembali hal yang mengatakan tidak ada record yang ditemukan.
00:29:45Jadi itulah hasil akhir dari apa yang akan terjadi,
00:29:48apakah itu dari meminta ini atau meminta itu,
00:29:51saya tidak yakin,
00:29:51tapi hanya mendapatkan kembali tidak ada record yang ditemukan.
00:29:55Itulah yang akan Anda terima ketika Anda mencoba memanggil API itu.
00:29:58Jadi library apapun yang Anda gunakan untuk menggunakan DynamoDB,
00:30:02itu hanya akan seperti,
00:30:03hei,
00:30:04tidak ada record yang ditemukan,
00:30:05bro.
00:30:06Maaf.
00:30:06Benar.
00:30:07Jadi ini,
00:30:07jika Anda bertanya kepada siapa pun di internet,
00:30:10kan,
00:30:10mereka semua seperti,
00:30:12ya,
00:30:12mereka menjelaskan bug-nya.
00:30:13Itulah bug-nya.
00:30:14Bug-nya adalah ada race condition ini, kan?
00:30:17Semua orang,
00:30:17karena semua orang,
00:30:18segera setelah Anda mengatakan race condition,
00:30:21otak semua orang mati.
00:30:22Mereka seperti, oh, oke, well, itu race condition.
00:30:24Selesai.
00:30:25Tidak ada yang perlu dilihat di sini, kan?
00:30:27Jadi mereka seperti, itu race condition.
00:30:29Mereka menjelaskannya.
00:30:30Seperti, tidak, mereka tidak menjelaskannya.
00:30:33Karena jika Anda memikirkan apa yang akan terjadi di sini,
00:30:36segera setelah ini,
00:30:37semua orang mendapatkan ini,
00:30:38itu enactor baru.
00:30:39Enactor baru hanya akan membuat yang baru, kan?
00:30:42Dan jadi bug-nya, kan, adalah mengapa itu tidak terjadi?
00:30:45Itulah RCA sebenarnya yang ingin saya lihat adalah mengapa enactor berikutnya tidak datang dan memperbaikinya?
00:30:51Boleh saya lemparkan sesuatu yang lain?
00:30:53Bukankah itu juga bug?
00:30:54Seperti mengapa menulis record yang begitu tua sehingga harus segera dihapus?
00:30:58Nah,
00:30:59itu bukan itu karena itu adalah orang ini telah menulisnya cukup lama yang lalu.
00:31:03Dan itu...
00:31:03Tunggu.
00:31:04Well,
00:31:04maksud saya,
00:31:05jika Anda bertanya,
00:31:06mengapa mereka tidak menulis enactor dengan kode yang lebih baik.
00:31:09Ya, itu cukup keren..
00:31:11Oke, adil.
00:31:12Sepertinya jika Anda memperbarui ke sesuatu yang harus segera dihapus,
00:31:15bukankah seperti itu seperti itu terasa seperti masalahnya ada di sana.
00:31:19Anda telah melakukan sesuatu yang salah jauh sebelumnya.
00:31:21Ya,
00:31:22meskipun itu tidak benar-benar memperbaiki struktur teoritis dari hal ini,
00:31:26pemeriksaan sederhana di orang ini ketika setelah dia selesai backing off pada lock,
00:31:30dia mungkin harus memeriksa untuk melihat apakah dia akan mengatur ini ke sesuatu yang akan dia hapus jika dia menjalankan kode penghapusannya mungkin merupakan langkah pengamanan yang baik.
00:31:39Tapi ya, jadi 100% setuju dengannya.
00:31:41Oke,
00:31:42tapi enactor bekerja sangat,
00:31:43sangat keras untuk mendapatkan record itu.
00:31:45Menunggu waktu yang lama.
00:31:47Oh, dia akan mendapatkan kartu Pokemon-nya..
00:31:49Siapa pun yang pernah menunggu.
00:31:51Jadi biarkan dia menulis record-nya.
00:31:53Oke.
00:31:53Jadi, jadi saya ingin mendengar tentang itu..
00:31:56Sayangnya,
00:31:57jika Anda melihat presentasinya,
00:31:59dan Anda melihat RCA-nya,
00:32:00informasi itu tidak ada di mana-mana.
00:32:03Presentasinya setidaknya memiliki satu bagian kecil selama 12 detik yang memang menyebutkan di mana kira-kira bug tersebut berada.
00:32:14Jadi biar saya jelaskan apa itu.
00:32:17Jadi yang tampaknya terjadi bersamaan dengan ini,
00:32:21jadi ketika Anda melakukan DynamoDB us east one,
00:32:25tapi ketika Anda mengarahkan itu ke plan Anda,
00:32:29Anda juga melakukan operasi lain pada saat yang sama.
00:32:33Dan operasi itu adalah untuk mengatur rollback..
00:32:40Sepertinya DD.
00:32:41Apakah itu DDB dot rollback dot AWS?
00:32:45Saya tidak ingat persis apa itu di sini..
00:32:49Ada catatan rollback.
00:32:50Ini mengatur catatan itu ke plan lama apa pun.
00:32:54Jadi jika kita di sini menunjuk ke 145,
00:32:57dan sekarang kita akan menunjuk ke 110,
00:33:00benar,
00:33:00enactor lama ini,
00:33:01seperti saya pindah ke 110,
00:33:03ia mencoba mengaturnya,
00:33:05mengambil nama ini apa pun,
00:33:07benar saat ini,
00:33:08dan memindahkan nama baru itu,
00:33:10yang seharusnya plan 145,
00:33:12memindahkannya sehingga alamat rollback menunjuk ke plan lama..
00:33:18Benar.
00:33:18Dan ini hanya untuk debugging.
00:33:20Atau,
00:33:21Anda tahu,
00:33:21ini pada dasarnya hanya untuk kemudahan operator,
00:33:24benar??
00:33:24Jika mereka ingin kembali ke plan sebelumnya atau semacam itu,
00:33:28atau jika Anda hanya ingin tahu apa plan sebelumnya,
00:33:31Anda bisa melihatnya di sini,
00:33:32benar?
00:33:33Itu bagian satu dari apa yang mereka katakan tentang kegagalan,
00:33:36saya ingin menunjukkan satu hal di sini adalah ini juga tidak masuk akal bagi saya.
00:33:41Karena saya seperti,
00:33:42oke,
00:33:42Anda bilang ke saya bahwa hal-hal ini diperbarui setiap menit atau semacam itu.
00:33:46Apa gunanya memiliki salah satu dari itu?
00:33:49Seperti,
00:33:49pada saat Anda bahkan masuk,
00:33:51ini sudah diperbarui dari yang Anda ingin rollback menjadi sesuatu yang baru.
00:33:55Itu sebenarnya plan yang tidak Anda inginkan karena semuanya mati,
00:33:58benar?
00:33:59Seperti, itu, benar?
00:34:00Jika Anda,
00:34:00Anda tidak menginginkan ini,
00:34:02Anda hanya ingin nama-nama ini dalam daftar.
00:34:04Jadi Anda bisa seperti, apa itu pada pukul 12.30.
00:34:07Seperti yang itu, benar?
00:34:08Jadi ini tidak masuk akal bagi saya?
00:34:10Saya benar-benar tidak tahu mengapa ini akan bagus, benar.
00:34:13Ini tidak terdengar seperti itu akan melakukan hal yang sebenarnya Anda inginkan,
00:34:18yaitu untuk dapat menandai titik waktu dan bilang,
00:34:20kita perlu kembali ke pukul 1 siang karena semuanya kacau setelah itu,
00:34:24benar??
00:34:26Anyway, jadi itu tidak masuk akal bagi saya.
00:34:29Tapi sekali lagi, tidak tepat di sana ke bug-nya.
00:34:31Jadi saya tidak bertanya mengapa,
00:34:33saya hanya bilang,
00:34:34oke,
00:34:34itu hal yang harus dilakukan.
00:34:35Dan ini hanya bisa rollback satu versi adalah yang Anda katakan.
00:34:39Ya, meskipun tree lainnya memang ada.
00:34:40Jadi Anda mudah bisa dengan hanya mengetahui apa namanya.
00:34:43Jadi semua ini hanyalah menempatkan nama yang dapat dibaca manusia pada sesuatu yang hampir pasti tidak Anda pedulikan.
00:34:49Benar.
00:34:50Tapi mereka tidak benar-benar,
00:34:51mereka tidak benar-benar bisa menyimpan banyak hal..
00:34:54Casey,
00:34:54saya tidak pikir mereka benar-benar bisa memasukkan seperti,
00:34:57saya tidak tahu,
00:34:58Adam,
00:34:59seperti ini,
00:34:59mereka tidak punya banyak skala di sana,
00:35:01benar?
00:35:02Seperti, itu banyak baris.
00:35:03Jika saya, saya akan membuat ini timestamp saja.
00:35:06Jika itu yang Anda inginkan, benar?
00:35:08Saya akan bilang,
00:35:09kapan planner atau kapan orang ini menunjuk ke hal ini?
00:35:12Seperti ketika Anda mendapat lock,
00:35:13Anda mengubah nama ini menjadi timestamp,
00:35:16dan memperbarui ini dalam satu atomic.
00:35:18Jadi kemudian Anda hanya tahu jika saya ingin rollback ke pukul 1 siang,
00:35:21saya hanya mencari seperti,
00:35:23mana pun yang punya timestamp,
00:35:24hanya tahu,
00:35:25timestamp paling awal,
00:35:26tidak setelah waktu itu..
00:35:28Dan itulah yang kami jalankan pada waktu itu.
00:35:30Itulah yang akan saya lakukan.
00:35:31Benar.
00:35:31Tapi saya tidak tahu.
00:35:32Jadi saya tidak tahu mengapa mereka melakukan ini.
00:35:34Mereka melakukan apa yang mereka lakukan.
00:35:35Anda tahu, mungkin itu sangat masuk akal.
00:35:37Lagi, saya tidak punya pengetahuan tentang sistem mereka.
00:35:39Semua hal ini, mereka sangat masuk akal..
00:35:41Jadi saya tidak benar-benar,
00:35:42saya hanya bilang saya tidak memahami mereka.
00:35:43Saya tidak, mereka mungkin bukan ide buruk, benar??
00:35:45Mereka mungkin ide bagus, jika Anda memahami sisa sistem.
00:35:48Jadi anyway,
00:35:49jadi apa yang mereka katakan,
00:35:51dan ini semua yang kita dapat adalah operasi ini,
00:35:54yang berarti mengatur rollback untuk menunjuk ke plan lama yang sedang Anda tahu,
00:35:58yang dalam kasus ini sebenarnya akan lebih baru dalam beberapa kasus,
00:36:02benar?
00:36:03Jadi ini bukan benar-benar plan yang ditunjuk sebelumnya,
00:36:06yang mungkin lebih lama,
00:36:07mungkin lebih baru.
00:36:09Melakukan aktivitas itu..
00:36:11Jika rencana itu tidak lagi ada,
00:36:13artinya seperti telah dihapus seperti ini,
00:36:15maka enactor berhenti secara permanen.
00:36:18Jadi setiap kali,
00:36:19seperti begitu Anda masuk ke dalam keadaan di mana dynamodb.usc adalah yang satu itu,
00:36:24kan.
00:36:25Jadi kita melakukan seluruh rangkaian langkah yang kita katakan di sini?
00:36:29Rencana ini dihapus..
00:36:31Jadi sekarang ini menunjuk ke nama yang tidak valid seperti yang tidak dapat diselesaikan,
00:36:35kita tidak dapat menyelesaikan plan plan dash 110,
00:36:37yang sebenarnya adalah kode hex.
00:36:38Tapi apapun itu, kita tidak bisa menyelesaikannya lagi..
00:36:41Begitu keadaan itu benar,
00:36:43maka kali berikutnya enactor datang dan mencoba membuatnya menunjuk ke rencana baru,
00:36:48apapun rencana baru itu,
00:36:50ia tidak bisa seperti ketika sebenarnya sampai sejauh ini dan mencoba mengatur rollback itu akan membuatnya crash secara permanen.
00:36:59Oleh karena itu,
00:37:00ketiga enactor sekarang akan berhenti karena pada akhirnya ketiganya akan mencoba memberlakukan rencana baru.
00:37:08Mereka akan mencoba mengatur rollback terlebih dahulu untuk menunjuk ke rencana lama apapun itu,
00:37:14menemukan bahwa tidak ada rencana di sana.
00:37:17Dan rupanya itu hanya hard crash.
00:37:20Oh, itu gila.
00:37:20Saya pikir tiga enactor seharusnya membuatnya memiliki redundansi.
00:37:25Sekali lagi,
00:37:26inilah mengapa saya kesal dengan orang-orang online yang membalas.
00:37:30Mereka seperti, itu kondisi race.
00:37:33Itu bukan kondisi race.
00:37:34Kondisi race tidak diperlukan untuk ini.
00:37:37Kondisi race hanyalah mengapa Anda berakhir dengan nama ini menjadi tidak dapat diselesaikan.
00:37:44Tapi jika Anda tidak memiliki kode apapun yang melakukan ini dengan buruk,
00:37:49itu seharusnya berhasil..
00:37:52Anda tidak akan pernah tahu.
00:37:53Anda akan mengalami pemadaman sesaat selama satu menit dari DynamoDB atau semacamnya,
00:37:59tapi saya rasa ada pemadaman sesaat DynamoDB dari waktu ke waktu.
00:38:03Itu bukan berita global..
00:38:04Yang menjadi berita global adalah menjatuhkannya secara permanen,
00:38:07yang merupakan apa yang terjadi di sini.
00:38:09Dan sampai manusia yang sebenarnya pergi dan mengetahui ini,
00:38:12meresetnya,
00:38:13membuat enactor ini berjalan lagi,
00:38:14itu hanya hilang.
00:38:15Itu hanya keluar secara permanen.
00:38:17Jadi berpotensi berjam-jam.
00:38:18Dan itu cukup lama,
00:38:19saya kira,
00:38:19dalam kasus ini kemudian mengalami kegagalan bertingkat.
00:38:22Anda tidak akan pernah mengalami itu.
00:38:24Itu hanya mati sesaat.
00:38:25Jika beberapa orang sesaat mendapat nama yang tidak dapat diselesaikan atau tidak ada catatan,
00:38:29maka mereka hanya akan mencoba lagi.
00:38:31Itu biasanya seperti dengan DNS,
00:38:33itu seperti ponsel Anda,
00:38:34Anda melewati terowongan.
00:38:35Itu saja yang akan terjadi..
00:38:37Jadi saya ingin tahu seperti apa kode di sini?
00:38:40Bagaimana Anda menulis sesuatu yang jika ini bukan nama yang valid,
00:38:44yang bahkan tidak akan ada saat startup,
00:38:46artinya jika Anda memulai sistem ini dan operator belum mengkonfigurasinya sebelumnya,
00:38:52itu tidak akan menunjuk ke apa pun.
00:38:54Itu adalah kasus default yang Anda kira akan Anda mulai.
00:38:57Jadi jika Anda akan melakukan ini,
00:38:59Anda akan berpikir Anda hanya akan menangani kasus itu karena alamat rollback bisa saja tidak menunjuk ke apa pun.
00:39:06Ambil saja apapun ini.
00:39:07Jika tidak ada apa-apa,
00:39:09atur alamat rollback ke tidak ada apa-apa..
00:39:12Selesai.
00:39:12Jadi ada sesuatu yang sangat aneh tentang cara mereka menulis kode ini.
00:39:16Dan itulah yang seharusnya ada dalam RCA.
00:39:18Itulah seluruh bug bagi saya.
00:39:20Ini hanya hiasan untuk bagaimana kita berakhir membuat hal ini menunjuk ke tidak ada apa-apa.
00:39:25Bug yang sama akan terjadi jika seseorang secara tidak sengaja menghapus catatan ini.
00:39:30Seperti beberapa operator hanya seperti,
00:39:32ups,
00:39:33sial,
00:39:33saya mengaturnya ke tidak ada apa-apa..
00:39:35Bug yang sama ini akan terjadi menurut presentasi.
00:39:38Jadi akar penyebabnya bukan kondisi race.
00:39:40Kondisi race adalah sesuatu yang lain.
00:39:42Apakah itu masuk akal?
00:39:44Pertanyaan cepat.
00:39:45Jadi saya benar-benar memikirkan ini.
00:39:47Dan itu berarti hal yang mengatur rollback mungkin mengasumsikan semacam struct dengan banyak memori atau sesuatu telah diteruskan,
00:39:54melakukan semacam akses semacam itu.
00:39:56Itu meledak.
00:39:57Atau apakah Anda pikir ini adalah gaya bug yang sama,
00:40:00yang merupakan satu baris yang menjatuhkan Cloudflare,
00:40:03yaitu mereka hanya mengasumsikan itu ada dan unwrap itu..
00:40:07Ini di Rust.
00:40:08Ini adalah Rust yang aman memori.
00:40:10Unwrap itu, meledak..
00:40:13Saya benar-benar tidak tahu.
00:40:14Tebakan saya,
00:40:15seperti di kepala saya,
00:40:16saya berpikir,
00:40:17apa hal yang saya lihat banyak orang lakukan di mana saya selalu berpikir,
00:40:20kenapa kamu melakukan ini?
00:40:22Tapi itu hanya karena begitulah cara mereka belajar pemrograman.
00:40:25Dan saya berpikir seperti,
00:40:26jika kamu menulis dalam salah satu bahasa yang suka melempar exception untuk kondisi error,
00:40:31ini akan menjadi contoh yang bagus untuk itu.
00:40:33Jadi jika kamu punya sesuatu di mana kamu seperti,
00:40:36oh,
00:40:36saya pergi untuk mendapatkan record DNS yang ditunjuk oleh hal ini..
00:40:40Dan biasanya dalam lingkungan pemrograman yang waras,
00:40:43tidak ada yang melempar exception di sana.
00:40:45Jika mereka mendapatkan kembali nothing,
00:40:47mereka hanya mengembalikan nothing.
00:40:49Dan kemudian ketika orang tersebut pergi untuk set ddb.robot.js,
00:40:52mereka hanya set-nya ke nothing,
00:40:54yang merupakan perilaku yang benar.
00:40:55Seperti nothing mengalir,
00:40:56secara harfiah nilai nothing mengalir dengan benar melalui alur ini.
00:41:00Jadi jika kamu menulisnya untuk,
00:41:01karena ini adalah layanan inti foundasi,
00:41:03dengan asumsi kamu mencoba menulis sesuatu yang fault tolerant,
00:41:06kamu tidak akan pernah melakukan sesuatu seperti melempar exception.
00:41:10Jadi di otak saya,
00:41:11saya berpikir,
00:41:11saya taruhan apa yang terjadi di sini adalah ketika kamu meminta record ini,
00:41:15mereka hanya menggunakan beberapa library call atau sesuatu yang melempar exception ketika record tidak ada.
00:41:20Dan itu hanya melempar exception dan actor-nya selesai.
00:41:23Itu tebakan saya.
00:41:24Dan saya bisa sangat salah tentang itu karena saya hanya menebak sembarangan.
00:41:28Tapi inilah mengapa saya ingin melihat RCA-nya.
00:41:30Apa itu.
00:41:30Bisa jadi persis hal yang Trash bicarakan.
00:41:33Maksud saya, bisa jadi hal yang Prime bicarakan?
00:41:35Bisa jadi hal yang baru saja saya katakan.
00:41:37Bisa jadi apa saja.
00:41:38Dan saya ingin tahu karena di situlah pembelajaran yang sebenarnya akan ada di sini.
00:41:42Menghindari race condition ini sama sekali tidak penting.
00:41:45Race condition ini bisa hidup di sana.
00:41:47Dan meskipun pada akhirnya penting untuk memperbaikinya,
00:41:50untuk menghindari outage aneh lima detik sekali setahun atau semacamnya,
00:41:53itu sebenarnya bukan hal yang paling ingin kita pelajari.
00:41:56Yang paling ingin kita pelajari adalah jangan menulis hal ini.
00:41:59Dan kita bahkan tidak tahu apa hal ini.
00:42:01Jadi bagaimana kita tidak menulisnya.
00:42:03Inilah mengapa saya pikir itu adalah RCA yang buruk.
00:42:05Apakah itu masuk akal?
00:42:06Ya.
00:42:07Ya?
00:42:07Baiklah.
00:42:08Sebagian besar AWS ditulis dengan apa, Adam?.
00:42:11Itu Java.
00:42:12Saya baru saja mau bilang seseorang dari chat mengatakan Scala.
00:42:16Mereka bilang mereka bekerja di AWS selama tujuh tahun dan mereka bilang sebagian besar ditulis dalam Scala.
00:42:23Yah, itu secara teknis Java dengan langkah tambahan.
00:42:27Dan itu akan membuat mereka semua marah tanpa henti.
00:42:30Jadi itu saja untuk saya..
00:42:34Ini adalah hal di mana saya seperti,
00:42:35saya tidak merasa seperti saya melihat penjelasannya.
00:42:37Dan saya sebenarnya merasa itu penting untuk didengar karena ada praktik pemrograman yang buruk di bagian bawah musim panas ini.
00:42:43Dan saya ingin tahu apa itu,
00:42:44terutama karena itu membantu orang-orang seperti saya ketika saya,
00:42:47kamu tahu,
00:42:47saya tidak benar-benar melakukan banyak edukasi arsitektur sekarang,
00:42:50tapi pada suatu saat saya mungkin ingin melakukan beberapa di antaranya karena saya pikir ada banyak arsitektur buruk di luar sana.
00:42:56Dan jadi saya mencoba memperhatikan hal-hal ini.
00:42:58Seperti apa jenis kesalahan arsitektur yang dibuat orang?
00:43:00Dan saya taruhan ini adalah salah satunya.
00:43:02Benar.
00:43:02Dan jadi saya ingin tahu.
00:43:04Saya ingin tahu..
00:43:04Ya.
00:43:05Menurutku yang aku harapkan setidaknya adalah satu contoh sederhana yang bisa direproduksi tentang mengapa semuanya meledak,
00:43:11seperti potongan kode kecil.
00:43:12Jadi,
00:43:13ini adalah sesuatu yang kamu angkat sebelumnya,
00:43:15yaitu bagaimana kita mendekati hal-hal seperti ini.
00:43:18Kalau aku sedang mereview kode seseorang dan melihat sesuatu yang tampak aneh,
00:43:22aku akan selalu berusaha semaksimal mungkin membuat sandbox sendiri dan membuktikan teoriku.
00:43:26Lalu benar-benar menunjukkan kepada mereka kodenya seperti,
00:43:29ini alasan mengapa ini mungkin salah.
00:43:31Ini adalah langkah sederhana yang bisa direproduksi.
00:43:33Jadi aku mengharapkan sesuatu seperti itu.
00:43:35Dan itu juga membantuku untuk benar-benar memahami.
00:43:38Karena banyak orang,
00:43:39seperti yang kamu bilang,
00:43:40mereka akan melihat sesuatu yang terlihat aneh,
00:43:42tapi aku tidak tahu mengapa terlihat aneh,
00:43:45tapi aku tidak bisa berhenti di situ.
00:43:46Aku harus benar-benar membangunnya dan kemudian memahaminya.
00:43:49Jadi itulah yang aku harapkan.
00:43:51Dan kamu tahu,
00:43:52seperti yang aku bilang,
00:43:53outage CrowdStrike dan Google,
00:43:54menurutku lebih baik karena mereka langsung memberitahumu seperti,
00:43:58lihat,
00:43:58itu adalah null pointer,
00:43:59D ref di sini,
00:44:00atau itu adalah array out of bounds karena kami pikir hanya akan ada 20 dan kami memasukkan 21 di file konfigurasi.
00:44:06Benar.
00:44:06Dan seperti,
00:44:07oke,
00:44:07aku tahu persis jenis kode seperti apa yang menyebabkan masalah seperti itu.
00:44:11Benar.
00:44:12Dan lebih lanjut lagi,
00:44:13untuk komentar sebelumnya,
00:44:14secara harfiah,
00:44:15sejauh yang aku tahu,
00:44:16semua orang yang memprogram dalam Rust hanya melakukannya supaya sesekali ketika mereka melihat sesuatu seperti ini,
00:44:21mereka bisa bilang,
00:44:22yah,
00:44:23kalau mereka menulisnya di Rust,
00:44:24ini tidak akan terjadi.
00:44:25Mereka tidak diberi informasi yang cukup untuk bahkan membuat komentar itu..
00:44:29Mereka mungkin tetap membuatnya,
00:44:31sejujurnya,
00:44:32tapi mereka tidak diberi informasinya.
00:44:34Jadi kamu harus memberikan satu aturan yang harus diikuti dalam RCA yaitu kamu harus memberi para Rustacean informasi yang cukup sehingga,
00:44:41jika mereka mau,
00:44:42mereka bisa dengan benar mengatakan bahwa itu akan dicegah di Rust..
00:44:46Dan ini, kita tidak punya itu.
00:44:48Kita tidak tahu apakah ini akan dicegah di Rust..
00:44:51Kita sama sekali tidak tahu.
00:44:53Mungkin tidak akan, tapi kita tidak tahu.
00:44:55Yah,
00:44:56Casey,
00:44:56kita punya peluang yang cukup bagus karena kemungkinan besar tidak akan pernah di-ship.
00:45:01Jadi itu akan mencegahnya..
00:45:03Benar.
00:45:03Kita akan punya nol enactor karena kita akan mendesain set enactor.
00:45:09Ya..
00:45:09CloudFlare melakukan pekerjaan yang sangat bagus dalam hal ini juga.
00:45:13Mereka masuk dan menunjukkan banyak baris kode dan bilang seperti,
00:45:16ini persis yang sedang terjadi.
00:45:18Ini,
00:45:18kamu tahu,
00:45:19meskipun masalahnya di atas sini,
00:45:21ini adalah baris yang meledak karena semua kondisi sebelumnya.
00:45:24Itu aku yang mengolok-olok Rust dengan unwrap,
00:45:26yang sebenarnya bukan masalah sebenarnya.
00:45:29Tapi kamu tahu, semua hal ini terjadi.
00:45:31Jadi mereka melakukan pekerjaan yang sangat bagus.
00:45:33Aku terkejut betapa buruknya pekerjaan AWS untuk yang satu ini.
00:45:36Nah,
00:45:37dan hal lainnya juga,
00:45:38ini adalah salah satu hal di mana sekarang membuatku,
00:45:41jadi itu membuatku tidak perlu curiga terhadapmu,
00:45:43kan??
00:45:44Ketika saya membaca ini,
00:45:45saya berpikir,
00:45:46apakah kamu menyembunyikan sesuatu?
00:45:47Apakah kamu tidak benar-benar menemukan apa bug-nya?
00:45:49Seperti kamu berbicara panjang lebar tentang race condition ini,
00:45:52tapi bahkan dari presentasimu sendiri,
00:45:54saya bisa tahu race condition itu sebenarnya tidak penting.
00:45:56Itu hanya,
00:45:56itu hanya yang menyebabkan record menjadi kosong,
00:45:58tapi siapa peduli,
00:45:59kan?
00:46:00Seperti itu,
00:46:00itu seperti sesuatu yang bagus untuk dimasukkan dalam RCA sebagai penjelasan mengapa bug ini terjadi sekarang,
00:46:05bukan di waktu lain,
00:46:06tapi itu bukan bug-nya.
00:46:07Jadi ini aneh bagi saya.
00:46:08Seperti ketika saya melihat RCA yang tidak membahas bug-nya,
00:46:10sekarang saya jadi curiga.
00:46:11Kan.
00:46:12Dan tidak perlu begitu,
00:46:13karena jika kamu benar-benar menemukannya,
00:46:14maka cukup beritahu saya,
00:46:15dan sekarang saya tahu kamu menemukannya.
00:46:17Kan.
00:46:18Jadi seperti,
00:46:18saya pikir ini juga meningkatkan kepercayaan bagi orang-orang yang melihat dari luar yang ingin tahu,
00:46:22apakah mereka bisa mempercayai DynamoDB ini?
00:46:24Jika terlihat seperti kamu benar-benar menemukan bug-nya,
00:46:26saya punya sedikit lebih banyak kepercayaan pada kamu.
00:46:29Jika terlihat seperti kamu tidak tahu apa bug-nya,
00:46:31atau sepertinya tidak memahami apa bug-nya,
00:46:33maka saya,
00:46:33itu saya lebih khawatir.
00:46:34Dan jadi saya pikir itu juga alasan lain untuk melakukan ini di RCA kamu..
00:46:37Ini, ini memberikan kepercayaan kepada pelanggan kamu.
00:46:40Mungkin di situlah mereka memecat Adam sebagai AWS hero juga..
00:46:43Mungkin semuanya terhubung.
00:46:44Bisa jadi.
00:46:45Mereka tidak mau dia membongkar rahasia-rahasia kotor ini..
00:46:48Ya.
00:46:48Dia tahu terlalu banyak.
00:46:50Dia tahu terlalu banyak.
00:46:51Bisakah kamu memberikan,
00:46:52bisakah kamu memberikan ringkasan singkat tiga menit tentang toko gitar itu?
00:46:56Seperti apa yang, apa yang diungkapkan?
00:46:58Karena saya mencoba mengingat apa itu karena melibatkan seperti single point of failure guy yang sedang tidak ada di sini saat kegagalan ini juga.
00:47:06Jadi saya tidak tahu bagaimana merekonsiliasi kedua hal itu.
00:47:09Dan tentu saja kita tidak tahu.
00:47:11Kita tidak tahu apakah salah satunya memberitahu kita yang sebenarnya sekarang,
00:47:15kan?
00:47:15Karena ini RCA yang sangat buruk,
00:47:17saya tidak tahu apakah itu benar atau tidak,
00:47:19tapi ya,
00:47:20passwordnya adalah wishbone 12,
00:47:21saya pikir..
00:47:22Nah itu dia.
00:47:23Selalu mencoba membunuh saya.
00:47:25Itu yang saya ingat..
00:47:26Jadi ya,
00:47:27cerita itu adalah bahwa,
00:47:28bahwa ada,
00:47:29ada sesuatu yang dirancang untuk menyalin konfigurasi.
00:47:32Dan hal itu menjadi tidak terkendali dan tidak bisa dihentikan.
00:47:36Seperti itu hanya seperti,
00:47:38itu hanya menyalin konfigurasi dengan sangat tidak benar dan perlu diperbaiki atau direparasi atau sesuatu.
00:47:44Dan kita tidak punya informasi lebih karena itu adalah percakapan yang tidak sengaja terdengar.
00:47:50Kan.
00:47:51Jadi apakah itu sesuai dengan ini?
00:47:53Nah,
00:47:53sedikit,
00:47:54karena enactor-enactor itu memang terdengar seperti jenis hal yang akan menjalankan salinan konfigurasi,
00:48:00tapi di sisi lain,
00:48:01itu bukan benar-benar konfigurasi untuk mesin.
00:48:04Itu seperti entri DNS adalah entri DNS.
00:48:07Itu bukan, itu bukan benar-benar konfigurasi.
00:48:10Jadi saya akan bilang kedua cerita itu tidak terlalu sejalan..
00:48:14Dan jadi itu alasan lain mengapa saya agak berharap bahwa RCA ini sedikit lebih bisa dipercaya karena saya ingin tahu dengan pasti bahwa ceritanya itu salah.
00:48:22Dan saya masih tidak benar-benar tahu berdasarkan betapa buruknya RCA ini.
00:48:26Bagaimana jika,
00:48:26bagaimana jika tool yang ditulis orang itu untuk menyalin config itu secara harfiah adalah enactor?
00:48:31Seperti mereka hanya mem-produksi-kan itu dan dia,
00:48:34dan seperti mereka belum mengubahnya dalam tujuh tahun.
00:48:37Itu adalah cara saya menghubungkan titik-titiknya.
00:48:39Ada,
00:48:40dia seperti,
00:48:40teman-teman,
00:48:41saya menulis itu sebagai cara bagi saya untuk menguji hal-hal di lingkungan lokal saya.
00:48:45Dan kalian hanya memutuskan untuk membuat tiga enactor dan meletakkannya bersebelahan di prod.
00:48:50Saya tidak, bagaimana ini bisa terjadi?
00:48:52Saya tidak..
00:48:53Saya punya pertanyaan alternatif.
00:48:54Ya.
00:48:55Atau, apakah ini masalah rollback-nya?
00:48:57Karena itulah yang melakukan penyalinan seperti,
00:48:59Hei,
00:49:00ini yang sebelumnya.
00:49:01Benar.
00:49:01Jadi saya akan menyalin yang sebelumnya.
00:49:03Lalu muncul masalah null seperti ini.
00:49:05Dan skrip itu tidak pernah mengalami atau entah kenapa jadi ngawur dan mulai menulis berulang-ulang tanpa henti sampai kamu tidak bisa,
00:49:12tidak bisa berbuat apa-apa.
00:49:14Saya tidak tahu.
00:49:15Yang saya tahu adalah,
00:49:16sejauh yang bisa saya lihat dari penjelasan mereka,
00:49:18hanya berdasarkan apa yang mereka berikan,
00:49:20saya tetap saja tidak menganggap race condition itu relevan karena sekali lagi,
00:49:25secara literal pembaruan tidak sengaja pada endpoint Route 53 bisa langsung mematikan ketiga aktor tersebut seketika.
00:49:31Karena menurut mereka,
00:49:32yang diperlukan untuk menghentikannya hanyalah jika endpoint mengarah ke nama yang tidak bisa di-resolve,
00:49:37itu saja yang dibutuhkan.
00:49:39Dan jadi jika itu benar-benar benar,
00:49:40secara literal kesalahan ketik operator bisa menyebabkan semua ini down,
00:49:44tanpa perlu race condition.
00:49:46Benar.
00:49:46Jadi sekali lagi,
00:49:47RCA-nya tidak cukup meyakinkan saya bahwa kalian sudah membahas apa bug yang sebenarnya,
00:49:52karena saya bisa memikirkan begitu banyak cara yang bisa memicu hal yang persis sama ini yang tidak melibatkan race condition yang kalian habiskan seluruh RCA untuk memberitahu saya bahwa itulah bug-nya,
00:50:02tapi menurut saya bukan.
00:50:03Jadi terima kasih, Casey, untuk presentasi luar biasa itu.
00:50:06Saya sebenarnya benar-benar iri luar biasa dengan alat tulis apapun itu.
00:50:10Saya harus cari tahu cara mengatur apa yang kamu punya.
00:50:13Alat itu fantastis..
00:50:15Terima kasih semuanya sudah menonton.
00:50:16Saya,
00:50:17eh,
00:50:17bagi yang menonton secara langsung,
00:50:19saya harap kalian menikmati obrolan pra-acara dan mungkin sedikit obrolan pasca-acara.
00:50:23Jika kalian ingin mendengar versi lengkap dan semua interaksi seru yang bukan bagian dari cerita utama,
00:50:28langsung saja ke Spotify untuk podcast lengkapnya,
00:50:30yang isinya cuma kami ngobrol tentang,
00:50:32entahlah apa yang dimakan Trash dan camilan dan semacamnya namanya more yapping,
00:50:35more yapping lagi,
00:50:36dan juga Casey TJ dan Trash..
00:50:42Error di layarku, kopi terminal dan menjalani mimpi.