Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Membangun program COBOL Db2 dengan menggunakan dan AWS Mainframe ModernizationAWS CodeBuild
Luis Gustavo Dantas dan Eduardo Zimelewicz, Amazon Web Services
Ringkasan
Pola ini menjelaskan cara membuat AWS CodeBuild proyek sederhana untuk mengkompilasi dan mengikat program COBOL Db2 dengan menggunakan alat Replatform. AWS Mainframe Modernization Ini memungkinkan penerapan dan eksekusi program-program ini di lingkungan runtime AWS Mainframe Modernization Replatform.
COBOL, bahasa pemrograman berorientasi bisnis, mendukung banyak aplikasi penting karena keandalan dan keterbacaannya. IBM Db2, sistem manajemen database relasional, mengelola volume data yang besar secara efisien dan terintegrasi dengan program COBOL melalui SQL. Bersama-sama, COBOL dan Db2 membentuk tulang punggung operasi misi kritis di industri seperti keuangan dan pemerintah, meskipun munculnya teknologi yang lebih baru.
Migrasi komponen COBOL dan Db2 dari lingkungan mainframe ke platform lain mengarah pada tantangan seperti kompatibilitas platform, kompleksitas integrasi, migrasi data, dan pengoptimalan kinerja. Memindahkan komponen penting ini membutuhkan perencanaan yang cermat, keahlian teknis, dan sumber daya untuk memastikan migrasi yang lancar sambil mempertahankan keandalan dan fungsionalitas.
AWS Mainframe Modernization Layanan ini menyediakan alat dan sumber daya untuk memplatform ulang aplikasi mainframe dan database untuk berjalan pada AWS infrastruktur, seperti instans Amazon Elastic Compute Cloud (Amazon). EC2 Ini melibatkan pemindahan beban kerja mainframe ke cloud tanpa perubahan kode besar.
Proses precompile dan bind Db2 sangat penting untuk mengoptimalkan kinerja dan keandalan aplikasi database. Prakompilasi mengubah pernyataan SQL yang disematkan menjadi kode yang dapat dieksekusi, yang mengurangi overhead runtime dan meningkatkan efisiensi. Proses mengikat menghubungkan kode yang telah dikompilasi sebelumnya dengan struktur database, memfasilitasi jalur akses dan optimasi kueri. Proses ini memastikan integritas data, meningkatkan daya tanggap aplikasi, dan menjaga terhadap kerentanan keamanan. Aplikasi yang dikompilasi dan terikat dengan benar meminimalkan konsumsi sumber daya, meningkatkan skalabilitas, dan mengurangi risiko serangan injeksi SQL.
Prasyarat dan batasan
Prasyarat
Akses konsol tingkat administratif Akun AWS dan administratif.
Sistem database IBM Db2, seperti IBM Db2 untuk z/OS atau Db2 untuk Linux, Unix, dan Windows (LUW).
Perangkat lunak IBM Data Server Client, yang tersedia untuk diunduh dari situs web IBM
. Untuk informasi selengkapnya, lihat tipe IBM Data Server Client dan Data Server Driver . Program COBOL Db2 yang akan dikompilasi dan diikat. Atau, pola ini menyediakan program sampel dasar yang dapat Anda gunakan.
Virtual Private Cloud (VPC) aktif AWS dengan jaringan pribadi. Untuk informasi tentang membuat VPC, lihat dokumentasi Amazon Virtual Private Cloud (Amazon VPC).
Sebuah repositori kontrol sumber seperti GitHub atau. GitLab
Keterbatasan
Untuk AWS CodeBuild kuota, lihat Kuota untuk. AWS CodeBuild
Beberapa Layanan AWS tidak tersedia di semua Wilayah AWS. Untuk ketersediaan Wilayah, lihat Layanan AWS berdasarkan Wilayah
. Untuk titik akhir tertentu, lihat halaman titik akhir dan kuota Layanan, dan pilih tautan untuk layanan.
Arsitektur
Tumpukan teknologi sumber
Tumpukan sumber meliputi:
Program COBOL yang menggunakan database Db2 untuk menyimpan data
Kompiler IBM COBOL dan Db2 untuk precompiler z/OS
Bagian lain dari pengaturan mainframe, seperti sistem file, manajer transaksi, dan spool
Tumpukan teknologi target
Pendekatan pola ini berfungsi untuk dua opsi: memindahkan data dari Db2 ke Db2 z/OS untuk LUW, atau tetap menggunakan Db2 untuk z/OS. Arsitektur target meliputi:
Program COBOL yang menggunakan database Db2 untuk menyimpan data
AWS Mainframe Modernization Alat kompilasi replatform
AWS CodeBuild sebagai infrastruktur untuk membangun aplikasi
AWS Cloud Sumber daya lain seperti Amazon Linux
Arsitektur target

