Migrasikan aplikasi Java lokal ke AWS menggunakan AWS App2Container - AWS Prescriptive Guidance

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

Migrasikan aplikasi Java lokal ke AWS menggunakan AWS App2Container

Dhananjay Karanjkar, Amazon Web Services

Ringkasan

Pemberitahuan: AWS CodeCommit tidak lagi tersedia untuk pelanggan baru. Pelanggan AWS yang sudah ada CodeCommit dapat terus menggunakan layanan seperti biasa. Pelajari selengkapnya

AWS App2Container (A2C) adalah alat baris perintah yang membantu mengubah aplikasi yang ada yang berjalan di mesin virtual menjadi wadah, tanpa perlu perubahan kode apa pun. A2C menemukan aplikasi yang berjalan di server, mengidentifikasi dependensi, dan menghasilkan artefak yang relevan untuk penyebaran tanpa batas ke Amazon Elastic Container Service (Amazon ECS) Container Service (Amazon ECS) dan Amazon Elastic Kubernetes Service (Amazon EKS).

Pola ini menyediakan langkah-langkah untuk memigrasikan aplikasi Java lokal dari jarak jauh yang diterapkan pada server aplikasi ke AWS Fargate atau Amazon EKS dengan menggunakan App2Container melalui mesin pekerja. 

Mesin pekerja dapat digunakan dalam kasus penggunaan berikut:

  • Instalasi Docker tidak diperbolehkan atau tidak tersedia di server aplikasi tempat aplikasi Java berjalan.

  • Anda harus mengelola migrasi beberapa aplikasi yang digunakan pada server fisik atau virtual yang berbeda.

Pola ini menggunakan AWS CodeCommit AWS CodePipeline,, dan AWS CodeBuild.

Prasyarat dan batasan

Prasyarat

  • Server aplikasi dengan aplikasi Java yang berjalan di server Linux

  • Mesin pekerja dengan sistem operasi Linux

  • Mesin pekerja dengan setidaknya 20 GB ruang disk yang tersedia

Batasan

Arsitektur

Tumpukan teknologi sumber

  • Aplikasi Java berjalan di server Linux

Tumpukan teknologi target

  • AWS CodeBuild

  • AWS CodeCommit

  • AWS CodeDeploy

  • AWS CodePipeline

  • Amazon Elastic Container Registry

  • AWS Fargate

Arsitektur target

Arsitektur untuk aplikasi Java lokal di AWS.

Alat

Alat

  • AWS App2Container — AWS App2Container (A2C) adalah alat baris perintah untuk membantu Anda mengangkat dan memindahkan aplikasi yang berjalan di pusat data lokal atau di mesin virtual, sehingga mereka berjalan dalam wadah yang dikelola oleh Amazon ECS atau Amazon EKS.

  • AWS CodeBuild — AWS CodeBuild adalah layanan build yang dikelola sepenuhnya di cloud. CodeBuild mengkompilasi kode sumber Anda, menjalankan pengujian unit, dan menghasilkan artefak yang siap digunakan.

  • AWS CodeCommit — AWS CodeCommit adalah layanan kontrol versi yang dihosting oleh Amazon Web Services yang dapat Anda gunakan untuk menyimpan dan mengelola aset secara pribadi (seperti dokumen, kode sumber, dan file biner) di cloud.

  • AWS CodePipeline — AWS CodePipeline adalah layanan pengiriman berkelanjutan yang dapat Anda gunakan untuk memodelkan, memvisualisasikan, dan mengotomatiskan langkah-langkah yang diperlukan untuk merilis perangkat lunak Anda.

  • Amazon ECS — Amazon Elastic Container Service (Amazon ECS) adalah layanan manajemen kontainer yang sangat skalabel dan cepat untuk menjalankan, menghentikan, dan mengelola kontainer di klaster.

  • Amazon ECR — Amazon Elastic Container Registry (Amazon ECR) adalah layanan registri gambar kontainer terkelola AWS yang aman, terukur, dan andal.

  • Amazon EKS — Amazon Elastic Kubernetes Service (Amazon EKS) adalah layanan terkelola yang dapat Anda gunakan untuk menjalankan Kubernetes di AWS tanpa perlu menginstal, mengoperasikan, dan memelihara control plane atau node Kubernetes Anda sendiri.

  • AWS Fargate — AWS Fargate adalah teknologi yang dapat Anda gunakan dengan Amazon ECS untuk menjalankan container tanpa harus mengelola server atau cluster instans Amazon Elastic Compute Cloud (Amazon). EC2 Dengan Fargate, Anda tidak perlu menyediakan, mengonfigurasi, atau menskalakan klaster mesin virtual untuk menjalankan kontainer.

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Buat rahasia untuk mengakses server aplikasi.

Untuk mengakses server aplikasi dari jarak jauh dari mesin pekerja, buat rahasia di AWS Secrets Manager. Untuk rahasia Anda, Anda dapat menggunakan kunci pribadi SSH atau Sertifikat dan kunci pribadi SSH. Untuk informasi selengkapnya, lihat Mengelola rahasia untuk AWS App2Container.

DevOps, Pengembang
TugasDeskripsiKeterampilan yang dibutuhkan

Instal file tar.

Jalankan sudo yum install -y tar.

DevOps, Pengembang

Instal AWS CLI.

Untuk menginstal Amazon Command Line Interface (AWS CLI), jalankan. curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" 

Buka ritsletingawscliv2.zip.

