Giới thiệu dịch vụ AWS App Runner

Hôm nay, chúng tôi vui mừng công bố AWS App Runner, là cách thức đơn giản nhất để xây dựng và chạy ứng dụng web được đóng gói container trên AWS. App Runner là một dịch vụ container được quản lý hoàn toàn: bạn không cần cấu hình công cụ orchestrator, không cần thiết lập build pipeline, không cân bằng tải cần tối ưu, hay làm mới chứng nhận TLS. Và tất nhiên là không có máy chủ cần quản lý.

App Runner cung cấp cơ chế tính giá theo mỗi giây thực thi và mọi thứ bạn cần để chạy một workload bảo mật và hoàn chỉnh trên production. Chỉ với vài click chuột, bạn có thể có một ứng dụng container chạy với một điểm kết nối (public endpoint), chứng chỉ TLS và tự động mở rộng (scaling).

Với App Runner, bạn có thể đưa những ứng dụng container đang có, hoặc sử dụng các dịch vụ build container tích hợp để triển khai ứng dụng trực tiếp từ nơi lưu mã nguồn (source code repository). Dịch vụ build có thể kết nối tới một GitHub repository nhằm cung cấp git push workflow để triển khai những thay đổi một cách tự động. Để kiểm soát quy trình build chi tiết hơn, App Runner có thể kết hợp với phiên bản mới nhất của dịch vụ AWS Copilot để đóng gói ứng dụng container của bạn và tự động hoá các dịch vụ khác của AWS như Amazon DynamoDB.

Để chỉ ra các lợi ích độc đáo riêng của App Runner và cách thức sử dụng, ta cùng khởi tạo một service.

Triển khai container đầu tiên trên App Runner

Ta hãy cùng đi qua các bước để triển khai một ứng dụng container đơn giản trên App Runner. Trong hướng dẫn này, ta đã có một ứng dụng container mẫu đã build dành cho bạn tại đây. Ứng dụng này cung cấp cho bạn một trang web mẫu (landing page) cơ bản và có thể xuất ra các hình đại diện (banner image) cho từng service.

Trên giao diện điều khiển của App Runner, bạn có thể triển khai container với chỉ 3 thông tin. Bắt đầu với việc chỉ ra nơi chứa các container image (Container registry). Trong ví dụ này, ta sử dụng Amazon ECR Public là nơi cung cấp. Điền thông tin public.ecr.aws/aws-containers/hello-app-runner:latest là container image được sử dụng. 

Tiếp theo, đặt tên cho service của bạn và chỉ định port 8000  Ta cũng có tuỳ chọn đưa thêm các thông tin cấu hình khác cho ứng dụng như các biến môi trường (environment variable), kiểm tra tình trạng (health check endpoint), tiêu chí mở rộng (scaling requirement), và các nhãn (service tag). Trong ví dụ này, ta chỉ sử dụng các cấu hình mặc định.

 Bấm Create & Deploy và ứng dụng của bạn sẽ được triển khai và thiết lập đằng sau một cân bằng tải được quản lý bởi AWS và một chứng chỉ TLS. Phần tự động mở rộng sẽ dựa vào số lượng yêu cầu gửi đến đồng thời (concurrent requests). Mỗi service cũng sẽ cung cấp CloudWatch metrics và logs. Bạn có thể tập trung vào việc xây dựng ứng dụng của mình và đẩy việc quản lý hạ tầng cho AWS.

Tự động build container

Nếu bạn muốn đưa code ứng dụng lên App Runner mà không cần build hay đẩy container image thì bạn có thể sử dụng trực tiếp GitHub repo. Dịch vụ build cung cấp các container mẫu cơ bản với các runtime như Python và Node.js để bạn không cần phải cập nhật nhiều các bản vá bảo mật. App Runner có một dịch vụ build tích hợp, tính chi phí theo phút, dùng để build container image từ mã nguồn.

Ví dụ với một ứng dụng mã nguồn mở được lưu tại đây trên GitHub. Nó sử dụng để xuất ra các ảnh đại diện (banner image) và truyền metrics của service tới Prometheus tại đường dẫn /metrics để giúp ta quan sát được dung lượng in-memory cache được sử dụng giữa các lần yêu cầu gửi tới service.

Để triển khai nó với một build pipeline được quản lý hoàn toàn bởi App Runner, ta tạo một bản sao lưu (fork) của repo tới tài khoản GitHub của mình. Ta tạo một service mới trên App Runner và chọn Source code repository cho phần loại repo. Tiếp theo, ta kết nối tới tài khoản GitHub và chọn repository của bạn và branch tương ứng.

Chọn Automatic là loại Deployment trigger để ứng dụng container có thể triển khai tự động khi bạn tạo commits tới branch main.

Chọn runtime của ứng dụng – Python 3 hoặc Node.js 12. Sau đó, chỉ định câu lệnh build và câu lệnh để chạy ứng dụng của bạn, cùng với port mà service sử dụng.

