Apa perbedaan antara Pengembangan Tradisional dan Model Operasi dan Rekayasa Keandalan Situs?

15

"SRE adalah apa yang terjadi ketika Anda meminta insinyur perangkat lunak untuk merancang tim operasi." - Rekayasa Keandalan Situs

Sejak Buku Rekayasa Keandalan Situs Google dirilis, pada lebih dari satu kesempatan saya telah diberitahu bahwa SRE merupakan perpanjangan dari model Operasi atau Dukungan Aplikasi yang ada.

Kami punya beberapa pertanyaan yang mendefinisikan perbedaan antara Sys. Admin, Insinyur DevOps, dan Insinyur Keandalan Situs:

Namun tidak satu pun dari pertanyaan ini atau jawaban mereka yang menggambarkan perbedaan antara Administrator Sistem dan Insinyur Keandalan Situs .

Dalam istilah yang lebih luas: apa perbedaan utama antara praktik Google tentang Rekayasa Keandalan Situs dan fungsi Pengembangan dan Operasi yang dipisahkan secara tradisional dalam suatu bisnis.

Richard Slater
sumber

Jawaban:

7

Untungnya, sejak Rekayasa Keandalan Situs dikembangkan secara internal di Google dan baru-baru ini mulai membuat jalannya ke komunitas yang lebih luas, itu didefinisikan dengan cukup baik. Apa tidak , meskipun, adalah operasi web (atau "sistem administrasi" - sebagai contoh kurangnya kejelasan, Anda menggunakan kedua dalam pertanyaan Anda). Sulit untuk membahas perbedaan antara dua hal ketika Anda tidak sepenuhnya yakin apa salah satunya.

Tapi saya orang yang suka bertualang, jadi saya akan mencobanya.


Di toko-toko yang sangat tradisional, pengembang dan sysadmin sangat berdiam satu sama lain. Para pengembang membangun sebuah aplikasi, kemudian mempertimbangkan pekerjaan mereka selesai begitu kode mereka dikomit. Sysadmin mengambil artefak build (yang mungkin hanya kode, jika itu bahasa yang ditafsirkan) dan menyebarkannya ke server produksi. Adalah tugas sysadmin untuk menjaga aplikasi berjalan dengan lancar, dan secara umum mengelola lingkungan produksi. Namun, seringkali masalah kinerja berasal dari masalah arsitektur di aplikasi; sysadmin tidak memiliki pengetahuan pemrograman untuk mengetahui apa yang dilakukan aplikasi, dan pengembang tidak tahu bagaimana aplikasi bertindak dalam topologi produksi dengan lalu lintas produksi, jadi tidak ada yang dilengkapi sendiri untuk menyelesaikan masalah.

Selain itu, para pengembang biasanya menilai seberapa cepat mereka dapat menghasilkan fitur-fitur baru, sementara sysadmin dinilai berdasarkan seberapa jarang aplikasi tersebut istirahat dalam produksi. Karena perubahan adalah salah satu penyebab utama kerusakan, ini membuat kedua departemen berselisih satu sama lain - persaingan lama yang merugikan bisnis dan orang-orang yang terlibat.

Pada titik tertentu, beberapa perusahaan pengembang-sentris menjadi sangat kesal pada hal ini sehingga mereka mulai berlatih "NoOps" - mereka menghilangkan departemen operasi mereka dan hambatan yang dirasakan yang menyertai mereka. Pada kenyataannya, ini berarti bahwa pengembang mengambil peran operasi, tetapi mempertahankan judul lama mereka.

Dalam diskusi seputar NoOps , John Allspaw, yang saat itu menjabat sebagai Wakil Direktur Operasi Teknis di Etsy dan editor buku Operasi Web yang sangat dihormati , mendefinisikan peran di Etsy dengan cara ini:

Operasi Etsy bertanggung jawab untuk:

  • Menanggapi pemadaman, menerima panggilan
  • Peringatan ambang sistem, desain
  • Desain dan ulasan arsitektur
  • Membangun koleksi metrik
  • Konfigurasi aplikasi
  • Pembangunan / manajemen infrastruktur

