Integrasi berkelanjutan dan pengiriman berkelanjutan - AWS Bimbingan Preskriptif

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Integrasi berkelanjutan dan pengiriman berkelanjutan

Berevolusi dan meningkatkan aplikasi dan layanan lebih cepat daripada organisasi yang menggunakan pengembangan perangkat lunak tradisional dan proses manajemen infrastruktur.

Mengadopsi DevOpspraktik dengan integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) promotes a streamlined, automated, and efficient process for building, testing, and deploying applications. CI/CDmemungkinkan pengiriman perangkat lunak yang cepat, mengurangi risiko kesalahan penerapan, dan memastikan bahwa aplikasi selalu up to date dengan fitur terbaru dan perbaikan bug. Tujuan utamanya adalah untuk mengembangkan dan meningkatkan aplikasi dan layanan dengan kecepatan yang lebih cepat dengan berevolusi dari penggunaan pengembangan perangkat lunak tradisional dan proses manajemen infrastruktur.

Mulai

Mengadopsi manajemen komponen perangkat lunak

Manajemen komponen perangkat lunak adalah praktik mengelola semua komponen individu yang digunakan untuk membangun perangkat lunak, termasuk perpustakaan, kerangka kerja, repositori kode sumber, modul, artefak, dan dependensi pihak ketiga. Kami menyarankan Anda menggunakan sistem kontrol versi seperti Git atau Apache Subversion untuk mengelola kode sumber, mengaktifkan kolaborasi, dan mempertahankan riwayat perubahan kode. Anda dapat memantau perubahan dan peristiwa di repositori untuk mengotomatiskan proses, membuat pipeline, mengelola kode, dan mengintegrasikan alur kerja Anda dengan layanan tambahan sesuai kebutuhan. 

Buat CI/CD saluran pipa

CI/CD pipelines are sets of automated instructions that are initiated by changes committed to the version control system. They typically include instructions for building the application, running automated tests, and deploying code to a specific environment. You can set up an automated CI/CDpipeline dengan menggunakan alat-alat seperti AWS CodePipeline, Jenkins, GitLab, atau CircleCI. Anda juga dapat mengaturnya secara langsung di sistem kontrol versi yang mendukung pembuatan pipa.

Mulailah dengan pipa minimum yang layak untuk integrasi berkelanjutan, dan kemudian transisi ke pipa pengiriman berkelanjutan yang mencakup lebih banyak tindakan dan tahapan. Perlakukan konfigurasi pengiriman berkelanjutan Anda sebagai kode. Anda dapat menggunakan beberapa saluran pipa yang berbeda untuk setiap cabang dan tim, jadi pikirkan variabel konfigurasi mana yang perlu Anda atur dan cara terbaik untuk mendukung tim yang akan menggunakan saluran pipa.

Pertimbangkan jendela penerapan ― hari dan waktu mana Anda ingin menerapkan kode Anda. Pertimbangkan jam permintaan rendah sistem Anda, jadi jika Anda harus memutar kembali, itu akan berdampak paling kecil pada pelanggan Anda. Praktik terbaik lainnya termasuk menghindari penerapan pada hari Jumat dan menerapkan pembekuan kode selama tanggal puncak tinggi atau sebelum hari libur. Pertimbangkan untuk mendefinisikan aturan tentang penerapan kode saat pembuat komit tidak tersedia (misalnya, saat liburan). Ingatlah bahwa penerapan gagal dan Anda mungkin perlu mengandalkan bantuan eksternal. Evaluasi metode penyebaran yang berbeda seperti di tempat, bergulir, tidak dapat diubah, dan penerapan. blue/green Pertimbangkan untuk menggunakan layanan yang dikelola sepenuhnya untuk alur kerja pengiriman berkelanjutan untuk meningkatkan ketersediaan dan keamanan sambil meminimalkan kompleksitas dan manajemen.

Menyebarkan pengujian otomatis

Praktik modern merekomendasikan pergeseran ke kiri (memindahkan pengujian lebih dekat ke pengembang dan ke IDE, dan lebih awal dalam siklus hidup) untuk mendeteksi dan memulihkan masalah sebelum mereka berkomitmen ke repositori dan memulai pipeline. Praktik ini melibatkan loop umpan balik cepat dengan pengembang, karena kesalahan terdeteksi saat pengembang melakukan pengkodean. Pergeseran ke kiri dikaitkan dengan biaya yang lebih rendah, karena pengujian tidak memerlukan jaringan pipa yang berjalan, yang dapat menghasilkan umpan balik asinkron dan biaya operasional yang lebih tinggi.

