Bagus, alasan sederhana untuk memiliki banyak lingkungan

71

Sepanjang karir saya, saya telah bekerja di perusahaan yang memiliki koleksi lingkungan yang berbeda untuk tujuan yang berbeda. Kami selalu memiliki kurang lebih lingkungan desktop kami, lingkungan pengujian, lingkungan QA, lingkungan panggung dan lingkungan produksi. Ini berlaku untuk server / aplikasi dan sumber data apa pun yang kami gunakan.

Ketika saya mulai di perusahaan saya saat ini, saya menemukan bahwa 90% aplikasi dikembangkan pada lingkungan desktop terhadap sumber data produksi atau dikembangkan langsung pada server produksi tergantung pada platform. Ini tidak terlalu mengejutkan, karena saya disewa sebagian untuk membuat perubahan untuk meningkatkan cara tim pengembangan berfungsi, yang jelas dari proses wawancara saya. Kami perlahan-lahan mulai mengubah filosofi dan segera, sebagian besar aplikasi dapat dijalankan di lingkungan desktop, pengujian atau produksi. Tidak terlalu lama setelah pementasan itu muncul juga.

Sekarang sebagian besar pengembang kami melihat manfaat dari metodologi ini dan mempertahankannya dengan waspada. Namun, kami memiliki sejumlah aplikasi lawas yang tidak pernah dimigrasi. Kami juga memiliki sejumlah programmer lama yang menganggap ini sebagai pemborosan waktu. Sayangnya, kami mendapat lip service tetapi tidak pernah menerima penuh dari manajemen. Kami mendapatkan apa yang kami anggap sebagai komitmen untuk berinvestasi secara substansial sekitar setahun yang lalu, tetapi tidak ada yang terwujud meskipun ada perencanaan besar yang kami masukkan ke dalamnya. Sekarang kami menemukan bahwa kami membutuhkan lebih banyak lingkungan. Kami membutuhkan bantuan dari tim administrasi server / jaringan untuk pengaturan dan kami membutuhkan partisipasi dari para pemangku kepentingan bisnis untuk mendukung siklus rilis. Kami berada di tempat sekarang di mana proyek dapat berfungsi apa yang dianggap pengembang normal "normal"

Saya ingin menyampaikan argumen lengkap, tetapi manajemen benar-benar tidak memiliki waktu dan minat untuk mendengarkan saya sampai ada masalah kritis. Saya tidak dapat benar-benar mengartikulasikan manfaatnya karena itu selalu tampak seperti kebiasaan bagi saya. Saya bertanya-tanya apakah ada alasan yang baik, sederhana, dan tak terbantahkan untuk pemisahan lingkungan yang akan membuat manajer kekurangan pengalaman pengembangan untuk mendukung ide ini? . Apakah ada sumber / literatur yang bagus tentang topik ini?

smp7d
sumber
1
Pertanyaan yang bagus, saya tertarik untuk mendengar apa yang orang lain katakan. Saya tidak punya jawaban yang baik untuk Anda karena manajer menginginkan angka keras, dan semua manfaat memiliki beberapa lingkungan sulit diukur dalam angka keras.
maple_shaft
4
Bagaimana belum ada masalah kritis? Jika aplikasi sedang dikembangkan di lingkungan produksi, itu harus umum (dan umum di lingkungan pengembang normal) untuk kesalahan dasar untuk menonaktifkan fitur, menyebabkan kondisi kesalahan, dan bahkan crash seluruh aplikasi. Apakah aplikasi ini begitu tidak penting untuk dikerjakan sehingga masalah ini bukanlah kegagalan yang kritis?
JGWeissman
2
Ini bukan kasus yang tidak menghasilkan masalah kritis. Ini adalah kasus mereka yang tidak memahami bagaimana ini menjadi penyebab masalah kritis. Saya kira saya tidak mengatakannya dengan cukup baik.
smp7d
1
Seandainya aku punya keberuntungan untuk memulai hadiah!
Kris
7
Bagi siapa pun yang peduli ... sudah dua tahun sejak saya mengajukan pertanyaan ini dan kami memiliki pemisahan lingkungan yang jelas sekarang. Itu terjadi karena pengulangan. Kami terus mengatakan kami membutuhkannya dan kami kehilangan beberapa karyawan yang menentangnya dan menang atas yang lain. Perlahan ombak berubah. Saya berharap ada formula untuk mendapatkannya, tapi saya kira budaya hanya harus mengadopsinya secara alami.
smp7d

