Bagaimana saya bisa meyakinkan pengembang di tim saya untuk merangkul "Anda membangunnya, Anda menjalankannya"? Dengan itu, saya memiliki kutipan dari Werner Vogels ini dalam pikiran:
Memberi tanggung jawab operasional kepada pengembang telah sangat meningkatkan kualitas layanan, baik dari sudut pandang pelanggan maupun teknologi. Model tradisional adalah bahwa Anda membawa perangkat lunak Anda ke dinding yang memisahkan pengembangan dan operasi, dan membuangnya lalu melupakannya. Bukan di Amazon. Anda membangunnya, Anda menjalankannya. Ini membawa pengembang ke dalam kontak dengan operasi harian dari perangkat lunak mereka. Ini juga membawa mereka ke dalam kontak sehari-hari dengan pelanggan. Putaran umpan balik pelanggan ini sangat penting untuk meningkatkan kualitas layanan.
Saya secara khusus memikirkan serangkaian pengembang yang:
- Dipekerjakan sebagai pengembang, dengan sedikit / tanpa menyebutkan tugas yang berhubungan dengan operasi.
- Secara tradisional telah "melemparkan kode ke tembok" ke tim operasi.
- Secara tradisional memiliki jadwal kerja 9-5, dan secara aktif memusuhi gagasan "tugas pager", berpartisipasi dalam pemulihan bencana, menulis post-mortem, dll, terutama di luar jam kerja normal. (Catatan: Saya hanya memikirkan pemadaman yang sangat jarang terjadi; saya tidak mengusulkan agar kami menambahkan dukungan pelanggan setelah jam kerja ke beban kerja tim ini.)
- Saat ini tidak bertanggung jawab untuk menulis / mendukung pemantauan atau mengingatkan pada aplikasi mereka.
Misalkan ada tim yang dengan cepat mengembangkan layanan mikro cloud baru dengan profil yang menjadi sedemikian rupa sehingga menyerahkan layanan ini ke tim ops adalah kurang optimal karena mereka tidak dapat mengimbangi untuk mendapatkan pengetahuan yang mendalam tentang layanan yang diperlukan untuk mengelola dan memonitor mereka secara efektif. "Anda membangunnya, Anda menjalankannya" akan bekerja lebih baik untuk tim ini karena tugas dapat didelegasikan kepada setiap anggota tim yang bertanggung jawab. Jadi tim ini akan mulai mengambil bagian dalam merancang infrastruktur, memonitor / mengingatkan alat untuk layanan, dan (sangat jarang) menanggapi peristiwa pemadaman.
Saya secara khusus tertarik pada metodologi, yang didukung oleh contoh-contoh dunia nyata. Bagaimana ini berhasil diimplementasikan di tempat kerja lain, dan jika ada langkah kanonik untuk diikuti saat menerapkan ini? Tautan apa saja ke artikel yang dapat mendukung jawaban akan sangat membantu.
Jawaban:
Saya pikir cara termudah adalah mengubah tujuan kinerja mereka sehingga mereka didasarkan pada keandalan serta memberikan kode. Jual sebagai perusahaan tidak dapat berhasil tanpa keduanya jadi mengapa pengembang hanya diukur pada satu? Cara terbaik bagi mereka untuk memenuhi tujuan kinerja mereka adalah dengan terlibat dalam operasi.
Pada akhirnya Anda perlu meyakinkan mereka bahwa ini adalah cara terbaik bagi perusahaan untuk berhasil dan karenanya bagi mereka untuk berhasil. Itu sulit dan Anda tidak dapat mengharapkan mereka berada di awal. Mereka juga harus dijual berdasarkan nilainya.
sumber
Ketika datang untuk mempengaruhi budaya bisnis, cara terbaik mungkin adalah melalui metode "boil the frog" yang terkenal. Anda harus memperkenalkan tugas-tugas ini kepada pengembang secara perlahan, karena saya tahu saya sendiri (sebagai dev) akan menolak memiliki semua tanggung jawab baru ini sekaligus.
Pertama, mulailah dengan memperkenalkan satu atau dua tugas baru hanya untuk dilakukan selama jam kerja normal. Mereka perlu belajar bagaimana melakukan devops yang bisa menjadi proses pembelajaran untuk dev (khusus) kode ini dan mungkin memerlukan pengawasan. Mereka juga akan cenderung memusuhi gagasan untuk mengubah keseimbangan kehidupan kerja mereka karena Anda menyebutkan mereka terbiasa dengan 9-5. Pada titik ini, catat data pada proses baru untuk digunakan nanti (minta mereka menulis kode ini, data selalu berguna).
Nanti saat Anda kehabisan tugas devops-y baru untuk diperkenalkan (sehingga poin-poin pertama, kedua, dan keempat hampir selesai), bawalah tugas-tugas pertama yang Anda perkenalkan sebagai kandidat untuk dilaksanakan di luar jam kerja standar . Anda mungkin melihat reaksi balik pada ini dan Anda bahkan mungkin melihat gesekan tergantung pada seberapa kuat Anda mendorong ini dan seberapa berat budaya kerja-akhir-di-lima tertanam. Untuk mempertahankannya, semoga data Anda mendukung gagasan bahwa bekerja di luar jam standar akan jarang terjadi, hanya terjadi dalam situasi ekstrem, dan akan sangat bermanfaat bagi bisnis dan pelanggan. Jika data Anda tidak mendukung ini, maka Anda sebaiknya siap menghadapi konsekuensi dari pilihan ini.
Bahkan dengan data, hal itu mungkin masih lebih mudah untuk memiliki pengembang menulis pemantauan / memperingatkan kode (sehingga mereka menjadi dev ops tapi masih terutama dev) dan menjaga tim ops alternatif sebagai dukungan lini depan (sebagai beberapa orang lain telah menyarankan). Seperti saya katakan, perubahan kecil penting untuk menghindari serangan balasan. Mengintegrasikan pekerjaan untuk para devs di luar jam standar akan menjadi tantangan, karena mereka mungkin tahu bahwa mereka dapat mencari pekerjaan di tempat lain jika mereka tidak menyukainya karena pasar untuk devs kuat sekarang, terutama jika mereka sudah memiliki keterampilan devops. Kaisar peringatan!
sumber
Melihat ke luar DevOps secara khusus, jika Anda berbicara tentang lingkungan perusahaan besar (ish) maka metodologi SAFe memiliki cara yang cukup baik untuk mendorong perilaku semacam ini.
Pada dasarnya itu bermuara pada beberapa tahapan kunci:
proyek dimulai sebagai kereta rilis. Maksud (dan harapan siapa pun yang mendanainya) adalah bahwa itu akan berjalan lama. Saya berbicara selama bertahun-tahun, tidak satu pun dari ini "berdiri tim selama 3 bulan lalu turunkan mereka" bisnis.
selama berlangsungnya proyek, kereta rilis akan secara tak terelakkan mengumpulkan lebih banyak orang karena lebih banyak persyaratan proyek baru berdasarkan pada peluang bisnis yang baru direalisasikan serta pajak yang berkelanjutan dari pekerjaan gaya pemeliharaan.
Saya hampir selalu melihat kereta menjalankan peningkatan pertama mereka sebagai tim proyek / perubahan 100%, kenaikan kedua mereka mengalokasikan persentase waktu untuk Menjalankan pekerjaan. Manajemen kenaikan ke-3 menyadari bahwa mereka akan mengalami masalah dan mulai menambahkan tim untuk mencoba dan menangani Run overflow untuk memberikan waktu kepada pengembang dan insinyur berpengalaman mereka untuk terus bekerja pada persyaratan baru.
jika keseimbangan yang tepat tercapai, tim proyek dapat terus memberikan hasil proyek tanpa macet banyak dalam pekerjaan pemeliharaan dan tim baru yang bergabung dengan kereta tidak langsung diharapkan hanya menjadi 100% tim pendukung, tetapi sebaliknya mengambil Bagian adil dari pekerjaan perubahan yang akan ditangani kemudian Anda berakhir dengan tim pengiriman yang memiliki produk yang mereka bangun secara default, itu tidak perlu datang pada mereka sekaligus bahwa sekarang mereka adalah tim Run, alih-alih itu perlahan-lahan terintegrasi ke dalam kegiatan mereka sehari-hari.
Di mana model ini jelas memiliki beberapa kelemahan yaitu dalam penetapan harga untuk sebuah bisnis. Secara umum saya berharap akan membayar lebih banyak untuk sumber daya perubahan daripada sumber daya berjalan, biasanya menjalankan kontrak dengan vendor besar adalah harga tetap dan maksudnya adalah bahwa mereka menghasilkan uang pada peningkatan berkelanjutan dan karenanya penghematan biaya.
Yang sedang berkata, itu tidak terlalu sulit untuk mempertimbangkan tim perubahan berdiri sebagai bagian dari kereta rilis untuk hanya memberikan perbaikan berkelanjutan. Jika ada sesuatu yang dapat mereka bangun atau lakukan yang akan meningkatkan kemampuan mereka untuk fokus pada pengiriman proyek baru dan kurang peduli dengan pekerjaan "bisnis seperti biasa" maka itu harus ditumpuk dan diprioritaskan berdasarkan manfaat yang dirasakan oleh siapa pun yang memegang uang untuk lepaskan kereta.
sumber
IMHO
You build it, you run it
tidak boleh dipahami secara harfiah. Untuk memulainya - hampir terdengar seperti hukuman;)Tidak ada satu orang atau bahkan tim pengembang kecil yang dapat secara wajar mendukung alat atau perangkat yang digunakan dalam proses pengembangan perangkat lunak (yaitu dalam produksi!) Untuk jangka waktu yang lama. Pernah ke sana, melakukan itu :)
Tugas-tugas pendukung cenderung berkembang seiring dengan berkembangnya alat (set) basis pelanggan. Jika mengemban tugas-tugas itu secara eksklusif, tim pengembangan dapat melakukan sebagian besar dukungan, dengan sedikit / tidak ada waktu tersisa untuk pengembangan di masa mendatang. Secara efektif jalan buntu - berapa banyak pengembang ingin bertahan di lingkungan seperti itu?
Memiliki tim pendukung pertama yang profesional sangat penting untuk mencegah frustrasi, stres, dan efek lain dari paparan jangka panjang terhadap tugas-tugas dukungan terhadap anggota tim pengembang Anda.
Tim pendukung lini pertama tentu saja akan mundur ke tim pengembang (sekali lagi, tim, bukan satu orang!) Untuk masalah yang tidak dapat mereka liput secara langsung. Ya, mungkin memang sulit pada awalnya, tetapi segalanya akan menjadi lebih baik. Itu harus berupa kolaborasi - itulah bagian dari apa yang DevOps bicarakan.
sumber
Ini pada akhirnya tergantung pada ukuran dan struktur perusahaan. Sebenarnya ada tiga tahap di mana perusahaan Anda berada:
Tahap startup (di bawah 150 insinyur). Tentu saja, para pengembang perlu menjalankan perangkat lunak mereka sendiri. Semua orang melakukannya dalam startup. Anda mungkin bahkan tidak memiliki tim operasi untuk memulai, tetapi bahkan jika Anda melakukannya, itu kecil dan kecepatan kemajuannya sangat cepat sehingga tidak ada cara untuk lulus pengetahuan yang diperlukan untuk menjalankannya dengan sukses di tim lain dengan cukup cepat bagi mereka untuk menjadi orang yang sukses.
Bisnis berukuran sedang (lebih dari 150 insinyur, tetapi satu tim operasi tunggal). Pada tahap ini churn di perusahaan mulai terlalu tinggi, para insinyur yang membangun perangkat lunak tidak perlu bertahan juga untuk menjalankannya. Anda tidak mengenal semua orang lagi dan sulit untuk berkomunikasi secara efektif agar semua orang bisa beroperasi. Itu akan mulai berubah menjadi kekacauan. Pada tahap ini Anda ingin beralih ke model Google, di mana setiap tim harus mengoperasikan perangkat lunak mereka, tetapi belum tentu mengoperasikannya. Mereka akan mengoperasikannya di awal, tetapi bagian besar dari membangun perangkat lunak adalah untuk mengurangi biaya pengoperasian ke suatu titik, di mana bebannya cukup kecil sehingga tim operasi dapat menandatangani untuk menjalankannya. Baru setelah itu dianggap selesai.
Perusahaan besar dengan banyak unit bisnis, (di mana masing-masing memiliki tim operasi sendiri): Pada tahap ini Anda dapat kembali ke model Amazon, di mana setiap tim penting mengembangkan dan mengoperasikan layanan mereka sendiri. Masing-masing unit bisnis harus cukup kecil agar setiap orang mengenal satu sama lain, jadi di bawah sekitar 150 insinyur dan Anda mengoperasikan masing-masing pada dasarnya sebagai startup. Amazon memiliki setiap layanan AWS yang beroperasi kurang lebih secara terpisah dan berfungsi untuk mereka.
Anda harus mencari tahu pada tahap apa perusahaan Anda berada dan / atau bergerak masuk dan bertindak sesuai dengan itu. Tidak ada solusi "satu ukuran untuk semua".
sumber
Saya mengambil ini (jika saya dihadapkan dengan perintah seperti itu, atau apa pun yang Anda sebut itu), akan menjadi sesuatu seperti "
What else would you expect?!?!
". Karena, secara tidak sengaja:Biarkan saya jelaskan sedikit lebih jauh ...
Bisnis / hobi / hasrat saya adalah scm , lebih khusus di lingkungan mainframe . Dan ke mana pun saya pergi (untuk memperbaiki barang agar sesuai dengan kebutuhan pelanggan), persyaratan pertama yang saya terapkan (dalam kontrak saya), adalah bahwa setiap penyetelan yang dilakukan untuk sistem yang kami terapkan, adalah melalui sistem yang sama. Dan dengan melakukan itu (benar, yang membutuhkan waktu beberapa jam, katakanlah setengah hari maksimal), kita mendapatkan manfaat dari itu (daftar tidak lengkap):
continuously
menguji QA sistem Anda sendiri ... dalam produksi. Kemungkinannya adalah Anda akan mengalami sendiri bug, kesalahan logis, atau fitur yang hilang (dan yang tidak). Dan mereka sangat memotivasi agar mereka ditangani secepatnya ... misalnya untuk menjadi lebih produktif.Namun, sebelum Anda mencobanya sendiri di rumah, waspadai beberapa jebakan yang harus dihindari:
sumber