Lewati ke Konten Utama

Apa itu Jalur CI/CD?

Bisnis dituntut untuk mengatasi pembaruan perangkat lunak, perbaikan bug, dan inovasi baru di pasar aplikasi yang semakin kompetitif. Tim perangkat lunak dan operasi harus bekerja secara kompak untuk mengatasi umpan balik pengguna, menyelesaikan masalah, dan menerapkan pembaruan tanpa mengorbankan operasi bisnis. Siklus pengembangan perangkat lunak tradisional, terutama yang didasarkan pada model air terjun berurutan, berjuang untuk mengikuti kecepatan pengiriman perangkat lunak modern. Ketika siklus hidup pengembangan perangkat lunak menjadi lebih kompak, tim pengembangan beralih ke CI/CD untuk menciptakan kode yang tepat, berkualitas tinggi, dan lebih aman secara efektif.

CI/CD merupakan singkatan dari Continuous Integration dan Continuous Delivery. Dalam beberapa kasus, CD juga dapat berarti deployment berkelanjutan.

  • Integrasi terus-menerus memungkinkan beberapa pengembang untuk mengerjakan dan menggabungkan kode mereka secara bersamaan tanpa mengorbankan stabilitas kode.
  • Pengiriman terus-menerus merupakan alur kerja otomatis untuk menguji, memvalidasi, dan menyiapkan perangkat lunak untuk rilis atas persetujuan manusia.
  • Deployment berkelanjutan serupa dengan pengiriman berkelanjutan, kecuali bahwa persetujuan diotomatisasi oleh aturan yang telah disusun sebelumnya.

Bersama-sama, CI/CD dapat diterapkan sebagai jalur yang mengotomatiskan seluruh proses yang sebelumnya dilakukan secara manual. Untuk mendapatkan pemahaman yang lebih baik tentang cara kerja jalur CI/CD, lihat diagram di bawah ini.

Setiap tahap dalam jalur CI/CD terdiri dari aktivitas khusus dalam proses pengembangan perangkat lunak. fitur ini menghadirkan pengujian otomatis untuk memeriksa kode dari segi kualitas, kelemahan, dan masalah teknis lainnya sebelum pembuatan perangkat lunak disebarkan ke pihak lain. Dengan cara ini, tim pengembangan dapat mengenali dan memperbaiki masalah kode lebih awal, yang menghemat waktu, sumber daya, dan biaya bisnis yang signifikan.

Menyiapkan jalur CI/CD tampaknya mudah. Namun, bisnis sering menghadapi kendala ketika menjalankan alur kerja CI/CD, terutama dengan pengaturan on-premise. Misalnya, perusahaan mengalami kendala infrastruktur ketika mereka perlu mengelola sejumlah besar aplikasi, alat, dan anggota tim. Jika tidak ditangani, pengembang menghabiskan lebih banyak waktu untuk memperbaiki jalur daripada mengerjakan kode itu sendiri.

Mengalihkan alur kerja CI/CD ke AWS cloud memungkinkan tim untuk menskalakan beban kerja pengembangan perangkat lunak modern, mengomunikasikan perubahan yang lebih efektif, dan mengelola sumber daya dengan lebih efisien. Misalnya, Duolingo memigrasikan jalur CI/CD-nya ke AWS EC2 Mac dan menerapkan strategi penskalaan otomatis tingkat lanjut. Hasilnya, mereka mengurangi waktu pembuatan dari 50 menit menjadi hanya 16 menit.

Bagaimana Anda bisa menciptakan jalur CI/CD?

AWS membuat implementasi CI/CD menjadi lebih mudah, terprogram, serta aman dengan layanan terkelola dan otomatis. Alih-alih menyediakan alat pengembangan, server, dan sumber daya secara manual, tim Anda dapat fokus pada aktivitas bernilai tinggi, seperti merenspons permohonan pengguna dan menyusun strategi proses rilis perangkat lunak.