Diagram ini menggambarkan hal sebagai berikut:
Pengguna mengunggah kode mereka ke repositori kontrol sumber seperti atau. GitHub GitLab
AWS CodePipeline memperhatikan perubahan dan mendapatkan kode dari repositori.
CodePipeline memulai AWS CodeBuild dan mengirimkan kode.
CodeBuild mengikuti instruksi dalam
buildspec.ymltemplate (disediakan di bagian Informasi tambahan) untuk:Dapatkan Klien Server Data IBM dari bucket Amazon Simple Storage Service (Amazon S3).
Instal dan atur IBM Data Server Client.
Ambil kredensi Db2 dari. AWS Secrets Manager
Hubungi server Db2.
Prakompilasi, kompilasi, dan ikat program COBOL.
Simpan produk jadi dalam ember S3 AWS CodeDeploy untuk digunakan.
CodePipeline dimulai CodeDeploy.
CodeDeploy mengoordinasikan agennya, yang sudah diinstal di lingkungan runtime. Agen mengambil aplikasi dari Amazon S3 dan menginstalnya berdasarkan instruksi di.
appspec.yml
Untuk menjaga hal-hal sederhana dan fokus pada build, instruksi dalam pola ini mencakup langkah 1 hingga 4 tetapi tidak termasuk penerapan program COBOL Db2.
Otomatisasi dan skala
Untuk kesederhanaan, pola ini menjelaskan cara menyediakan sumber daya secara manual. Namun, ada banyak opsi otomatisasi yang tersedia, seperti,, dan HashiCorp Terraform AWS CloudFormation AWS Cloud Development Kit (AWS CDK), yang mengotomatiskan tugas-tugas ini. Untuk informasi lebih lanjut, lihat AWS CloudFormationdan AWS CDKdokumentasi.
Alat
Layanan AWS
AWS CodeBuildadalah layanan build terkelola penuh yang membantu Anda mengkompilasi kode sumber, menjalankan pengujian unit, dan menghasilkan artefak yang siap digunakan.
AWS CodeDeploymengotomatiskan penerapan ke Amazon EC2 atau instans, fungsi AWS Lambda , atau layanan Amazon Elastic Container Service (Amazon ECS) lokal.
AWS CodePipelinemembantu Anda dengan cepat memodelkan dan mengkonfigurasi berbagai tahapan rilis perangkat lunak dan mengotomatiskan langkah-langkah yang diperlukan untuk merilis perubahan perangkat lunak secara terus menerus.
AWS Mainframe Modernizationmenyediakan alat dan sumber daya untuk membantu Anda merencanakan dan mengimplementasikan migrasi dan modernisasi dari mainframe ke lingkungan runtime AWS terkelola.
Alat lainnya
Gambar Amazon ECR untuk alat AWS Mainframe Modernization Replatform. Untuk mengkompilasi aplikasi COBOL, Anda harus memulai CodeBuild dengan menggunakan image Amazon Elastic Container Registry (Amazon ECR) Registry ECR) yang berisi alat Replatform: AWS Mainframe Modernization
673918848628.dkr.ecr.<your-region>.amazonaws.com/m2-enterprise-build-tools:9.0.7.R1Untuk informasi lebih lanjut tentang gambar ECR yang tersedia, lihat tutorial di Panduan AWS Mainframe Modernization Pengguna.
Perangkat lunak IBM Data Server Client
sangat penting untuk pra-kompilasi dan pengikatan program COBOL Db2 di. CodeBuild Ini bertindak sebagai jembatan antara kompiler COBOL dan Db2.
Praktik terbaik
Tidak setiap program COBOL bergantung pada Db2 sebagai lapisan persistensi datanya. Pastikan bahwa arahan kompilasi untuk mengakses Db2 diterapkan hanya untuk program COBOL yang dirancang khusus untuk berinteraksi dengan Db2. Menerapkan logika untuk membedakan antara program COBOL Db2 dan program COBOL yang tidak menggunakan Db2.
Kami menyarankan Anda menghindari kompilasi program yang belum dimodifikasi. Menerapkan proses untuk mengidentifikasi program mana yang memerlukan kompilasi.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat bucket S3 untuk meng-host IBM Data Server Client dan artefak pipeline. | Anda perlu menyiapkan bucket S3 untuk (a) mengunggah Klien Server Data IBM, (b) menyimpan kode Anda dari repositori, dan (c) menyimpan hasil proses pembuatan.
Untuk cara membuat bucket S3, lihat dokumentasi Amazon S3. | AWS Umum |
Unggah Klien Server Data IBM ke bucket S3. |
| AWS Umum |
Buat AWS Secrets Manager rahasia untuk kredensi Db2 Anda. | Untuk membuat rahasia untuk menyimpan DB2 kredensil Anda dengan aman:
Untuk informasi selengkapnya tentang membuat rahasia, lihat dokumentasi Secrets Manager. | AWS Umum |
Verifikasi bahwa Db2 dapat diakses dari subnet VPC. | AWS CodeBuild membutuhkan koneksi ke server Db2 sehingga Klien Server Data dapat melakukan operasi prakompilasi dan mengikat. Pastikan itu CodeBuild dapat mencapai server Db2 melalui koneksi yang aman.
| Administrator jaringan, AWS Umum |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat aset COBOL Db2. |
| Pengembang aplikasi |
Buat file |
| AWS DevOps |
Connect repositori Anda ke. CodePipeline |
Anda akan memerlukan Nama Sumber Daya Amazon (ARN) untuk koneksi saat Anda membuat kebijakan AWS Identity and Access Management (IAM) untuk langkah CodePipeline selanjutnya. | AWS DevOps |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat kebijakan IAM untuk CodeBuild. | CodeBuild Proyek ini memerlukan akses ke beberapa sumber daya, termasuk Secrets Manager dan Amazon S3. Untuk mengatur izin yang diperlukan:
Untuk informasi selengkapnya tentang membuat kebijakan IAM, lihat dokumentasi IAM. | AWS Umum |
Buat peran IAM untuk CodeBuild. | Agar kebijakan keamanan tersedia CodeBuild, Anda perlu mengonfigurasi peran IAM. Untuk membuat peran ini: 1. Di konsol IAM 3. Untuk jenis entitas Tepercaya, pertahankan Layanan AWSsetelan default. 4. Untuk kasus penggunaan, pilih CodeBuild layanan, dan kemudian pilih Berikutnya. 4. Dalam daftar kebijakan IAM yang tersedia, cari kebijakan yang Anda buat CodeBuild, lalu pilih Berikutnya untuk melampirkannya ke peran. 5. Tentukan nama untuk peran, dan pilih Buat peran untuk menyimpannya untuk referensi di masa mendatang CodeBuild. Untuk informasi selengkapnya tentang membuat peran IAM untuk sebuah Layanan AWS, lihat dokumentasi IAM. | AWS Umum |
Buat kebijakan IAM untuk CodePipeline. | AWS CodePipeline Pipeline memerlukan akses ke beberapa sumber daya, termasuk repositori kode Anda dan Amazon S3. Ulangi langkah-langkah yang diberikan sebelumnya CodeBuild untuk membuat kebijakan IAM CodePipeline (pada langkah 2, pilih CodePipelinesebagai ganti CodeBuild). | AWS DevOps |
Buat peran IAM untuk CodePipeline. | Agar kebijakan keamanan tersedia CodePipeline, Anda perlu mengonfigurasi peran IAM. Untuk membuat peran ini:
| AWS DevOps |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat CodePipeline pipeline dan CodeBuild proyek. | Untuk membuat CodePipeline pipeline dan CodeBuild proyek yang mengkompilasi dan mengikat program COBOL Db2:
| AWS DevOps |
Tinjau output. | Verifikasi keberhasilan build dengan meninjau log CodePipeline build. | AWS DevOps |
Periksa hasil di Db2. | Verifikasi versi paket pada tabel SYSPLAN.
Versi harus cocok dengan ID CodeBuild build, yang ada
|
Pemecahan Masalah
| Isu | Solusi |
|---|---|
Terkadang, AWS konsol beralih Wilayah saat Anda berpindah antar layanan. | Pastikan untuk memverifikasi yang dipilih Wilayah AWS setiap kali Anda beralih antar layanan. Wilayah AWS Pemilih berada di sudut kanan atas jendela konsol. |
Mungkin sulit untuk mengidentifikasi masalah konektivitas Db2 dari. CodeBuild | Untuk memecahkan masalah konektivitas, tambahkan perintah DB2 connect berikut ke file.
|
Terkadang, panel peran di konsol IAM tidak langsung menampilkan kebijakan IAM yang telah Anda buat. | Jika Anda mengalami penundaan, segarkan layar untuk menampilkan informasi terbaru. |
Sumber daya terkait
Dokumentasi IBM
AWS dokumentasi
Informasi tambahan
CodeBuild kebijakan
Ganti placeholder<RegionID>,,<AccountID>, <SubnetARN><BucketARN>, dan <DB2CredSecretARN> dengan nilai-nilai Anda.
{"Version": "2012-10-17", "Statement": [ {"Action": "ecr:GetAuthorizationToken", "Effect": "Allow", "Resource": "*" }, {"Action": ["ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability"], "Effect": "Allow", "Resource": "arn:aws:ecr:*:673918848628:repository/m2-enterprise-build-tools"}, {"Action": "s3:PutObject", "Effect": "Allow", "Resource": "arn:aws:s3:::aws-m2-repo-*/*"}, {"Action": ["logs:PutLogEvents", "logs:CreateLogStream", "logs:CreateLogGroup"], "Effect": "Allow", "Resource": "arn:aws:logs:<RegionId>:<AccountId>:*"}, {"Action": ["ec2:DescribeVpcs", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeNetworkInterfaces", "ec2:DescribeDhcpOptions", "ec2:DeleteNetworkInterface", "ec2:CreateNetworkInterface"], "Effect": "Allow", "Resource": "*"}, {"Action": "ec2:CreateNetworkInterfacePermission", "Effect": "Allow", "Resource": ["<SubnetARN>"]}, {"Action": "s3:*", "Effect": "Allow", "Resource": ["<BucketARN>/*","<BucketARN>"]}, {"Action": "secretsmanager:GetSecretValue", "Effect": "Allow", "Resource": "<DB2CredSecretARN>"} ] }
CodePipeline kebijakan
Ganti placeholder <BucketARN> dan <ConnectionARN> dengan nilai-nilai Anda.
{ "Version": "2012-10-17", "Statement": [ {"Action": ["s3:List*", "s3:GetObjectVersion", "s3:GetObject", "s3:GetBucketVersioning" ], "Effect": "Allow", "Resource": ["<BucketARN>/*", "<BucketARN>"]}, {"Action": ["codebuild:StartBuild", "codebuild:BatchGetBuilds"], "Effect": "Allow", "Resource": "*"}, {"Action": ["codestar-connections:UseConnection"], "Effect": "Allow", "Resource": "<ConnectionARN>"} ] }
buildspec.yml
Ganti <your-bucket-name> placeholder dengan nama bucket S3 Anda yang sebenarnya.
version: 0.2 phases: pre_build: commands: - /var/microfocuslicensing/bin/mfcesd -no > /var/microfocuslicensing/logs/mfcesd_startup.log 2>&1 & - | mkdir $CODEBUILD_SRC_DIR/db2client aws s3 cp s3://<your-bucket-name>/v11.5.8_linuxx64_client.tar.gz $CODEBUILD_SRC_DIR/db2client/ >> /dev/null 2>&1 tar -xf $CODEBUILD_SRC_DIR/db2client/v11.5.8_linuxx64_client.tar.gz -C $CODEBUILD_SRC_DIR/db2client/ cd $CODEBUILD_SRC_DIR/db2client/ ./client/db2_install -f sysreq -y -b /opt/ibm/db2/V11.5 >> /dev/null 2>&1 useradd db2cli /opt/ibm/db2/V11.5/instance/db2icrt -s client -u db2cli db2cli DB2CRED=$(aws secretsmanager get-secret-value --secret-id dev-db2-cred | jq -r '.SecretString | fromjson') read -r DB2USER DB2PASS DB_NODE DB_HOST DB_PORT DB_NAME DB_QUAL <<<$(echo $DB2CRED | jq -r '.username, .password, .db2node, .db2host, .db2port, .db2name, .qualifier') . /home/db2cli/sqllib/db2profile db2 catalog tcpip node $DB_NODE remote $DB_HOST server $DB_PORT db2 catalog db $DB_NAME as $DB_NAME at node $DB_NODE authentication server build: commands: - | revision=$CODEBUILD_SRC_DIR/loadlib mkdir -p $revision; cd $revision . /opt/microfocus/EnterpriseDeveloper/bin/cobsetenv cob -zU $CODEBUILD_SRC_DIR/CDB2SMP.cbl -C "DB2(DB==${DB_NAME} PASS==${DB2USER}.${DB2PASS} VERSION==${CODEBUILD_BUILD_NUMBER} COLLECTION==DB2AWSDB" artifacts: files: - "**/*" base-directory: $revision