Jawaban:

86

Jawabannya: Uang

Saya tidak peduli apa alasan sebenarnya. Uang HARUS menjadi akar dari semua alasan Anda, terutama ketika berhadapan dengan manajemen.

Jika kami berdua duduk di sebuah ruangan selama 2 jam, kami dapat menemukan banyak alasan mengapa lebih baik memiliki beberapa lingkungan.

Inilah masalahnya: Jika alasannya tidak didasarkan pada uang, maka tidak ada yang penting .

Pemrogram tidak direkrut untuk menjadi pintar. Mereka tidak direkrut untuk menjadi kreatif. Mereka disewa untuk meningkatkan pendapatan - baik dengan menghasilkan uang atau menyimpan uang. Jika Anda tidak melakukan salah satu dari itu, Anda sebaiknya menyusun resume Anda.

Ketika melihatnya dari sudut pandang itu, jawabannya sederhana:

Hanya memiliki satu lingkungan meningkatkan waktu henti kami dan menghasilkan pendapatan yang hilang. Berbagai lingkungan memungkinkan kami untuk melindungi keuntungan kami dengan memberikan pengguna kami front-end yang sama andal dan dapat diandalkan seperti perusahaan kami.

Ulangi setiap hari.


Ada beberapa komentar hebat di bawah ini yang menambahkan beberapa nilai nyata untuk jawaban ini, jadi saya akan menyebutkannya:

  • Karl Bielefeldt memiliki poin bagus ketika ia menyebutkan bahwa analisis Biaya / Manfaat merupakan faktor penting. Seorang ekonom dapat menyebutnya sebagai biaya peluang mengejar beberapa lingkungan. Meskipun mungkin mengejutkan untuk mendengar, ada skenario di mana beberapa lingkungan mungkin bukan jawabannya! Jika situs web perusahaan Anda merupakan tambahan yang sangat kecil, maka waktu henti yang tidak terduga sebenarnya bisa menjadi cara yang lebih efektif untuk melakukan bisnis. Ini kedengarannya tidak seperti posisi Anda, tetapi perlu disebutkan.

  • BlairHippo memiliki poin bagus yaitu Anda harus merasa bebas untuk membuatnya tampak seperti malapetaka (dan jika Anda kehilangan data, itu!). Tanggung jawab adalah alat yang hebat untuk membujuk manajer, tetapi masih dengan alasan yang sama - tuntutan hukum mahal. Menghindari mereka menghemat uang.


Sebagai tambahan, saya menemukan artikel ini cukup bagus. Itu tidak secara langsung menjawab pertanyaan Anda, tetapi memungkinkan Anda untuk mengenali bagaimana pemrogram dilihat ke manajemen, yang pada gilirannya, mengarah ke jawaban ini. Baca bagus.

riwalk
sumber
12
+1 Untuk uang yang dipahami oleh manajemen bahasa saja. Omong-omong kutipan bagus. Itu succint dan sempurna.
maple_shaft
7
Jawaban yang bagus Hanya ingin menambahkan bahwa manfaatnya harus melebihi biaya. Setelah ambang tertentu menambahkan lebih banyak lingkungan pengujian akan lebih mahal daripada menghemat.
Karl Bielefeldt
4
+1 untuk artikel "Jangan menyebut diri Anda seorang programmer"
nwahmaet
3
Jawaban yang bagus Saya juga menambahkan: jangan ragu untuk membuat bencana sedikit. Selama Anda merilis kode yang belum diuji pada data produksi, selalu ada kemungkinan tanpa sengaja nuking data tersebut. Uang mungkin bahasa yang digunakan oleh semua manajer, tetapi Liability setidaknya merupakan dialek populer.
BlairHippo
Ada banyak jawaban yang benar untuk pertanyaan ini, tetapi yang ini adalah yang terbaik dari kelompok itu.
smp7d
18

Titik kegagalan

Dengan tidak memiliki lingkungan pengembangan atau pementasan Anda memiliki Single Point of Failure untuk aplikasi lawas tersebut. Manajemen akan mendengarkan Anda jika Anda menjelaskan aplikasi lawas dalam istilah tersebut.

Anda harus dapat mengirimkan pesan Anda dalam byte suara yang masuk akal bagi mereka. Keluarkan " Programmer Speak " dari diskusi dan ganti dengan " Manager Speak ". Juga berpura-pura Anda memiliki tumpangan lift 30 detik untuk mendapatkan poin Anda.

