HEROKU! TẠI SAO CẦN KHI ĐÃ CÓ AWS?

HEROKU! TẠI SAO CẦN KHI ĐÃ CÓ AWS?

Để có thể đi vào tìm hiểu chi tiết hơn. Ta cần hiểu 2 khái niệm cơ bản là IaaSPaaS bạn có thể tham khảo Phần “2. Các dịch vụ của điện toán đám mây” link bên dưới nhá. Bạn nào biết roài thì có thể bỏ qua.

http://tech.vtijapan.co.jp/gioi-thieu-ve-dien-toan-dam-may/

Có thế nói tóm tắt:

IaaS: Dịch vụ này chỉ cung cấp cho bạn máy chủ, network, storage, … đại loại là các phần cứng máy tính cần thiết để cho mình sử dụng. Còn việc cài OS (Hệ điều hành), môi trường làm việc, platform, webserver… thì mình hoàn toàn tự làm hết nhá.

PaaS: Ngoài cung cấp máy chủ, network, storage, … thì nó cung cấp sẵn cho mình luôn cả OS, môi trường làm việc, cài cắm sẵn hết các platform cần thiết, webserver… chẳng hạn. Công việc của mình đó là CHỈ push sourcecode lên thôi, còn sau đó thì toàn bộ sourcecode sẽ được tự động build, deploy hoàn toàn.

Đọc đến đây thì hẳn bạn đã 1 phần hiểu scope khi sử dụng IaaS và PaaS như thế nào rồi. IaaS thì ta cần phải làm rất nhiều thứ cài cắm… trong khi PaaS chỉ cần Code làm tốt code là đủ.

Để trả lời câu hỏi: “Tại sao cần Heroku khi đã có AWS” thì mình đi qua giai đoạn “Dựng môi trường”. Còn giai đoạn Monitor (Giám Sát) & Bảo Trì thì sau này mình viết bài khác đi chi tiết hơn.

 

Nếu IaaS AWS thì sao?

Developer sẽ phải lo đủ mọi thứ trên đời: Nào là phải chọn nhà cung cấp IaaS, cứ cho là chọn luôn AWS rồi nhá. Tiếp theo là cài đặt OS nào, cấu hình Network ra sao để đảm bảo Security, Server, Database, Domain, Deploy, Solution cho việc server bị quá tải, tưởng lửa… nghe đến đây là thấy lo đủ mọi thứ rồi là. Và đương nhiên không thể thiếu Code được. Đến đây thì bạn đã hiểu nếu chỉ một dự án có vài người mà sử dụng IaaS của AWS thì xác định rồi đó, Developer sẽ phải rất Pro cần phải hiểu rất nhiều thứ mới có thể xây dựng được một cấu trúc tốt được. Đọc đến đây bạn nào Pro chắc sẽ nghĩ làm được hết. Đúng & đương nhiên có thể làm được, nhưng sẽ tốt khá nhiều effort cho việc dựng & test môi trường đó nhá.

⇒Công việc thật là VẤT VẢ & KINH KHỦNG! L Gặp SẾP và xin TĂNG LƯƠNG thôi!

Nếu PaaS như Heroku Salesforce thì sao?

