Lingkungan Pembuatan Kode Pengembang
Dalam rekayasa platform, salah satu tantangan umum adalah memastikan bahwa pengembang dapat dengan cepat dan konsisten mengatur lingkungan pengkodean mereka, terutama ketika pengembang baru bergabung dengan tim, pengembang beralih antar proyek, atau ada kebutuhan untuk menskalakan. Mengotomatiskan penyiapan lingkungan pengembang dapat menyederhanakan onboarding dan menghilangkan waktu yang hilang karena kesalahan konfigurasi atau dependensi yang rusak. Dengan menyediakan lingkungan yang telah dikonfigurasi sebelumnya atau menyiapkan skrip, tim dapat fokus pada pengembangan daripada membuang-buang waktu memecahkan masalah inkonsistensi lingkungan.
Pendekatan untuk mengelola lingkungan pengembang dapat bervariasi, tetapi sering kali mencakup virtualisasi, kontainerisasi, dan templat standar yang selaras dengan kebutuhan organisasi. Ini dapat berkisar dari lingkungan Windows yang sepenuhnya virtual hingga kontainer yang dihosting cloud untuk pengembangan Linux. Selain itu, membuat templat "start right" yang mempromosikan konsistensi, praktik terbaik, dan keamanan sebagai kode sangat penting dalam mempertahankan proses berulang yang terdefinisi dengan baik yang menskalakan di seluruh tim. Ini memastikan bahwa alur kerja pengembangan tidak hanya dimulai dengan lancar tetapi terus mematuhi praktik terbaik, menjaga proyek tetap terlacak dan mematuhi standar keamanan dan operasional.
Mengotomatiskan Penyiapan Lingkungan Pengkodian Pengembang
Bootstrapping dan normalisasi lingkungan pengkodian pengembang dapat menjadi tantangan utama dalam sistem teknik. Masalah utama meliputi:
- Waktu orientasi yang lama: Dibutuhkan waktu berpekan-minggu bagi pengembang baru untuk berkontribusi, terutama ketika mentransfer pengembang antar proyek atau mendatangkan kontraktor.
- Inkonsistensi: Perbedaan antara lingkungan pengembang dan sistem CI sering menyebabkan masalah "berfungsi pada komputer saya".
- Ketidakstabilan lingkungan: Bereksperimen dengan atau meningkatkan kerangka kerja dan perangkat lunak dapat memutus konfigurasi yang ada, menghasilkan pemecahan masalah yang berpotensi panjang dan kompleks.
- Penundaan tinjauan kode: Perubahan konfigurasi yang diperlukan dalam tinjauan kode dapat memperlambat pengembangan karena perubahan tersebut perlu dibatalkan nanti.
- Peningkatan keterlibatan untuk semua pemangku kepentingan: Peran non-pengembangan (seperti operator, QA, dan sponsor bisnis) juga perlu dilatih dan dilibatkan, yang dapat menyebabkan lebih banyak keterlambatan.
Untuk mengatasi masalah ini, menstandarkan dan mengotomatiskan penyiapan lingkungan pengembang melalui alat, skrip, atau lingkungan kontainer/virtual dapat membantu. Lingkungan yang telah dikonfigurasi sebelumnya yang disesuaikan dengan proyek atau kebutuhan organisasi tertentu dapat memastikan konsistensi, mengurangi waktu penyiapan, dan meningkatkan produktivitas secara keseluruhan.
Lingkungan Pengkodian untuk Windows dan Linux
Saat menargetkan Windows untuk penggantian stasiun kerja atau virtualisasi penuh, komputer virtual (VM) umumnya memberikan fungsionalitas terbaik. Pendekatan ini bermanfaat untuk pengembangan klien Windows, mengelola aplikasi web kerangka kerja lengkap .NET, atau memelihara layanan Windows. Anda dapat menggunakan VM yang dihosting cloud seperti Microsoft Dev Box, yang menawarkan virtualisasi stasiun kerja Windows lengkap dengan integrasi ke perangkat lunak manajemen desktop. Atau, VM lokal dapat digunakan dengan alat seperti HashiCorp Vagrant untuk mengelola lingkungan, dan HashiCorp Packer dapat digunakan untuk membangun gambar VM untuk Vagrant dan Dev Box.
Untuk menargetkan Linux, virtualisasi ruang kerja lebih cocok, berfokus pada lingkungan khusus proyek atau khusus aplikasi daripada mengganti desktop penuh. Kontainer yang dihosting cloud adalah pilihan umum, dengan opsi seperti GitHub Codespaces, yang menyediakan lingkungan Dev Container berbasis cloud yang kompatibel dengan VISUAL Code, JetBrains IntelliJ, dan alat berbasis terminal. Jika opsi cloud tidak memenuhi kebutuhan Anda, SSH atau terowongan jarak jauh Visual Studio Code mendukung koneksi ke VM Linux yang dihost sendiri. Selain itu, kontainer lokal adalah opsi jika Anda lebih suka menjalankan Kontainer Dev secara lokal. VISUAL Code dan IntelliJ memberikan dukungan yang kuat untuk lingkungan ini. Untuk fleksibilitas lebih lanjut, VM yang dihosting cloud, di mana Anda dapat SSH langsung ke VM Linux yang dikelola sendiri, juga dapat digunakan. Dalam kasus di mana pengembang bekerja secara eksklusif di Windows, Subsistem Windows untuk Linux (WSL) menawarkan solusi pengembangan Linux lokal yang nyaman. Distribusi WSL dapat diekspor dan dibagikan ke seluruh tim. Layanan berbasis cloud seperti Microsoft Dev Box juga mendukung WSL untuk pengembangan Linux.
Menggunakan Templat Aplikasi untuk Konsistensi dan Standardisasi
Untuk mempromosikan konsistensi, standardisasi, dan praktik terbaik di seluruh tim pengembangan, organisasi dapat menggunakan templat aplikasi sebagai bagian dari pendekatan "semuanya sebagai kode". Templat ini dapat menyederhanakan pengembangan, memastikan tim tetap berada di jalur beraspal yang ditetapkan. Untuk organisasi yang mengikuti pola monorepo, alat seperti Azure Developer CLI (azd) dapat digunakan untuk membuat templat yang tidak hanya menyertakan penyiapan sumber aplikasi tetapi juga konfigurasi lingkungan dan alur kerja CI/CD.
Saat membuat templat untuk pengembangan, sangat membantu untuk mempertimbangkan berbagai area utama untuk memastikan bahwa templat komprehensif dan konsisten, mematuhi praktik terbaik:
- Kode sumber sampel: Sertakan contoh kode sumber untuk memandu pengembang menuju bahasa yang direkomendasikan, model aplikasi, layanan, API, SDK, dan pola arsitektur.
- Skrip build dan deployment: Mengintegrasikan skrip yang menawarkan cara konsisten untuk memulai build dan menerapkan secara lokal atau ke lingkungan sandbox. Pastikan konfigurasi debug dalam IDE atau editor disertakan untuk disinkronkan dengan alur CI/CD.
- Konfigurasi CI/CD: Menyediakan alur kerja atau pipeline untuk membangun dan menyebarkan aplikasi, dengan memanfaatkan alur kerja yang dapat digunakan kembali dan terpusat. Perlakukan ini sebagai templat "mulai kanan" dan pastikan templat tersebut memungkinkan pemicu manual saat diperlukan.
- Aset Infrastruktur sebagai Kode (IaC): Sertakan konfigurasi dan referensi yang direkomendasikan ke modul yang dikelola secara terpusat untuk memastikan penyiapan infrastruktur mengikuti praktik terbaik.
- Keamanan dan kebijakan sebagai aset kode: Tambahkan file konfigurasi terkait keamanan, seperti CODEOWNERS dan dependabot.yaml, untuk menggabungkan keamanan langsung ke dalam proses pengembangan. Alur kerja terjadwal untuk pemindaian keamanan, termasuk alat seperti Microsoft Defender untuk Cloud, harus disediakan untuk menyematkan keamanan dalam alur CI/CD dan meningkatkan keamanan rantai pasokan.
- Pengamatan, pemantauan, dan perekaman log: Menyediakan konfigurasi penyiapan untuk alat pemantauan, seperti IaC untuk penempatan agen atau konfigurasi sebagai kode (configuration-as-code) untuk dasbor pemantauan. Sertakan kode sampel untuk pengelogan dan pelacakan terdistribusi untuk memastikan aplikasi dapat dipantau secara efektif setelah disebarkan.
- Penyiapan lingkungan pengkodian: Tambahkan file konfigurasi untuk linter, formatter, dan IDEs, dan siapkan skrip untuk lingkungan pengembangan virtual seperti devcontainer.json, devbox.yaml, atau file terkait Docker.
- Konfigurasi pengujian: Menyediakan file untuk pengujian unit dan skenario pengujian yang lebih ekstensif, menggunakan alat seperti Microsoft Playwright Testing atau Azure Load Testing.
Penyiapan alat kolaborasi: Jika didukung, sertakan templat tugas/masalah atau templat PR sebagai kode. Secara opsional, berikan alur kerja yang menggunakan CLI atau API yang tersedia untuk memperbarui sistem atau mengonfigurasi alat kolaborasi seperti Microsoft Teams atau Slack.