Pertanyaan Anda sepertinya tidak membuat asumsi tentang platform / OS tentang hal itu. Itulah sebabnya mengapa masuk akal untuk menambahkan jawaban tentang bagaimana hal ini biasanya dilakukan / ditangani dalam lingkungan mainframe, di mana "insinyur" (seperti dalam judul pertanyaan Anda) sebenarnya adalah sekelompok orang yang berpuluh-puluh (mungkin ratusan) orang terlibat. Jawaban saya didasarkan pada penggunaan produk SCM yang paling saya kenal (tidak yakin apakah perlu mengungkapkan nama produk).
1. Arsitektur
Berikut adalah hal-hal penting tentang bagaimana saya akan menjawab pertanyaan Anda:
- Semua kode (dan artefak terkait seperti executable, dll) disimpan dalam file yang, bersama-sama adalah apa yang kita sebut struktur pustaka .
- Untuk setiap lingkungan pada setiap sistem target (mungkin jarak jauh), ada server ("tugas yang dimulai" di mainframe berbicara), yang menangani SEMUA (ulangi: SEMUA) pembaruan untuk apa pun dalam struktur perpustakaan. Ada beberapa pengecualian (seperti petugas keamanan, atau tim manajemen ruang), tetapi selain itu, tidak ada (ulangi: tidak ada) yang memiliki otorisasi untuk menerapkan pembaruan ke file apa pun dalam struktur perpustakaan itu. Dengan kata lain: server mendapatkan otoritas pembaruan eksklusif untuk seluruh struktur perpustakaan . Perhatian: OPS-orang akan menjadi gila jika Anda masuk untuk membatasi akses mereka (pada awalnya mereka akan menolak ...), jadi pastikan Anda dilindungi oleh manajemen atas (CxO) untuk memaksakan aturan akses tersebut ...
- Perangkat lunak yang sebenarnya mengubah saya terdiri dari satu komponen (perbaikan kode kecil di tengah malam ...), atau mungkin juga ratusan atau ribuan sumber, dapat dieksekusi, atau apa pun artefak lainnya (selama akhir pekan rilis). Untuk membuatnya mudah dikelola, hal-hal yang harus dipindahkan (kurang lebih) bersamaan, pada saat bersamaan, digabungkan menjadi satu dalam apa yang disebut paket perubahan perangkat lunak .
Dengan hal tersebut di atas, segala jenis pembaruan yang diterapkan oleh server ke struktur perpustakaan, hanya akan dimungkinkan melalui alur kerja yang terdefinisi dengan baik, yang kami sebut siklus hidup paket perubahan perangkat lunak (SDLC jika Anda mau). Untuk benar-benar menjalankan berbagai langkah dalam alur kerja itu, inilah yang diperlukan untuk mewujudkannya:
- Hanya server yang akan menjalankan langkah-langkah yang diperlukan (dan sudah dikonfigurasikan).
- Server hanya akan melakukan langkah tertentu (= memperbarui sesuatu di suatu tempat dalam struktur perpustakaan), setelah persetujuan yang diperlukan (dari manusia) dikumpulkan untuk melakukan langkah tersebut.
- Persetujuan hanya dapat diberikan oleh pengguna yang memiliki peran yang memungkinkan mereka (= izin) untuk mengeluarkan persetujuan tersebut.
2. Peran dan izin
Server akan memastikan bahwa pengguna yang mencoba membuat sesuatu terjadi (seperti 'menyetujui sesuatu') hanya akan dapat melakukannya, jika izin pengguna sesuai. Bagian itu mudah. Tetapi Anda tidak ingin menggunakan sistem SCM untuk mengelola semua izin itu untuk semua pengguna yang terlibat, itulah yang termasuk dalam sistem keamanan Anda (bukan sistem SCM!), Sehingga Anda dapat menyesuaikan alur kerja Anda (dalam sistem SCM Anda) untuk pergi memeriksa izin tersebut kapan saja sesuai. Langkah-langkah di bawah ini memberikan beberapa detail lebih lanjut tentang itu.
Langkah 1: Konfigurasikan izin (dalam sistem keamanan)
Tetapkan entitas keamanan dalam sistem keamanan Anda, dengan nama yang didefinisikan dengan baik untuk entitas tersebut. Beberapa sampel (tambahkan sebanyak mungkin yang serupa dengan kebutuhan Anda sendiri):
PrmUnit
, digunakan untuk mendapatkan izin untuk meminta Promosi untuk mengatakan Unit -testing.
PrmQA
, Digunakan untuk mendapatkan izin untuk meminta Promosikan mengatakan Qa -Ujilah (mari kita menganggap ini adalah tingkat tertinggi dari pengujian).
PrdEnduser
, digunakan oleh pengguna akhir yang terlibat dalam beberapa tingkat pengujian, untuk menunjukkan bahwa mereka puas dengan hasil yang dihasilkan oleh beberapa jenis pengujian. Dan karena itu, para pengguna akhir setuju dengan perubahan yang bergerak maju dalam struktur perpustakaan.
PrdRelmgnt
, digunakan oleh manajer rilis untuk mengesahkan Aktivasi dalam produksi (= level terakhir / tertinggi dalam struktur perpustakaan).
Tentukan grup pengguna di sistem keamanan Anda. Beberapa sampel (tambahkan sebanyak mungkin yang serupa dengan kebutuhan Anda sendiri):
GrpDevs
, yang (misalnya) sesuai dengan pengembang Anda (mungkin lebih dari hanya 1).
GrpEnduser
, yang (misalnya) sesuai dengan pengguna akhir Anda (setidaknya 1, lebih disukai dengan pengguna yang lebih mirip).
GrpRelMgnt
, yang (misalnya) sesuai dengan manajer rilis Anda (setidaknya 1, lebih disukai beberapa pengguna).
Berikan izin , juga menggunakan sistem keamanan Anda, untuk memungkinkan akses ke " entitas keamanan " yang dipilih untuk " grup pengguna " yang dipilih. Untuk melanjutkan contoh di atas, inilah yang tampaknya cocok (sesuaikan dengan kebutuhan Anda):
- Grup
GrpDevs
mendapat akses ke entitas keamanan (hanya!) PrmUnit
.
- Grup
GrpEnduser
mendapat akses ke entitas keamanan (hanya!) PrdEnduser
.
- Grup
GrpRelMgnt
mendapat akses ke entitas keamanan (keduanya!) PrmQA
Dan PrdRelmgnt
.
Langkah 2: Konfigurasikan alur kerja (dalam sistem SCM)
Setelah izin dikonfigurasikan dalam sistem keamanan Anda (seperti pada Langkah 1), yang tersisa untuk dilakukan dalam sistem SCM Anda adalah mengonfigurasi bagaimana berbagai langkah dalam siklus hidup cocok dengan entitas keamanan terkait di sistem keamanan Anda. Artinya, hanya pengguna yang memiliki akses yang sesuai ke entitas keamanan yang diperlukan, diizinkan untuk meminta server untuk melakukan langkah yang sesuai dalam alur kerja.
Berikut adalah beberapa contoh bagaimana Anda mengkonfigurasi sistem SCM Anda untuk membuat keajaiban terjadi:
- Jika pengguna memiliki akses ke
PrmUnit
, maka pengguna tersebut diperbolehkan untuk meminta Promosi ke Unit -testing. Jelas, pengguna dalam grup GrpDevs
adalah pengguna yang diotorisasi untuk ini (catatan: tidak, misalnya, pengguna dalam grup GrpRelMgnt
).
- Jika pengguna memiliki akses ke
PrmQA
, maka pengguna tersebut diizinkan untuk meminta Promosi ke QA -testing. Jelas, pengguna dalam grup GrpRelMgnt
adalah pengguna yang diotorisasi untuk ini (catatan: tidak, misalnya, pengguna dalam grup GrpDevs
, atau dalam grup GrpEnduser
).
- Jika pengguna memiliki akses ke
PrdEnduser
, maka pengguna tersebut diizinkan untuk mengotorisasi perubahan yang bergerak maju dalam struktur perpustakaan (yang biasanya merupakan prasyarat bagi pengguna dalam grup GrpRelMgnt
bahkan untuk dapat meninjau perubahan). Jelas, pengguna dalam grup GrpEnduser
adalah (hanya) pengguna yang diotorisasi untuk ini.
- Jika pengguna memiliki akses ke
PrdRelmgnt
, maka pengguna tersebut diizinkan untuk mengotorisasi Aktivasi dalam produksi (= level terakhir / tertinggi dalam struktur perpustakaan).
3. Harapkan yang tak terduga, dan bersiaplah untuk itu
Di atas hanyalah cetak biru, yang semoga membantu untuk memahami bagaimana pada akhirnya itu adalah server yang menangani pemisahan tugas ... asalkan Anda memiliki CxO yang melindungi Anda untuk menerapkan beberapa aturan akses yang tidak semua orang akan suka.
Untuk melengkapi gambar seperti yang dijelaskan di atas, server membuat jejak audit (logging) dari segala sesuatu yang terjadi di sistem. Sehingga pada suatu titik waktu, selalu mungkin untuk menjawab pertanyaan seperti
Apa yang terjadi kapan dan mengapa, dan pengguna resmi mana yang benar-benar menyetujuinya ... dimuka?
Tapi, mungkin bagian terberat adalah memiliki alat pelaporan yang memadai (dan tahu cara menggunakannya). Setidaknya untuk (dengan mudah) memenuhi permintaan dari auditor TI (pertanyaan mereka bisa sangat menantang). Tetapi juga untuk menunjuk ke catatan log yang relevan dalam sistem SCM Anda untuk menjawab semua jenis "Apa yang terjadi" - pertanyaan dalam situasi krisis di mana (bagian dari) produksi turun.
PS: Saya serahkan pada penilaian semua orang jika jawaban saya ya atau tidak sesuai dengan DevOps.