Pengujian otomatis menangkap kesalahan di awal proses pengembangan, dan mencakup pengujian unit, tes integrasi, dan pengujian fungsional. Kami menyarankan Anda mendorong pengembang untuk menggunakan alat untuk membuat pengujian unit sedini mungkin dan menjalankannya sebelum mendorong kode ke repositori pusat. Selain itu, pastikan bahwa proses otomatis Anda mencakup analisis kode statis, pembandingan kinerja, dan pengujian aplikasi keamanan.

Buat dokumentasi

Selain menerapkan CI/CD pipeline untuk merampingkan alur kerja pengembangan, Anda harus memelihara dokumentasi yang jelas dan komprehensif untuk memastikan efektivitas, pemeliharaan, dan skalabilitas pipeline yang berkelanjutan. Dokumentasi adalah aspek penting dari pipa CI/CD, karena memberikan tim pengembangan pemahaman yang jelas tentang desain, komponen, dan proses pipa. Saat Anda membuat dokumentasi, mulailah dengan ikhtisar pipeline, jelaskan arsitektur dan pengorbanan desain, jelaskan alat dan teknologi yang sedang digunakan, tentukan konfigurasi dan pengaturan awal, uraikan langkah-langkah keamanan dan kontrol akses, dan sertakan informasi pemecahan masalah dan pemeliharaan.

Gunakan infrastruktur sebagai kode

Gunakan alat seperti Terraform, Ansible, atau AWS CloudFormationuntuk mengelola infrastruktur dan untuk memastikan lingkungan yang konsisten dan dapat direproduksi. Perlakukan infrastruktur Anda sebagai kode, pastikan Anda melacak perubahan infrastruktur, dan hindari membuat perubahan langsung di konsol. Tentukan semua infrastruktur―termasuk penyediaan basis data―sebagai kode dan terapkan perubahan ini dengan menggunakan pipeline. Pertimbangkan untuk menjalankan integrasi database sebagai kode dalam jaringan pipa dengan sebagian kecil data produksi yang disanitasi. Jika memungkinkan, buat perubahan dan lacak perubahan dalam kode tersebut.

Seperti halnya kode perangkat lunak, ikuti praktik terbaik berikut untuk kode infrastruktur Anda:

  • Gunakan kontrol versi.

  • Manfaatkan sistem pelacakan bug dan tiket.

  • Mintalah rekan-rekan meninjau perubahan sebelum menerapkannya.

  • Menetapkan pola dan desain kode infrastruktur.

  • Uji perubahan infrastruktur.

Menyimpan dan melacak metrik standar

Untuk mempertahankan tingkat kinerja yang tinggi, kembangkan dan lacak metrik utama untuk memahami dampak kesehatan dan bisnis dari jaringan pipa Anda, termasuk:

  • Membangun frekuensi. Jumlah build menawarkan wawasan tentang produktivitas tim Anda dan kompleksitas perubahan.

  • Frekuensi penyebaran. Penerapan reguler menunjukkan proses pengembangan yang sehat dan gesit.

  • Lead time untuk perubahan. Mengukur waktu rata-rata perubahan untuk mencapai produksi dapat membantu Anda mengidentifikasi kemacetan dalam proses penerapan Anda.

  • Berarti waktu melalui pipa. Waktu rata-rata dari tahap pipeline awal hingga setiap tahap berikutnya dapat membantu mengoptimalkan alur kerja Anda.

  • Volume perubahan produksi. Melacak jumlah perubahan yang mencapai produksi dapat memberikan wawasan tentang stabilitas lingkungan produksi Anda.

  • Membangun waktu. Waktu pembuatan rata-rata dapat menunjukkan potensi masalah dalam basis kode atau infrastruktur.

Maju

Gunakan manajemen konfigurasi

Alat manajemen konfigurasi memainkan peran penting dalam mengotomatiskan penyebaran, konfigurasi, dan manajemen perangkat lunak dan infrastruktur. Mereka menyediakan pendekatan sistematis untuk menangani perubahan dan mempertahankan keadaan infrastruktur, perangkat lunak, dan konfigurasi yang diinginkan di berbagai lingkungan. Alat-alat ini memungkinkan pengembang untuk menentukan keadaan yang diinginkan dari suatu sistem dengan menggunakan bahasa deklaratif atau imperatif. Alat manajemen konfigurasi kemudian mengotomatiskan proses penerapan konfigurasi ini ke sistem target, memastikan konsistensi dan pengulangan.

Gunakan alat manajemen konfigurasi untuk mengotomatiskan penyebaran, konfigurasi, dan pengelolaan perangkat lunak dan infrastruktur. AWS Systems Manager State Manager adalah layanan manajemen konfigurasi yang aman dan terukur yang mengotomatiskan proses menjaga node terkelola dan AWS sumber daya lainnya dalam keadaan yang Anda tentukan.

Integrasikan pemantauan dan pencatatan

