Siapkan CI/CD pipeline untuk migrasi database dengan menggunakan Terraform - AWS Prescriptive Guidance

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

Siapkan CI/CD pipeline untuk migrasi database dengan menggunakan Terraform

Dr. Rahul Sharad Gaikwad, Ashish Bhatt, Aniket Dekate, Ruchika Modi, Tamilselvan P, Nadeem Rahaman, Aarti Rajput, dan Naveen Suthar, Amazon Web Services

Ringkasan

Pola ini adalah tentang membangun pipeline continuous integration and continuous deployment (CI/CD) untuk mengelola migrasi database dengan cara yang andal dan otomatis. Ini mencakup proses penyediaan infrastruktur yang diperlukan, memigrasi data, dan menyesuaikan perubahan skema dengan menggunakan Terraform, yang merupakan alat infrastruktur sebagai kode (IAc).

Secara khusus, pola menyiapkan CI/CD pipeline untuk memigrasikan database Microsoft SQL Server lokal ke Amazon Relational Database Service (Amazon RDS). AWS Anda juga dapat menggunakan pola ini untuk memigrasikan database SQL Server yang ada di mesin virtual (VM) atau di lingkungan cloud lain ke Amazon RDS.

Pola ini membahas tantangan berikut yang terkait dengan manajemen dan penyebaran basis data:

  • Penerapan basis data manual memakan waktu, rawan kesalahan, dan tidak memiliki konsistensi di seluruh lingkungan.

  • Mengkoordinasikan penyediaan infrastruktur, migrasi data, dan perubahan skema dapat menjadi kompleks dan sulit dikelola.

  • Memastikan integritas data dan meminimalkan waktu henti selama pembaruan basis data sangat penting untuk sistem produksi.

Pola ini memberikan manfaat sebagai berikut:

  • Merampingkan proses memperbarui dan menerapkan perubahan database dengan menerapkan CI/CD pipeline untuk migrasi database. Ini mengurangi risiko kesalahan, memastikan konsistensi di seluruh lingkungan, dan meminimalkan waktu henti.

  • Membantu meningkatkan keandalan, efisiensi, dan kolaborasi. Memungkinkan waktu yang lebih cepat untuk memasarkan dan mengurangi waktu henti selama pembaruan basis data.

  • Membantu Anda mengadopsi DevOps praktik modern untuk manajemen basis data, yang mengarah pada peningkatan kelincahan, keandalan, dan efisiensi dalam proses pengiriman perangkat lunak Anda.

Prasyarat dan batasan

Prasyarat

Arsitektur

Pola ini mengimplementasikan arsitektur berikut, yang menyediakan infrastruktur lengkap untuk proses migrasi database.

Arsitektur pipeline CI/CD untuk memigrasikan database SQL Server lokal ke Amazon RDS di AWS.

Dalam arsitektur ini:

  • Database sumber adalah database SQL Server yang ada di tempat, di mesin virtual (VM), atau dihosting oleh penyedia cloud lain. Diagram mengasumsikan bahwa database sumber berada di pusat data lokal.

  • Pusat data lokal dan AWS terhubung melalui VPN atau AWS Direct Connect koneksi. Ini menyediakan komunikasi yang aman antara database sumber dan AWS infrastruktur.

  • Basis data target adalah database Amazon RDS yang di-host di dalam virtual private cloud ( AWS VPC) dengan bantuan pipeline penyediaan database.

  • AWS Database Migration Service (AWS DMS) mereplikasi database lokal Anda ke. AWS Hal ini digunakan untuk mengkonfigurasi replikasi database sumber ke database target.

Diagram berikut menunjukkan infrastruktur yang disiapkan dengan berbagai tingkat proses migrasi database, yang melibatkan penyediaan, AWS DMS penyiapan, dan validasi.

Detail pipeline CI/CD dari proses migrasi dari lokasi ke AWS.

Dalam proses ini:

  • Pipeline validasi memvalidasi semua pemeriksaan. Pipeline terintegrasi bergerak ke langkah berikutnya ketika semua validasi yang diperlukan selesai.

  • Pipeline penyediaan DB terdiri dari berbagai AWS CodeBuild tahapan yang melakukan tindakan Terraform pada kode Terraform yang disediakan untuk database. Ketika langkah-langkah ini selesai, ia menyebarkan sumber daya di target Akun AWS.

  • AWS DMS Pipeline terdiri dari berbagai CodeBuild tahapan yang melakukan pengujian dan kemudian menyediakan AWS DMS infrastruktur untuk melakukan migrasi dengan menggunakan IAc.

Alat

Layanan AWS dan alat-alat

  • AWS CodeBuildadalah layanan integrasi berkelanjutan yang dikelola sepenuhnya yang mengkompilasi kode sumber, menjalankan pengujian, dan menghasilkan paket ready-to-deploy perangkat lunak.

  • AWS CodePipelineadalah layanan pengiriman berkelanjutan yang dikelola sepenuhnya yang membantu Anda mengotomatiskan saluran pipa rilis Anda untuk pembaruan aplikasi dan infrastruktur yang cepat dan andal.

  • Amazon Relational Database Service (Amazon RDS) membantu Anda menyiapkan, mengoperasikan, dan menskalakan database relasional di. AWS Cloud

  • Amazon Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek yang menawarkan skalabilitas, ketersediaan data, keamanan, dan kinerja.

  • AWS Database Migration Service (AWS DMS) membantu Anda memigrasikan penyimpanan data ke dalam AWS Cloud atau di antara kombinasi pengaturan cloud dan lokal.

