

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
<a name="set-up-ci-cd-pipeline-for-db-migration-with-terraform"></a>

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

## Ringkasan
<a name="set-up-ci-cd-pipeline-for-db-migration-with-terraform-summary"></a>

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
<a name="set-up-ci-cd-pipeline-for-db-migration-with-terraform-prereqs"></a>

**Prasyarat**
+ Aktif Akun AWS
+ [Terraform 0.12 atau yang lebih baru diinstal pada mesin lokal Anda (untuk instruksi, lihat dokumentasi Terraform)](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli)
+  AWS Penyedia Terraform versi 3.0.0 atau yang lebih baru dari HashiCorp (lihat [GitHub repositori](https://github.com/hashicorp/terraform-provider-aws) untuk penyedia ini)
+ Kebijakan hak istimewa paling sedikit AWS Identity and Access Management (IAM) (lihat posting blog [Teknik untuk menulis kebijakan IAM hak istimewa terkecil](https://aws.amazon.com/blogs/security/techniques-for-writing-least-privilege-iam-policies/))

## Arsitektur
<a name="set-up-ci-cd-pipeline-for-db-migration-with-terraform-architecture"></a>

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.](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/87845d9f-8e6e-4c51-b9ee-9e7833671d05/images/a1e95458-419a-4de9-85ef-b17d8340700a.png)


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.](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/87845d9f-8e6e-4c51-b9ee-9e7833671d05/images/3aca17e5-6fd7-4317-b578-ab5e485c6efb.png)


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
<a name="set-up-ci-cd-pipeline-for-db-migration-with-terraform-tools"></a>

**Layanan AWS dan alat-alat**
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)adalah layanan integrasi berkelanjutan yang dikelola sepenuhnya yang mengkompilasi kode sumber, menjalankan pengujian, dan menghasilkan paket ready-to-deploy perangkat lunak.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)adalah 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](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html)) membantu Anda menyiapkan, mengoperasikan, dan menskalakan database relasional di. AWS Cloud
+ [Amazon Simple Storage Service (Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)) adalah layanan penyimpanan objek yang menawarkan skalabilitas, ketersediaan data, keamanan, dan kinerja.
+ [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) membantu Anda memigrasikan penyimpanan data ke dalam AWS Cloud atau di antara kombinasi pengaturan cloud dan lokal.

**Layanan lainnya**
+ [Terraform](https://www.terraform.io/) 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](https://github.com/aws-samples/aws-terraform-db-migration-framework-samples).

## Praktik terbaik
<a name="set-up-ci-cd-pipeline-for-db-migration-with-terraform-best-practices"></a>
+ 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
<a name="set-up-ci-cd-pipeline-for-db-migration-with-terraform-epics"></a>

### Siapkan workstation lokal Anda
<a name="set-up-your-local-workstation"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Siapkan dan konfigurasikan Git di workstation lokal Anda. | Instal dan konfigurasikan Git di workstation lokal Anda dengan mengikuti instruksi dalam [dokumentasi Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). | DevOps insinyur | 
| Buat folder proyek dan tambahkan file dari GitHub repositori. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/set-up-ci-cd-pipeline-for-db-migration-with-terraform.html) | DevOps insinyur | 

### Menyediakan arsitektur target
<a name="provision-the-target-architecture"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Perbarui parameter yang diperlukan. | `ssm-parameters.sh`File menyimpan semua AWS Systems Manager parameter yang diperlukan. Anda dapat mengonfigurasi parameter ini dengan nilai kustom untuk proyek Anda.<br />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:<pre>terraform init</pre> | DevOps insinyur | 
| Pratinjau paket Terraform. | Untuk membuat paket Terraform, masukkan perintah berikut:<pre>terraform plan -var-file="terraform.sample"  </pre><br />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. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/set-up-ci-cd-pipeline-for-db-migration-with-terraform.html) | DevOps insinyur | 

### Verifikasi penyebaran
<a name="verify-the-deployment"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Validasi penerapan. | Verifikasi status `db-cicd-integration` pipeline untuk mengonfirmasi bahwa migrasi database telah selesai.<br />1. Masuk ke Konsol Manajemen AWS, lalu buka [AWS CodePipeline konsol](https://console.aws.amazon.com/codesuite/codepipeline/home).<br />2. Di panel navigasi, pilih **Pipelines**.<br />3. Pilih `db-cicd-integration` pipa.<br />4. Validasi bahwa eksekusi pipeline telah selesai dengan sukses. | DevOps insinyur | 

### Membersihkan infrastruktur setelah digunakan
<a name="clean-up-infrastructure-after-use"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Bersihkan infrastruktur. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/set-up-ci-cd-pipeline-for-db-migration-with-terraform.html) | DevOps insinyur | 

## Sumber daya terkait
<a name="set-up-ci-cd-pipeline-for-db-migration-with-terraform-resources"></a>

**AWS dokumentasi**
+ [Memulai dengan produk Terraform](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-Terraform.html)

**Dokumentasi Terraform**
+ [Instalasi Terraform](https://learn.hashicorp.com/tutorials/terraform/install-cli)
+ [Konfigurasi backend Terraform](https://developer.hashicorp.com/terraform/language/backend)
+ [Dokumentasi Penyedia Terraform AWS](https://registry.terraform.io/providers/hashicorp/aws/latest/docs)