Nếu như bạn đã và đang triển khai một dự án phần mềm – có thể là mobile app, internal tool hay đơn giản là muốn biết cách thay đổi hoàn toàn cách điều hành kinh doanh của mình. Khi bạn bắt đầu chia sẻ ý tưởng với người khác, thường bạn sẽ bị mọi người phản biện lại với nhiều câu hỏi khác nhau, đôi khi là bạn không biết cách trả lời ra sao cả.
Làm sẽ làm thế nào để quản lý cơ sở hạ tầng của mình thật tốt? Làm thế nào để xử lý storage, network, monitoring và những thứ khác cần chạy trong một dự án mới?
Có lẽ bạn đang cần tìm kiếm những câu trả lời về Heroku. Vậy Heroku là gì? Về cơ bản, nó là một Platform as a Service mà có thể xử lý tất cả mọi thứ cho bạn. Nhưng bạn vẫn phải hiểu chính xác chúng hoạt động ra sao.
Xem thêm: Phân biệt Public Cloud vs Private Cloud vs Hybrid Cloud
Trong bài viết này, mình sẽ trình bày và giữ mọi thứ đơn giản nhất có thể, giải thích chính xác Herokuapp là gì và những vấn đề xung quanh nó.
Vậy, Heroku là gì và nó hoạt động ra sao?
Heroku được biết đến với mục đích dành cho việc chạy các ứng dụng trong dynos – thực sự chỉ là các máy ảo có thể được cung cấp sức mạnh dựa trên độ lớn các ứng dụng của bạn. Nghĩ về dynos như các khối xây dựng cho việc chạy các ứng dụng.
Nếu bạn muốn xử lý nhiều dữ liệu hay nhiều tác vụ phức tạp hơn, bạn sẽ cần nhiều khối hơn (còn được gọi là mở rộng theo chiều rộng) hay tăng kích cỡ các khối (mở rộng theo chiều sâu). Heroku khi đó tính phí theo tháng đối với những thay đổi này của bạn, dựa trên số dynos mà bạn có và kích cỡ của mỗi dyno.
Mặc dù Heroku tính tiền từ bạn dựa trên dyno, nhưng họ thực sự không hề lưu giữ ứng dụng của bạn. Trong thực tế, toàn bộ nền tảng Heroku cũng như mọi ứng dụng khác được xây dựng trên Heroku – đều được triển khai trên AWS (Amazon Web Services).
Điều này đặt ra cho chúng ta một câu hỏi lớn.
Tại sao lại phải sử dụng Heroku trong khi đã có AWS?
Để hiểu rõ thực sự Heroku là gì, mình sẽ bắt đầu với những gì không phải của Heroku. Như mình đã nói ở trên, Heroku chạy trên AWS (Amazon Web Services), và bạn đang băn khoăn lý do tại sao chúng ta không triển khai ứng dụng của mình thẳng tới AWS và loại bỏ thẳng cổ bộ thằng Heroku luôn? Đầu tiên, Heroku và AWS không hề giống nhau.
AWS là nhà cung cấp IaaS (Infrastructure as a Service), nghĩa là họ chịu trách nhiệm cho việc quản lý các Data Center chia sẻ, lớn. Những Data Center này là những gì chúng ta hay gọi là “cloud“. Các công ty như AWS, Azure, Google và Vinadata đều tạo ra IaaS để các nhà phát triển trả tiền – để lưu trữ các ứng dụng của họ trong những Data Center của này, thay vì phải tự xây dựng những hệ thống máy chủ riêng.
Xem thêm: Phân biệt SaaS, PaaS và IaaS
Điều này là một sự đánh đổi khá tuyệt vời do tính chất kinh doanh của họ, các nhà cung cấp IaaS quan tâm nhiều hơn đến việc điều hành các Data Center hơn là trải nghiệm của nhà phát triển đối với sản phẩm của họ. Nghĩa là bạn cần phải có những kiến thức cao siêu về AWS – để giữ ứng dụng của mình luôn uptime, đặc biệt dễ dàng mở rộng quy mô.
Nếu có bất kỳ thước đo nào về mức độ kiến thức cần biết, AWS hiện cung cấp 8 chứng chỉ khác nhau cho mọi người để xác minh kiến thức của họ.
Măt khác, Heroku là một PaaS (Platform as a Service) dựa trên AWS – để cung cấp những trải nghiệm được thiết kế đặc biệt cho những nhà phát triển. Ví dụ, để giữ một ứng dụng đang chạy có thể mở rộng trên Heroku, bạn chỉ cần chạy vài dòng lệnh trên Heroku CLI và Dashboard là xong. Để xem chi tiết hơn về những lệnh này, bạn có thể dễ dàng thấy trong tài liệu của Heroku.
Tại sao người ta lại chọn sử dụng Heroku?
Sự lựa chọn tốt nhất cho trải nghiệm của nhà phát triển
Một lần nữa, Heroku được xây dựng bởi các nhà phát triển dành cho các nhà phát triển. Trải nghiệm rất dễ điều hướng, các nhà phát triển biết chính xác họ cần làm gì khi họ login, và họ biết chính xác ứng dụng của họ đang chạy như thế nào mỗi giây trôi qua trên platform.
Mở và khả năng mở rộng
Heroku là nền tảng mở và có thể mở rộng để các nhà phát triển có thể xây dựng ứng dụng bằng bất kỳ ngôn ngữ lập trình nào họ lựa chọn như: ruby, Nodejs, PHP, Python, Java,…
Không những chỉ những nhà phát triển có thể xây dựng ứng dụng bằng bất kỳ ngôn ngữ nào bạn chọn, mà còn có một mạng lưới lớn các Add-ons Heroku to lớn nữa. Add-ons của Heroku là các tính năng và chức năng mạnh mẽ có thể được triển khai tới ứng dụng chỉ với một click. Một số ứng dụng phải trả tiền, một số thì miễn phí, nhưng chúng có thể giúp bạn tránh lãng phí hàng trăm giờ đồng hồ ra khỏi dự án.