Saya memiliki situasi di mana bos saya adalah Marinir Infanteri. Saya terus mengatakan kepadanya bahwa saya membutuhkan perangkat lunak dan pelatihan komputer untuk Marinir saya agar lebih produktif. Dia tidak mengerti. Saya akhirnya pergi ke kantornya suatu hari dan mengatakan kepadanya bahwa semuanya beres.

Saya mengatakan sesuatu tentang efeknya ... "Jika saya berperang, saya akan menggunakan tongkat, batu, dan cabang-cabang pohon. Yang saya butuhkan adalah granat, bazoka, dan senapan mesin." Dia menerima pesannya.

Michael Riley - AKA Gunny
sumber
Haha, Terima kasih atas jawaban yang bagus. Saya setuju bahwa bersikap langsung dan agresif adalah solusi untuk mendapatkan apa yang Anda inginkan. Saya tidak pernah memiliki marinir sebagai manajer tetapi berharap untuk menggunakan bazoka dan senapan mesin dalam suatu argumen.
Filipi
9

Apakah ini penting?

Saya dapat memahami keinginan untuk menggunakan lingkungan yang terpisah. Pertanyaan yang tidak jelas adalah:

Apakah sebenarnya penting untuk memigrasi sistem warisan ?

Saya pikir sebagian besar orang yang berpikiran teknis cenderung berfokus pada pertanyaan akademik yang mana cara yang lebih baik yang baik di dunia akademis. Dalam bisnis meskipun yang terbaik tidak selalu menang. Saya tidak mengatakan ini menjadi negatif, atau memulai perang api. Saya menyatakan yang jelas, atau apa yang harus jelas bagi kita yang telah berkecimpung dalam bisnis perangkat lunak selama beberapa tahun.

Semua keputusan bisnis biasanya dibuat berdasarkan persepsi biaya / manfaat. Jadi pertanyaan yang mungkin diajukan bisnis adalah:

Apakah biaya sistem tambahan dan investasi pengembangan dalam aplikasi warisan sebanding dengan manfaatnya dibandingkan dengan menempatkan investasi yang sama ke proyek / produk lain?

Saya telah dan masih melakukan analisis manfaat biaya secara teratur untuk membuat keputusan tidak hanya dalam migrasi / penulisan ulang perangkat lunak, tetapi dalam keputusan sehari-hari seorang pemimpin biasanya terlibat. Saya telah meneruskan menulis ulang / memigrasikan perangkat lunak lama karena memiliki masa pakai yang terbatas dan karena itu nilai.

Memisahkan Lingkungan

Alasan bisnis untuk lingkungan yang terpisah.

  • Lebih sedikit risiko dalam rilis, dan perbaikan bug. Buktikan dengan angka. Berapa kali produk gagal dan biaya pendapatan pelanggan karena rilis / bug yang buruk.
  • Lebih sedikit risiko dalam pengembangan. Tanpa sengaja menerbangkan dev db berbeda dengan secara tidak sengaja menerbangkan db produksi
  • Kemampuan untuk dengan jelas memisahkan peran dan akses yaitu. keamanan yang lebih baik. membatasi jumlah jari dalam pai produksi adalah hal yang baik
  • Kemampuan untuk memisahkan lingkungan, dan praktik serta prosedur yang sejalan dengan gaya pengembangan ini memungkinkan untuk pengembangan di masa depan ke dalam Sistem Cloud.
  • Pemisahan lingkungan harus memaksa efisiensi dalam lingkungan replikasi yang mungkin berguna dalam penjadwalan serta penskalaan dinamis.
dietbuddha
sumber
+1 Untuk menunjukkan bahwa penting untuk melihat biaya.
sleske
Cintai alasan bisnis Anda di lingkungan yang terpisah. Terutama yang pertama 3. Jawaban terbaik. Terima kasih.
John Assymptoth
8

Sepertinya Anda sudah memiliki semua argumen "benar". Sebaliknya, Anda mengalami "herring merah", jika mau. Atau, "mengejar wortel"

manajemen benar-benar tidak punya waktu dan minat untuk mendengarkan saya sampai ada masalah kritis

Itulah yang saya anggap sebagai masalah sebenarnya. Dalam pengalaman saya, jika sebuah perusahaan memiliki praktik pengembangan yang buruk seperti yang Anda gambarkan. Ini bukan hanya masalah "kami tidak tahu yang lebih baik". Sebaliknya, ini adalah kompilasi utang teknis yang disebabkan oleh tim manajemen tingkat atas yang tidak tahu (peduli?) Tentang masalah yang dihadirkannya.