Sebagai permulaan, Anda dapat menggunakan AWS CloudFormation untuk menyebarkan sumber daya cloud secara otomatis, yang dibutuhkan tim DevOps untuk menyiapkan jalur CI/CD. Anda mulai dengan mendeskripsikan sumber daya yang Anda butuhkan dalam templat atau dengan menggunakan templat yang sudah dibuat sebelumnya. CloudFormation kemudian menyediakan sumber daya yang, secara bersama-sama, membentuk lingkungan dasar yang mendukung CI/CD. Kemudian, Anda dapat menerapkan tahapan jalur CI/CD di AWS cloud sebagai berikut.

Sumber

Tahap sumber melacak perubahan versi yang dibuat oleh pengembang. Pengembang menyalin versi kode sebenarnya dari repositori pusat bersama ke mesin lokal mereka. Kemudian, mereka mengedit, mengumpulkan, menguji, dan menggabungkan kode yang disesuaikan dengan repositori.

Berikut adalah cara tim Anda membuat dan mengelola perubahan kode dengan alat AWS.

Langkah 1 - Penulis kode dengan IDE

Pengembang dapat membuat kode baru atau mengedit kode yang ada dengan AWS Cloud9, lingkungan pengembangan terintegrasi (IDE) berbasis cloud yang mendukung bahasa pemrograman populer. Dengan Cloud9, Anda dapat menulis, menjalankan, dan melakukan debug kode sumber di peramban web selama Anda memiliki akses ke internet. Atau, jika Anda menginstal IDE pihak ketiga, Anda dapat mengunduh Kit Pengembangan Perangkat Lunak (SDK) untuk mengaktifkan penulisan kode dalam berbagai bahasa, termasuk Java, Python, dan JavaScript. SDK memungkinkan Anda mengakses sumber daya dan pustaka AWS melalui antarmuka pemrograman aplikasi (API) dari lingkungan pengodean pilihan Anda.

Langkah 2 - simpan kode ke repositori pusat

Pengembang memanfaatkan alat pihak ketiga, seperti GitHub, untuk membuat repositori kode pribadi, mengelola permintaan penarikan, dan menggabungkan perubahan. Berfungsi sebagai sistem kontrol versi, yang memungkinkan Anda melacak perubahan yang telah dilakukan oleh sesama pengembang, dan kembali ke kode sumber fungsional sebelumnya jika dibutuhkan.

Membangun dan menguji

Pada tahap pembangunan, kode yang disimpan di repositori pusat dikirim ke server build. Kemudian, server build mengubah kode sumber dan dependensi menjadi file perangkat lunak yang memanggil artefak, sehingga dapat dijalankan pengembang pada tahap selanjutnya. Misalnya, jika Anda mendirikan program Java, Anda akan mendapatkan file JAR atau WAR. Beberapa tes pendahuluan bisa dilakukan pada tahap ini, termasuk unit dan analisis kode statis.

  • Pengujian unit memastikan bahwa fungsi perangkat lunak individu memproduksi hasil yang benar. 
  • Analisis kode statis memeriksa kode sumber untuk mengidentifikasi bug, kerentanan keamanan, dan kepatuhan terhadap standar pengodean.

Jika kode gagal dalam semua pengujian, pengembang mengembalikannya pada keadaan sebelumnya dan menyelesaikan masalah.

Pada umumnya, tim perangkat lunak perlu menyiapkan server build sendiri untuk mengemas aplikasi mereka. Selain itu, mereka perlu menulis naskah pengujian secara manual, mengesahkannya, dan memantau hasilnya melalui iterasi berulang. Sekarang, mereka dapat menggunakan AWS CodeBuild untuk mempercepat alur kerja pembuatan CI/CD. Hal ini memungkinkan tim Anda mengotomatiskan build dan menguji perangkat lunak saat mereka membuat perubahan. Ini menemukan kode sumber dari repositori yang ditentukan dan menjalankan naskah build yang telah Anda bentuk.

