2.2.1 Amazon Elastic Compute Cloud
Amazon Elastic Compute Cloud - Amazon EC2 là môi trường tính toán ảo cung cấp khả năng tính toán trong đám mây. AWS EC2 cho phép người dùng có thể tạo, khởi động và tắt máy ảo theo nhu cầu. Máy ảo hỗ trợ nhiều hệ điều hành khác nhau như Red Hat Enterprise, Amazon Linux AMI, Windows Server 2003, Oracle Enterprise Linux, OpenSolaris, openSUSE Linux, Ubuntu Linux,v.v. Máy ảo cũng hỗ trợ nhiều phần mềm như Oracle 11g, Microsoft SQL Server 2005 Standard Edition, Apache Web Server, IIS / ASP.Net, Java Application Server, .v.v.
Giao diện dịch vụ web đơn giản Amazon EC2 cho phép bạn dễ dàng cấu hình. Nó cung cấp cho bạn toàn quyền kiểm soát tài nguyên máy tính của bạn. Với Amazon EC2 chỉ cần vài phút là bạn tạo một server mới đơn giản, tiện lợi, cho phép bạn nhanh chóng mở rộng quy mô. Amazon EC2 tiết kiệm chi phí đầu tư, thời gian bằng cách cho phép bạn chỉ trả tiền cho những dịch vụ mà bạn thực sự sử dụng. Amazon EC2 cung cấp cho developers các công cụ để xây dựng các ứng dụng mềm dẻo và kiểm soát lỗi.
EC2 sử dụng Xen ảo hóa. Mỗi một máy ảo, được gọi là một "Instance", có chức năng như một máy chủ riêng ảo. Kích thước của instance dựa trên " Elastic Compute Unit". Hiệu suất của các máy ảo khác nhau có thể thay đổi. Tính đến tháng 12 năm 2012, các loại dịch vụ sau đây được cung cấp:
o Theo yêu cầu – On-demand: trả tiền theo giờ mà không có cam kết
o Reserved: trường hợp thuê với giảm giá nhận thanh toán một lần về phí theo giờ
o Spot: Dịch vụ thầu dựa trên (chạy các công việc chỉ khi giá giao ngay thấp hơn giá thầu theo quy định của nhà thầu-giá giao ngay là tuyên bố được cung cấp theo yêu cầu dựa trên, tuy nhiên, nghiên cứu bác bỏ tuyên bố này
2.2.2 Amazon Simple Storage Service
Amazon S3 ( Simple Storage Service ) là một dịch vụ web lưu trữ tập tin trực tuyến được cung cấp bởi Amazon Web Services . Amazon S3 cung cấp lưu trữ thông qua giao diện dịch vụ web ( REST, SOAP, và BitTorrent ). Amazon ra mắt dịch vụ S3, ở Hoa Kỳ tháng 3 năm 2006 và ở châu Âu vào tháng 11 năm 2007.
Amazon S3 chứa 3 khái niệm lưu trữ : object, bucket, và key. Object là đối tượng nền tảng trong S3, chứa các dữ liệu và siêu dữ liệu (metadata) ,và kích thước tối đa có thể là 5GB. Các object có thể được lưu trữ trong bucket. Bucket cung cấp một namespace duy nhất để chứa các object. Key dùng để nhận biết các object trong bucket
Amazon S3 sử dụng cơ sở hạ tầng lưu trữ mở rộng tương tự cho Amazon.com sử dụng để chạy mạng thương mại điện tử toàn cầu. Amazon S3 được báo cáo là lưu trữ nhiều hơn 2 nghìn tỷ đối tượng vào tháng 04/2013. S3 lưu trữ gồm web, lưu trữ hình ảnh, và lưu trữ cho hệ thống sao lưu . S3 đảm bảo 99,9% thời gian hoạt động hàng tháng, tức là không quá 43 phút của thời gian downtime mỗi tháng.
Chi tiết về thiết kế của S3 không được công bố bởi Amazon, mặc dù nó rõ ràng quản lý dữ liệu với một kiến trúc lưu trữ đối tượng. Theo Amazon, thiết kế của S3 nhằm cung cấp khả năng mở rộng, tính sẵn sàng cao và độ trễ thấp. S3 được thiết kế để cung cấp 99,999999999% độ bền và 99,99% sẵn sàng của các đối tượng trên một năm, mặc dù không có SLA cho độ bền.
2.2.3 Amazon Virtual Private Cloud
Amazon Virtual Private Cloud – AmazonVPC là một dịch vụ điện toán đám mâythương mại cung cấp cho người dùng một đám mây riêng ảo, bảo mật cao trong môi trường AWS. Khách hàng doanh nghiệp có thể truy cập đến Amazon EC2 thông qua VPN có sẵn trên Amazon VPC. Không giống như trường hợp EC2 truyền thống, với Amazon EC2 trong VPC bạn có thể tạo nhiều private subnet, hoặc chỉ định private
ip address cho AWS EC2, và cấu hình bảng định tuyến và cổng mạng, v.v. VPC cung cấp kiểm soát bảo mật tốt hơn.
Bạn có thể dễ dàng tùy chỉnh các cấu hình mạng cho Amazon VPC của bạn. Ví dụ , bạn tạo ra một mạng Public phải đối mặt với cho máy chủ web của bạn có quyền truy cập vào Internet, và đặt các hệ thống phụ trợ của bạn chẳng hạn như cơ sở dữ liệu hoặc các máy chủ ứng dụng trong một subnet tư nhân phải đối mặt với không truy cập Internet. Với Amazon VPC, bạn có thể tận dụng nhiều lớp bảo mật, bao gồm các nhóm bảo mật và danh sách kiểm soát truy cập mạng, để giúp kiểm soát truy cập vào các trường hợp EC2 của Amazon trong mỗi subnet .
Bảo mật AWS VPC có hai lớp: trước hết, AWS VPC sử dụng nhóm bảo mật như tường lửa để kiểm soát giao thông ở mức thể hiện, trong khi nó cũng sử dụng danh sách kiểm soát truy cập mạng như một bức tường lửa để kiểm soát lưu lượng truy cập ở cấp độ mạng.
Bạn có thể kết nối VPC của bạn với Internet, với datacenter, hoặc các VPC khác, dựa trên các tài nguyên của AWS mà bạn muốn public hoặc bạn muốn dùng cục bộ,.v.v. Kết nối trực tiếp với Internet( public subnets) - bạn có thể Launch AWS EC2 instance cho phép truy cập public từ Internet. Kết nối Internet bằng cách sử dụng Network Address Translation ( private subnets) - có thể được sử dụng cho trường hợp mà bạn không muốn cho phép truy cập địa chỉ trực tiếp từ Internet. Kết nối giữa các VPCs -Peer VPCs với nhau để chia sẻ tài nguyên trên nhiều mạng ảo thuộc sở hữu của các tài khoản khác của bạn hoặc các tài khoản AWS khác. Kết hợp các phương pháp kết nối để phù hợp với nhu cầu của ứng dụng của bạn - bạn có thể kết nối VPC của bạn để cả hai mạng Internet và datacenter của bạn và cấu hình Amazon VPC bảng định tuyến để chỉ đạo tất cả các lưu lượng truy cập đến đích thích hợp của nó .
Bảo mật - Amazon VPC cung cấp tính năng bảo mật tiên tiến như các nhóm bảo mật và danh sách kiểm soát truy cập mạng để cho phép lọc inbound và outbound ở mức instance, mức subnet. Ngoài ra, bạn có thể lưu trữ dữ liệu trong Amazon S3 và hạn chế truy cập bên ngoài hoặc chỉ có thể truy cập từ trường trong VPC của bạn.
Đơn giản - bạn có thể tạo ra một cách nhanh chóng và dễ dàng sử dụng VPC. Bạn có thể chọn một trong các thiết lập mạng thông thường phù hợp nhất với nhu cầu của bạn và nhấn "Start VPC Wizard." Mạng con, dãy IP, bảng định tuyến, và các nhóm bảo mật được tự động tạo ra cho bạn, vì vậy bạn có thể tập trung vào việc tạo ra các ứng dụng chạy trong,
Nhìn chung, Amazon VPC có 4 kiến hạ tầng như sau:
2.2.4 Amazon OpsWorks
Chef là một nền tảng tự động mã nguồn mở được xây dựng để giải quyết những thách thức khó khăn nhất cơ sở hạ tầng trên hành tinh. Chef cung cấp cho bạn sức mạnh và tính linh hoạt bạn cần di chuyển nhanh hơn trong một thế giới phức tạp - từ dự phòng nhanh chóng và triển khai các máy chủ để phân phối tự động các ứng dụng và dịch vụ với bất cứ quy mô nào.
Quản lý máy chủ của bạn bằng cách viết code, không chạy bằng lệnh(thông qua Cookbooks). Tích hợp chặt chẽ với các ứng dụng của bạn, cơ sở dữ liệu, thư mục LDAP, và nhiều hơn nữa(thông qua Libraries). Dễ dàng cấu hình ứng dụng đòi hỏi kiến thức về toàn bộ cơ sở hạ tầng của bạn: hệ thống gì đang chạy trên ứng dụng của tôi?, máy chủ cơ sở dữ liệu hiện nay là gì? ") (thông qua Search). Tạo bản sao hoàn hảo của môi trường bảo đảm chất lượng, môi trường trước khi đưa lên product(sản phẩm), .v.v. (thông qua Enviroments).
AWS OpsWorks là một dịch vụ quản lý application dễ dàng triển khai và vận hành. Bạn có thể định nghĩa kiến trúc của application và các đặc điểm kỹ thuật của mỗi thành phần bao gồm cài đặt gói phần mềm, cấu hình phần mềm và tài nguyên như lưu trữ. Bắt đầu từ mẫu cho các công nghệ phổ biến như máy chủ application và cơ sở dữ liệu hoặc xây dựng của riêng bạn để thực hiện bất kỳ nhiệm vụ từ những script. AWS OpsWorks bao gồm tự động hóa quy mô application của bạn dựa trên thời gian hoặc tải và linh động cấu hình cũng như thay đổi biến biến môi trường làm việc.
AWS OpsWorks hỗ trợ một loạt các kiến trúc, từ các ứng dụng web đơn giản cho các ứng dụng tùy chỉnh rất phức tạp, và bất kỳ phần mềm từ một kịch bản cài đặt. Từ AWS OpsWorks hỗ trợ Chef recipes và Bash scripts, bạn có thể tận dụng các cấu hình cộng đồng được xây dựng như MongoDB và Elasticsearch. Bạn có thể hình dùng mô hình application của bạn với các layers được định nghĩa tài nguyên và cấu hình phần mềm. Bạn có thể mở rộng và thích ứng với các layers được xây dựng sẵn hoặc bạn có thể tự tạo chúng.
dụng của bạn. Bạn có thể sao chép các cấu hình phần mềm trên các AWS EC2
instances mới và áp dụng các thay đổi cho tất cả các Instances đang chạy, đảm bảo cấu hình phù hợp bất cứ lúc nào. Bạn có thể triển khai ứng dụng của bạn từ kho nguồn như Git và Subversion tới một hoặc hàng trăm EC2 Instances chỉ vài cái click chuột..
AWS OpsWorks cung cấp cấu hình linh động, cho phép bạn quản lý hiệu quả các ứng dụng, bao gồm hỗ trợ tự động mở rộng quy mô EC2 Instances. Mỗi EC2 Instances mới online được built với kỹ thuật tự động và có thể thay đổi cấu hình của nó để đáp ứng với sự kiện hệ thống. Điều này cho phép bạn, ví dụ, thay đổi cấu hình của một ứng dụng web khi một máy chủ web mới online - trực tuyến mà không cần bất kỳ các bước thủ công.
AWS OpsWorks cung cấp một cách đơn giản và linh hoạt để tạo và quản lý stacks và các ứng dụng. Nó hỗ trợ một bộ tiêu chuẩn của các thành phần, bao gồm cả máy chủ ứng dụng, máy chủ cơ sở dữ liệu, cân bằng tải, và nhiều hơn nữa mà bạn có thể sử dụng để tích hợp vào stacks. Tất cả các thành phần đi kèm với một cấu hình tiêu chuẩn và đã sẵn sàng để chạy. AWS OpsWorks cung cấp cho bạn những công cụ để tùy chỉnh các cấu hình gói tiêu chuẩn, cài đặt các gói bổ sung, và thậm chí tạo các thành phần tùy chỉnh của riêng bạn. AWS OpsWorks cũng cung cấp một cách để quản lý các tài nguyên AWS liên quan, như Elastic IP addresses và Amazon EBS.
AWS OpsWorks bao gồm các thành phần sau:
o Stacks - Stack là cốt lõi cấu thành AWS OpsWorks. Stack giúp bạn quản lý các nguồn tài nguyên như là một nhóm và cũng xác định một số cài đặt cấu hình mặc định, chẳng hạn như hệ điều hành của EC2 Instances và AWS region. Nếu bạn muốn cô lập một số thành phần stacks từ tương tác người dùng trực tiếp, bạn có thể chạy các stacks trong một VPC.
o Layers - Bạn định nghĩa các thành phần của stacks bằng cách thêm một hoặc nhiều layer . Một layer cơ bản là một kế hoạch chi tiết để chỉ ra cách để cấu hình một tập hợp các Amazon EC2 Instancs cho một mục đích cụ thể , chẳng hạn như phục vụ các ứng dụng hoặc lưu trữ một máy chủ cơ sở dữ liệu . Bạn gán EC2 Instances với một layer hoặc nhiều layers. AWS OpsWorks bao gồm một bộ
layer có sẵn, nó hổ trợ cho các ứng dụng như: Application server: Java App Server, Node.js App Server, PHP App Server, Rails App Server, Static Web Server; Database server: MySQL; Load balancer: Elastic Load Balancing, HAProxy; Monitoring server: Ganglia; In-memory key-value store: Memcached
o Instances - mỗi layer phải có ít nhất một instance.
o Apps - Bạn lưu trữ các ứng dụng và các tập tin có liên quan trong một kho lưu trữ như Amazon S3 bucket. Mỗi ứng dụng được đại diện bởi một App , xác định loại ứng dụng và chứa các thông tin mà AWS OpsWorks cần phải triển khai ứng dụng từ repository tới Instance. Bạn có thể triển khai apps theo hai cách:
Automatically(tự động) - khi bạn start(bắt đầu) một app server instance, AWS OpsWorks tự động triển khai tất cả các apps của các loại phù hợp; các Java apps được triển đến Java App Server layer's instance; Manually - Nếu bạn có một app mới hoặc muốn cập nhật sẵn có, bạn có thể tự triển khai nó đến các Instances của bạn. Khi bạn triển khai một app, AWS OpsWorks chạy Deploy receipes trên stack's instances . App server layer's Deploy recipes tải về các app từ các kho lưu trữ đến instance và thực hiện các nhiệm vụ liên quan như cấu hình máy chủ và khởi động lại daemon. AWS OpsWorks chạy Deploy receipes trên toàn bộ stacks , cho phép các layer's instances khác thay đổi cấu hình của nó một cách thích hợp.
2.2.5 Amazon CloudFront
Amazon CloudFront là một mạng phân phối dữ liệu để chuyển đổi nội dung(CDN – Content Delivery Network). Amazon CloudFont hoạt động cùng với Amazon S3 để cung cấp các bản sao của đối tượng từ vị trí gần nhất đến ứng dụng đang gọi. CloudFront đã đặt nhiều server ở các nước Châu Âu(Anh, Ireland, Phần Lan, Đức, Tây Ban Nha), ở Châu Á( Hong Kong, Singapore, Jajan, Taiwan, India), ở Úc, Nam Mỹ, và nhiều bang ở Mỹ.
2.2.6 Amazon SES – SNS – SQS
Amazon SES gán một ID tin nhắn duy nhất cho mỗi email mà bạn gửi thành công. Khi Amazon SES nhận được một thư bị trả lại(bounces) hoặc tin nhắn khiếu nại(complaint) từ một ISP, AWS SES sẽ chuyển tiếp tin nhắn phản hồi cho bạn. Định dạng của thông điệp thư bounces và complaint khác nhau giữa các ISP, và nếu bạn chọn để thiết lập Amazon SNS topics cho những tin nhắn đó, phân loại chúng thành các đối tượng JSON.
Amazon Simple Notification Service (Amazon SNS) là một dịch vụ web cho phép các ứng dụng, người dùng cuối cùng, và các thiết bị ngay lập tức có thể gửi và nhận các thông báo từ các cloud.
Amazon SQS là dịch vụ truy vấn đám mây để lưu trữ tin nhắn. Các lập trình viên có thể tận dụng SQS để chia sẻ dữ liệu truy vấn thông qua ứng dụng phân tán. SQS hỗ trợ tất cả các chức năng truy vấn cơ bản như tạo, lập danh sách, và xóa truy vấn cũng như gửi, nhận và xóa tin nhắn. Bạn có thể sử dụng Amazon SQS cùng với EC2 và S3 để xây dựng các luồng làm việc phức tạp.
CHƯƠNG III: CÁC ỨNG DỤNG TRÊN AMAZON WEB SERVICES
3.1 Ứng dụng AWS SES – SNS - SQS
Mô tả: Trong các chiến dịch email marketing, hoặc trả lời email, thông báo email đến nhiều khách hàng, chăm sóc khách hàng,v.v. trong đó sẽ có những email gởi đi thành công, hoặc thất bại. Email fail này có thể là email bounces( không tồn tại email) hoặc email complaints( dạng email spam). Làm sao nhà quản trị quản lý được các dạng email này, biết được những email nào gởi đi không thành hoặc là email spam, để có thể chăm sóc khách hàng, thay đổi dịch vụ, v.v. ngày càng tôt hơn.
Giả sử bạn sử dụng Amazon SES để gửi thông báo sản cho một danh sách các địa chỉ email. Bạn lưu trữ danh sách trong một cơ sở dữ liệu và gửi một email mỗi người nhận thông qua Amazon SES. Bạn nhận được email bounces và complaints một lần mỗi ngày, tự giải thích các tin nhắn đó trong các email gửi đến, và cập nhật danh sách. Bạn muốn tự động hoá quá trình này bằng cách sử dụng các thông báo của Amazon SNS với một nhiệm vụ theo lịch trình có sẵn. Như mô hình bên dưới:
Chú thích mô hình trên: SES nhận email phản hồi đẩy về SNS topic: ses- bounces-topic; ses-complaints-topic. SNS topic sẽ đẩy về SQS queue: ses-bounces-