Mengintegrasikan solusi pemantauan dan pencatatan ke dalam saluran CD menawarkan banyak manfaat bagi tim pengembangan dan untuk proses pengembangan perangkat lunak secara keseluruhan. Solusi ini dapat memberikan wawasan real-time tentang kinerja aplikasi, memungkinkan identifikasi dan penyelesaian masalah yang lebih cepat, dan mempromosikan peningkatan berkelanjutan untuk membantu memastikan bahwa aplikasi tetap andal, berkinerja, dan dapat diskalakan sepanjang siklus hidupnya. Berinvestasi dalam solusi pemantauan dan pencatatan adalah aspek kunci untuk mempertahankan saluran CD yang kuat dan efisien, dan pada akhirnya berkontribusi pada keberhasilan pengiriman perangkat lunak berkualitas tinggi.

Buat irama untuk penggabungan

Komit atau gabungkan perubahan kode ke cabang utama (trunk atau main) setidaknya sekali setiap hari atau, idealnya, beberapa kali sehari setelah setiap tugas. Irama ini mengarah ke beberapa pemanggilan pipa harian. Model alur kerja percabangan berbasis tarik selaras dengan pendekatan ini. Gunakan bendera fitur, peluncuran gelap, dan teknik serupa untuk menyesuaikan fitur yang digunakan pelanggan Anda. 

Tangkap perilaku pasca-penerapan

Setelah penerapan, tangkap perilaku produksi dengan menggunakan pengujian sintetis otomatis dan sinkronisasi hasil dengan pipeline pengiriman berkelanjutan untuk memastikan bahwa tindakan korektif terjadi segera. Prioritas utama bagi pengembang harus memperbaiki kesalahan yang ditemukan di pipeline sesegera mungkin, melakukan perubahan kode ke repositori kode sumber, dan memverifikasi resolusi kesalahan dalam pipeline.

Praktik pasca-penerapan terbaik termasuk mengamati indikator kinerja utama yang paling penting (KPIs) dan memvalidasi bahwa tidak ada kesalahan dalam lingkungan produksi. Otomatiskan penanganan kesalahan dan evaluasi pasca-penerapan KPIs untuk mengukur dampak rilis Anda. Secara otomatis menghasilkan metrik kecepatan, keamanan, dan stabilitas yang dapat digunakan pengembang untuk melakukan perbaikan. Untuk informasi selengkapnya, lihat solusi DevOps Monitoring Dashboard di AWS.

Unggul

Mengadopsi praktik dan teknologi mutakhir untuk kinerja yang optimal. Terus menyempurnakan CI/CD proses Anda membantu Anda meningkatkan kualitas perangkat lunak, mengurangi waktu ke pasar, dan meningkatkan kelincahan. Teknik dan alat baru terus muncul, yang membuatnya penting bagi organisasi Anda untuk tetap mendapat informasi dan beradaptasi untuk mempertahankan keunggulan kompetitif.

Untuk tetap adaptif, pertimbangkan hal berikut:

  • Tentukan semuanya sebagai kode, termasuk aplikasi, konfigurasi, infrastruktur, data, AWS akun, dan organisasi, pipeline penerapan, jaringan, serta kontrol keamanan dan kepatuhan.

  • Buat pipeline penerapan yang sesuai untuk menghitung gambar, layanan bersama, dan aplikasi.

  • Pertimbangkan GitOps model di mana permintaan berbasis tarik memulai alur kerja untuk menerapkan perubahan dengan membandingkan status infrastruktur yang ada dengan status yang diinginkan, seperti yang dijelaskan dalam kode.

  • Pertimbangkan untuk menggunakan saluran pipa CD untuk menyebarkan pembelajaran mesin (ML), data, Internet of Things (IoT), dan beban kerja lainnya.

  • Tanda tangani semua artefak build secara digital dan simpan di repositori yang aman.

  • Lacak sumber perangkat lunak dengan secara otomatis menghasilkan tagihan materi perangkat lunak yang membuat catatan semua artefak berversi dan ditandatangani secara digital yang digunakan untuk pelanggan.

  • Setelah Anda menghilangkan semua aktivitas manual dalam proses pengiriman perangkat lunak, hapus papan peninjau manual.

Untuk aplikasi dan layanan yang telah mengotomatiskan seluruh proses pengiriman perangkat lunak mereka, pertimbangkan penerapan berkelanjutan di mana tim menerapkan perubahan yang melewati semua pemeriksaan dalam pipeline kepada pelanggan dalam produksi. Untuk visualisasi, lihat diagram pertama di Apa itu Pengiriman Berkelanjutan? di situs AWS web.

Integrasikan AI/ML teknologi

