Panduan Dummies: Membangun Rantai DevOps dengan Alat Sumber Terbuka

Panduan Dummies: Membangun Rantai DevOps dengan Alat Sumber Terbuka
Membangun rantai DevOps pertama Anda dalam lima langkah untuk pemula.

DevOps telah menjadi obat mujarab untuk proses pengembangan yang terlalu lambat, terputus, dan bermasalah. Tetapi Anda membutuhkan pengetahuan minimal tentang DevOps. Ini akan mencakup konsep seperti rantai DevOps dan cara membuatnya dalam lima langkah. Ini bukan panduan lengkap, tapi hanya "ikan" yang bisa dikembangkan. Mari kita mulai dengan sejarah.

Pengantar saya untuk DevOps

Saya pernah 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, CTO kami untuk Arsitektur dan Infrastruktur Cloud, merekomendasikan buku ini kepada saya. Proyek Phoenix. Ini menjelaskan prinsip-prinsip DevOps dengan indah dan terbaca seperti novel.

Tabel di belakang menunjukkan seberapa sering perusahaan meluncurkan versi baru:

Panduan Dummies: Membangun Rantai DevOps dengan Alat Sumber Terbuka

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

Segalanya sangat berbeda bagi kami di Citi 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 berdasarkan IBM WebSphere Application Server Community Edition. Dengan upaya pengiriman secara bersamaan, server "jatuh", dan setiap kali kami harus "dengan susah payah" bernegosiasi di antara kami sendiri. Kami juga memiliki cakupan kode yang tidak memadai dengan pengujian, proses pengiriman manual yang memakan waktu, dan tidak ada cara untuk melacak pengiriman kode dengan bantuan beberapa tugas atau kebutuhan klien.

Jelas bahwa sesuatu harus segera dilakukan, dan saya menemukan rekan kerja yang berpikiran sama. Kami memutuskan untuk membuat rantai DevOps pertama bersama - dia menyiapkan mesin virtual dan server aplikasi Tomcat, dan saya menangani Jenkins, integrasi dengan Atlassian Jira dan BitBucket, serta cakupan kode dengan pengujian. Proyek ini berhasil: kami sepenuhnya mengotomatiskan rantai pengembangan, mencapai waktu aktif hampir 100% di server pengembangan, dapat memantau dan meningkatkan cakupan kode dengan pengujian, dan cabang Git dapat dikaitkan dengan pengiriman dan masalah Jira. Dan hampir semua alat yang kami gunakan untuk membangun rantai DevOps adalah open source.

Nyatanya, rantai itu disederhanakan, karena kami bahkan tidak menerapkan konfigurasi lanjutan menggunakan Jenkins atau Ansible. Tapi kami berhasil. Mungkin ini adalah konsekuensi dari prinsip tersebut pareto (alias aturan 80/20).

Deskripsi Singkat DevOps dan Rantai CI/CD

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

Meskipun alat saja tidak cukup untuk membuat lingkungan DevOps, alat tersebut sangat diperlukan. Yang paling penting adalah integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD). Ada tahapan yang berbeda dalam rantai untuk setiap lingkungan (misalnya DEV (pengembangan), INT (integrasi), TST (pengujian), QA (jaminan kualitas), UAT (pengujian penerimaan pengguna), STG (persiapan), PROD (penggunaan)) , tugas manual otomatis, pengembang dapat menghasilkan kode berkualitas, mengirimkannya, dan dapat dengan mudah membangun kembali.

Catatan ini menjelaskan cara membuat rantai DevOps dalam lima langkah, seperti yang ditunjukkan pada gambar di bawah, menggunakan alat sumber terbuka.

Panduan Dummies: Membangun Rantai DevOps dengan Alat Sumber Terbuka

Mari kita mulai bisnis.

Langkah 1: Platform CI/CD

Pertama-tama, Anda memerlukan alat CI/CD. Jenkins adalah alat CI/CD sumber terbuka berlisensi MIT yang ditulis dalam Java yang mempopulerkan gerakan DevOps dan telah menjadi standar de facto untuk CICD.

