Bagaimana cara menjaga penyebaran yang memungkinkan untuk mengurangi kecelakaan?

12

Baru-baru ini Amazon S3 mengalami pemadaman besar di wilayah us-east-1. Sepertinya itu kemungkinan disebabkan oleh kesalahan pengejaan saat menjalankan buku pedoman perawatan di Ansible atau alat serupa. Anda dapat meletakkan pembungkus skrip shell di sekitar playbook yang memungkinkan agar terlihat seperti:

#!/bin/bash
/usr/bin/ansible-playbook "$@" --list-hosts --list-tasks
read -p "Are you sure? (y/n) " answer
test "$answer" = "y" || exit 0
exec /usr/bin/ansible-playbook "$@"

Tetapi apa beberapa cara lain yang Anda gunakan untuk meningkatkan keselamatan dan mengurangi kemungkinan kesalahan yang menyebabkan pemadaman besar bagi perusahaan Anda.

Jiri Klouda
sumber
1
Saya memberikan suara untuk menutup pertanyaan ini sebagai di luar topik karena akan lebih cocok untuk unix.stackexchange.com atau superuser.com
Romeo Ninov
4
Infrastruktur sebagai kode, adalah salah satu komponen utama untuk mencapai ratusan penyebaran per hari. Mampu mengamankan alat-alat yang memberikan kecepatan ini dari menciptakan pemadaman besar dalam operasi tampaknya bagi saya seperti topik yang relevan. Saya mungkin salah, tentu saja. Saya menghargai pandangan Anda. Apakah Anda ingin bergabung dengan diskusi ini tentang pertanyaan topik yang aktif dan tidak aktif di Meta?
Jiri Klouda
Misalnya pertanyaan ini tampaknya diterima dengan topik: devops.stackexchange.com/questions/98/…
Jiri Klouda
Jiri, apakah Anda membuat perbedaan antara pertanyaan Anda dan pertanyaan lain yang Anda sebutkan?
Romeo Ninov
5
Jika pertanyaan seperti ini cocok untuk pengguna super, maka tidak perlu untuk devops.se. Ini jelas tentang topik di sini. Operasi dan mitigasi kesalahan manusia adalah inti dari DevOps.
Evgeny

Jawaban:

6

Kami menggunakan pekerjaan dalam jenkins untuk memicu penyebaran. Ini memastikan bahwa tidak peduli siapa yang melakukan penyebaran, perintah yang mungkin dijalankan adalah sama. Bonus yang bagus adalah catatan build log ketika penyebaran dipicu, siapa yang memicu mereka dan apa yang sebenarnya terjadi selama penyebaran.

Ini tentu bukan hal yang mudah, tetapi ini merupakan peningkatan yang bagus dibandingkan menjalankan buku pedoman yang dimungkinkan dengan tangan.

Untuk perubahan yang lebih besar / berisiko, idealnya ini harus digabungkan dengan beberapa bentuk manajemen perubahan sehingga perubahan dilakukan hanya setelah orang / tim lain meninjau perubahan dan pendekatan perubahan untuk membantu mengidentifikasi dan menyelesaikan masalah potensial secara dini.

Selain itu, tidak ada salahnya untuk memiliki rekan setim yang memahami perubahan yang Anda buat hadir dan menonton saat Anda membuat perubahan besar sehingga mereka dapat mengawasi dan membantu mencegah kesalahan dalam pelaksanaan perubahan.

bradym
sumber
4

Kategori kesalahan

Ada dua cara untuk melihat faktor manusia yang menyebabkan masalah dan kecelakaan:

  1. Anda dapat melihat kesalahan manusia sebagai penyebab kecelakaan. Dalam hal ini "kesalahan manusia," di bawah label apa pun — hilangnya kesadaran situasi, pelanggaran prosedural, kekurangan peraturan, kekurangan manajerial adalah kesimpulan dari penyelidikan Anda.
  2. Anda dapat melihat kesalahan manusia sebagai gejala dari masalah yang lebih dalam. Dalam hal ini, kesalahan manusia adalah titik awal untuk penyelidikan Anda. Anda akan menyelidiki bagaimana kesalahan manusia secara sistematis terhubung ke fitur alat orang, tugas, dan lingkungan operasional / organisasi.

