"Ngay cả khi không trong vài tháng tới" có vẻ như tối ưu hóa sớm. Đừng làm vậy:
Nó không đáng. Nhiều người, khi nhận ra một dự án, tin rằng dự án của họ sẽ là Facebook thứ hai. Sau đó, họ phát hành nó, và sau đó họ nhận thấy rằng mười khách truy cập mỗi tháng là điều tốt nhất họ có thể làm. Dành ít tiền và thời gian để tối ưu hóa cho khả năng mở rộng hơn nữa và suy nghĩ nhiều hơn về chính dự án sẽ giúp ích.
Nó giống như với các nút cổ chai và hồ sơ: bạn luôn có ấn tượng rằng bạn biết rất rõ nút thắt ở đâu, và trong hầu hết các trường hợp, bạn phát hiện ra rằng mình đã sai khi định hình. Làm ứng dụng của bạn đầu tiên. Xem nó được sử dụng như thế nào. Hồ sơ nó. Thu thập dữ liệu BI. Thu thập các số liệu hiệu suất. Phân tích nó. Kiểm tra nếu phân tích của bạn là đúng. Đưa ra dự đoán về tương lai, dựa trên phân tích của bạn, sau đó tối ưu hóa cho khả năng mở rộng những gì bạn thực sự cần để tối ưu hóa.
Ví dụ, một ứng dụng web có thể mở rộng phải có thể được lưu trữ trên một số máy chủ. Dự án cuối cùng tôi đã thực hiện cho khách hàng của mình dự định có thể mở rộng. Có một lựa chọn: hoặc chúng tôi dành thêm 1,5 tháng để ứng dụng web hoạt động trên nhiều máy chủ hoặc khách hàng mua máy chủ chất lượng cao (chỉ một máy) và ứng dụng web chỉ được lưu trữ trên máy này. Mua một máy chủ đắt tiền sẽ rẻ hơn nhiều, tính cả chi phí trực tiếp (giá của máy chủ so với giá 1,5 tháng làm việc) và tiết kiệm dài hạn (tiêu thụ điện năng của một máy chủ chất lượng cao so với mức tiêu thụ điện năng thấp -end máy chủ). Bây giờ ứng dụng này đã chạy được vài tháng và theo các số liệu, nếu một ngày nào đó sẽ xảy ra sự cố với khả năng mở rộng, thì nó sẽ quan tâm đến cơ sở dữ liệu trước tiên.
Bây giờ, một ứng dụng có thể mở rộng ít nhiều trên một số điểm:
Cơ sở dữ liệu: theo kinh nghiệm cá nhân của tôi, hầu hết các vấn đề liên quan đến khả năng mở rộng đều đến từ cơ sở dữ liệu. Hy vọng rằng, có rất nhiều cách để làm cho cơ sở dữ liệu có thể mở rộng cho mọi công cụ cơ sở dữ liệu cấp ngành và thậm chí trước đó, có rất nhiều cách để cải thiện cấu trúc cơ sở dữ liệu và tối ưu hóa các truy vấn . Bộ nhớ đệm cũng giúp.
Mạng: băng thông có thể là một vấn đề thực sự trong một số cấu hình và đôi khi bạn không thể làm bất cứ điều gì về nó mà không phải trả chi phí. Để tránh bị chặn ở cấp độ này, bạn có thể tối ưu hóa thiết kế trực quan của trang web để có ít hình ảnh hơn hoặc hình ảnh nén tốt hơn , tối ưu hóa bố cục của trang, giảm các yêu cầu HTTP (thông qua các họa tiết CSS ), giảm số lượng HTML mã được gửi (thông qua AJAX ), v.v. Nén HTTP là điều bắt buộc. Bộ nhớ đệm trình duyệt cũng vậy, nhưng số liệu của bạn có thể cho thấy nhiều khách hàng có bộ đệm trống.
Sử dụng CPU và bộ nhớ: việc chuyển một ứng dụng được lưu trữ bởi một số máy chủ cũng có thể gây khó khăn, cả về mức độ cơ sở hạ tầng (phần cứng) và cấp độ ứng dụng (phần mềm). Để tránh điều này, hãy sử dụng bộ nhớ đệm mở rộng và hồ sơ ứng dụng, loại bỏ dần các nút thắt cổ chai .