Developer chỉ cần ung dung, dựa vào yêu cầu dự án, chọn loại ngôn ngữ phát triển. Sau đó thì tằng tằng code và code thôi. Push lên Heroku và chờ nó tự động Build, Deploy thôi. Chỉ việc ngồi Test là xong. Yên tâm là Heroku Salesforce nó có hỗ trợ cả CodePipeline cho Dev, Review, Staging, Product rất hữu ích luôn. Không cần phải xây dựng môi trường Dev ở local… (Đương nhiên là đã là code Pro rồi, chứ ko phải là đi ngồi Debug từng dòng code một nhá.

⇒Cuộc đời đến đây TƯƠI J nhá! Gặp SẾP bảo em làm hiệu suất cao. Tăng BONUS thôi!

※Note: Đọc đến đây nhiều bạn làm AWS chắc cũng đặt câu hỏi trong đầu là “Thế sao không sử dụng Beanstalk của AWS, nó cũng cung cấp PaaS như? Sao lại phải dùng Heroku nhỉ?”

Nói thật câu hỏi này rất khó, vì BeanstalkHeroku Salesforce nó đều cung cấp PaaS và rất giống nhau. Cả 2 đều rất tiện và nhàn. Ngắn gọn để so sánh thì có thể hỏi Heroku thì nó tích hợp sẵn luôn cả toàn bộ cho mình lựa chọn. Còn Beanstalk thì bạn vẫn cần phải kết hợp và có hiểu biết về các services để kết hợp chúng lại với nhau. Để so sánh 2 thằng này. Mình đi vào một vài điểm chính sau:

Giá Tiền:

Phần này thì cơ bản Beanstalk và Heroku đều có giá ngang ngang nhau. Heroku ban đầu ta sử dụng thì hoàn toàn miễn phí. Nếu ta sử dụng quá ngưỡng connection, time, hoặc là ta sử dụng thêm các add-ons thì mới bị tính phí thôi.

Còn Beanstalk về cơ bản thì nó không bị mất phí nhá, nhưng ta sử dụng resource của AWS thì lại tốn phí. Ví dụ như bạn dùng EC2, RDS chẳng hạn thì sẽ bị tính phí ở những phần này.

Mình có tham khảo một vài trang web so sánh về giá 2 thằng thì có thể kết luận là ngang nhau.

Add-ons:

Cái này thì Heroku miễn bàn. Vì nó được bên thứ 3 cung cấp rất nhiều Add-ons. Bạn chỉ muốn dùng cái nào thì có thể thêm vào một phát, là có thể sử dụng ngay được luôn. Bạn có thể vào đây tham khảo danh sách add-ons cho heroku https://elements.heroku.com/addons. Điểm này thì Beanstalk thua xa Heroku. Tuy nhiên tương lai thì có thể Beanstalk nó sẽ cung cấp nhiều hơn và nhiều hơn nữa. Thêm nữa là bên heroku có cực kỳ nhiều add-ons miễn phí nhá, tha hồ tìm hiểu, nghiên cứu, thử nghiệm.

Tốc độ response:

Heroku chỉ đặt server của họ ở US and Europe. Chính vì vậy nếu end-user của bạn nằm ngoài hai khu vực này thì tốc độ response sẽ bị chậm hơn chút (Chỉ vài trăm ms). Nếu chỉ vài trăm ms không hề ảnh hưởng gì đến service thì cũng ko cần phải lo nhá.

Trái lại thì Beanstalk nó có đặt máy chủ ở hầu hết mọi nơi trên thế giới. Bất cứ nơi nào AWS có là nó có mặt. Về điểm này thì Beanstalk có điểm lợi hơn.

⇒Nếu end-user nằm ở US hay Europe thì bạn chọn cái nào cũng được. Nếu ngoài hai khu vực trên thì bạn cần cân nhắc đến thời gian phải hồi. Nếu vài trăn ms ảnh hưởng LỚN đến service thì bạn nên dùng Beanstalk.

Know-how:

Cái này thì cũng miễn bàn. Với Heroku bạn chẳng cần phải học nhiều, chỉ vài ngày thao tác, tham khảo chút tài liệu là bạn có thể control được nó ngay. Còn vơi Beanstalk thì bạn cần phải có kinh nghiệm, phải tìm hiểu nhiều mới có thể thành thạo các tùy chỉnh của nó.

⇒Nếu service cần phát triển nhanh, chưa có know-how sẵn về Beanstalk thì bạn hãy chọn ngay Heroku.

Lượng effort dựng môi trường:

Cái này cũng là vấn đề lớn. Với Heroku thì bạn ko cần know-how nhiều, với một người thành thạo. Biết sẵn môi trường cần gì. Họ chỉ cần vài cú click là tạo xong môi trường hoàn chỉnh. Còn với Beanstalk thì bạn sẽ cần phải tốn nhiều thời gian hơn. Và thời gian cũng chính là tiền phí trả cho các kỹ sư rồi. Tuy giá cả 2 bên bằng nhau, nhưng tính lượng effort bỏ ra dựng môi trường. Thì Heroku sẽ rẻ hơn nhá. J

Khả năng custom:

Beanstalk ăn đứt Heroku nhá. Beanstalk nó có nhiều tùy chỉnh hơn, nếu hệ thống phức tạp, cần custom sâu thì bạn nên chọn Beanstalk. Nhưng ngược lại việc custom được nhiều thì bạn cũng sẽ phải bỏ nhiều công sức ra để kiểm tra, verify các thứ xem ok chưa, điều này sẽ tốn không ít thời gian. Heroku thì cơ bản nó hosted trên Amazone Web Service, nó có xây dựng nhiều thứ sẵn để ta có thể sử dụng, nên ta sẽ bị hạn chế edit sâu.

Để dễ hình dung mình lấy ví dụ: Bạn muốn xây một toàn nhà 50 tầng. Thằng Beanstalk nó sẽ cấp cho bạn một cái khung nhà, bê tông các tầng. Và việc của bạn là tạo thêm các bức tường, hệ thống làm lạnh, điều hòa, cửa kính… Còn với Heroku thì những thứ trên nó làm sẵn luôn. Bạn chỉ có thể thay đổi phần nội thất bên trong tòa nhà thôi chẳng hạn.

Kết luận:

Heroku cực kỳ đơn giản, rất rất dễ tìm hiểu. Nếu bạn đang muốn xây dựng một ứng dụng nhanh, chẳng cần biết nhiều về infra, hay các services phức tạp của AWS, tiết kiệm chi phí thuê người tạo dựng môi trường… thì Heroku là sự lựa chọn hoàn hảo. Còn AWS thì bạn vẫn cần phải học, phải có kinh nghiệm mới có thể làm được.

Ref:

https://note.mu/sakagami333/n/n04ccbb263723

https://rubygarage.org/blog/heroku-vs-amazon-web-services

http://webfood.info/heroku-vs-elastic-beanstalk-vs-opsworks/#heroku-vs-elastic-beanstalk-vs-opsworks-

Leave a Reply

Your email address will not be published. Required fields are marked *