Yang pertama disebut pendekatan manusia , dan yang kedua sebagai pendekatan sistem .

Untuk menjelaskan kegagalan menggunakan pendekatan manusia, Anda akan mencari kegagalan dan menemukan penilaian orang yang tidak akurat, keputusan yang salah atau penilaian buruk.

Untuk menjelaskan kegagalan menggunakan pendekatan sistem, Anda tidak berusaha menemukan kesalahan orang. Alih-alih, temukan bagaimana penilaian dan tindakan orang masuk akal pada saat itu, mengingat keadaan yang melingkupinya.

Misalnya, Donald Berwick dari Institute for Healthcare Improvement (IHI) berpendapat bahwa meningkatkan keselamatan pasien memerlukan perubahan dalam desain sistem :

... Kami adalah manusia, dan manusia salah. Terlepas dari kemarahan, meskipun kesedihan, meskipun pengalaman, terlepas dari upaya terbaik kami, terlepas dari keinginan terdalam kami, kami dilahirkan keliru dan akan tetap demikian. Menjadi hati-hati membantu, tetapi itu membawa kita pada kesempurnaan mendekati ... Obatnya adalah dalam mengubah sistem kerja. Obatnya dalam desain. Tujuannya haruslah keamanan yang ekstrem. Saya percaya kita harus aman di rumah sakit kita seperti di rumah kita. Tetapi kita tidak dapat mencapai tujuan itu melalui nasihat, celaan, kemarahan, dan rasa malu. Kita dapat mencapainya hanya dengan komitmen untuk berubah, sehingga kesalahan manusia yang normal dapat dibuat tidak relevan dengan hasilnya, terus-menerus ditemukan, dan dikurangi dengan terampil.

Donald M Berwick. Jangan lagi! BMJ 2001


Menghapus kesalahan dari sistem

Cara terbaik untuk menemukan (dan memperbaiki) berbagai cara kegagalan terjadi setelah fakta, adalah mencari akar penyebab tanpa menyalahkan orang. Ini sering disebut "post-mortem yang tidak bersalah", dan Kode Etsy sebagai posting blog Craft memperluas konsep. Orang-orang di Etsy mempresentasikan dan menulis lebih banyak tentang itu di forum dan blog lain.

Untuk mencegah kesalahan sejak awal, beberapa sifat budaya adalah suatu keharusan. Prosedur dan berbagai artefak yang dibuat dalam sistem harus menguji bahwa menggunakannya oleh manusia sangat jelas dan jelas. Seringkali mereka yang menciptakan bukanlah mereka yang mengonsumsi, yang menyebabkan terputusnya koneksi dan kurangnya kejelasan. Sistem kemudian tidak aman untuk dioperasikan karena satu-satunya orang yang mengetahui semua asumsi adalah orang yang menciptakannya (dan tidak ada orang lain).

Langkah-langkah pengendalian yang efektif

Lakukan langkah-langkah kontrol yang efektif untuk menghentikan proses ketika kesalahan terjadi. Ini adalah pembuktian kesalahan. Langkah-langkah kontrol yang efektif adalah perubahan desain yang mencegah atau menghentikan proses melanjutkan ketika kesalahan telah terjadi dengan memperkenalkan kegagalan proses

Contoh:

Pada tahun 1896, Sakichi Toyoda menciptakan alat tenun listrik pertama Jepang yang disebut "alat tenun tenaga uap Toyoda." Perkembangan ini meningkatkan produktivitas hingga dua puluh kali, dan kualitas tekstil meningkat dan menyebabkan revolusi dalam industri tekstil di Jepang. Tapi inilah penemuan dan prinsip yang halus namun sangat penting:

Ketika jarumnya putus, mesin berhenti

Sakichi Toyoda menciptakan inovasi untuk Loom yang nantinya akan menjadi salah satu pilar dalam Toyota Production System (Lean). Pilar yang sekarang kita sebut Jidoka, kadang-kadang disebut "otomatisasi pintar dengan sentuhan manusia" atau "otomatisasi."