Etsy Development bertanggung jawab untuk:

  • Menanggapi pemadaman, menerima panggilan
  • Peringatan ambang sistem, desain
  • Desain dan ulasan arsitektur
  • Membangun koleksi metrik
  • Konfigurasi aplikasi
  • Kode pengiriman menghadap publik

Tak satu pun dari daftar itu yang komprehensif, saya yakin saya kehilangan sesuatu di sana. Sementara Etsy Ops telah membuat perubahan aplikasi yang menghadapi produksi, mereka sedikit tetapi nyata (dan kadang-kadang cukup dalam). Sementara Etsy Dev membuat perubahan Chef, mereka sedikit tetapi nyata. Jika ada begitu banyak tumpang tindih dalam tanggung jawab, mengapa bedanya, Anda mungkin bertanya? Keahlian dan latar belakang domain. Tidak banyak pengembang yang memiliki pengetahuan mendalam tentang cara kerja TCP mulai lambat, tetapi Ops melakukannya. Tidak banyak Ops memiliki pengetahuan komprehensif tentang algoritma penyortiran atau relevansi, tetapi Dev memiliki. Ops memiliki pengalaman bertahun-tahun dalam meramalkan penggunaan sumber daya dengan cepat dengan akurasi yang dapat diterima, sedangkan Dev tidak. Dev mungkin tidak mengetahui pro dan kontra dari mendistribusikan opsi beban kerja di semua layer1-7, mungkin hanya pada 7, Ops tidak. Pemodelan entitas-hubungan mungkin menjadi alami bagi pengembang, mungkin tidak untuk operasi. Pada akhirnya, mereka berdua menemukan solusi untuk berbagai bentuk skenario kegagalan Bizantium dan pola ketahanan, di semua tingkatan dan lapisan.

Di dunianya, pengembang dan insinyur ops memiliki keahlian dan tanggung jawab tingkat tinggi yang sangat mirip; di mana mereka berbeda adalah keahlian mereka. Keistimewaan mereka yang berbeda mendorong mereka untuk bekerja bersama untuk memecahkan masalah, dan keterampilan tingkat dasar bersama mereka memberi mereka bahasa untuk melakukan itu.

Ini umumnya definisi operasi web yang saya gunakan untuk sebagian besar kasus. Jadi itu yang akan kita teruskan.


Jadi, apa itu Rekayasa Keandalan Situs?

Buku Google SRE dibuka dengan definisi SRE ... lalu yang lain ... dan kemudian menghabiskan satu bab untuk terus mendefinisikan peran dan seluruh buku yang membahas hal-hal spesifik. Bahkan ketika dikembangkan dalam satu organisasi, tampaknya sulit untuk menyingkat pekerjaan menjadi satu definisi yang disepakati.

Untuk memulainya, kita harus berjalan kembali ke tahun 2003, ketika Ben Traynor bergabung dengan Google dan mendirikan tim Rekayasa Keandalan Situs yang pertama. Ingatlah bahwa beberapa paragraf yang lalu kami berada di awal 2010-an; tetapi pada tahun 2003, industri ini masih cukup ditetapkan pada pembagian sysadmin / pengembang sebagai cara alami. Jadi ketika Ben mengatakan bahwa SRE adalah apa yang akan terjadi jika seorang insinyur perangkat lunak menciptakan tim operasi, ini adalah perpaduan yang jauh lebih radikal dari kedua dunia daripada yang terlihat sekarang.

Definisi yang diberikan dalam kata pengantar menekankan masing-masing dari tiga kata secara individual:

  • Teknik - penggunaan ilmu komputer dan konsep teknik untuk memecahkan masalah
  • Keandalan - fokus pada membuat sistem lebih terukur, lebih dapat diandalkan, dan lebih efisien
  • Layanan - evolusi selanjutnya dari "situs", menekankan bahwa SRE bertanggung jawab atas layanan jaringan

