Panduan Dummy: Membuat Rantai DevOps Menggunakan Alat Sumber Terbuka


Buat rantai DevOps pertama dalam lima langkah untuk pemula.


DevOps telah menjadi obat mujarab untuk proses pengembangan yang terlalu lambat, terfragmentasi dan bermasalah lainnya. Tetapi Anda membutuhkan pengetahuan minimal di DevOps. Ini akan mencakup konsep-konsep seperti rantai DevOps dan cara membuatnya dalam lima langkah. Ini bukan panduan lengkap, tetapi hanya "ikan" yang dapat diperluas. Mari kita mulai dengan ceritanya.


Kenalan saya dengan DevOps


Saya dulu bekerja dengan cloud di Citi Group dan mengembangkan aplikasi web IaaS untuk mengelola infrastruktur cloud Citi, tetapi saya selalu tertarik dengan cara mengoptimalkan rantai pengembangan dan meningkatkan budaya di antara para pengembang. Greg Lavender, direktur teknis kami untuk arsitektur dan infrastruktur cloud, memberi tahu saya tentang buku Proyek Phoenix . Dia dengan sempurna menjelaskan prinsip-prinsip DevOps, sambil membaca seperti novel.


Tabel di belakang menunjukkan seberapa sering perusahaan meluncurkan versi baru:



Bagaimana Amazon, Google, dan Netflix berhasil meluncurkan begitu banyak? Sederhana: mereka menemukan cara membuat rantai DevOps yang hampir sempurna.


Di Citi, semuanya benar-benar salah sampai kami beralih ke DevOps. Kemudian tim saya memiliki lingkungan yang berbeda, tetapi kami melakukan pengiriman ke server pengembangan secara manual. Semua pengembang hanya memiliki akses ke satu server pengembangan yang didasarkan pada IBM WebSphere Application Server Community Edition. Dengan upaya serentak untuk menyampaikan, server "macet", dan setiap kali kami harus "dengan menyakitkan" sepakat satu sama lain. Kami juga memiliki cakupan kode yang tidak memadai dengan pengujian, proses pengiriman manual yang melelahkan, dan tidak ada cara untuk melacak pengiriman kode sesuai dengan beberapa tugas atau kebutuhan pelanggan.


Jelas bahwa sesuatu perlu segera dilakukan, dan saya menemukan seorang rekan yang berpikiran sama. Kami memutuskan untuk membuat rantai DevOps pertama bersama - dia mengatur mesin virtual dan server aplikasi Tomcat, dan saya mengambil Jenkins, integrasi dengan Atlassian Jira dan BitBucket, dan juga mencakup kode dengan tes. Proyek ini berhasil: kami sepenuhnya mengotomatiskan rantai pengembangan, mencapai hampir 100% uptime dari server pengembangan, mampu melacak dan meningkatkan cakupan kode dengan tes, dan cabang Git dapat dihubungkan dengan pengiriman dan tugas Jira. Dan hampir semua alat yang kami buat rantai DevOps adalah open source.


Bahkan, rantai disederhanakan, karena kami bahkan tidak menggunakan konfigurasi lanjutan menggunakan Jenkins atau Ansible. Tapi kami berhasil. Mungkin ini adalah konsekuensi dari prinsip Pareto (aturan 80/20).


Penjelasan Singkat tentang Rantai DevOps dan CI / CD


DevOps memiliki definisi yang berbeda. DevOps, seperti Agile, termasuk berbagai disiplin ilmu. Tetapi sebagian besar akan setuju dengan definisi berikut: DevOps adalah metode, atau siklus hidup, pengembangan perangkat lunak, prinsip utamanya adalah untuk menciptakan budaya di mana pengembang dan karyawan lain "pada gelombang yang sama", tenaga kerja manual otomatis, semua orang melakukan apa yang mereka bisa terbaik frekuensi pengiriman meningkat, produktivitas meningkat, fleksibilitas meningkat.


Dan meskipun alat saja tidak cukup untuk menciptakan lingkungan DevOps, Anda tidak dapat melakukannya tanpa mereka. Yang paling penting dari ini adalah integrasi berkelanjutan dan pengiriman kontinu (CI / CD). Ada beberapa tahapan dalam rantai untuk setiap lingkungan (misalnya, DEV (pengembangan), INT (integrasi), TST (pengujian), QA (kontrol kualitas), UAT (pengujian penerimaan oleh pengguna), STG (persiapan), PROD (penggunaan)), tugas manual bersifat otomatis, pengembang dapat membuat kode berkualitas tinggi, mengirimkannya dan dapat dengan mudah dibangun kembali.


