Mencari rekomendasi untuk mengukur aplikasi ketersediaan tinggi yang menggunakan CDN

11

Saya bekerja untuk perusahaan Fortune 500 yang berjuang dengan mengukur kinerja dan ketersediaan secara akurat untuk aplikasi ketersediaan tinggi (yaitu, aplikasi yang naik 99,5% dengan navigasi halaman ke halaman 5 detik). Kami memperhitungkan downtime terjadwal dan tidak terjadwal untuk menentukan nomor ketersediaan ini. Namun, kami baru-baru ini menambahkan CDN ke dalam campuran, yang agak menyulitkan metrik kami. CDN sekarang menangani sekitar 75% dari lalu lintas kami, sambil mengirimkan sisanya ke server kami sendiri.

Kami berusaha mengukur apa yang kami sebut "pengalaman pengguna yang sebenarnya" (yaitu, skrip pengujian kami meniru pengguna yang mengeklik melalui aplikasi). Skrip pemantauan ini berada di luar jaringan kami, yang berarti kami mengenai CDN sekitar 75% dari waktu.

Manajemen telah memutuskan bahwa kami mengambil skenario kasus terburuk untuk mengukur ketersediaan. Jadi, jika server asal kami mengalami masalah, namun CDN melayani konten dengan baik, kami masih menerima ketersediaan. Hal yang sama berlaku sebaliknya. Pikiran saya adalah selama "pengalaman pengguna" berhasil, kita seharusnya tidak menghukum diri kita sendiri. Bagaimanapun, CDN ada untuk meningkatkan kinerja dan ketersediaan!

Saya hanya ingin tahu apakah ada yang tahu bagaimana perusahaan Fortune 500 lainnya menghitung angka ketersediaan mereka? Saya melihat apple.com, misalnya, dari etalase yang menggunakan CDN yang sepertinya tidak pernah surut (kecuali ada pengumuman produk utama.) Akan lebih baik memiliki beberapa data yang sulit dan faktual karena saya tidak tidak percaya bahwa kita perlu melukai diri kita sendiri pada metrik ini. Kami sedang membuat keputusan bisnis berdasarkan angka-angka ini.

Namun saya dapat mengatakan, mengingat metrik ini dapat dilihat oleh manajemen, masalah dapat diatasi dan diselesaikan dengan sangat cepat (baca: kami memotong birokrasi dengan cukup cepat.) Sayangnya, sebagai pengembang, saya tidak ingin manajemen berpikir bahwa aplikasi naik atau turun karena beberapa faktor eksternal (yaitu, CDN) mempengaruhi angka.

Pikiran?

(Saya keliru memposting pertanyaan ini di StackOverflow, maaf sebelumnya atas cross-post)

Tim Reddy
sumber

Jawaban:

2

Dalam abstrak, saya akan mengatakan Anda harus mendefinisikan dengan tajam apa yang merupakan "tersedia" vs "tidak tersedia" dan mengukur diri Anda sendiri terhadapnya. Misalnya, Anda dapat memiliki SLA kinerja sisi klien untuk situs 1 detik hingga "lipat" dan 3 detik untuk laman yang sepenuhnya dirender. Ketika Anda tidak memenuhi SLA kinerja, Anda harus menghitungnya sebagai kegagalan ketersediaan untuk jangka waktu tersebut. Tidak masalah apakah Anda memukul CDN atau tidak - pengalaman pengguna adalah yang terpenting.

Namun, karena Anda hanya melakukan pengukuran setiap 5 menit, tampaknya masuk akal untuk mengukur hit ke CDN vs situs master secara terpisah, dan menghitung bahwa 75% ketersediaan berasal dari CDN dan 25% dari master. Kesulitannya di sini adalah 75% hanya rata-rata. Untuk membagi kesalahan secara akurat untuk periode waktu tertentu, Anda perlu tahu kapan satu atau situs lain tidak benar-benar menghadapi pelanggan, misalnya, selama perubahan yang direncanakan atau setelah tindakan manual ketika masalah terdeteksi. Anda juga perlu mempertimbangkan apa yang terjadi ketika salah satu situs master atau CDN sedang down. Apakah pelanggan mendapatkan HTTP 500, atau apakah mereka gagal secara transparan ke situs kerja? Banyak hal tergantung pada solusi penyeimbangan beban Anda. Metrik "kasus terburuk" yang Anda uraikan tampaknya terlalu sederhana. Bertanya pada diri sendiri, "

Sejauh apakah Anda harus mengambil "kesalahan" ketika CDN turun: tentu saja. Jika 75% dari hit Anda menuju ke CDN, maka 75% dari pengalaman pelanggan Anda bergantung pada mereka. Anda bertanggung jawab untuk memberikan pengalaman yang baik kepada pelanggan Anda, jadi jika CDN mengalami masalah, Anda perlu menggunakan sumber daya teknik Anda untuk membuktikannya dan menindaklanjutinya dengan penyedia.