Dalam kasus seperti itu, percakapan yang baik tidak akan tiba-tiba mengayunkan arah Anda. Mungkin trauma parah (kegagalan produk terlihat oleh klien dan secara langsung terkait dengan praktik buruk), tapi saya yakin teknisi cerdas waras sebelum Anda mencoba hal pembicaraan.

Saran saya adalah untuk menyedotnya dan mengambil apa adanya atau mencari posisi baru.

P.Brian.Mackey
sumber
7

Berapa banyak kelompok orang yang berencana mengerjakan aplikasi sekaligus? Biasanya saya telah melihat satu lingkungan untuk setiap kelompok orang. Ini adalah Pengembang (mereka mendapatkan lingkungan DEV dan lingkungan DEV Integration - beberapa akan mengatakan tidak 100% diperlukan, saya akan mengatakan itu bervariasi menurut proyek), dua lingkungan pengujian (satu kelompok penguji melakukan pengujian yang sangat rinci, yang lain untuk penguji QA tingkat tinggi - biasanya mereka adalah pengguna bisnis aktual, bukan penguji terlatih). Biasanya juga terdapat lingkungan pengujian Kinerja yang terisolasi (sehingga Anda dapat menguji volume data yang sangat besar, mensimulasikan volume pengguna yang sangat besar, dll ... g).

Kenapa semua lingkungan ini? Jadi kelompok yang berbeda dapat menguji fitur yang berbeda tanpa menginjak kaki masing-masing. Jika pengembang dan penguji bekerja di lingkungan yang sama, itu adalah mimpi buruk: penguji dapat membuka cacat pada fitur yang secara aktif diubah setiap menit oleh pengembang. Jika ada dua tingkat pengujian, mereka dapat fokus pada aktivitas yang berbeda dan tidak khawatir tentang mengacaukan data masing-masing. Memiliki lingkungan kinerja yang terisolasi memungkinkan Anda untuk menjalankan tes yang mungkin menggantung mesin, tetapi jika itu terisolasi, tidak ada penguji lain yang akan terpengaruh.

Ketika terlalu banyak orang mencoba melakukan terlalu banyak hal berbeda di lingkungan yang sama, Anda berakhir dengan banyak waktu yang terbuang karena satu kelompok menunggu tes kelompok lain selesai sehingga mereka dapat menjalankannya. Dan itu membuang waktu, dan waktu yang terbuang dapat menyebabkan uang yang terbuang, yang Stargazer712 tunjukkan dapat membuat arugment terkuat.

Alasan lain (tidak umum) adalah data: jika aplikasi Anda memiliki data pribadi yang sensitif atau data kartu kredit, Anda biasanya tidak dapat memasukkannya ke dalam lingkungan pengujian, dan biasanya ada persyaratan untuk segala sesuatu kecuali lingkungan QA dan Produksi.

FrustratedWithFormsDesigner
sumber
Adakah yang bisa menjelaskan downvote?
FrustratedWithFormsDesigner
@maple_shaft: LOL! Saya lebih suka memiliki penjelasan, sehingga saya bisa menyempurnakan jawaban saya.
FrustratedWithFormsDesigner
1
Apa yang downvote? Saya tidak melihat downvote ...
yannis
@YannisRizos: Ada adalah salah satu ... tapi itu tidak pernah dijelaskan.
FrustratedWithFormsDesigner
5

Anda tampaknya telah menginvestasikan banyak upaya dalam membawa perubahan budaya di tempat kerja Anda. Ini adalah pencapaian besar karena perubahan sulit pada saat terbaik, namun perubahan budaya bukan hanya tentang mengubah pikiran orang, tetapi tentang mengubah kebiasaan, mematahkan prasangka, dan pada akhirnya tentang membuka pikiran yang berpotensi tertutup untuk kemungkinan yang lebih besar. Jadi pertanyaan untuk bertanya pada diri sendiri pada saat ini adalah "Apa yang saya lewatkan?". Jawaban mudahnya adalah Anda mungkin belum sepenuhnya terlibat dengan manajemen.

