Link to original video by Anton Putra
Elixir vs Go (Golang) Performance (Latency - Throughput - Saturation - Availability)

Tóm tắt ngắn:
- Video so sánh hiệu năng của Elixir và Go (Golang) về độ trễ, thông lượng, độ bão hòa và khả dụng, sử dụng các thử nghiệm thực tế trên Kubernetes và AWS.
- Các điểm chính bao gồm đo lường độ trễ (P99), thông lượng (yêu cầu/giây), sử dụng CPU/bộ nhớ, khả dụng (tỷ lệ lỗi), và điều tiết CPU. Go thường xuyên thể hiện hiệu năng tốt hơn Elixir trong các thử nghiệm. Các công cụ như Prometheus, Grafana, và Terraform được sử dụng để giám sát và triển khai.
- Ứng dụng của việc so sánh này là giúp người xem hiểu rõ hơn về hiệu năng của hai ngôn ngữ lập trình này trong các ứng dụng thực tế, đặc biệt là khi xử lý tải lớn. Kết quả cho thấy Go có hiệu năng tốt hơn đáng kể trong các bài test.
- Quá trình thử nghiệm bao gồm hai phần: thử nghiệm đơn giản với tải tăng dần và thử nghiệm phức tạp hơn với cơ sở dữ liệu lớn hơn để tránh hiện tượng tắc nghẽn.
Tóm tắt chi tiết:
Video được chia thành hai phần thử nghiệm chính, mỗi phần tập trung vào việc so sánh hiệu năng của Elixir và Go dưới các điều kiện tải khác nhau.
Phần 1: Thử nghiệm đơn giản với tải tăng dần:
- Mục tiêu: So sánh độ trễ (P99), thông lượng, sử dụng CPU/bộ nhớ, khả dụng và điều tiết CPU của Elixir và Go dưới tải tăng dần. Môi trường thử nghiệm sử dụng Kubernetes với hai nhóm phiên bản: một nhóm cho ứng dụng và một nhóm cho giám sát (Prometheus, Grafana).
- Phương pháp: Tăng tải dần lên ứng dụng và theo dõi các chỉ số hiệu năng. Go cho thấy hiệu năng tốt hơn đáng kể so với Elixir về độ trễ và thông lượng. Elixir đạt đến giới hạn nhanh hơn, dẫn đến giảm khả dụng và tăng điều tiết CPU. Go đạt được khoảng 60.000 yêu cầu/giây trong khi Elixir chỉ đạt khoảng 18.000 yêu cầu/giây. Người thuyết trình lưu ý rằng hiệu năng của Elixir có thể tốt hơn so với các framework khác như Python Django hay Ruby on Rails.
- Kết quả: Go vượt trội hơn Elixir về mọi chỉ số. Biểu đồ minh họa rõ ràng sự khác biệt về độ trễ, thông lượng, sử dụng CPU, bộ nhớ và khả dụng.
Phần 2: Thử nghiệm phức tạp với cơ sở dữ liệu lớn:
- Mục tiêu: So sánh hiệu năng khi cơ sở dữ liệu không phải là nút cổ chai. Sử dụng cơ sở dữ liệu PostgreSQL trên hai phiên bản EC2 lớn hơn.
- Phương pháp: Giống như phần 1, nhưng thêm vào việc đo độ trễ cơ sở dữ liệu, sử dụng CPU của cơ sở dữ liệu, và kích thước nhóm kết nối. Người thuyết trình sử dụng
pgtune
để tối ưu hóa PostgreSQL. - Kết quả: Go vẫn cho thấy hiệu năng tốt hơn đáng kể so với Elixir. Go đạt được gần 25.000 yêu cầu/giây, trong khi Elixir đạt gần như giới hạn CPU và không thể xử lý thêm yêu cầu. Elixir tạo tất cả các kết nối với cơ sở dữ liệu ngay lập tức, trong khi Go từ từ thêm kết nối dựa trên tải. Biểu đồ chi tiết cho thấy sự khác biệt về độ trễ, thông lượng, sử dụng CPU, bộ nhớ, độ trễ cơ sở dữ liệu, và kích thước nhóm kết nối.
Kết luận chung:
Video cho thấy Go có hiệu năng tốt hơn Elixir đáng kể trong cả hai thử nghiệm, đặc biệt là về thông lượng và độ trễ. Người thuyết trình khuyến khích người xem gửi yêu cầu kéo nếu họ có thể cải thiện hiệu năng của ứng dụng Elixir. Video cũng nhấn mạnh tầm quan trọng của việc giám sát toàn bộ hệ thống, bao gồm cả cơ sở dữ liệu và các thành phần khác, để tránh hiện tượng tắc nghẽn.