Satu hal lain yang perlu dipikirkan adalah apa yang terjadi ketika situs master tidak tersedia untuk jangka waktu yang lama. Seperti yang sudah Anda jelaskan, sepertinya CDN adalah salinan statis konten di situs master. Jika situs master mati untuk waktu yang lama, CDN bisa mulai basi. Jadi mungkin bagian dari SLA Anda harus kesegaran: 1 detik untuk "lipatan" dan 3 detik untuk halaman yang sepenuhnya dirender, dengan konten yang tidak lebih dari 15 menit.

user44700
sumber
@ user44700: Triknya ada dua - CDN menyediakan satu ton metrik yang mirip dengan yang Anda uraikan ... dan kami memiliki tes internal kami sendiri setiap 5 menit di server asal. Besarnya titik data dari CDN vs internal sama sekali tidak seimbang, namun mereka cukup diperlakukan seolah-olah mereka seimbang (yaitu, (CDN + Internal) / 2 = uptime) ... Saya tidak percaya manajemen itu memahami statistik dasar ... :)
Tim Reddy
2

Saya setuju dengan user44700, lebih baik untuk memisahkan pengujian ketersediaan untuk server Anda versus CDN dan melacak keduanya secara independen. Ketersediaan Anda yang sebenarnya adalah Server Tersedia * Tersedia CDN, karena jika salah satu turun - Anda sedang mempertimbangkan bahwa halaman / situs Anda turun. Ini juga akan mengurangi biaya Anda dengan vendor pemantauan mana pun.

Saya tidak akan menempuh jalur pembuatan satu uji browser dan melihat item apa yang gagal, sementara itu bisa bekerja dan beberapa perusahaan seperti Catchpoint memiliki konsep "ketersediaan konten" - mungkin tidak persis seperti yang Anda inginkan untuk kasus ini. Katakan misalnya halaman web Anda memiliki panggilan ke CDN untuk file yang memberikan 404, sebagian besar solusi pemantauan akan memberi tahu Anda ini adalah kegagalan - tetapi apakah itu benar-benar CDN yang gagal? Apakah file itu penting? mungkin seseorang lupa untuk menghapus beberapa referensi peninggalan yang tidak ada pemberitahuan pengguna.

Anda dapat membaca posting blog ini untuk beberapa ide lagi: http://blog.catchpoint.com/2010/07/21/true-avilities-of-a-webpage/

GeorgeU
sumber
Terima kasih atas tautannya ... kami cukup banyak mengikuti / mengukur dengan cara yang konsisten dengan artikel itu.
Tim Reddy
0

Pelaporan SLA harus secara akurat mencerminkan kenyataan. Jika Anda mengukur ketersediaan dari perspektif pengguna dan hanya server yang melakukan pengukuran mengalami masalah, melaporkan masalah itu dalam SLA Anda tidak akan mencerminkan pengalaman pengguna.

Saya dapat memahami keinginan untuk menyimpan informasi sumber ke standar yang tinggi, mungkin selalu melaporkannya meskipun tidak akurat tetapi dengan catatan yang mengidentifikasi alasannya.

Jika Anda tidak dapat mencapai kesepakatan, mungkin ada solusi teknis untuk membuat server pengukur kurang keliru.

Jika informasi dilaporkan sebagai pemadaman dan bukan, nilai apa yang diberikan pelaporan?

Di lingkungan saya, kami melaporkan dari berbagai sumber. Metodologi pemantauan eksternal untuk melaporkan ketersediaan dari perspektif eksternal serta melaporkan sistem pencatatan gangguan internal kami, yang dimasukkan manusia dan mempertimbangkan berbagai faktor yang paling akurat mencerminkan situasi.

Warner
sumber
@Warner: Sayangnya, server yang menjalankan metrik adalah apa yang oleh manajemen dianggap sebagai "pengalaman pengguna". Setiap tes terpisah 5 menit, jadi pada dasarnya semua "pemadaman" kami dalam peningkatan 5 menit terlepas dari waktu pemadaman yang sebenarnya (bisa 1 detik.) CDN kami menyediakan metrik dari perspektif itu, dan jauh lebih terperinci dari satu uji setiap 5 menit ... Saya ingin melaporkannya secara terpisah. Sayangnya, manajemen telah memutuskan untuk mengambil setiap aplikasi, memilih kasus terburuk, dan melaporkan bahwa ... yang tidak mencerminkan SLA nyata ...
Tim Reddy
Hampir terdengar seperti mereka tidak memahami detail teknis dan tidak mempercayai situasinya, sehingga mereka default ke kasus terburuk untuk memastikan akurasi.
Warner
Anda mungkin mempertimbangkan sesuatu seperti ini tetapi dalam kehidupan kerja sebelumnya yang mendukung basis data reservasi untuk perusahaan rental mobil besar, kami menggunakan Gomez.com untuk memberi kami "bacaan" pada saat memasuki situs web dan mendapatkan tarif untuk harga tertentu persewaan. Dalam keadaan khusus kami, manajemen memberi jenis ukuran yang dibutuhkan. Semua sasaran untuk situs adalah lima 9's.
jl.
0