Mendapatkan dukungan dari manajemen itu mudah, tetapi yang lebih sulit adalah menerima. Terlepas dari argumen tentang uang dll, kenyataannya adalah bahwa Anda harus dapat memengaruhi pandangan manajemen tentang prioritas. Manajer Anda akan memiliki anggaran, dan ingin menunjukkan bahwa anggaran telah diterapkan dengan bijaksana dan sesuai dengan nilai-nilai dan prioritas perusahaan. Beberapa dari prioritas itu adalah fiskal, tetapi yang lain tentang melayani kebutuhan lain. Dalam beberapa kasus, ini bisa berarti melumasi telapak tangan manajer lain untuk mendapatkan promosi yang selalu diinginkan atasan Anda. Namun dalam kebanyakan kasus, ini mungkin tentang menemukan cara untuk mendapatkan lebih banyak bisnis, atau meningkatkan hubungan dengan mitra dan pelanggan. Jika Anda tidak dapat membuat kasus Anda dalam istilah ini, Anda hanya akan bisa melangkah sejauh ini sebelum Anda menemukan jalan buntu.

Saran saya adalah mencoba membuat kasus tentang produktivitas dan bagaimana ini mempengaruhi anggaran, seperti yang disarankan orang lain, tetapi juga untuk membuat kasus dalam hal prioritas perusahaan Anda dan bagaimana produktivitas Anda dapat secara langsung berdampak pada hubungan perusahaan dengan perusahaan lain.

S.Robins
sumber
"mengubah kebiasaan, melanggar prasangka, dan pada akhirnya tentang membuka pikiran yang berpotensi tertutup untuk kemungkinan yang lebih besar" - dalam retrospeksi ini adalah kuncinya dan saya tidak dapat menunjukkan alasan tunggal mengapa itu akhirnya terjadi
smp7d
4

Ini satu: testability.

Memiliki lingkungan pengujian memberi Anda kebebasan untuk melakukan tes pada database yang tidak disarankan untuk dilakukan dalam lingkungan produksi.


sumber
4

Anda ingin mengubah cara organisasi Anda mengembangkan perangkat lunaknya? Lupakan kekhawatiran tentang "alasan" untuk "melakukan sesuatu secara berbeda". Manusia tidak mengubah perilaku karena argumen rasional. Mereka berubah karena pengaruh psikologis pada kebiasaan mereka.

Jadi, kemana saya akan pergi dengan ini?

Meskipun kadang-kadang Anda berhasil mengubah perilaku organisasi melalui argumentasi, ada taktik lain yang berfungsi lebih baik. Ini termasuk:

  • Dukungan akar rumput: Temukan SATU pengembang "warisan" lainnya yang bersedia memberi Anda kesempatan. Bermitra dengannya dan ubah cara kerjanya. Jangan mengumumkan perubahannya. Lakukan saja perubahan. Jika ada yang pernah bertanya kepada Anda tentang hal itu, katakan saja "Oh ya, itulah yang kami lakukan sekarang."

  • Ambil alih tanggung jawab. Sukarelawan untuk menangani penyebaran untuk orang-orang lama Bertindak seperti kamu menyukainya. Mereka mungkin senang melepaskan tanggung jawab itu. Kemudian jalankan sesuai keinginan Anda.

  • Salahkan orang yang tepat untuk kesalahan mereka. Lain kali bug aplikasi warisan diperkenalkan ke dalam produksi karena mekanisme penyebaran zaman batu Anda, tunjukkan. Lakukan secara halus ... Tidak dalam email. Lain kali Anda sedang rapat dengan seorang manajer, cukup sebutkan contoh alasan bahwa penyebaran itu bermasalah. "Ya, ingat bagaimana kita berebut Jumat lalu karena bug Foo yang diperiksa Bob untuk produksi? Ya, itu banyak usaha yang sia-sia!"

  • Buatlah mudah untuk melakukannya dengan cara yang lebih baik. Lihatlah iphone, misalnya. Ada SATU tombol di atasnya. (Yah, dua). Sangat SANGAT mudah untuk dihidupkan. Jadikan penyebaran-ke-beberapa-lingkungan menjadi gila menjadi mudah. Buat begitu mudah semua manajer dapat melakukannya!

Stephen Gross
sumber
Humans don't change behavior because of rational arguments. They change because of psychological influences on their habits. Betapa menyedihkannya hal itu. Apakah itu menyangkut perangkat lunak atau "pasar bebas", keyakinan bahwa orang membuat keputusan rasional demi kepentingan terbaik mereka adalah kekeliruan.
maple_shaft
4

Ini lebih merupakan masalah ketika Anda mulai berurusan dengan sistem yang saling berhubungan atau warisan, sistem bisnis bergantung pada untuk bekerja dan akurat. Ini penting karena harus ada pemisahan antara tahap-tahap, itu alasan mengapa Anda tidak DEV pada PROD karena memiliki potensi untuk menyebabkan kerusakan senilai jutaan dolar dalam waktu yang hilang .

