Người Dùng > 100


  • Dùng host riêng cho tầng web
  • Lưu dữ liệu ở Amazon RDS. Nó sẽ làm mọi thứ cho bạn.
  • Đó là tất cả những gì bạn cần

Người Dùng > 1000


Kiến trúc ứng dụng của bạn gặp vấn đề về tính sẵn sàng. Nếu host web hư, website của bạn sẽ sập.

Bạn sẽ cần một web instance ở một AZ khác. Điều này vẫn OK vì độ trễ giữa các AZ tính bằng vài mili giây, hầu như chúng nằm ở kế nhau.

Bạn sẽ cần một Slave database RDS chạy ở một AZ khác. Nếu có vấn đề với master, ứng dụng của bạn sẽ tự động chuyển sang slave. Không cần thay đổi ứng dụng của bạn ở giải pháp dự phòng này, bởi vì ứng dụng của bạn sử dụng một endpoint duy nhất.

Một Elastic Load Balancer (ELB) được thêm vào cấu hình, để chia tải người dùng giữa 2 host instance nằm ở hai AZ.

Elastic Load Balancer (ELB)

ELB là một bộ chia tải có độ sẵn sàng cao. ELB tồn tại ở tất cả AZ. Nó là endpoint DNS duy nhất của ứng dụng của bạn. Chỉ cần chỉa Route53 về nó, là nó sẽ chia tải web của bạn ra các host intance.

ELB có Health Checks (kiểm tra sức khỏe) và luôn bảo đảm rằng lưu lượng web không chảy vào host đã hư.

Nó tự mở rộng mà không cần bạn phải làm gì cả. Nếu nó gặp lưu lượng web tăng lên, nó tự mở rộng cả theo chiều ngang và chiều dọc. Bạn không cần quản lý nó. Khi mà ứng dụng của bạn mở rộng, ELB sẽ mở rộng theo.

Người Dùng > 10,000 – 100,000


more10000user


Ở cấu hình trước bạn có 2 instance nằm sau ELB, trong thực tế bạn có thể có 1000 instance nằm sau ELB. Đây gọi là mở rộng theo chiều ngang.

Bạn cần nhiều replicas cho database RDS. Điều này sẽ giảm tải bớt cho write master.

Cần xem xét hiệu suất và hiệu quả bằng cách giảm tải cho tầng web của bạn, bằng cách di chuyển vài lưu lượng ra nơi khác. Mang những nội dung tĩnh của ứng dụng ra Amazon S3 và Amazon CloudFront. CloudFront là Amazon’s CDN, lưu trữ dữ liệu của bạn ở 53 edge location ở toàn thế giới.

Amazon S3 là kho lưu trữ object

Nó không giống EBS, nó không phải là bộ lưu trữ gắn vào một EC2 instance. Nó là một object store, không phải block store.

Nó là một nơi rất tốt để lưu trữ nội dung tĩnh, như javascript, css, hình ảnh, video. Những loại nội dung này không cần phải nằm ở trên một EC2 instance.

Có độ bền cao.

Mở rộng không giới hạn. Ném vào bao nhiêu dữ liệu tùy thích.

Hỗ trợ object lớn đến 5TB

Có hỗ trợ mã hóa. Bạn có thể sử dụng mã hóa của Amazon, mã hóa của bạn, hay một dịch vụ mã hóa bên ngoài.

Amazon CloudFront là bộ đệm cho nội dung của bạn

Nó cache nội dung của bạn vào edge location, cung cấp cho người dùng của bạn độ trễ truy nhập nhỏ nhất có thể.

Nếu không có CDN, người dùng của bạn sẽ phải chịu độ trễ cao hơn khi truy nhập vào nội dung của bạn. Máy chủ của bạn sẽ chịu tải cao hơn, vì chúng vừa phải phục vụ nội dung, vừa phải phục vụ các truy nhập web.

Khi một người dùng cần truy nhập vào nội dung với tốc độ 60Gps, tầng web không biết thậm chí không biết chuyện đó đang xảy ra. Trong khi CloudFront sẽ xử lý các chuyện đó.

Bạn có thể giảm tải hơn nữa bằng cách đẩy việc lưu trữ trạng thái session ra khỏi tầng web.

Lưu trạng thái session vào ElastiaCache hoặc DynamoDB

Cách tiếp cận này đồng thời chuẩn bị cho hệ thống của bạn có thể hỗ trợ tính năng ‘tự mở rộng’ trong tương lai.

Bạn cũng còn có thể giảm tải bằng cách caching dữ liệu từ database vào ElasticCache.

Database không cần phải xử lý mọi việc đọc dữ liệu. Một bộ đệm có thể xử lý rất nhiều việc như vậy, và để cho database của bạn xử lý những việc quan trọng hơn.