Gomez dan Keynote adalah solusi yang diterima perusahaan untuk mengumpulkan jenis metrik yang Anda sebutkan. Gomez juga memiliki layanan yang memantau UX pengguna akhir Anda dengan sumber file javascript google-analytics-esque.

Tony
sumber
0

Pingdom baik: http://www.pingdom.com/

Grizly
sumber
Pertanyaannya bukan layanan apa yang digunakan. Cara menangani skenario kasus yang dijelaskan.
GeorgeU
0

Kami adalah Fortune 500 dengan situs yang mendukung CDN, dan kami menggunakan beberapa hal. Anda telah menentukan dengan benar bahwa Anda perlu mengukur hal-hal yang berbeda jika Anda ingin mendeteksi hal-hal yang berbeda. Tidak jelas bagi saya apa yang Anda inginkan secara spesifik - angka ketersediaan untuk membantu Anda menentukan kapan suatu aplikasi benar-benar turun, atau angka yang membuat manajemen kehilangan kendali. Bagaimanapun...

  1. Pemantauan sintetis eksternal - Keynote / Gomez / Webmetrics. Kami dulu menggunakan Keynote, sekarang kami menggunakan Gomez. Tentu saja seperti yang Anda perhatikan, ini juga termasuk CDN dan komponen eksternal lainnya - yang bagus untuk mengukur keseluruhan SLA Anda, tetapi tidak begitu baik untuk menentukan SLA aplikasi Anda.

Untuk mendapatkan "CDN dari itu" Anda bisa mengambil monitor Keynote / Gomez lain dan arahkan ke aplikasi Anda tidak melalui CDN menggunakan nama DNS alternatif atau yang lainnya. Tetapi karena masih memiliki aset statis, itu lebih berguna untuk kinerja daripada ketersediaan. Dan itu membuat pemadaman internet, pemutusan agen, dll. Dalam loop, yang sesuai untuk beberapa tujuan dan bukan yang lain.

  1. Pemantauan pengguna nyata. Ada berbasis jaringan (Coradiant, Tealeaf) dan berbasis tag (Jiffy, Gomez). Kami menggunakan Coradiant sebagai sniffer jaringan dan menentukan kinerja nyata aset yang dilihat pengguna yang dihosting di sini di pusat data kami - dengan kata lain, aplikasi aktual dan tidak semua sampah statis pada CDN. Kami kemudian menulis laporan untuk menentukan tingkat kesalahan dan kinerja aplikasi dan menggunakan Apdex (apdex.org) sebagai metrik yang diturunkan. Dalam beberapa kasus, Anda tidak dapat menggunakan berbasis jaringan (terlalu banyak lalu lintas, atau aset Anda tidak di-host di mana Anda bisa mendapatkan di jaringan), dan berbasis tag tidak dapat diandalkan. Memiliki manfaat luar biasa untuk benar-benar melihat waktu respons dan kesalahan pengguna akhir - mudah untuk membuat monitor sintetis yang tidak kesalahan dalam semua kasus yang dilakukan oleh pengguna nyata.

  2. Pemantauan sintetis lokal. Nagios / zabbix / sitescope / seratus lainnya. Arahkan monitor ke aplikasi Anda secara lokal (jangan melalui CDN). Untuk pemantauan ketersediaan yang dapat ditindaklanjuti (seperti dalam, kirim halaman untuk membangunkan seseorang), ini adalah standar utama. Tidak memperhitungkan hal-hal jaringan akun.

  3. Pemantauan log. Dalam arti tertentu, ini adalah ghetto pemantauan pengguna nyata. Tetapi jika Anda benar-benar hanya ingin melihat apa yang salah kapan, itu cukup berguna. Memiliki "tidak benar-benar itulah yang terjadi" manfaat dari pemantauan pengguna nyata. Seringkali hanya tersedia, kecuali Anda mengambil waktu yang diambil di Web tier, yang dalam hal ini menunjukkan berapa lama server Anda - tidak membantu pengguna yang menghadapi SLA, tetapi sangat membantu untuk "kode apa yang perlu kita kerjakan . " Gunakan splunk.

Ini bukan salah satu atau, kami menggunakan semua ini, karena Anda ingin "kisah pengguna akhir" serta "programmer apa yang kita butuhkan untuk bersandar."

Ernest Mueller
sumber