Kami selalu melakukan DEV -> QA -> PROD (kadang-kadang langkah-langkah tersebut dipecah menjadi potongan-potongan kecil) dengan perangkat keras yang sama di belakangnya. Data produksi saat ini selalu didorong dari PROD ke QA ke DEV.

DEV: dimaksudkan sebagai kotak pasir pengembangan, tempat segala sesuatu dicoba, diulang, dan dipukuli pada data apa pun di lingkungan ini yang tidak boleh dipercaya dan secara teratur dibuang oleh pengembang hanya dengan mencari cara untuk menyelesaikan masalah.

TA: Setelah pengembang Anda puas dengan pengujian unit, sekarang saatnya bagi kelompok uji untuk mencapainya. Mereka menjalankan test case, pengujian kinerja dan menemukan bug. Bug / peningkatan tersebut diumpan balik ke DEV dan siklus berlanjut hingga semua orang bahagia.

PROD: Setelah Anda mencapai tahap ini, Anda harus yakin bahwa kodenya bekerja bersama dengan data saat ini dan pengguna grup / bisnis QA Anda senang dengan implementasinya. Jika Anda melakukan semuanya dengan benar, Anda hanya dapat memperbarui kode dan menyelesaikannya.

Dengan cara yang sama Anda tidak akan pernah merilis produk yang belum diuji ke pelanggan Anda tidak boleh merilis kode yang belum diuji ke lingkungan produksi.

Jika perusahaan tidak mau menginvestasikan waktu untuk melakukannya dengan benar mereka akan membayar biaya pemeliharaan darurat dan kesalahan 10 kali lipat.

Sebagai contoh kecil: Kami memiliki satu perusahaan yang memutuskan untuk membuat perubahan pada laporan produksi sendiri. Tidak ada yang tahu bahwa itu berubah sampai kami datang untuk mengatasi berbagai masalah dalam satu atau dua tahun ke depan.

Ketika kami menunjukkan ketidakberesan dalam laporan wajah CFO menjadi putih, ternyata mereka kehilangan ~ $ 250.000 per kuartal karena seseorang membuat perubahan cepat.

Terjadi lebih sering daripada yang Anda pikirkan, jika Anda tidak mampu melakukannya dengan benar maka jangan lakukan itu.

DarkStar33
sumber
Contoh yang bagus. Tentu saja, akuntabilitas adalah alasan penting untuk memisahkan DEV dan PROD. Dengan begitu Anda dapat memiliki kontrol yang sangat ketat pada PROD, sambil memberi DEV kebebasan yang dibutuhkan.
sleske
3

Manajemen memiliki bagian besar di balik kesuksesan Perusahaan Perangkat Lunak dan Produk Perangkat Lunak yang diperlukan untuk menghasilkan lingkungan ini. Mari ambil contoh proyek Anda. Jika perangkat lunak Anda dikembangkan dalam skala besar maka jika Anda tidak mengelola persyaratan proyek Anda, kontrol proses, Test Builds dll maka ini kemungkinan gagal. sehingga Manajemen Proyek ada.

Saya agak setuju dengan @ Stargazer712 bahwa pernyataan Anda mengarah ke masalah Uang, Tetapi Periksa pernyataan berikut yang saya dapatkan dari buku Marc Hamilton tentang Pengembangan Perangkat Lunak: Membangun Sistem yang Andal (Prentice Hall PTR, 1999, ISBN 0-13-081246- 3). Setelah melihat semua faktor ini; Pendapat saya tentang pertanyaan Anda adalah bahwa Lingkungan Tunggal tidak memberi Anda tabungan, itu akan membuat proses jangka panjang untuk menyelesaikan proyek / perangkat lunak. Lingkungan Terdistribusi akan menghemat Waktu dan pendapatan seperti yang saya pelajari dan lihat dalam pengalaman saya bahwa apa yang terjadi dengan perusahaan perangkat lunak baru yang darinya saya telah memulai karier saya.

Ada banyak artikel yang menunjukkan bahwa yang penting untuk sukses, Lihat yang satu ini Pengorganisasian untuk Pengembangan Perangkat Lunak yang Sukses