Amazon DynamoDB – một NoSQL database

Bạn chỉnh lý lưu lượng dữ liệu mà bạn muốn. Bạn tự chọn lựa hiệu năng đọc ghi mà bạn muốn.

Hỗ trợ hiệu năng nhanh chóng, và ước lượng được.

Hoàn toàn phân tán và chịu được lỗi. Tồn tại ở nhiều AZ.

Là hệ thống lưu trữ key-value. Có hỗ trợ JSON.

Document có kích thước 400KB được hỗ trợ.

Amazon ElasticCache – hệ thống Memcachedhoặc Redis

Quản lý một cluster memcache không tạo thêm tiền cho bạn vì vậy nên để Amazon làm điều đó cho bạn.

Cluster sẽ tự động được mở rộng cho bạn. Nó là một kiến trúc tự sửa lỗi. Nếu một node bị lỗi, nodes mới sẽ tự động khởi động.

Bạn cũng có thể giảm tải bằng cách dời các nội dung động sang CloudFront

Nhiều người biết rằng CloudFront có thể xử lý nội dung tĩnh, như là các file, nhưng mà nó có thể xử lý nội dung động.Chủ đề này không được trình bày thêm ở bài viết này.

Auto Scaling


Nếu bạn chuẩn bị đủ dung lượng để hệ thống luôn luôn có thể xử lý lưu lượng đỉnh, ví dụ Black Friday, bạn đang phí tiền. Sẽ tốt hơn nếu bạn cung cấp năng lực xử lý theo đúng nhu cầu. ‘Auto Scaling’ cho phép bạn làm điều đó, tự động co dãn cluster của bạn.

Bạn luôn có thể định ra số tối thiểu và tối đa cho “hồ chứa” (pool) của bạn. Là người dùng, bạn có quyền định con số instance tối thiểu và tối đa là bao nhiêu.

CloudWatch là một dịch vụ quản lý được nhúng vào tất cả các ứng dụng

Các event của CloudWatch sẽ kích hoạt quá trình mở rộng

Bạn sẽ mở rộng độ sử dụng CPU? Mở rộng theo giảm độ trễ? lưu lượng mạng?

Bạn có thể tự tải lên hệ số đo của chính bạn lên CloudWatch. Nếu bạn muốn mở rộng theo một yếu tố nào đó thuộc ứng dụng của bạn, bạn có thể đẩy yếu tố đó lên CloudWatch, và báo cho “Auto Scaling” rằng bạn muốn mở rộng theo hệ số đo đó.

Số Người Dùng > 500,000


more500Kuser


Điều cần thêm vào trong cấu hình trước đây là thêm ‘Auto Scaling Group’ vào tầng web. Auto scaling group bao gồm 2 AZ, nhưng có thể nới rộng thành 3 AZ hoặc tới tổng số lượng AZ của region đó. Instance ở nhiều region không chỉ phục vụ cho tính mở rộng, mà còn ở tính sẵn sàng (availability).

Ví dụ bạn có 3 instance ở tần web hoặc có thể có đến 1000 instance. Hoặc bạn có thể muốn cấu hình tối thiểu 10 instance và tối đa 1000 instance.

ElasticCache được đùng để chia tải những tác vụ đọc thông thường từ database.

DynamoDB được dùng để chia tải dữ liệu Session

Bạn cần phải thêm vào các phần Theo Dõi (monitoring), đo lường (metric) và báo cáo (logging)

Đo lường ở cấp độ host. Xem xét thông số CPU ở instance trong cùng một autoscaling-group và tìm hiểu xem chuyện gì đang xảy ra.

Đo lường ở cấp độ tổng hợp. Xem xét thông số của Elastic Load Balancer để cảm nhận hiệu suất của toàn bộ tập hợp instance.

Phân tích log. Xem xét những gì ứng dụng báo cho bạn biết thông qua log của CloudWatch. CloudTrail có thể giúp bạn phân tích và quản lý log.

Đánh giá hiệu suất của site từ bên ngoài. Biết khách hàng – người dùng cuối – đang thấy những gì. Dùng dịch vụ như New Relic hay Pingdom.

Bạn cần phải biết khách hàng đang nói gì. Độ trễ có đang tệ lắm không. Họ có đang gặp phải lỗi khi truy xuất vào trang web của bạn không.

Ép được càng nhiều hiệu suất từ cấu hình hiện tại càng tốt. Auto Scaling có thể giúp đỡ được trong trường hợp này. Bạn không muốn một hệ thống mà trong đó CPU chỉ dùng có 20%.

 


(Còn tiếp)