AWS CodeBuild menskalakan secara otomatis kapasitas perhitungannya agar sesuai dengan beban kerja build Anda. Dengan cara ini, Anda tidak perlu menunggu build sebelumnya selesai untuk memulai yang baru. Tim perangkat lunak dapat mengidentifikasi masalah kode lebih awal dan menyelesaikannya sebelum menjadi rumit.

Misalnya, jika Anda sedang membangun proyek Simpul.js, Anda dapat mengintegrasikan kerangka pengujian Jasmine atau Jest dengan AWS CodeBuild. Kerangka kerja ini memungkinkan Anda menulis kasus uji dengan mudah, menentukan hasil yang diharapkan, dan mengesahkannya selama proses build. 

Tahap pengujian berlangsung tepat setelah build selesai. Ini dirancang untuk menerapkan aplikasi ke pengujian yang lebih ketat, memungkinkan tim perangkat lunak untuk meningkatkan kualitas kode, kinerja, keamanan, dan aspek kunci lainnya. Dengan jalur CI/CD, pengujian otomatis dan meluas ke beberapa area.

  • Tes integrasi memastikan bahwa semua layanan dan komponen pihak ketiga yang digunakan aplikasi terhubung dengan benar satu sama lain.
  • Tes fungsional menilai komprehensif aplikasi dari sudut pandang pengguna akhir.
  • Tes keamanan menyelidiki aplikasi untuk kemungkinan risiko dan kelemahan keamanan.
  • Tes kinerja memastikan aplikasi tetap tanggap dan fungsional jika terjadi kondisi ekstrem atau tidak terduga, seperti lonjakan lalu lintas yang tiba-tiba.

Sekali lagi, aplikasi harus lulus semua tes yang ditentukan sebelum bisa dipindahkan ke tahap berikutnya.

Pementasan

Staging memungkinkan Anda melakukan pemeriksaan final pada aplikasi sebelum mengumumkan itu ke pengguna akhir. Pada tahap ini, tim perangkat lunak menerapkan aplikasi di lingkungan yang meniru penggunaan dunia nyata. Sering kali, mereka menggunakan data tiruan dan mendaftarkan sekelompok pengguna akhir untuk menguji aplikasi dengan tujuan menangkap masalah yang tidak terdeteksi sebelum rilis.

Misalnya, Anda telah memperbarui sebuah aplikasi dan Anda ingin memeriksa bagaimana cara kerjanya dengan interaksi pengguna. Menyebarkannya di lingkungan pementasan membantu Anda menilai kinerja perangkat lunak tanpa mengganggu operasi bisnis. Setelah memenuhi semua kondisi pengujian, tim perangkat lunak menyalurkan aplikasi ke lingkungan produksi, yang membuatnya dapat diakses oleh pengguna akhir.

Deployment lintas lingkungan bisa menjadi tantangan, terutama jika tim melakukannya secara manual. AWS CodeDeploy dapat menyederhanakan upaya deployment aplikasi. Ini mengotomatiskan deployment aplikasi ke berbagai lingkungan. Anda dapat melihat aktivitas deployment, melacak perubahan, dan memutar kembali ke versi sebelumnya jika diperlukan. Ini juga menghubungkan kesenjangan antara pementasan dan produksi. Misalnya, Anda bisa menggunakan instruksi deployment yang sama seperti yang Anda gunakan pada pertunjukan untuk rilis produksi.

Produksi

Produksi merupakan lingkungan langsung tempat pengguna nyata mengakses aplikasi Anda. Setelah menyesuaikan, menguji, dan mengesahkan perubahan, tim perangkat lunak merilis aplikasi yang diperbarui di lingkungan produksi. Walaupun perpindahan ini menandai akhir dari jalur CI/CD, upaya untuk memastikan aplikasi memenuhi persyaratan kinerja, keamanan, dan bisnis terus berlanjut. Oleh karena itu, Anda harus terus mengawasi aplikasi saat beroperasi dalam produksi.