Bab pendahuluan mencantumkan prinsip-prinsip Rekayasa Keandalan Situs sebagai:

  • Memastikan fokus yang awet pada rekayasa - mengambil tindakan pencegahan untuk menghindari halaman yang sering dan "kerja keras" lainnya
  • Mempertahankan kecepatan perubahan maksimum tanpa melanggar SLO layanan - subjek yang dapat dengan mudah memiliki beberapa ratus jawaban sendiri, tetapi diringkas secara kasar sebagai membantu pengembang membuat perubahan, selama mereka tidak menyebabkan terlalu banyak masalah
  • Pemantauan - peringatan otomatis ketika ada masalah
  • Tanggap darurat - memperbaiki hal-hal ketika mereka rusak
  • Ubah manajemen
  • Perencanaan kapasitas
  • Provisi
  • Efisiensi dan kinerja - memastikan bahwa suatu layanan berkinerja pada tingkat yang diharapkan - bottlenecking menyakiti pengguna, tetapi kelebihan kapasitas membutuhkan uang

Saya akan mengkategorikan Rekayasa Keandalan Situs sebagai bagian khusus dari Operasi Web modern. Sebuah organisasi SRE sangat berfokus pada mengotomatisasi segalanya , hingga tingkat yang hanya hemat biaya di perusahaan yang cukup besar. Gagasan seperti anggaran kesalahan hanya dapat berfungsi bila layanan Anda memiliki banyak, banyak permintaan, karena jika tidak, Anda kehilangan rincian (untuk layanan yang lebih kecil, kesalahan tertentu dapat memengaruhi 0-20% dari permintaan Anda, tergantung pada menit). Bidang terkait seperti keamanan tidak ada dalam definisi SRE karena perusahaan yang cukup besar untuk memiliki tim SRE sejati telah mendedikasikan tim untuk keamanan.

Program SRE, sebagaimana didefinisikan oleh Google, adalah ops web yang dikembangkan untuk kebutuhan spesifik Google, dan belum tentu berlaku di tempat lain.

Namun, Rekayasa Keandalan Situs telah berkembang dalam penggunaan industri yang lebih luas baru-baru ini. Judul pekerjaan saya saat ini adalah SRE, meskipun saya bekerja di perusahaan yang jauh lebih kecil dan deskripsi pekerjaan saya sangat cocok dengan definisi operasi web Etsy 2012 John Allspaw. Teori saya adalah bahwa kita telah maju melalui judul sebagai singkatan untuk mendukung evolusi satu bidang:

  • Kami mulai sebagai sysadmin .
  • Kemudian ketika situs web menjadi lebih dari "hal", posting pekerjaan mulai merujuk pada insinyur operasi web untuk membedakan sysadmin yang berspesialisasi dalam web dari mereka yang juga menangani TI kantor umum.
  • Kemudian DevOps seharusnya memisahkan mereka yang merasa nyaman menggunakan pemrograman untuk mengurangi beban kerja ops web mereka.
  • Tetapi karena DevOps menjadi kacau karena kurangnya definisi yang jelas , kami mengadopsi Site Reliability Engineering untuk menentukan bahwa kami sedang mencari orang-orang yang siap mendukung layanan produksi.

Jadi apa perbedaan antara sysadmin dan SRE? Tahun di mana mereka menerima gelar mereka. Apa perbedaan antara operasi tradisional dan rekayasa keandalan situs? SRE hanyalah penjelmaan operasi saat ini, menggunakan alat-alat baru (halo, wadah!) Dan, ketika program jaringan terus menjadi lebih besar dan lebih penting, fokus yang meningkat pada praktik yang memungkinkan satu insinyur untuk melakukan lebih banyak .

Boikot SE untuk Monica Cellio
sumber
Beberapa potong lebih menarik membaca (yang saya tidak selalu setuju dengan): charity.wtf/2016/06/30/... , charity.wtf/2016/05/31/wtf-is-operations-serverless , susanjfowler. com / blog /
2016/10/13