Apa itu Jenkins? Bayangkan Anda memiliki panel kontrol ajaib untuk berbagai layanan dan alat. Dengan sendirinya, alat CI/CD seperti Jenkins tidak berguna, tetapi dengan alat dan layanan yang berbeda, alat ini menjadi sangat andal.

Selain Jenkins, ada banyak alat open source lainnya, pilih yang mana saja.

Panduan Dummies: Membangun Rantai DevOps dengan Alat Sumber Terbuka

Inilah tampilan proses DevOps dengan alat CI/CD

Panduan Dummies: Membangun Rantai DevOps dengan Alat Sumber Terbuka

Anda memiliki alat CI/CD di localhost, tetapi belum banyak yang bisa dilakukan. Mari kita lanjutkan ke langkah berikutnya.

Langkah 2: Pembuatan versi

Cara terbaik (dan bisa dibilang paling mudah) untuk menguji keajaiban alat CI/CD adalah dengan mengintegrasikannya dengan alat manajemen kontrol sumber (SCM). Mengapa Anda memerlukan kontrol versi? Katakanlah Anda sedang membuat aplikasi. Anda menulisnya dalam Java, Python, C++, Go, Ruby, JavaScript, atau bahasa lain apa pun yang merupakan wagon dan cart kecil. Apa yang Anda tulis disebut kode sumber. Pada awalnya, terutama jika Anda bekerja sendiri, Anda dapat menyimpan semuanya ke direktori lokal. Namun seiring berkembangnya proyek dan semakin banyak orang yang bergabung, Anda memerlukan cara untuk membagikan perubahan kode tetapi menghindari konflik saat menggabungkan perubahan. Dan Anda juga perlu memulihkan versi sebelumnya tanpa menggunakan cadangan dan menggunakan metode salin-tempel untuk file kode.

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

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

Panduan Dummies: Membangun Rantai DevOps dengan Alat Sumber Terbuka

Inilah tampilan pipa DevOps setelah menambahkan SCM.

Panduan Dummies: Membangun Rantai DevOps dengan Alat Sumber Terbuka

Alat CI/CD dapat mengotomatiskan pengunggahan dan pengunduhan kode sumber serta kolaborasi tim. Tidak buruk? Tapi sekarang bagaimana membuat aplikasi yang berfungsi dari ini, dicintai oleh miliaran pengguna?

Langkah 3: Buat Alat Otomasi

Semuanya berjalan sebagaimana mestinya. Anda dapat mengunggah kode dan menerapkan perubahan pada kontrol sumber, dan mengundang teman untuk bekerja bersama Anda. Tetapi Anda belum memiliki aplikasi. Agar ini menjadi aplikasi web, itu harus dikompilasi dan dikemas untuk didistribusikan atau dijalankan sebagai yang dapat dieksekusi. (Bahasa pemrograman yang ditafsirkan seperti JavaScript atau PHP tidak perlu dikompilasi.)

Gunakan alat otomasi build. Alat apa pun yang Anda pilih, itu akan menyusun kode dalam format yang tepat dan mengotomatiskan pembersihan, kompilasi, pengujian, dan pengiriman. Alat build berbeda-beda menurut bahasa, tetapi opsi sumber terbuka berikut biasanya digunakan.

Panduan Dummies: Membangun Rantai DevOps dengan Alat Sumber Terbuka

Sempurna! Sekarang mari masukkan file konfigurasi alat otomasi build ke kontrol sumber sehingga alat CI/CD membuatnya.

Panduan Dummies: Membangun Rantai DevOps dengan Alat Sumber Terbuka

Rasanya enak. Tapi di mana semua ini akan diluncurkan sekarang?

Langkah 4: Server Aplikasi Web

Jadi, Anda memiliki file terpaket yang dapat dieksekusi atau diluncurkan. Agar aplikasi benar-benar berguna, aplikasi tersebut harus memiliki semacam layanan atau antarmuka, tetapi Anda harus meletakkan semuanya di suatu tempat.