Bạn cũng có thể kiểm soát tiến trình build bằng cách tạo ra một file apprunner.yaml trong repo của bạn. Dưới đây là ví dụ về một file  apprunner.yaml tối giản cho ứng dụng Python.

Python

version: 1.0

runtime: python3

build:

 commands:

  build:

  - yum install -y pycairo

  - pip install -r requirements.txt

run:

 command: python app.py

 network:

   port: 8000

Bạn có thể xem nhiều file apprunner.yaml mẫu khác nhau trong tài liệu này.

Sau khi bạn đã có file apprunner.yaml trong repo, bạn có thể kiểm soát trực tiếp tiến trình build container từ repo mà không cần cập nhật service trên giao diện quản trị. Bạn đẩy code và một phiên bản mới của container image sẽ được build, đẩy vào registry và triển khai lên App Runner. App Runner sẽ xử lý mọi thứ cho bạn.

Các đối tác (partners) đã sử dụng

Chúng tôi đã và đang làm việc với các đối tác của AWS như. Pulumi và Logz.io để tích hợp các giải pháp của họ với App Runner. Tương tự, các đối tác tư vấn của AWS (Consulting Partners) như Trek10 có thể giúp khách hàng sử dụng App Runner để thiết kế kiến trúc cho các dịch vụ và ứng dụng thuần cho cloud (cloud-native).

Pulumi – “AWS App Runner thật sự quá tốt bởi nó được xây dựng từ các công nghệ về container hàng đầu nhưng không hề yêu cầu lập trình viên phải có chút kinh nghiệm hay chuyên môn nào về container để chạy các ứng dụng và dịch vụ web. Chúng tôi rất hào hứng khi có thể hỗ trợ sử dụng App Runner như một tài nguyên trên Pulumi”

Logz.io – “Chúng tôi vui mừng công bố khả năng hỗ trợ giám sát (monitoring) cho AWS App Runner với các công cụ quản lý log (Log Management) mã nguồn mở đi đầu của chúng tôi, tương thích với ELK, giám sát hạ tầng (Infrastructure Monitoring) dựa trên Prometheus, và truy vết phân tán (Distributed Tracing) dựa trên Jaeger. Bằng việc tích hợp Logz.io với AWS App Runner, khách hàng có thể có được đầy đủ thông tin về hiệu năng của ứng dụng và hạ tầng của họ để xử lý sự cố tốt hơn và mở rộng nền tảng công nghệ của họ song song với tiết kiệm thời gian và tài nguyên cho vận hành”

Trek10 – “Ở Trek10, chúng tôi xây dựng các giải pháp để giúp các khách hàng xây dựng và đổi mới sáng tạo nhanh hơn trên AWS. Chúng tôi rất hào hứng với AWS App Runner bởi tiềm năng của nó trong việc thúc đẩy sáng tạo bằng cách loại bỏ đi lớp hạ tầng và đơn giản hoá phần triển khai ứng dụng web. Chúng tôi mong đợi sẽ giúp các khách hàng sử dụng App Runner để xây dựng và chạy các ứng dụng thuần cho cloud”

Sysdig – “Với AWS App Runner, việc quản lý hạ tầng được đẩy về cho AWS. Điều đó giúp giải phóng các tổ chức để tập trung vào phát triển và triển khai các ứng dụng của họ hơn. Ở Sysdig, chúng tôi đang khám phá các phương thức tích hợp với AWS App Runner để đơn giản hoá cho các tổ chức để họ có thể bảo mật và tối ưu các ứng dụng nhằm cải thiện hơn trải nghiệm của lập trình viên.”

Chúng tôi còn đang phát triển các phần tích hợp thú vị khác với MongoDB, Datadog HashiCorp – sẽ cho phép khách hàng sử dụng App Runner được sử dụng các công cụ và dịch vụ tin cậy mà họ đã quen sử dụng.

Tìm hiểu thêm

Có rất nhiều thông tin về App Runner, và chúng tôi khuyến khích bạn tìm hiểu thêm tại các tài liệu và workshop tại apprunnerworkshop.com. Workshop này sẽ hướng dẫn bạn tìm hiểu về tự động thực hiện rolling updates và mô phỏng kết nối lớp ứng dụng tới lớp cơ sở dữ liệu. Bạn cũng có thể tham gia xem live tream tại Containers from the Couch vào lúc 12:00 PM PDT/3:00 PM EDT, thứ 4 ngày 19 tháng 5, nơi chúng tôi sẽ hướng dẫn các bạn từng bước thực hiện workshop và trả lời các câu hỏi của các bạn.

App Runner là dịch vụ mới nhất của AWS giúp bạn chạy ứng dụng container ở mức quy mô lớn. Dịch vụ mang trong mình rất nhiều năm kinh nghiệm vận hành hàng triệu container trên AWS và nó giúp mọi người bắt đầu xây dựng ứng dụng với container dễ dàng hơn. Hãy cho chúng tôi biết những tính năng mà bạn muốn thấy ở App Runner và chia sẻ nó tại road map của App Runner được public trên GitHub


Bài được dịch từ bài viết trên AWS Blogs, bạn có thể xem bài viết gốc tại đây.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: