Apa yang disediakan alat SCM (Ansible, Puppet, Chef, dll.)?

8

Saya sudah membaca cukup banyak tentang Manajemen Konfigurasi Perangkat Lunak (di Internet dan juga SWEBOK), tetapi saya tidak jelas apa tujuan dari alat SCM. Atau, lebih baik dikatakan, apa yang disediakan alat-alat ini yang tidak dimiliki alat-alat lain.

Katakanlah saya memiliki lingkungan dengan alat berikut:

  • Jenkins untuk integrasi berkelanjutan.
  • Semut sebagai alat bangun.
  • Git sebagai sistem kontrol versi.
  • GitLab untuk manajemen repositori Git, dan untuk pelacakan masalah juga.
  • Analisis kode sumber dan alat pengujian, seperti Sonar dan JUnit.

Jadi, pertanyaan saya adalah, apa yang disediakan alat SCM itu? Dengan cara apa mereka berguna?

Julen
sumber

Jawaban:

10

Semua alat yang telah Anda sebutkan (Jenkins, semut, git) membantu untuk benar-benar membangun dan menguji artefak Anda. Di dunia java biasanya ini bisa berupa perang, kuping atau sekedar zip dengan aplikasi di dalamnya. Terkadang untuk aplikasi yang rumit, bisa lebih dari satu artefak. Untuk platform pemrograman lain, ini dapat bervariasi, DLL, biner untuk beberapa platform yang berbeda dan sebagainya.

Sekarang katakanlah Anda ingin menggunakan aplikasi Anda. Jika Anda memiliki satu server, Anda dapat melakukannya secara manual atau dengan beberapa skrip buatan sendiri. Sejauh ini bagus :)

Tetapi bagaimana jika Anda memiliki banyak tambak (kelompok mesin), tambak yang berbeda harus memiliki penyebaran dengan konfigurasi yang berbeda (database, lokasi geografis yang berbeda) Bagaimana jika aplikasi Anda dapat menskalakan secara horizontal sehingga menambahkan beberapa node baru ke tambak harus tugas sepele. Tim QA Anda mungkin hanya meminta lingkungan baru untuk menjalankan tes mereka, tim kinerja Anda dapat meminta lingkungan baru atau menambahkan node ke kebun untuk menjalankan tes stres dan sebagainya. Sekarang mengelola semua hal ini tampaknya rumit. Di situlah alat seperti ansible, koki, garam, boneka, dan lainnya ikut bermain.

Ini sebenarnya membantu mengotomatiskan penyebaran. Mereka dapat memberikan resep penyebaran, menginstal dependensi yang hilang (untuk menjalankan proyek Anda mungkin memerlukan jre, kucing jantan dari versi spesifik dan nginx untuk konten statis). Semua ini di tingkat peternakan.

Saya tahu jawabannya terlalu umum dan mungkin tampak kurang jelas untuk pengembang java (saya salah satunya). Tetapi jika Anda memiliki tim sistem / pengembang, mereka harus segera menunjukkan manfaat dari alat-alat ini.

Mark Bramnik
sumber
Terima kasih atas jawaban anda. Bagi mereka yang adalah pengembang dan penguji QA & Kinerja all-in-one (kasus saya), dengan hanya dua mesin, pengembangan dan produksi, apakah Anda akan merekomendasikan penggunaan alat SCM itu? Saya mengerti maksud Anda, tetapi sulit bagi saya untuk memahami semua dan menempatkan diri saya dalam konteks itu, karena saya belum pernah berada dalam situasi itu.
Julen
2
jika Anda hanya mengerahkan perang dari yang mungkin Anda tidak harus menggunakan alat ini. Tentu saja Anda dapat mencoba satu (mungkin ansible atau garam akan lebih baik bagi Anda). Saya mungkin akan mencoba mereka hanya untuk mempelajari sesuatu yang baru dan melihat apakah hidup saya akan menjadi lebih mudah dengan alat-alat ini :)
Mark Bramnik
1
Saya pikir itulah yang akan saya lakukan, terima kasih banyak.
Julen
Di beberapa titik di masa depan Anda AKAN perlu skala di luar kapasitas saat ini atau mengganti perangkat keras yang ada dengan kit yang lebih modern. Apakah penskalaan secara vertikal (mesin yang lebih besar) atau secara horizontal (memisahkan web dari db dengan lebih banyak web) menggunakan SCM akan menyederhanakan migrasi akhir & membuatnya lebih mudah untuk menguji bahwa Anda tidak akan merusak apa pun dalam gerakan. Memutuskan untuk mulai bereksperimen sekarang ketika lingkungan Anda sederhana adalah pilihan yang bijaksana. Catatan, Anda juga dapat menggunakan alat-alat ini (saya lebih suka Ansible karena kesederhanaannya dan kurangnya ketergantungan pada menginstal agen di setiap kotak) untuk menyediakan sistem Dev Anda).
Bryan 'BJ' Hoffpauir Jr.