- vừa được xem lúc

High Availability & Scalability trên AWS

0 0 7

Người đăng: Pham Hieu

Theo Viblo Asia

Scalability & High Availability là gì?

High Availability và Scalability là hai khái niệm cơ bản trong lĩnh vực Cloud Computing nói riêng và AWS nói chung. Hai khái niệm này chỉ ra rằng một hệ thống cần đảm bảo được khả năng hoạt động bình thường ngay cả trong các điều kiện tải cao bất thường hay các sự cố không may xảy đến. Hai khái niệm này cũng chính là một trong những ưu điểm nổi bật nhất khi ta so sánh giữa các hệ thống Cloud với các hệ thống On-premise truyền thống.

Một định nghĩa khác theo IBM: "Một sản phẩm thành công yêu cầu các hệ thống cơ sở dữ liệu luôn sẵn sàng, ít xảy ra sự cố ngừng hoạt động nhất, đồng thời có thể thay đổi quy mô nhanh chóng và dễ dàng khi yêu cầu kinh doanh thay đổi."

Một ví dụ điển hình cho việc một hệ thống thiếu đi khả năng Scalability & High Availability đó là hệ thống đăng ký học của các trường đại học. Các hệ thống này thường chịu một lượng tải không đáng kể vào những ngày bình thường, tuy nhiên vào các đợt đăng ký học thì lượng tải đôi khi vượt quá hàng chục, hàng trăm lần ngưỡng bình thường dẫn đến việc đăng ký học của sinh viên giống như một cuộc chiến. Việc xây dựng các chiến lược Scalability & High Availability cũng như phân bổ tài chính một cách hợp lý hoàn toàn có thể giải quyết các vấn đề này.

Scalability

scaleability

Scalability - Khả năng tự động mở rộng: có nghĩa là một ứng dụng hoặc hệ thống của có thể tự động thích nghi nhằm xử lý được một lượng tải lớn hơn nhiều mức bình thường.
Đối với khả năng mở rộng, ta có thể phân loại thành 2 chiến lược chính là Vertical Scaling - Mở rộng theo chiều dọcHorizontal Scaling - Mở rộng theo chiều ngang hay còn gọi là elasticity.

Scalability được liên kết chặt chẽ với High Availability, tuy nhiên 2 hệ thống này có nhiều điểm khác biệt.

Vertical Scaling

Vertical Scaling - Khả năng mở rộng theo chiều dọc có nghĩa là chúng ta sẽ tăng kích thước của Insatance hiện hữu (RAM, Disk,...). Một ví dụ đơn giản, giả sử ứng dụng của bạn đang chạy trên phiên bản instance t2.micro, scale theo chiều dọc có nghĩa là bạn sẽ chuyển sang sử dụng phiên bản t2.xlarge

vertical-scale

Mặc dù nghe có vẻ không hợp thời lắm, tuy nhiên chiến lược scale theo chiều dọc này vẫn thường xuất hiện tại các hệ thống không phân tán, điển hình là nhiều loại cơ sở dữ liệu.
Ngay trên AWS, các dịch vụ như RDS, ElastiCache cũng được áp dụng chiến lược này.
Mặc dù vẫn được sử dụng tương đối rộng rãi, nhưng nhược điểm chính của chiến lược này đó là nó sẽ luôn bị giới hạn bởi kích thước phần cứng, hay nói cách các khác là nó không thể mở rộng một cách tùy ý.

Horizontal Scaling

Hoziontal Scaling - Khả năng mở rộng theo chiều ngang hay còn gọi là elasticity có nghĩa là chúng ta sẽ mở rộng bằng cách tăng số lượng instance hiện hữu. Một ví dụ đơn giản, giả sử ứng dụng của bạn đang chạy trên 1 instance t2.micro, scale theo chiều ngang có nghĩa là bạn sẽ chuyển sang sử dụng 2 instance t2.micro.

horizontal-scale