Integrasi teknologi kecerdasan buatan (AI) dan pembelajaran mesin (ML) ke dalam CI/CD jaringan pipa menawarkan beberapa manfaat, termasuk yang berikut:

  • Pembuatan uji otomatis

  • Prioritas tes cerdas

  • Analisis prediktif untuk deteksi masalah

  • Deteksi anomali dan analisis akar penyebab

  • Tinjauan kode dan jaminan kualitas

  • Optimalisasi penyebaran

Untuk informasi selengkapnya, lihat Menambahkan kecerdasan ke operasi pengembang Anda di AWS situs web.

Mengadopsi praktik rekayasa kekacauan

Rekayasa kekacauan melibatkan sengaja menyuntikkan kegagalan ke dalam sistem untuk menguji kemampuan mereka untuk bertahan dan pulih dari peristiwa tak terduga. Dengan mengidentifikasi kelemahan dan mengatasinya secara proaktif, organisasi dapat meningkatkan keandalan sistem mereka secara keseluruhan dan meminimalkan dampak dari masalah potensial.

Mengadopsi praktik rekayasa kekacauan untuk menguji ketahanan sistem Anda dengan menggunakan alat seperti Gremlin, Chaos Monkey, atau Lakmus. Jalankan eksperimen terkontrol secara teratur untuk mengidentifikasi kerentanan, memvalidasi toleransi kesalahan, dan memastikan bahwa aplikasi Anda menangani kegagalan yang tidak terduga dengan anggun. Pendekatan proaktif ini membantu meningkatkan keandalan sistem dan berkontribusi pada CI/CD pipa yang lebih kuat.

Optimalkan performa

Optimalkan kinerja aplikasi Anda secara terus menerus dengan menggunakan alat pembuatan profil, pemantauan waktu nyata, dan loop umpan balik. Terapkan teknik seperti berikut ini untuk memastikan bahwa aplikasi Anda dapat menangani peningkatan lalu lintas dan permintaan:

  • Pengoptimalan kode

  • Profiling

  • Pemantauan waktu nyata

  • Loop umpan balik

  • Pembuatan cache

  • Penyeimbangan beban

  • Skalabilitas dan pengujian kinerja

Menerapkan observabilitas tingkat lanjut

Meningkatkan observabilitas infrastruktur cloud Anda melampaui dasar-dasar pengumpulan, agregasi, dan analisis metrik, log, dan jejak. Ketika observabilitas ditingkatkan dengan alat-alat seperti Amazon CloudWatch dan AWS X-Ray, itu berkembang menjadi praktik strategis yang mendorong pengiriman dan inovasi berkelanjutan.

Dalam CI/CD pipeline yang kuat, observabilitas tingkat lanjut memungkinkan Anda untuk mengungkap wawasan, tidak hanya tentang aplikasi dan infrastruktur Anda, tetapi juga tentang kinerja dan kesehatan seluruh sistem Anda, termasuk pipeline itu sendiri. Wawasan ini membantu Anda:

  • Mengidentifikasi, memahami, dan mengatasi masalah potensial dengan cepat untuk meningkatkan stabilitas aplikasi dan mengurangi waktu henti

  • Rampingkan CI/CD proses Anda untuk membuat pengiriman yang lebih cepat dan lebih andal

  • Dapatkan wawasan yang lebih dalam tentang dampak perubahan kode dan penerapan untuk mendorong pengambilan keputusan yang tepat

  • Mengoptimalkan pemanfaatan sumber daya untuk meningkatkan efisiensi operasional dan efektivitas biaya

Untuk meningkatkan observabilitas:

  • Sematkan observabilitas ke setiap lapisan aplikasi dan infrastruktur Anda untuk membuat tampilan komprehensif tentang kinerja, perilaku, dan kesehatan sistem Anda.

  • Pusatkan pengumpulan, penyimpanan, dan analisis data dengan alat seperti Amazon CloudWatch untuk menyatukan data observabilitas Anda agar mudah diakses dan diinterpretasi.

  • Gunakan AWS X-Ray untuk penelusuran terdistribusi untuk memahami kinerja aplikasi Anda dan layanan dasarnya.

  • Buat loop umpan balik untuk perbaikan berkelanjutan, dan gunakan data observabilitas Anda untuk mendorong peningkatan berulang ke sistem Anda.

Mengadopsi observabilitas tingkat lanjut bukan hanya tentang mempertahankan sistem Anda—ini adalah langkah strategis menuju pencapaian keunggulan operasional dan mendorong inovasi berkelanjutan dalam organisasi Anda.

Menerapkan GitOps praktik

Menerapkan GitOps praktik untuk mengelola infrastruktur dan konfigurasi aplikasi dengan menggunakan repositori Git sebagai sumber kebenaran tunggal. Pendekatan ini menyederhanakan manajemen perubahan, meningkatkan keterlacakan, dan memastikan konsistensi di seluruh lingkungan.