

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
<a name="migrate-on-premises-java-applications-to-aws-using-aws-app2container"></a>

*Dhananjay Karanjkar, Amazon Web Services*

## Ringkasan
<a name="migrate-on-premises-java-applications-to-aws-using-aws-app2container-summary"></a>

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
<a name="migrate-on-premises-java-applications-to-aws-using-aws-app2container-prereqs"></a>

**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**
+ Tidak semua aplikasi didukung. Untuk informasi selengkapnya, lihat [Aplikasi yang didukung untuk Linux](https://docs.aws.amazon.com/app2container/latest/UserGuide/supported-applications.html).

## Arsitektur
<a name="migrate-on-premises-java-applications-to-aws-using-aws-app2container-architecture"></a>

**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.](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/61ed65a0-fab2-4fc8-8531-18bfd56a25b3/images/602cde7b-ab0c-46a5-8c37-afe304adf061.png)


 

## Alat
<a name="migrate-on-premises-java-applications-to-aws-using-aws-app2container-tools"></a>

**Alat**
+ [AWS App2Container](https://docs.aws.amazon.com/app2container/latest/UserGuide/what-is-a2c.html) — 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](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) — 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](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) — 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](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) — 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](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) — Amazon Elastic Container Service (Amazon ECS) adalah layanan manajemen kontainer yang sangat skalabel dan cepat untuk menjalankan, menghentikan, dan mengelola kontainer di cluster.
+ [Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) — Amazon Elastic Container Registry (Amazon ECR) adalah layanan registri gambar kontainer terkelola AWS yang aman, terukur, dan andal.
+ [Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) — 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](https://docs.aws.amazon.com/AmazonECS/latest/userguide/what-is-fargate.html) — 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
<a name="migrate-on-premises-java-applications-to-aws-using-aws-app2container-epics"></a>

### Siapkan kredensil
<a name="set-up-credentials"></a>


| Tugas | Deskripsi | Keterampilan 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](https://docs.aws.amazon.com/app2container/latest/UserGuide/manage-secrets.html). | DevOps, Pengembang | 

### Siapkan mesin pekerja
<a name="set-up-the-worker-machine"></a>


| Tugas | Deskripsi | Keterampilan 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"` <br />Buka ritsleting`awscliv2.zip`.<br />Jalankan `sudo ./aws/install`. | DevOps, Pengembang | 
| Instal App2Container. | Jalankan perintah berikut:<br />`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`<br />`sudo tar xvf AWSApp2Container-installer-linux.tar.gz`<br />`sudo ./install.sh` | DevOps, Pengembang | 
| Konfigurasikan profil. | Untuk mengonfigurasi profil default AWS, jalankan`sudo aws configure`.<br />Untuk mengonfigurasi profil default AWS bernama, jalankan`sudo aws configure --profile <profile name>`. | DevOps, Pengembang | 
| Pasang Docker. | Jalankan perintah berikut.<br />`sudo yum install -y docker`<br />`sudo systemctl enable docker & sudo systemctl restart docker` |  | 
| Inisialisasi App2Container. | Untuk menginisialisasi App2Container, Anda memerlukan informasi berikut:[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/migrate-on-premises-java-applications-to-aws-using-aws-app2container.html)<br />Jalankan `sudo app2container init`. | DevOps, Pengembang | 

### Konfigurasikan mesin pekerja
<a name="configure-the-worker-machine"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Konfigurasikan mesin pekerja untuk menghubungkan dan menjalankan perintah App2Container dari jarak jauh di server aplikasi. | Untuk mengkonfigurasi mesin pekerja, informasi berikut diperlukan:[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/migrate-on-premises-java-applications-to-aws-using-aws-app2container.html)<br />Jalankan `sudo app2container remote configure`. | DevOps, Pengembang | 

### Temukan, analisis, dan ekstrak aplikasi pada mesin pekerja
<a name="discover-analyze-and-extract-applications-on-the-worker-machine"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Temukan aplikasi Java lokal. | Untuk menemukan semua aplikasi yang berjalan di server aplikasi dari jarak jauh, jalankan perintah berikut.<br />`sudo app2container remote inventory --target <FQDN/IP of App server>`<br />Perintah ini menghasilkan daftar aplikasi yang digunakan di`inventory.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.<br />`sudo app2container remote analyze --application-id <java-app-id> --target <FQDN/IP of App Server>`<br />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.<br />`sudo app2container remote extract --application-id <application id> --target <FQDN/IP of App Server>`<br />Artefak yang diekstraksi dapat dihasilkan pada mesin pekerja lokal. | Pengembang, DevOps | 

### Kontainerisasi artefak yang diekstraksi pada mesin pekerja
<a name="containerize-the-extracted-artifacts-on-the-worker-machine"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Kontainerisasi artefak yang diekstraksi. | Kontainerisasi artefak yang diekstraksi pada langkah sebelumnya dengan menjalankan perintah berikut.<br />`sudo app2container containerize --input-archive <tar bundle location on worker machine>` | Pengembang, DevOps | 
| Selesaikan target. | Untuk menyelesaikan target, buka`deployment.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 | 

### Menghasilkan dan menyediakan artefak AWS
<a name="generate-and-provision-aws-artifacts"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Hasilkan artefak penerapan AWS di mesin pekerja. | Untuk menghasilkan artefak penyebaran, jalankan perintah berikut.<br />`sudo app2container generate app-deployment --application-id <application id>`<br />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.<br />`aws cloudformation deploy --template-file <path to ecs-master.yml> --capabilities CAPABILITY_NAMED_IAM --stack-name <application id>–ECS` | DevOps | 
| Hasilkan pipa. | Modifikasi`pipeline.json`, yang dibuat di cerita sebelumnya, berdasarkan kebutuhan Anda. Kemudian jalankan `generate pipeline` perintah untuk menghasilkan artefak penyebaran pipeline. | DevOps | 

## Sumber daya terkait
<a name="migrate-on-premises-java-applications-to-aws-using-aws-app2container-resources"></a>
+ [Apa itu App2Container?](https://docs.aws.amazon.com/app2container/latest/UserGuide/what-is-a2c.html)
+ [Posting blog AWS App2Container](https://aws.amazon.com/blogs/aws/aws-app2container-a-new-containerizing-tool-for-java-and-asp-net-applications/)
+ [Dasar-dasar konfigurasi AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html)
+ [Dasar-dasar Docker untuk Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-basics.html)
+ [Perintah Docker](https://docs.docker.com/engine/reference/commandline/cli/)