Jalankan sudo ./aws/install.

DevOps, Pengembang

Instal App2Container.

Jalankan perintah berikut:

curl -o AWSApp2Container-installer-linux.tar.gz https://app2container-release-us-east-1.s3.us-east-1.amazonaws.com/latest/linux/AWSApp2Container-installer-linux.tar.gz

sudo tar xvf AWSApp2Container-installer-linux.tar.gz

sudo ./install.sh

DevOps, Pengembang

Konfigurasikan profil.

Untuk mengonfigurasi profil default AWS, jalankansudo aws configure.

Untuk mengonfigurasi profil default AWS bernama, jalankansudo aws configure --profile <profile name>.

DevOps, Pengembang

Pasang Docker.

Jalankan perintah berikut.

sudo yum install -y docker

sudo systemctl enable docker & sudo systemctl restart docker

Inisialisasi App2Container.

Untuk menginisialisasi App2Container, Anda memerlukan informasi berikut:

  • workspace: Untuk menyimpan artefak kontainerisasi aplikasi. Sebaiknya sediakan jalur direktori yang memiliki setidaknya 20 GB ruang disk kosong.

  • awsProfile: Profil AWS dikonfigurasi di server. Ini diperlukan untuk mengunggah artefak ke Amazon S3, menjalankan containerize perintah, dan menghasilkan artefak AWS untuk penerapan di Amazon ECS atau Amazon EKS.

  • s3Bucket: Untuk mengekstrak dan menyimpan artefak AWS.

  • metricsReportPermission: Untuk mengumpulkan dan menyimpan metrik yang dilaporkan.

  • dockerContentTrust: Untuk menandatangani gambar Docker.

Jalankan sudo app2container init.

DevOps, Pengembang
TugasDeskripsiKeterampilan yang dibutuhkan

Konfigurasikan mesin pekerja untuk menghubungkan dan menjalankan perintah App2Container dari jarak jauh di server aplikasi.

Untuk mengkonfigurasi mesin pekerja, informasi berikut diperlukan:

  • Server FQDN: Nama domain yang sepenuhnya memenuhi syarat dari server aplikasi.

  • Server IP address: Alamat IP dari server aplikasi. Baik FQDN atau alamat IP sudah cukup.

  • SecretARNNama Sumber Daya Amazon (ARN) dari rahasia yang digunakan untuk terhubung ke server aplikasi dan disimpan di Secrets Manager.

  • AuthMethod: Metode key atau cert otentikasi.

Jalankan sudo app2container remote configure.

DevOps, Pengembang
TugasDeskripsiKeterampilan yang dibutuhkan

Temukan aplikasi Java lokal.

Untuk menemukan semua aplikasi yang berjalan di server aplikasi dari jarak jauh, jalankan perintah berikut.

sudo app2container remote inventory --target <FQDN/IP of App server>

Perintah ini menghasilkan daftar aplikasi yang digunakan diinventory.json.

Pengembang, DevOps

Analisis aplikasi yang ditemukan.

Untuk menganalisis setiap aplikasi dari jarak jauh dengan menggunakan id aplikasi yang diperoleh pada tahap inventaris, jalankan perintah berikut.

sudo app2container remote analyze --application-id <java-app-id> --target <FQDN/IP of App Server>

Ini menghasilkan analysis.json file di lokasi ruang kerja. Setelah file ini dibuat, Anda dapat mengubah parameter kontainerisasi berdasarkan kebutuhan Anda.

Pengembang, DevOps

Ekstrak aplikasi yang dianalisis.

Untuk menghasilkan arsip aplikasi untuk aplikasi yang dianalisis, jalankan perintah berikut dari jarak jauh, yang akan menghasilkan bundel tar di lokasi ruang kerja.

sudo app2container remote extract --application-id <application id> --target <FQDN/IP of App Server>

Artefak yang diekstraksi dapat dihasilkan pada mesin pekerja lokal.

Pengembang, DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Kontainerisasi artefak yang diekstraksi.

Kontainerisasi artefak yang diekstraksi pada langkah sebelumnya dengan menjalankan perintah berikut.

sudo app2container containerize --input-archive <tar bundle location on worker machine>

Pengembang, DevOps

Selesaikan target.

Untuk menyelesaikan target, bukadeployment.json, yang dibuat saat containerize perintah berjalan. Untuk menentukan AWS Fargate sebagai target, atur createEcsArtifacts ke. true Untuk menetapkan Amazon EKS sebagai target, atur createEksArtifacts ke true.

Pengembang, DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Hasilkan artefak penerapan AWS di mesin pekerja.

Untuk menghasilkan artefak penyebaran, jalankan perintah berikut.

sudo app2container generate app-deployment --application-id <application id>

Ini menghasilkan CloudFormation template ecs-master.yml AWS di ruang kerja.

DevOps

Menyediakan artefak.

Untuk menyediakan lebih lanjut artefak yang dihasilkan, terapkan CloudFormation template AWS dengan menjalankan perintah berikut.

aws cloudformation deploy --template-file <path to ecs-master.yml> --capabilities CAPABILITY_NAMED_IAM --stack-name <application id>–ECS

DevOps

Hasilkan pipa.

Modifikasipipeline.json, yang dibuat di cerita sebelumnya, berdasarkan kebutuhan Anda. Kemudian jalankan generate pipeline perintah untuk menghasilkan artefak penyebaran pipeline.

DevOps

Sumber daya terkait