Posting ini menjelaskan cara membuat rantai DevOps dalam lima langkah, seperti yang ditunjukkan pada gambar di bawah ini, menggunakan alat open source.



Mari kita mulai bisnis.


Langkah 1: Platform CI / CD


Pertama-tama, Anda memerlukan alat CI / CD. Jenkins adalah alat CI / CD open source yang ditulis di Jawa di bawah lisensi MIT, yang memulai mempopulerkan gerakan DevOps dan yang telah menjadi standar de facto untuk CI \ CD.


Apa itu Jenkins? Bayangkan Anda memiliki panel kontrol ajaib untuk berbagai layanan dan alat. Alat CI / CD itu sendiri, seperti Jenkins, tidak berguna, tetapi dengan alat dan layanan yang berbeda ia menjadi mahakuasa.


Selain Jenkins, ada banyak alat terbuka lainnya, pilih salah satunya.



Beginilah proses DevOps terlihat seperti alat CI / CD



Anda memiliki alat CI / CD di localhost, tetapi tidak banyak yang bisa dilakukan. Mari beralih ke langkah selanjutnya.


Langkah 2: kontrol versi


Cara terbaik (dan mungkin yang paling mudah) untuk menguji keajaiban alat CI / CD adalah mengintegrasikannya dengan alat manajemen kontrol sumber (SCM). Mengapa Anda memerlukan kontrol versi? Katakanlah Anda membuat aplikasi. Anda menulisnya dalam Java, Python, C ++, Go, Ruby, JavaScript, atau dalam bahasa lain apa pun, di antaranya kereta dan gerobak kecil. Apa yang Anda tulis disebut kode sumber. Pada awalnya, terutama jika Anda bekerja sendiri, Anda dapat menyimpan semuanya ke direktori lokal. Tetapi ketika proyek tumbuh dan lebih banyak orang bergabung, Anda perlu cara untuk membagikan perubahan dalam kode, tetapi pada saat yang sama menghindari konflik ketika menggabungkan perubahan. Dan Anda juga perlu mengembalikan versi sebelumnya tanpa menggunakan cadangan dan menggunakan metode salin-tempel untuk file dengan kode.


Dan di sini tanpa SCM di mana saja. SCM menyimpan kode dalam repositori, mengelola versinya dan mengoordinasinya di antara pengembang.


Ada banyak alat SCM, tetapi Git sepatutnya menjadi standar de facto. Saya menyarankan Anda untuk menggunakannya, tetapi ada opsi lain.



Ini adalah apa yang tampak seperti pipa DevOps setelah menambahkan SCM.



Alat CI / CD dapat mengotomatiskan pemuatan dan pembongkaran kode sumber dan kerja tim. Tidak buruk? Tetapi bagaimana sekarang membuat aplikasi ini berfungsi, dicintai oleh miliaran pengguna?


Langkah 3: buat alat otomasi


Semuanya berjalan sebagaimana mestinya. Anda dapat mengunggah kode dan merekam perubahan dalam sistem kontrol versi, serta mengundang teman untuk bekerja bersama Anda. Tetapi Anda belum memiliki aplikasi. Agar ini menjadi aplikasi web, itu harus dikompilasi dan dimasukkan ke dalam paket untuk pengiriman atau dijalankan sebagai file yang dapat dieksekusi. (Bahasa pemrograman yang ditafsirkan seperti JavaScript atau PHP tidak perlu dikompilasi.)


Gunakan alat otomatisasi perakitan. Alat apa pun yang Anda pilih, itu akan mengumpulkan kode dalam format yang tepat dan mengotomatiskan pembersihan, kompilasi, pengujian, dan pengiriman. Tool build berbeda tergantung pada bahasanya, tetapi opsi open source berikut biasanya digunakan.



Hebat! Sekarang kita akan memasukkan file konfigurasi alat otomatisasi perakitan ke dalam sistem kontrol versi sehingga alat CI / CD akan merakitnya.



Tampaknya semuanya baik-baik saja. Tapi di mana harus mengeluarkan semuanya sekarang?