Layanan lainnya

  • Terraform adalah alat IAc HashiCorp yang membantu Anda membuat dan mengelola sumber daya cloud dan lokal.

Repositori kode

Kode untuk pola ini tersedia di DevOps Kerangka Migrasi GitHub Database menggunakan repositori sampel Terraform.

Praktik terbaik

  • Terapkan pengujian otomatis untuk migrasi database Anda untuk memverifikasi kebenaran perubahan skema dan integritas data. Ini termasuk pengujian unit, tes integrasi, dan end-to-end tes.

  • Terapkan strategi pencadangan dan pemulihan yang kuat untuk database Anda, terutama sebelum migrasi. Ini memastikan integritas data dan menyediakan opsi mundur jika terjadi kegagalan.

  • Menerapkan strategi rollback yang kuat untuk mengembalikan perubahan database jika terjadi kegagalan atau masalah selama migrasi. Ini bisa melibatkan memutar kembali ke status database sebelumnya atau mengembalikan skrip migrasi individu.

  • Siapkan mekanisme pemantauan dan pencatatan untuk melacak kemajuan dan status migrasi database. Ini membantu Anda mengidentifikasi dan menyelesaikan masalah dengan cepat.

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Siapkan dan konfigurasikan Git di workstation lokal Anda.

Instal dan konfigurasikan Git di workstation lokal Anda dengan mengikuti instruksi dalam dokumentasi Git.

DevOps insinyur

Buat folder proyek dan tambahkan file dari GitHub repositori.

  1. Buka GitHub repositori untuk pola ini.

  2. Pilih Kode untuk melihat opsi kloning, dan salin URL yang disediakan di tab HTTPS.

  3. Buat folder untuk proyek Anda di workstation Anda.

  4. Buka terminal dan arahkan ke folder ini.

  5. Kloning GitHub repositori:

    git clone <github-repository-url>

    di <github-repository-url> mana URL yang Anda salin pada langkah 2.

  6. Saat kloning selesai, buka repositori kloning di folder proyek Anda:

    cd <folder-name>/aws-terraform-db-migration-framework-samples
  7. Buka proyek ini di lingkungan pengembangan terintegrasi (IDE) pilihan Anda.

DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Perbarui parameter yang diperlukan.

ssm-parameters.shFile menyimpan semua AWS Systems Manager parameter yang diperlukan. Anda dapat mengonfigurasi parameter ini dengan nilai kustom untuk proyek Anda.

Di setup/db-ssm-params folder di workstation lokal Anda, buka ssm-parameters.sh file dan atur parameter ini sebelum Anda menjalankan CI/CD pipeline.

DevOps insinyur

Inisialisasi konfigurasi Terraform.

Di db-cicd-integration folder, masukkan perintah berikut untuk menginisialisasi direktori kerja Anda yang berisi file konfigurasi Terraform:

terraform init
DevOps insinyur

Pratinjau paket Terraform.

Untuk membuat paket Terraform, masukkan perintah berikut:

terraform plan -var-file="terraform.sample"

Terraform mengevaluasi file konfigurasi untuk menentukan status target untuk sumber daya yang dideklarasikan. Kemudian membandingkan status target dengan keadaan saat ini dan membuat rencana.

DevOps insinyur

Verifikasi rencananya.

Tinjau rencana dan konfirmasikan bahwa itu mengonfigurasi arsitektur yang diperlukan dalam target Akun AWS Anda.

DevOps insinyur

Menyebarkan solusinya.

  1. Masukkan perintah berikut untuk menerapkan rencana:

    terraform apply -var-file="terraform.sample"
  2. Masukkan yes untuk mengonfirmasi. Terraform membuat, memperbarui, atau menghancurkan infrastruktur untuk mencapai status target yang dinyatakan dalam file konfigurasi. Untuk informasi lebih lanjut tentang urutan, lihat bagian Arsitektur dari pola ini.

DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Validasi penerapan.

Verifikasi status db-cicd-integration pipeline untuk mengonfirmasi bahwa migrasi database telah selesai.

1. Masuk ke AWS Management Console, lalu buka AWS CodePipeline konsol.

2. Di panel navigasi, pilih Pipelines.

3. Pilih db-cicd-integration pipa.

4. Validasi bahwa eksekusi pipeline telah selesai dengan sukses.

DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Bersihkan infrastruktur.

  1. Setelah proyek Anda selesai, bersihkan infrastruktur yang Anda buat dengan menggunakan perintah:

    terraform destroy --var-file=terraform.sample
  2. Masukkan yes untuk mengonfirmasi.

DevOps insinyur

Sumber daya terkait

AWS dokumentasi

Dokumentasi Terraform