Aplikasi web dapat dihosting di server aplikasi web. Server aplikasi menyediakan lingkungan tempat Anda dapat menjalankan logika paket, merender antarmuka, dan mengekspos layanan web melalui soket. Anda memerlukan server HTTP dan beberapa lingkungan lain (mesin virtual, misalnya) untuk menginstal server aplikasi. Untuk saat ini, anggaplah Anda sedang menangani semua ini sambil jalan (walaupun saya akan berbicara tentang wadah di bawah).

Ada beberapa server aplikasi web terbuka.

Panduan Dummies: Membangun Rantai DevOps dengan Alat Sumber Terbuka

Kami sudah memiliki rantai DevOps yang hampir berfungsi. Kerja bagus!

Panduan Dummies: Membangun Rantai DevOps dengan Alat Sumber Terbuka

Pada prinsipnya, Anda bisa berhenti di sini, lalu Anda bisa menanganinya sendiri, tetapi ada baiknya membicarakan kualitas kodenya.

Langkah 5: Uji cakupan

Pengujian membutuhkan banyak waktu dan tenaga, tetapi lebih baik segera menemukan bug dan menyempurnakan 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 dipasang ke alat ini dan mengotomatiskan prosesnya.

Pengujian dibagi menjadi dua bagian: kerangka pengujian untuk menulis dan menjalankan pengujian, dan alat dengan petunjuk untuk meningkatkan kualitas kode.

Kerangka Pengujian

Panduan Dummies: Membangun Rantai DevOps dengan Alat Sumber Terbuka

Alat dengan tip berkualitas

Panduan Dummies: Membangun Rantai DevOps dengan Alat Sumber Terbuka

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 telah menerapkan alat uji cakupan, dan sekarang pipa DevOps akan terlihat seperti gambar di awal tutorial.

Langkah tambahan

Wadah

Seperti yang saya katakan sebelumnya, server aplikasi dapat dihosting di mesin virtual atau server, tetapi kontainer lebih populer.

Apa itu container? Singkatnya, dalam mesin virtual, sistem operasi seringkali memakan lebih banyak ruang daripada aplikasi, dan wadah biasanya cukup dengan beberapa pustaka dan konfigurasi. Dalam beberapa kasus, mesin virtual sangat diperlukan, tetapi wadah dapat menampung aplikasi bersama dengan server tanpa biaya tambahan.

Untuk kontainer biasanya diambil Docker dan Kubernetes, meski ada opsi lain.

Panduan Dummies: Membangun Rantai DevOps dengan Alat Sumber Terbuka

Baca artikel tentang Docker dan Kubernetes di Opensource.com:

Alat otomatisasi middleware

Rantai DevOps kami berfokus pada pembangunan kolaboratif dan pengiriman aplikasi, tetapi ada hal menarik lainnya yang dapat Anda lakukan dengan alat DevOps. Misalnya, gunakan alat Infrastruktur sebagai Kode (IaC), juga dikenal sebagai alat otomasi middleware. Alat-alat ini membantu mengotomatiskan instalasi, manajemen, dan tugas lain untuk middleware. Misalnya, alat otomasi dapat mengambil aplikasi (server aplikasi web, basis data, alat pemantauan) dengan konfigurasi yang benar dan mendorongnya ke server aplikasi.

Berikut adalah beberapa opsi untuk alat otomasi middleware terbuka:

Panduan Dummies: Membangun Rantai DevOps dengan Alat Sumber Terbuka

Detail di artikel Opensource.com:

Dan sekarang apa?

Ini hanyalah puncak gunung es. Rantai DevOps dapat melakukan lebih banyak lagi. Mulailah dengan alat CI/CD dan lihat apa lagi yang dapat Anda otomatisasi untuk mempermudah pekerjaan Anda. Jangan lupa tentang membuka alat komunikasi untuk kolaborasi yang efektif.

Berikut beberapa artikel DevOps yang bagus untuk pemula:

Anda juga dapat mengintegrasikan DevOps dengan alat tangkas terbuka:

Sumber: www.habr.com

Tambah komentar