Setiap individu dalam suatu organisasi memiliki keterampilan tertentu, dan keterampilan ini biasanya diukur terhadap metrik kinerja formal atau informal yang mengarah pada penghargaan (kompensasi) sebagai insentif untuk kinerja masa depan. Orang-orang dalam suatu organisasi membangun budaya mereka — pola-pola dan nilai-nilai perilaku yang secara umum diakui sebagai yang diadopsi.

Satu set besar pengembang perangkat lunak akan berjuang dan akhirnya gagal memenuhi tujuan mereka jika mereka harus menghabiskan seluruh waktu mereka berjuang melawan struktur organisasi yang tidak pantas.

Banyak startup perangkat lunak memulai hidup dengan tidak lebih dari beberapa pengembang yang bekerja di garasi. Tidak banyak struktur organisasi yang diperlukan pada titik ini dalam sejarah perusahaan, tetapi struktur organisasi masih ada. Misalnya, pada tahun 1977, ketika Bill Gates dan Paul Allen membentuk kemitraan mereka dan secara resmi menamakannya Microsoft, perusahaan memiliki struktur organisasi yang minimal. Kurang dari selusin karyawan bekerja di kantor pertama Microsoft di Albuquerque, New Mexico, dan semua orang tahu siapa yang bertanggung jawab. Tidak diperlukan bagan organisasi yang rumit untuk mengetahui struktur pelaporan semua orang. Pada saat yang sama, semua karyawan tahu peran mereka di perusahaan dan apa yang ingin mereka capai. Ini karena setiap struktur organisasi yang diperlukan dapat dikomunikasikan secara informal antara masing-masing karyawan.

Niranjan Singh
sumber
1

Lupakan waktu, uang, kemampuan uji, kualitas ... bagaimana dengan reputasi .

alasan yang baik, sederhana, dan tak terbantahkan untuk pemisahan lingkungan yang akan membuat manajer tidak memiliki pengalaman pengembangan untuk mendukung gagasan ini.

Uber baru-baru ini mengirim kode ke github yang berisi kata sandi untuk lingkungan live mereka , memungkinkan 'peretas' mengunduh semua detail pelanggan mereka. Uber mengatakan itu adalah pelanggaran, semua orang mengatakan "jangan menaruh kunci ke kunci Anda di depan umum. Jika pengembang mereka bekerja sepenuhnya pada lingkungan dev, mereka mungkin telah merilis kunci ke lingkungan dev mereka di github, tapi itu sepenuhnya Tidak ada salahnya bahwa yang produksi dirilis menunjukkan betapa buruknya gagasan ini melakukan dev pada lingkungan produksi.

Hanya mengingatkan manajer Anda bahwa kesalahan terjadi, jadi cara untuk menghindari dia diangkut di hadapan CEO yang akan mendapatkan pemanggang di depan wartawan dan ditertawakan oleh publik teknologi adalah dengan mengambil langkah-langkah sederhana dan jelas untuk mencegah kesalahan-kesalahan itu menjadi bencana besar. yang

gbjbaanb
sumber
1

Kedengarannya seperti Anda harus banyak lingkungan yang berbeda dan itu adalah biaya banyak orang untuk mengatur "lingkungan".

