Được viết bởi Nikhil Swaminathan và Ali Spittel | vào ngày 09 tháng 5 năm 2024 | trong Announcements, AWS Amplify, Front-End Web & Mobile
Hôm nay, chúng tôi rất vui mừng thông báo về quy trình làm việc mới dành cho môi trường đội ngũ – AWS Amplify Gen 2. Chúng tôi đã cải thiện sự hợp tác trong đội ngũ theo ba hướng: 1/ Làm cho chu kỳ phát triển nhanh hơn và mạnh mẽ hơn 2/Cải thiện chức năng cốt lõi của nền tảng của chúng tôi và 3/ Cung cấp sự linh hoạt hơn cho khách hàng để tích hợp Amplify vào cấu hình triển khai hiện có của họ. Điều này cho phép bạn sử dụng Amplify để dễ dàng triển khai các ứng dụng fullstack cho dù bạn là một công ty khởi nghiệp giai đoạn đầu hay một đội ngũ doanh nghiệp.
Trong blog này, chúng tôi sẽ hướng dẫn qua các quy trình làm việc đội ngũ và các cải tiến môi trường phát triển mà phiên bản mới của Amplify cung cấp. Nếu bạn muốn tìm hiểu thêm về thế hệ thứ hai hoàn toàn mới của Amplify với một trải nghiệm lập trình fullstack TypeScript DX hoặc nếu bạn muốn theo dõi trong khi đọc, hãy kiểm tra blog của chúng tôi trước, sau đó quay lại và đọc bài đăng này về các cải tiến chu kỳ phát triển!
Phát triển
Amplify đã giới thiệu ba tính năng mới nâng cao trải nghiệm phát triển: các cloud sandboxes cho mỗi nhà phát triển để lặp lại nhanh hơn trong quá trình tạo ứng dụng, quản lý secrets, và tích hợp AWS Cloud Development Kit (AWS CDK) để tăng khả năng tùy chỉnh.
Cloud Sandboxes Cho Mỗi Nhà Phát Triển
Tất cả các đội ngũ sử dụng Amplify sẽ được hưởng lợi từ các môi trường sandboxes mới cho mỗi nhà phát triển của nó. Các cloud sandboxes này, dành riêng cho phát triển địa phương, triển khai các AWS backend chất lượng cao để sử dụng trong khi bạn xây dựng. Chúng cho phép bạn lặp lại logic phía sau nhanh chóng — mỗi lần bạn lưu mã của mình, sandbox của bạn sẽ triển khai lại các tài nguyên đám mây dựa trên nhu cầu của bạn. Ví dụ, nếu bạn cập nhật lược đồ dữ liệu Amplify của mình, sandbox sẽ tự động thay đổi cơ sở dữ liệu của bạn để bạn có thể kiểm tra logic trong ứng dụng của mình. Mỗi nhà phát triển làm việc trong sandbox riêng của mình, vì vậy việc lặp lại nhanh trong phát triển sẽ không dẫn đến việc các nhà phát triển làm việc chồng chéo lên nhau. Trong sơ đồ dưới đây, bốn nhà phát triển có thể làm việc độc lập về các tính năng fullstack mà không làm gián đoạn môi trường của nhau:
Để chạy một sandbox, bạn chỉ cần mở ứng dụng Amplify Gen 2 và chạy lệnh sau trong cửa sổ lệnh của bạn
Các cloud sandboxes được thiết kế để tồn tại ngắn hạn, khi bạn đã hoàn thành việc phát triển, hãy hủy sandbox và tạo một cái mới lần sau khi bạn cần!
Tích hợp AWS CDK
Khi các business requirement phát triển, các nhà phát triển có thể cần thêm các trường hợp sử dụng không được hỗ trợ sẵn bởi Amplify. Amplify giờ đây được xây dựng dựa trên AWS CDK, điều này làm cho việc thêm các tài nguyên tùy chỉnh và ghi đè các tài nguyên mà Amplify sử dụng trở nên trơn tru. Ví dụ, một nhà phát triển có thể sử dụng AWS CDK để kết nối một bộ nhớ đệm Redis, triển khai các quy tắc bảo mật tùy chỉnh, triển khai các container trên AWS Fargate, hoặc kết nối với Amazon Bedrock cho AI/ML. Cơ sở hạ tầng được định nghĩa thông qua code AWS CDK được triển khai cùng với backend của ứng dụng Amplify mỗi khi bạn thực hiện git push. Điều này có nghĩa là bạn có thể xây dựng với sự dễ dàng sử dụng và đơn giản của Amplify, nhưng bạn không cần lo lắng về việc phát triển vượt quá nó khi các yêu cầu kinh doanh của bạn phát triển.
Nếu bạn muốn thiết lập một chính sách loại bỏ tùy chỉnh trên thực thể xác thực được cung cấp bởi Amplify, ví dụ, bạn có thể thêm cái sau vào tệp backend.ts của bạn:
Secrets
Amplify Gen 2 cung cấp quản lý trung tâm của secrets và các biến môi trường. Secrets cho phép bạn cấu hình các giá trị đặc thù cho môi trường một cách an toàn như khóa đăng nhập xã hội, biến môi trường cho chức năng, secret chức năng, và các dữ liệu nhạy cảm khác cần thiết cho ứng dụng của bạn qua các môi trường. Những secrets này có thể được giới hạn cho tất cả các nhánh đã triển khai, hoặc chỉ những nhánh cụ thể. Bạn có thể thiết lập bí mật cả trong local sandbox của mình, ví dụ:
Hoặc trong production thông qua console:
Bạn có thể access secrets trong code của chính mình!
Triển khai
Amplify cũng có các khả năng mới để gửi ứng dụng với toàn bộ nhóm của bạn, bất kể quy trình phát triển nào bạn theo dõi. Hãy cùng tìm hiểu quy trình làm việc của bạn với Amplify cho ba chiến lược triển khai khác nhau: Git flow, GitHub/pull request flow và triển khai dựa trên trunk. Sau đó, chúng ta sẽ nói về các tính năng mới cho quản lý kho lưu trữ và bí mật.
Git Flow
Git flow là một mô hình nhánh sử dụng hai nhánh chính: một nhánh chính cho các bản phát hành production và một nhánh develop để tích hợp các tính năng. Các nhà phát triển tạo nhánh feature từ nhánh develop, hợp nhất chúng trở lại vào nhánh develop sau khi hoàn thành và thường xuyên hợp nhất nhánh develop vào nhánh main để phát hành. Nó cũng giới thiệu các nhánh riêng biệt cho các bản vá lỗi và bản phát hành, cung cấp một cách có cấu trúc để quản lý các luồng phát triển song song.
Hệ thống CI/CD của Amplify được thiết kế để làm việc rất tốt với quy trình này. Tất cả mã Amplify của bạn, và do đó là phần sau và cloud logic của bạn, sẽ tồn tại trong kho mã của bạn bằng mã TypeScript, vì vậy các nhánh Git của bạn sẽ chứa tất cả mã nguồn cần thiết để triển khai giao diện người dùng và phần sau của bạn. Bạn có thể có một môi trường triển khai cho nhánh main và nhánh develop của bạn.
Tự động triển khai các nhánh tính năng fullstack
Trong Amplify Console, bạn có thể định nghĩa các mẫu nhánh như * hoặc feature/* và tự động triển khai bất kỳ nhánh nào khớp với mẫu đó trong kho của bạn đến Amplify. Việc chuyển các thay đổi từ dev sang prod đơn giản như hợp nhất các thay đổi từ nhánh dev sang nhánh prod của bạn.
Kiểm tra hộp ‘Tự động ngắt kết nối nhánh’ ở bên phải sẽ tự động ngắt kết nối nhánh khỏi Amplify khi bạn xóa nhánh Git từ kho lưu trữ của bạn.
Miền phụ tùy chỉnh tự động
Một khi bạn thiết lập một miền tùy chỉnh, bạn có thể muốn các nhánh tính năng tự động triển khai hoặc các bản xem trước PR của bạn có miền phụ dễ nhớ. Bạn có thể cấu hình Amplify để tạo các miền phụ này dựa trên một mẫu bạn chỉ định.
GitHub/Pull request Flow
Một cách tiếp cận phổ biến khác mà các đội sử dụng là có một nhánh main duy nhất cho sản xuất, và sau đó mỗi nhà phát triển sẽ tạo các yêu cầu kéo đến nhánh main đó từ các fork họ tạo để hợp nhất các tính năng vào sản xuất. Trong kịch bản này, chúng ta thấy khách hàng triển khai một nhánh main duy nhất đến Amplify, và sau đó kích hoạt các bản xem trước yêu cầu kéo để tạo các thể hiện triển khai yêu cầu kéo tạm thời.
Bây giờ, khi một yêu cầu kéo được mở, Amplify sẽ tự động triển khai một nhánh yêu cầu kéo fullstack đến Amplify dưới dạng một môi trường tạm thời có thể truy cập tại https://pr-#.mydomain.com
Khi pull request được hợp nhất, toàn bộ nhánh xem trước fullstack push request sẽ được dỡ bỏ.
Triển khai dựa trên trunk
Triển khai dựa trên trunk là một chiến lược phát triển phần mềm khác nơi tất cả các nhà phát triển làm việc từ một trunk chung (hoặc nhánh main) và thường xuyên tích hợp các thay đổi của họ vào trunk. Chiến lược này nhấn mạnh tích hợp liên tục và hợp tác, giảm nguy cơ xung đột khi hợp nhất và cho phép các chu kỳ phản hồi nhanh hơn. Trong triển khai dựa trên trunk, các nhà phát triển tạo các nhánh tính năng ngắn hạn, hợp nhất chúng vào trunk càng sớm càng tốt, và dựa vào các bài kiểm tra tự động với các giai đoạn ống dẫn để đảm bảo sự ổn định của kho mã.
Triển khai AWS đa tài khoản
Mặc dù Amplify không trực tiếp cung cấp một quy trình làm việc dựa trên pipeline/stage-based, khách hàng giờ đây có thể sử dụng CI/CD pipeline riêng của họ như AWS CodePipeline hoặc Amazon CodeCatalyst để triển khai ứng dụng fullstack của họ theo một quy trình làm việc dựa trên ống dẫn. Bạn có thể theo dõi hướng dẫn này để sử dụng Amplify với Amazon CodeCatalyst để theo chiến lược dựa trên trunk.
Các đơn và đa kho lưu trữ
Amplify thích ứng với các cấu hình kho lưu trữ khác nhau. Nó tích hợp với các công cụ kho lưu trữ đơn như Nx hoặc yarn workspaces, cho phép các đội quản lý nhiều ứng dụng trong một kho lưu trữ duy nhất. Nếu bạn có các đội phát triển giao diện người dùng và phần sau riêng biệt, Amplify cũng hỗ trợ sử dụng các kho lưu trữ riêng biệt cho các kho mã giao diện người dùng và phần sau.
Bước tiếp theo
Bài đăng blog này khám phá cách các đội có thể tận dụng Amplify để phát triển và triển khai các ứng dụng full-stack bất kể quy mô của họ. Bắt đầu với Amplify bằng cách theo dõi các hướng dẫn Quickstart tutorial của chúng tôi!