Tôi đã tiết kiệm $5 mỗi tháng với Heroku như thế nào?
https://kipalog.com/posts/Toi-da-tiet-kiem--5-moi-thang-voi-Heroku-nhu-the-nao
Last updated
https://kipalog.com/posts/Toi-da-tiet-kiem--5-moi-thang-voi-Heroku-nhu-the-nao
Last updated
Vừa rồi mình vừa tiết kiệm được $5 mỗi tháng sau khi migrate cái blog cá nhân từ Digital Ocean sang Heroku Free Dyno.
Kết quả thật mĩ mãn vì hầu như những thứ mình cần cho một một blog cá nhân, Heroku Free Dyno đều đáp ứng cả, với một số thủ thuật cần thiết.
Blog cá nhân mình được viết dùng Elixir và trước đây mình đã từng viết một số bài về cách deploy và release ứng dụng Elixir.
Tuy nhiên với Heroku thì bạn không thể release bằng cách dùng Dicon, vì Heroku không phải là một host như Digital Ocean, nên ta sẽ bày keo khác.
Thật may vì một đồng môn Luyện Dịch Viên đã viết sẵn buildpack cho Elixir app tại https://github.com/HashNuke/heroku-buildpack-elixir, tuy nó không phải một buildpack được Heroku hỗ trợ chính thức nhưng được sử dụng khá rộng rãi (theo mình biết theo trang hex.pm cũng dùng buildpack này) nên các bạn có thể yên tâm sử dụng.
Bạn có thể config buildpack bằng cách
Bạn có thể commit thêm file elixir_buildpack.config
vào repo để chọn config Erlang/Elixir version hay tương tự.
Và Procfile
Không còn gì có thể đơn giản hơn đúng không?
Có hai thứ gây khá nhiều sự khó chịu khi dùng Heroku Free Dyno đó là
Heroku chỉ cho 550 giờ mỗi tháng để sử dụng.
dyno sẽ bị tắt khi không có traffic trong vòng 30 phút (khi bạn thấy bạn truy cập vào mà trang web bị đơ chừng 15s, đó là do dyno đã bị tắt).
Tuy nhiên bạn có thể tăng số lượng giờ đồng hồ sử dụng lên con số 1000 nếu như bạn cài đặt phương thức thanh toán vào trong tài khoản. 1000 giờ đồng hồ là quá đủ để blog cá nhân của bạn chạy êm ru cả tháng (31 ngày * 24 giờ = 744 giờ). Xem thêm chi tiết cài đặt ở https://devcenter.heroku.com/categories/billing.
Về việc dyno bị tắt khi không có traffic, cách đơn giản nhất là tự tạo traffic cho nó. Cách dễ nhất là dùng Pingdom để ping trang blog của bạn thường xuyên giữ cho dyno không bị tắt.
Cài đặt Pingdom khá đơn giản, chỉ việc điền thông tin và nhấn chừng 3-4 cái nút. Cài đặt tại: https://www.pingdom.com/free
Trước đây mình dùng Let's Encrypt SSL cho host DO, nhưng khi qua Heroku thì phải dùng cách khác.
Heroku Free Dyno cho bạn kết nối SSL miễn phí nếu truy cập trang web qua subdomain *.herokuapp.com
nhưng nếu bạn muốn dùng domain của riêng bạn, thì cần một số thủ thuật.
Ở đây mình dùng Cloudflare để làm DNS và Cloudflare hỗ trợ miễn phí kết nối Full SSL đến host.
Khác với Flexible SSL, với Full SSL thì kết nối từ user đến host của Cloudflare và từ host của Cloudflare đến host của bạn (ở đây là Heroku) sẽ đều là kết nối SSL.
Để tiến hành thì trước hết bạn sẽ phải trỏ một CNAME record về heroku app của bạn (my-xyz-app.herokuapp.com chẳng hạn).
Sau đó thì bạn chỉ cần bật Full SSL mode trong tab Crypto là xong, có thể bạn sẽ cần phải chờ 24 giờ để SSL cert có hiệu lực, nhưng thường bạn sẽ thấy sau vài phút. ¯\_(ツ)_/¯
Tất cả phụ thuộc vào tạo hóa.
Xong, bây giờ thì vào và tận hưởng thành quả thôi.
SSL Cert miễn phí của Cloudflare là loại chứng chỉ chia sẻ (hình như chừng 5 tài khoản khác), nên nguy cơ bảo mật ở đây không phải là không có, các bạn cần chú ý điều này nếu bạn cần cái gì đó bảo mật tuyệt đối Đồng thời với Full SSL, nguy cơ dính lỗ hổng bảo mật Man in the middle ở đây khá khó nhưng không phải là không có. Xem thêm ở đây. Bạn cũng nên cân nhắc thêm một số drawbacks của Cloudflare trước khi dùng nó https://www.reddit.com/r/privacy/comments/41cb4k/be_careful_with_cloudflare/