Anda harus memiliki paling sedikit "lingkungan" berbeda yang dapat Anda hindari, tetapi dapat mengkloning banyak salinan karena berbagai alasan seperti keinginan Anda dan perusahaan (menggunakan "lingkungan untuk konfigurasi sistem)!

Secara optimal satu-satunya perbedaan adalah:

  1. Ukuran (minimal, direkomendasikan, terbesar didukung / diuji terhadap);
  2. Pementasan dan produksi tidak memiliki alat pengembangan
  3. Produksi dilindungi terhadap penimpaan data yang tidak disengaja
  4. Anda dapat dengan mudah memuat data demo, pengujian atau [anoymized] klien ke server pengembangan atau pementasan

LALU pertanyaan tentang seberapa banyak dan jenis pengujian apa yang harus dilakukan adalah evaluasi bisnis risiko / biaya dan diputuskan di tingkat perusahaan, karena itu adalah bisnis secara keseluruhan yang akan menderita jika kesalahan signifikan keluar ke berbagai klien .

Sunting Kemudian: Ini mendorong saya untuk merasionalisasi konvensi penamaan saya dengan produk web saya (terima kasih atas pertanyaannya). Saya telah memutuskan empat "lingkungan", dengan pemisahan pengujian antara qa (tingkat tunggal minimum untuk fungsi pengujian saja) dan pementasan (arsitektur yang sama seperti produksi, untuk pengujian beban / kinerja / volume).

Satu-satunya perbedaan nyata dalam penyediaan adalah produksi / pementasan menginstal DB ke sistem yang terpisah, yang saya kendalikan di mana grup-grup dari server yang berbeda berada. Qa / dev memiliki kedua server web dan peran db. Penyeimbangan beban dilakukan oleh cloudflare.

Saya juga memiliki variabel ENV_NO, yang diteruskan ke sistem sehingga saya dapat memilih untuk memiliki banyak contoh "qa" atau "staging" seperti yang saya pilih.

Jadi, untuk mengatur lingkungan qa kedua termasuk cadangan terbaru saya dari live, perintahnya adalah:

git checkout desired-branch/commit for provisioning
ENV_NO=2 bin/provision create qa
# come back after a short lunch

git checkout desired-branch/commit
ENV_NO=2 bin/cap qa deploy
# a minute or two

ENV_NO=2 bin/cap qa db:upload db:restore
# longer than I want once there is a decade of data ("longer" coffee break to traverse a 5.3km ADSL link)

Terakhir, saya memiliki satu server (opsional) tambahan yang disebut "readonly" sebagai jaring pengaman terakhir sebelum menyentuh tanah. Ini disediakan seperti sistem qa tetapi dengan cadangan semalam dan pembaruan dinonaktifkan (perangkat lunak juga diperbarui untuk semalam).

Ia menggunakan pendekatan "Semua telur dalam keranjang yang berbeda": Ini disediakan dengan pencatat lokasi / DNS yang berbeda, host DNS, penyedia layanan host sistem. Ini adalah jaring pengaman pamungkas / terakhir jadi jika semuanya terbakar, Anda setidaknya bisa mendapatkan data hingga semalam. Script provisi mengisolasi perbedaan antara penyedia yang berbeda, jadi 99% adalah sama, hanya tanda baca saja. Cloudflare load balancer akan mengarahkan lalu lintas ke situs readonly jika semua server langsung gagal.

iheggie
sumber
0

Ketika datang untuk membuat perubahan, Anda akan beruntung memiliki seseorang yang hanya akan mendengarkan pendapat profesional Anda dan menerapkan perubahan yang disarankan.

Berdasarkan pengalaman saya, setiap kali saya harus membuat perubahan besar, saya harus membenarkannya dalam hal penghematan yang akan dihasilkan oleh bisnis. Misalnya, memasukkan ReSharper ke dalam pipeline pengembangan cukup mudah, karena saya bisa mengatakan sesuatu di telepon:

ReSharper berharga sekitar £ 50 per pengembang. Biaya pengembang rata-rata per tahun adalah £ 40 ribu. ReSharper harus meningkatkan produktivitas pengembang setidaknya 20% mengingat potensi penuhnya digunakan. Katakanlah pengembang menghabiskan 75% waktu mereka untuk menulis kode dalam IDE. 75% dari 40k adalah £ 30k. £ 30k sekarang menjadi biaya produktivitas pengembang. Persentase tambahan produktivitas (1%) per tahun berharga £ 300. Untuk mendapatkan produktivitas 20% tambahan, bisnis harus mengeluarkan £ 6k.

Jika Anda menempatkan ini dalam perspektif bisnis, Anda dapat mengatakan bahwa Anda dapat mempekerjakan orang lain dan mendapatkan produktivitas 20% tambahan untuk £ 6k, atau Anda bisa mendapatkan hasil yang sama dengan menghabiskan £ 50 pada lisensi ReSharper. Setelah angka di depan bisnis, keputusan akan mudah dibuat.

Sekarang sehubungan dengan pertanyaan Anda dengan memiliki beberapa lingkungan, yang harus Anda lakukan adalah menemukan cara menghitung berapa biaya bisnis setiap tahun untuk sekarang memiliki lingkungan ini.

Anda dapat meminta rekan pengembang Anda untuk melacak jam yang dihabiskan setiap minggu untuk mengonfigurasi aplikasi untuk pengembangan, penyebaran, dll. Misalnya, sepuluh jam waktu pengembang senior mungkin membutuhkan biaya bisnis £ 500. Itu 10 jam yang bisa dihabiskan untuk pengembangan, atau sesuatu yang jauh lebih penting. Anda mengumpulkan angka-angka untuk jangka waktu tertentu dan menyediakan bisnis dengan biaya tahunan.

Saya pribadi benci politik semacam ini, tapi itu biasa dan kita harus hidup dengannya.

CodeART
sumber