Sebagian besar, Andon (berhenti pada cacat pertama) dan Poka-Yoke (pemeriksaan kesalahan) kemudian perkembangan yang menemukan pengaruh mereka dari alat tenun.

Menghapus Kelemahan Titik Tunggal

Istilah kelemahan titik tunggal mengacu pada penciptaan redudansi dalam sistem sebagai pendekatan untuk meningkatkan keandalan sistem. Redundansi dibuat dengan meningkatkan jumlah sistem atau individu yang terlibat dalam proses. Memiliki lebih banyak sistem cadangan atau lebih banyak pemeriksaan (dua kali lipat, tiga kali lipat, atau lebih) meningkatkan kemungkinan proses akan berjalan dengan benar.

Salah satu contoh yang bagus untuk ini adalah "prinsip empat mata," yang berarti bahwa "semua keputusan dan transaksi bisnis memerlukan persetujuan dari CEO dan CFO. Karena CFO tidak melapor kepada CEO, ada mekanisme pengendalian independen yang berlaku" .

sumber: https://en.wikipedia.org/wiki/Two-man_rule

Jadikan Bahaya Jelas

Jika bahaya dibuat jelas, atau tidak mungkin dijangkau, manusia tidak dapat membuat kesalahan. Misalnya, kode warna adalah pendekatan umum untuk membuat kesalahan lebih jelas. Atau jika Anda memikirkan berbagai soket komputer yang hanya bisa dimasukkan satu arah dan bukan yang lain, dll.


Beberapa buku hebat membicarakan masalah ini, dan itu tidak akan menjadi jawaban yang bagus tanpa menyebutkannya:

Evgeny
sumber
1
Metode yang sangat penting yang tidak Anda sebutkan adalah "prinsip empat mata" yang digunakan dalam keuangan - baik sebagai kewajiban regulasi atau sebagai penjaga aman. Dalam industri perangkat lunak ini diimplementasikan dalam berbagai cara, seperti ulasan kode tetapi juga dapat digunakan untuk memvalidasi perintah yang mempengaruhi sistem live.
Michael Le Barbier Grünewald
Saya akan menambahkan itu ke prinsip SPW.
Evgeny
1
Diskusi hebat tentang kesalahan, tetapi tidak mengatakan bagaimana melindungi terhadap penyebaran yang tidak disengaja.
Alexandre
1
Pertanyaannya bertanya tentang Ansible secara khusus. Jawaban ini sangat teliti dan diteliti dengan baik tetapi ini adalah satu langkah yang dihapus dari masalah dunia nyata.
Woodland Hunter
1
@ Evgeny Ketika saya menjawab pertanyaan kinerja AWS Lambda Anda, pada awalnya saya tidak mengatakan bagaimana menjalankan tes Anda dan Anda menunjukkannya. Anda benar, dan saya menyesuaikan jawaban saya. Saya memahami orang-orang yang memilih jawaban Anda di sini. Jawaban Anda akan baik untuk pertanyaan tentang "Bagaimana cara mendekati dan mengurangi kesalahan di tempat kerja kami?". Di sini, OP memiliki pertanyaan tentang Ansible dan Anda bahkan tidak menyebutkannya. Lebih buruk lagi, OP memberikan indikasi pada jenis solusi yang ia cari, dan Anda memilih sebaliknya. Jawaban Anda bagus (sungguh), tetapi tidak untuk pertanyaan ini.
Alexandre
1

Seperti yang dikatakan @bradim menggunakan alat CI / CD Anda untuk memulai penyebaran alih-alih perintah berbasis tangan biasanya merupakan langkah maju yang baik, seperti halnya menambahkan tes dalam pipa Anda yang benar-benar menguji skrip penempatan Anda pada lingkungan pementasan Anda (atau yang baru dibuat), di mana Anda dapat mengambil bug sebelumnya.

Saya juga akan menambahkan bahwa alih-alih memanggil skrip yang memungkinkan secara langsung, Anda juga dapat menambahkan alat seperti Ansible Tower ke alur Anda, yang akan memungkinkan Anda melacak perubahan yang telah berjalan lebih mudah, dan dapat memberi Anda langkah tambahan keamanan ke dalam mengalir.

SztupY
sumber