Hoziontal Scaling là một chiến lược mở rộng phổ biến và được sử dụng rộng rãi trên AWS. Nó được thiết kế đặc biệt phù hợp với các hệ thống phân tán nói chung hay các trang web hay các ứng dụng hiện đại nói riêng. Hiện nay, việc triển khai chiến lược scale này là vô cùng dễ dàng, đặc biệt dưới sự hỗ trợ của các hệ thống như AWS.

High Availability

High Availability - Tính sẵn sàng cao: có nghĩa là một ứng dụng hoặc hệ thống có thể tiếp tục hoạt động bình thường ngay cả khi có sự cố xảy ra.

high-avai

Một cách đơn giản hơn, High Availability sẽ yêu cầu ứng dụng hoặc hệ thống cần phải được triển khai ở ít nhất 02 trung tâm dữ liệu độc lập khác nhau (Đối với AWS ta có thể hiểu là các Availability Zones). Mục đích của việc này nhằm đảm bảo rằng ứng dụng có thể sống sót và hoạt động bình thường ngay cả khi một trong 2 trung tâm dữ liệu gặp phải các vấn đề bất khả kháng như thiên tai, địch họa dẫn tới việc buộc phải ngừng hoạt động. Cũng vì những lý do đó mà High Availability luôn luôn đi kèm với các chiến lược Horizontal Scaling
Các chiến lược High Avaiablity có thể được thực thi ở cả 2 dạng chủ động (ví dụ như horizontal scaling) hoặc bị động (ví dụ như RDS Multi AZ).

High Availability & Scalability đối với các máy chủ EC2

Vertical Scaling: Tăng instance size (= scale up / down)

  • Từ: t2.nano - 0.5G of RAM, 1 vCPU
  • Lên tới: u-12tb1.metal – 12.3 TB of RAM, 448 vCPUs
    High Availability: Khởi chạy nhiều Instance cho cùng 1 ứng dụng trên nhiều AZ khác nhau:
  • Auto Scaling Group multi AZ
  • Load Balancer multi AZ

Bình luận

Bài viết tương tự

- vừa được xem lúc

Performance Optimization 101: Những câu hỏi cơ bản

Definitive guide for performance engineer. API của bạn có thời gian phản hồi quá lâu. Hay hoá đơn cloud đập vào mặt bạn những con số quá kinh khủng dùng mới chỉ có một nhúm người dùng. HÃY ĐỌC TIẾP, BÀI VIẾT NÀY LÀ DÀNH CHO BẠN.

0 0 48

- vừa được xem lúc

Caching đại pháp 1: Nấc thang lên level của developer

Bí quyết thành công trong việc đáp ứng hệ thống triệu user của những công ty lớn (và cả công ty nhỏ). Tại sao caching lại là kỹ thuật tối quan trọng để phù phép ứng dụng rùa bò của chúng ta thành siêu phẩm vạn người mê.

0 0 67

- vừa được xem lúc

Performance Optimization 102: Scalability và câu chuyện về ảo tưởng distributed

Performance, scalability cùng câu chuyện nỗi ám ảnh và những ảo tưởng của một developer về cái gọi là hệ thống distributed. .

0 0 46

- vừa được xem lúc

Solutions to Scalability of Blockchain [Phần 1]

Trong 2 bài viết về tam giác Trilmma của blockchain mình đã cùng các bạn làm rõ vấn đề chính hiện nay mà các hệ thống blockchain đang phải đối mặt chính là khả năng mở rộng chuỗi (Scalability) trong đ

0 0 10

- vừa được xem lúc

[Dịch bài] System Design: Khả năng mở rộng

Chạy một hệ thống cho một người dùng rất khác so với cho 10,000 người dùng, và cũng rất khác so với 1 triệu người dùng. Một hệ thống có thể phát triển liên tục để hỗ trợ khối lượng công việc càng ngày

0 0 5

- vừa được xem lúc

PDF Export, cẩn thận với những input có thể truyền vào

Giới thiệu. Dạo gần đây mình tình cờ gặp rất nhiều lỗi XSS, tuy nhiên trang đó lại có sử dụng dữ liệu người dùng input vào để export ra PDF.

0 0 49