Amazon CloudWatch adalah layanan yang memberikan akses pandangan tim pengembangan dan operasi pada aplikasi yang mereka terapkan di AWS, on-premise, atau lingkungan cloud lainnya. Ini secara otomatis mengumpulkan dan memperlihatkan data operasional, memungkinkan Anda untuk lebih memahami bagaimana kinerja aplikasi Anda dalam kondisi dunia nyata. Selain itu, Anda dapat mengatur peringatan dan diberi tahu tentang peristiwa yang memerlukan perhatian prompt dari tim Anda.  

Bagaimana Anda bisa mengotomatiskan jalur CI/CD?

Mengefisienkan alat CI/CD dari penyedia yang berbeda bisa menjadi tantangan, terutama jika melibatkan pengaturan manual yang ekstensif. Namun, dengan AWS CodePipeline, Anda dapat mengotomatiskan, menskalakan, dan mempercepat seluruh proses rilis kode sekaligus mempertahankan fleksibilitas.

AWS CodePipeline memungkinkan Anda membuat model alur kerja CI/CD dengan antarmuka pengguna grafis. Anda dapat dengan mudah mengintegrasikan layanan AWS ke dalam jalur Anda atau menghubungkannya ke alat dan sumber daya yang Anda gunakan. Misalnya, jika Anda ingin memanfaatkan Jenkins sebagai server build, Anda dapat menggabungkannya dengan AWS CodePipeline.

Berikut, kami merangkum langkah-langkah untuk melakukannya.

  1. Pasang Jenkins dan plugin AWS CodePipeline untuk Jenkins.
  2. Kemudian, atur izin akses dengan AWS Identity dan Access Management (IAM) untuk Jenkins. Hal ini memungkinkan Jenkins menggunakan kredensial resmi untuk berinteraksi dengan AWS CodePipeline.
  3. Log ke konsol AWS CodePipeline dan buat jalur khusus.
  4. Hubungkan jalur ke repositori kode sumber bersama, seperti GitHub.
  5. Lalu, tambahkan tahap build dan pilih Jenkins sebagai server build.
  6. Tambahkan tahapan pengujian yang dibutuhkan, termasuk tindakan pengujian yang diperlukan dan penyebab build.
  7. Selanjutnya, hubungkan tahap penerapan ke AWS CodeDeploy atau layanan deployment lainnya. 

Bagaimana Dukungan AWS dapat memenuhi kebutuhan jaringan CI/CD Anda?

Jaringan CI/CD memungkinkan bisnis untuk memproduksi, menguji, dan merilis pembaruan aplikasi lebih cepat tanpa mengorbankan kualitas dan keamanan perangkat lunak. Tim pengembangan perangkat lunak memperbarui kode, menggabungkan perubahan, mengotomatiskan pengujian, menjadwalkan deployment, dan banyak lagi dengan alat CI/CD otomatis. Namun, beberapa tim menghadapi tantangan dalam menskalakan alur kerja CI/CD karena keterbatasan infrastruktur, sumber daya, dan proses.

AWS menyediakan rangkaian solusi berbasis cloud untuk membuat, merampingkan, dan menskalakan jaringan CI/CD Anda.

  • AWS CloudFormation menyediakan sumber daya yang menjalankan alat CI/CD.
  • AWS Cloud9 memungkinkan pengembang untuk menulis, menjalankan, dan melakukan debug kode dari peramban mereka.
  • AWS CodeBuild memungkinkan Anda untuk menyusun, menguji, dan mengemas aplikasi tanpa mengelola server build Anda sendiri.
  • AWS CodeDeploy mengotomatiskan deployment di lingkungan apa pun, termasuk instans on-premise dan AWS.
  • AWS CodePipeline memungkinkan Anda membuat model seluruh alur kerja CI/CD, dari sumber hingga lingkungan produksi langsung.
  • AWS CloudWatch memungkinkan tim operasional untuk terus memantau, log, dan menganalisis aplikasi yang digunakan.

Jika Anda memerlukan bantuan lebih lanjut untuk menyiapkan jaringan CI/CD, silakan hubungi Layanan Profesional Amazon.