Langkah 4: server aplikasi web


Jadi, Anda memiliki file yang bisa Anda jalankan atau jalankan. Agar aplikasi benar-benar bermanfaat, ia harus memiliki semacam layanan atau antarmuka, tetapi Anda harus menempatkan semuanya di suatu tempat.


Aplikasi web dapat di-host di server aplikasi web. Server aplikasi menyediakan lingkungan di mana Anda dapat menjalankan logika program dari suatu paket, melakukan rendering antarmuka dan membuka layanan web melalui soket. Anda memerlukan server HTTP dan beberapa lingkungan lain (mesin virtual, misalnya) untuk menginstal server aplikasi. Untuk saat ini, mari kita bayangkan Anda menangani semua ini dalam prosesnya (walaupun saya akan berbicara tentang kontainer di bawah).


Ada beberapa server aplikasi web terbuka.



Kami sudah mendapatkan hampir rantai kerja DevOps. Kerja bagus!



Pada prinsipnya, Anda bisa berhenti di sini, maka Anda bisa melakukannya sendiri, tetapi ada baiknya berbicara tentang kualitas kode.


Langkah 5: Uji cakupan


Pengujian membutuhkan banyak waktu dan upaya, tetapi lebih baik untuk segera menemukan kesalahan dan meningkatkan kode untuk menyenangkan pengguna akhir. Untuk tujuan ini, ada banyak alat terbuka yang tidak hanya menguji kode, tetapi juga menyarankan cara memperbaikinya. Sebagian besar alat CI / CD dapat terhubung ke alat ini dan mengotomatiskan prosesnya.


Pengujian dibagi menjadi dua bagian: kerangka kerja pengujian untuk menulis dan melakukan tes, dan alat dengan tips untuk meningkatkan kualitas kode.


Kerangka pengujian



Alat Kiat Kualitas



Sebagian besar alat dan kerangka kerja ini ditulis untuk Java, Python, dan JavaScript, karena C ++ dan C # adalah hak milik (walaupun GCC adalah open source).


Kami menerapkan alat cakupan tes, dan sekarang pipa DevOps akan terlihat seperti gambar di awal manual.


Langkah tambahan


Wadah


Seperti yang saya katakan, server aplikasi dapat di-host di mesin virtual atau server, tetapi wadah lebih populer.


Apa itu wadah ? Singkatnya, di mesin virtual, sistem operasi paling sering mengambil lebih banyak ruang daripada aplikasi, dan beberapa perpustakaan dan konfigurasi biasanya cukup untuk sebuah wadah. Dalam beberapa kasus, mesin virtual tidak dapat ditiadakan, tetapi wadah menyimpan aplikasi bersama dengan server tanpa biaya tambahan.


Untuk kontainer, mereka biasanya mengambil Docker dan Kubernetes, meskipun ada opsi lain.



Baca artikel tentang Docker dan Kubernetes di Opensource.com :



Alat Otomasi Middleware


Rantai DevOps kami berfokus pada pembangunan bersama dan pengiriman aplikasi, tetapi hal-hal menarik lainnya dapat dilakukan dengan alat-alat DevOps. Misalnya, gunakan alat infrastruktur sebagai kode (IaC), juga disebut alat otomatisasi middleware. Alat-alat ini membantu mengotomatiskan instalasi, manajemen, dan tugas-tugas lain untuk middleware. Sebagai contoh, alat otomatisasi dapat mengambil aplikasi (server aplikasi web, database, alat pemantauan) dengan konfigurasi yang benar dan menggulungnya ke server aplikasi.


Berikut adalah beberapa opsi untuk alat otomatisasi middleware terbuka:



Detail dalam artikel di Opensource.com :



Dan sekarang apa?


Ini hanya puncak gunung es. Rantai DevOps dapat melakukan lebih banyak lagi. Mulailah dengan alat CI / CD dan cari tahu apa lagi yang dapat Anda otomatisasi untuk membuat pekerjaan Anda lebih mudah. Jangan lupa tentang alat komunikasi terbuka untuk kolaborasi yang efektif.


Berikut adalah beberapa artikel bagus tentang DevOps untuk pemula:



Anda juga dapat mengintegrasikan DevOps dengan alat terbuka untuk gesit:


Source: https://habr.com/ru/post/id451508/


All Articles