Ba dịch vụ khiến đám mây trở nên đáng giá
Ngày 06/07/2024 - 07:07.png)
Một trong những chương trình YouTube yêu thích của tôi là Worth It của BuzzFeed. Trong chương trình, ba người dẫn chương trình sẽ thử một món ăn nhất định do ba nhà hàng khác nhau chế biến, được bán ở ba mức giá khác nhau. Vào cuối buổi nếm thử, những người dẫn chương trình sẽ đánh giá nhà hàng nào họ thích nhất và giải thích lý do. Bên cạnh việc phát những cảnh quay tuyệt đẹp về những cuộn sushi và bít tết trên màn hình của bạn, chương trình cũng cho bạn thấy cách những người sành ăn cân nhắc các đánh giá dựa trên giá trị và chi phí. Món ăn đắt tiền, mặc dù hầu như luôn có chất lượng tốt nhất, nhưng không phải lúc nào cũng được đánh giá cao. Nhiều lần, những người dẫn chương trình muốn đưa người quan trọng của mình đi hẹn hò vào buổi tối để gọi món ăn có giá trung bình. Hoặc họ chọn món ăn giá rẻ gợi cho họ nhớ đến món ăn nấu tại nhà của bố mẹ. Giá trị có đủ mọi hình dạng và kích cỡ.
Các dịch vụ gốc đám mây cũng tương tự như vậy. Tôi đã học được rất nhiều về nhiều dịch vụ AWS khác nhau trong vài năm qua và tất cả chúng đều có các đề xuất giá trị khác nhau. Gần đây tôi đã nói một chút về hạt nhân tùy chọn của đám mây : nếu bạn muốn kiểm soát nhiều nhất đối với ngăn xếp của mình, bạn sẽ muốn gắn bó với một số ít các dịch vụ cực kỳ đáng tin cậy và có thể thay thế. Tuy nhiên, nếu bạn nới lỏng một số ràng buộc nhất định, bạn có thể cân nhắc một số dịch vụ được quản lý mà tôi nghĩ là rất đáng giá.
RDS
AWS Relational Database Service là một dịch vụ được quản lý gồm một bộ sưu tập các cơ sở dữ liệu khác nhau, chẳng hạn như MySQL và PostgreSQL, cùng nhiều dịch vụ khác. AWS RDS có một số hạn chế khiến tôi không thể tận dụng nó cho dự án cá nhân mà tôi đang thực hiện trong thời gian nghỉ phép, điều này khiến tôi phải tự mình tìm hiểu cách triển khai cơ sở dữ liệu trên AWS. Khi làm như vậy, tôi đã học được cách đánh giá cao thời gian mà RDS có thể tiết kiệm cho một kỹ sư trong quá trình sản xuất.
Chỉ là một ví dụ, quản trị viên cơ sở dữ liệu (DBA) thường cấu hình kết hợp tên người dùng và mật khẩu gốc cho mục đích quản trị. Vì lỗi trong việc xử lý quyền gốc có thể dẫn đến hành động phá hoại xung quanh dữ liệu khách hàng, AWS loại bỏ con người khỏi vòng lặp trong việc tạo bí mật bằng cách sử dụng AWS Secrets Manager để tự động tạo cặp khóa/giá trị bí mật đóng vai trò là tên người dùng và mật khẩu của cơ sở dữ liệu, có thể được AWS Key Management Service gieo hạt . Tuy nhiên, bí mật càng được sử dụng tích cực lâu thì càng dễ bị tấn công và cũ vì các phương pháp và dịch vụ mã hóa có thể bị xâm phạm. Do đó, cách tốt nhất là xoay vòng bí mật của bạn sau mỗi vài tháng.
Mỗi cơ sở dữ liệu có một tệp cấu hình khác nhau và có thể có hành vi vòng đời khác nhau (ví dụ: mã tín hiệu và thông báo) khi khởi động và tắt. Do đó, việc luân chuyển bí mật tự động diễn ra bằng cách sử dụng các tài nguyên tùy chỉnh của AWS Lambda và được xác định bằng AWS CloudFormation , giải pháp cơ sở hạ tầng dưới dạng mã của AWS. Vì thời gian chạy AWS Lambda cơ bản hỗ trợ lịch trình loại bỏ của từng ngôn ngữ, nên hàm Lambda này có thể cần được cập nhật bất cứ khi nào bản phát hành phiên bản chính của thời gian chạy cơ bản được nhóm AWS Lambda công bố và chấp nhận. Mặc dù AWS Lambda đảm bảo các hàm cũ hơn có thể chạy liên tục nếu không được cập nhật, việc cập nhật hoặc tạo hàm mới yêu cầu khả năng tương thích với một trong các thời gian chạy hiện tại của Lambda. Việc tạo một phiên bản RDS mới ngụ ý việc tạo một công cụ luân chuyển bí mật tự động mới, công cụ này sẽ cần phải tạo một hàm mới.
Nếu điều này nghe có vẻ phức tạp với bạn, đừng lo lắng — nó cũng có vẻ phức tạp với tôi. Đó là lý do tại sao tôi, mắt tròn xoe sau khi nhận ra khó khăn to lớn khi triển khai tính năng này, đã chọn không làm như vậy. Điều tuyệt vời là AWS Secrets Manager tự động biết cách xoay vòng các bí mật cho các tài nguyên AWS RDS. Vì quy trình này là tự động, RDS có thể xoay vòng các bí mật này sau mỗi vài ngày thay vì sau mỗi vài tháng và không có chi phí phát sinh nào khi thực hiện việc này.
RDS cũng xử lý thuận tiện các tác vụ khác, chẳng hạn như di chuyển cơ sở dữ liệu, tính khả dụng cao và sao chép/chuyển đổi dự phòng, và sao lưu tự động, tất cả đều có hậu quả nghiêm trọng hơn nhiều đối với tính toàn vẹn và tính khả dụng của dữ liệu của bạn. Đây là lý do tại sao AWS RDS là một trong những dịch vụ AWS đắt nhất mà tôi vẫn muốn giới thiệu. Tin tôi đi, với tư cách là người đã dành bốn tháng qua không vận chuyển, nếu bạn không sử dụng RDS, con đường vận chuyển của bạn sẽ dài hơn nhiều . Đơn giản là không phải là rủi ro đủ tốt đối với một sản phẩm có khả năng kiếm tiền hợp lý.
Nếu bạn thực sự không muốn sử dụng RDS do một số hạn chế của nó (ví dụ: không có quyền truy cập gốc vào máy chủ, thiếu tiện ích mở rộng PostgreSQL), tôi vẫn có tin tốt cho bạn! Bạn không cần phải chọn một trong hai. Ví dụ: nếu bạn đang sử dụng PostgreSQL và bạn đã tạo một công cụ xử lý phân tích trực tuyến (OLAP) yêu cầu sử dụng tiện ích mở rộng PostgreSQL tùy chỉnh, chỉ cần triển khai một phiên bản PostgreSQL lên EC2 bằng Packer và CloudFormation, và kết nối với một phiên bản RDS bằng trình bao bọc dữ liệu nước ngoài (FDW) postgres_fdw của PostgreSQL để tạo tham chiếu bảng nước ngoài trong phiên bản tùy chỉnh của bạn. AWS RDS hỗ trợ kết nối đến các phiên bản PostgreSQL khác theo cách này. Bây giờ bạn có được độ tin cậy của RDS và khả năng tùy chỉnh và tùy chọn của cơ sở dữ liệu dưới dạng ứng dụng của bạn!
Mặt trận đám mây
Tôi đã làm việc chuyên nghiệp với tư cách là một nhà phát triển front-end, và điều tôi thực sự thích ở khách hàng người dùng cuối là số tiền bạn nhận được từ khoản đầu tư của mình. Họ rẻ để tạo và duy trì, đặc biệt là khi so sánh với cơ sở hạ tầng phụ trợ nghiêm túc. Họ cũng bán sản phẩm cho nhiều bên liên quan không phải là kỹ thuật viên. Tôi đã tìm ra bí mật của các ứng dụng JavaScript là AWS CloudFront . CloudFront là một mạng phân phối nội dung được quản lý (CDN) giúp đưa nội dung "gần hơn" với người dùng bằng cách đặt nội dung đó trên nhiều máy chủ khác nhau trên khắp thế giới. Nó kết nối với AWS S3 để lưu trữ trang web tĩnh (bước "npm build" mà bạn có thể thấy đối với nhiều ứng dụng React.js khác nhau) và AWS Route 53 (dịch vụ DNS được quản lý hoặc dịch vụ đưa $CLOUDFRONT.cloudfront.net đến $YOUR_DOMAIN.com).
Kết hợp CloudFront với việc sử dụng một khuôn khổ trang web tĩnh như hugo hoặc một khuôn khổ JavaScript dựa trên hiệu suất như Preact , bạn có thể tăng điểm chuẩn hiệu suất của mình (chẳng hạn như điểm chuẩn do Google Lighthouse tạo ra ) khá nhiều. Ví dụ, blog công nghệ của tôi, Bytes by Ying , có điểm là 98 phần trăm, với tổng thời gian chặn là 80ms. Tăng hiệu suất trang web giúp giảm tỷ lệ khách hàng rời bỏ và giúp tối ưu hóa SEO , giúp bán hàng và tiếp thị vui vẻ hơn.
Bạn cũng có thể dễ dàng mở rộng trang web của mình để hỗ trợ các nhà phát triển khác. Tôi tạo mẫu trang web của mình bằng AWS CloudFormation và Makefiles, vì vậy thiết lập từ đầu liên quan đến việc chạy một lệnh. Bạn cũng có thể triển khai các ứng dụng JavaScript trên cơ sở mỗi PR thông qua AWS CodeBuild và AWS CodePipeline thông qua các lần triển khai tự động hoặc một cú nhấp chuột để xác thực yêu cầu kéo, với chi phí thấp hoặc không mất phí. Kiểm tra UI/UX tự động rất tuyệt, nhưng để có được cảm nhận và hoàn thiện, bạn cần có sự can thiệp của con người. Bạn cũng có thể thực hiện điều đó thông qua GitLab, Netlify hoặc các nền tảng khác, nhưng cá nhân tôi thích AWS vì tính tùy chọn của nó (ví dụ: hoán đổi CodePipeline cho Jenkins) và cách chi phí của nó không tăng khi có thêm người dùng. Bạn chỉ cần tạo một tài khoản IAM mới, không có gì to tát, so với việc tăng giá gây hoảng loạn của Netlify sau ba nhà phát triển.
Tất cả các tính năng này thực sự tuyệt vời và được cung cấp với mức giá tuyệt vời. CloudFront miễn phí sử dụng cho hai triệu yêu cầu HTTP và băng thông truyền 50 GB mỗi tháng, đủ cho hầu hết các trang web tĩnh. Tất nhiên, nó không thực sự dành cho việc gửi lưu lượng truy cập ở mức megabyte một chữ số hoặc nhỏ hơn. Mục đích sử dụng thực sự của CloudFront có thể là chuyển mã âm thanh/video và phát trực tuyến nặng, khi bạn gửi hàng chục gigabyte dữ liệu cho mỗi yêu cầu và có rất nhiều yêu cầu đồng thời. Hãy nghĩ đến số liệu phát trực tiếp Super Bowl. Vì vậy, khi CDN cơ bản được thiết kế, thử nghiệm và xây dựng cho loại lưu lượng truy cập đó, thì các trang web của bạn sẽ luôn là những chú cá nhỏ trong ao. Do đó, giá cả rất cạnh tranh (theo AWS Cost Explorer , CloudFront đã khiến tôi mất 1,61 đô la trong năm nay cho 10 trang web tĩnh), trái ngược với giải pháp lưu trữ trang web chuyên dụng như Netlify có thể tốn kém hơn rất nhiều.
Dịch vụ đồng bộ thời gian EC2
Khi đọc những cuốn sách như Designing Data-Intensive Applications của Martin Kleppmann , tôi đã học được rằng một trong những vấn đề khó khăn hơn xung quanh các hệ thống phân tán là tính nhất quán. Đồng bộ hóa thời gian hỗ trợ tất cả các vấn đề về tính nhất quán, vì nếu hai máy tính không thể thống nhất về thời gian, chúng không thể sắp xếp các hoạt động như giao dịch cơ sở dữ liệu. Do đó, một số giải pháp gốc trên nền tảng đám mây như Cloud Spanner của Google Cloud Platform (GCP) tận dụng API đồng bộ hóa thời gian như TrueTime API cho một số hoạt động nhất định, như tạo ảnh chụp nhanh cơ sở dữ liệu, để có nhiều hơn "5 9" (> 99,999 phần trăm) khả dụng đầu cuối. Đồng bộ hóa thời gian liên quan đến việc sử dụng phần cứng chính xác như đồng hồ nguyên tử và quyền sở hữu mạng, các tính năng có thể cực kỳ tốn kém để triển khai trong giải pháp tại chỗ.
AWS cung cấp một cái gì đó tương tự trong Dịch vụ đồng bộ hóa thời gian EC2 của mình , cấp cho mọi phiên bản EC2 quyền truy cập vào các tham chiếu đồng hồ nguyên tử của riêng Amazon. Mặc dù dịch vụ này không quá phức tạp theo quan điểm của người dùng cuối, nhưng nó tạo thành một giả định cơ bản đằng sau các thiết kế hệ thống phức tạp hơn, điều này sẽ không thể thực hiện được nếu không có nó. Nếu bạn đã triển khai giải pháp đa máy chủ trên AWS, hãy đảm bảo bật đồng bộ hóa thời gian trên máy chủ của mình, như một yếu tố giảm thiểu để tránh đọc nhật ký gây hiểu lầm.
Tôi nghĩ rằng thật dễ để bỏ lỡ dịch vụ này. Cá nhân tôi thậm chí còn không biết nó tồn tại cho tất cả các phiên bản EC2 cho đến khi tôi tình cờ đọc được về nó. Nó cũng có thể bị đánh giá thấp. Nếu nó được bật và hoạt động bình thường, bạn thực sự không biết nó ở đó, cho đến khi một giây nhuận được áp dụng thỉnh thoảng. Tôi thấy rằng tôi đánh giá cao tài liệu tuyệt vời và tính đơn giản trong thiết kế hệ thống đã tăng lên khi tìm hiểu thêm về dịch vụ này.
Và phần tuyệt nhất là nó hoàn toàn miễn phí. Đó là một địa chỉ IP tĩnh do Amazon quản lý và bạn để lại một quy trình để thăm dò thời gian chính xác để cập nhật dịch vụ của mình. Vì đồng bộ hóa được xử lý bởi phiên bản tính toán của máy khách và vì các yêu cầu nhẹ nên dịch vụ có khả năng mở rộng khá tốt.
Các dịch vụ đám mây có thể khó quản lý và mở rộng quy mô, điều này có thể khiến việc đáp ứng một số yêu cầu phát triển trở nên khó khăn hơn. May mắn thay, các nhà cung cấp đám mây đã tích hợp hỗ trợ cho một số đề xuất khó khăn nhất của đám mây và cung cấp nhiều hơn những gì tôi đã trình bày ở đây trong các dịch vụ mang lại sự tiện lợi tuyệt vời và tốc độ phát triển nhanh hơn để giảm thiểu thời gian giao hàng.










