12/08/2018, 15:24

Triển khai website lên Amazon Cloud

Ngày nay cloud đã trở lên …bla bla… Nhìn chung lợi ích của việc sử dụng cloud thì rất là nhiều, nhưng xét trên góc nhìn của 1 developer thì nổi bật nhất đó là “không phải quan tâm quá nhiều tới infra”. Sau khi code xong một web application, chúng ta chỉ việc upload đống ...

Ngày nay cloud đã trở lên …bla bla… Nhìn chung lợi ích của việc sử dụng cloud thì rất là nhiều, nhưng xét trên góc nhìn của 1 developer thì nổi bật nhất đó là “không phải quan tâm quá nhiều tới infra”. Sau khi code xong một web application, chúng ta chỉ việc upload đống code đó lên cloud, và thế là mọi thứ đã sẵn sàng để public, product… Sẽ không còn phải thực hiện các việc làm truyền thống như: - Triển khai hạ tầng máy chủ -> cái làm tốn chi phí về cơ sở vật chất (ví dụ: điện, điều hòa, mặt bằng…), người quản trị. - Từng bước cấu hình server. Gồm đủ các công đoạn download, cài đặt, cấu hình OS, IP, DNS, SQL, Redis Server, Apache, memcached… -> tốn thời gian, công sức. - Nâng cấp, thiết kế lại toàn hệ thống khi website bị quá tải, không thể đáp ứng được với lượng user như dự tính ban đầu. -> khả năng co giãn, linh động hệ thống kém.

Đưa code web lên cloud có giống đưa code lên host không? Thao tác khá giống nhau

Vậy cloud khác host điều gì? Về phạm vi : host nhỏ hơn cloud, có thể dùng cloud để tạo ra nhiều host, nhưng host thì không thể tạo ra cloud. Host thường dùng cho website nhỏ, khi đó các website dùng chung tài nguyên để tiết kiệm chi phí.

Cloud tuyệt như vậy, tại sao nhiều công ty, doanh nghiệp lại không dùng? Bài toán bảo mật, phân quyền. Hoặc doanh nghiệp muốn tự dựng một hệ thống máy chủ có kiến trúc đặc biệt.

Ngoài triển khai web ra cloud làm được gì nữa? Rất nhiều, web chỉ là một mảng nhỏ. Kiến trúc cloud cung cấp dịch vụ ở 3 tầng cơ bản IaaS (Infra as a Service) , PaaS (Platform as a Service), và SaaS (Software as a service).

Khi nào bắt buộc phải sử dụng cloud, mà không có lựa chọn khác? Khi hệ thống quá lớn, dịch vụ web phải đáp ứng được số lượng lớn user, hoặc phải lưu trữ dữ liệu khổng lồ, khi đó chỉ có mô hình kiến trúc của cloud mới đủ khả năng giải quyết vấn đề. Cloud chính là lời giải của bài toán BigData.

Tại sao bài viết này lại dùng Amazon Cloud mà không phải Google Cloud hay Azure của Microsoft, hay SoftLayer của IBM? - Mình hay nghe các “anh sếp” nhắc tới amazon nhiều hơn. - Để sử dụng dịch vụ Amazon Cloud, phải có thẻ Visa. Tại thời điểm hiện tại, các nhà cung cấp dịch vụ cloud đều đã chặn gần hết các đầu số Visa ảo của Việt Nam, do bị lạm dụng quá mức. Chỉ còn mỗi Amazon mình vẫn dùng được. (Visa ảo là gì, tại sao sử dụng dịch vụ cloud phải có visa…vấn đề này mình sẽ trình bày cụ thể bên dưới)

Mình sẽ trình bày các bước mình đã thực hiện để deploy code của mình lên Amazon Cloud: - Chuẩn bị nguyên vật liệu - Đưa code lên cloud - Sử dụng, vận hành, và thống kê Amazon Cloud = AWS = Amazon Web Service = https://aws.amazon.com

Bước 1. Chuẩn bị nguyên vật liệu

Để sử dụng dịch vụ AWS, chúng ta sẽ phải đăng ký một tài khoản trên https://aws.amazon.com Việc này chỉ khác việc đăng ký thông thường một chút, là ngoài email, xác thực số điện thoại, thì còn phải điền thông tin thẻ VISA/ MasterCard.

Nôm na cho ai chưa biết về thẻ VISA, MasterCard, đó là thẻ này giống cái thẻ ATM ngân hàng, nhưng thẻ này dùng để thanh toán quốc tế. AWS bắt điền thông tin thẻ này để thanh toán cho các hóa đơn dịch vụ cloud. Vì là sử dụng dịch vụ trước, trả tiền sau, nên AWS có rất nhiều biện pháp để hạn chế việc bị user lạm dụng hệ thống mà không trả tiền,trong đó có việc kiểm soát nghiêm ngặt thông tin thẻ Visa, Mastercard. Muốn có thẻ VISA/ Master xịn, thì phải ra ngân hàng làm, thẻ càng xịn thì càng được AWS mở giới hạn nhiều hơn. Nếu ngại ra ngân hàng, thì có thể mua online các thẻ VISA/Master ảo. Recommend: VISA -> Visa debit của ACB. Visa ảo -> Smartcash của VPBank

Note: Việc kích hoạt tài khoản AWS sẽ bị mất $1 trong thẻ VISA/ Master, $$ này sẽ được trả lại sau 30 ngày. Sau khi đăng ký AWS thành công, sẽ phải đợi từ 15p tới vài tiếng để nhân viên Amazon đồng ý đơn đăng ký. Giao diện sau khi đăng ký và được kích hoạt thành công

Bước 2. Đưa code lên cloud

1. Chọn Region Thao tác này để chọn vị trí địa lý web server muốn triển khai. Ví dụ: tình hình suốt ngày đứt cáp, mà website lại phục vụ user trong nước là chính, thì có thể chọn Region: Asia Pacific (Singapore) 2. Sử dụng service Elastic Beanstalk Đây là module của AWS, có hỗ trợ việc deploy code. Để sử dụng, truy cập https://us-west-2.console.aws.amazon.com/elasticbeanstalk Hoặc search tab: Elastic Beanstalk ... Mình thực hiện tạo một web app mới. Hiện tại mình đang có 1 project Java web, mình đã export ra file .war, và thực hiện upload lên đây.

Thực hiện cấu hình trước khi Create Application.

Mặc định 1 tài khoản AWS sau khi được kích hoạt, sẽ được sử dụng gói Free Tier 1 năm, tuy nhiên hàng trial nên cấu hình server có thể sử dụng rất thấp (1 Core, Ram 1GB) , có thể vào Modify để chỉnh cấu hình Server cao hơn. Để biết được tài khoản aws của mình được phép sử dụng những cấu hình máy chủ nào, thì vào mục Limit của Region để xem. ... Cấu hình database nếu web app muốn sử dụng gói database tích hợp luôn của Amazon. Thực hiện Create Application và chờ vài phút dể Beanstalk triển khai.

Website sau khi triển khai thành công có thể vào bằng IP hoặc domain. (xem log, hoặc detail web app để biết thông tin)

Bước 3. Sử dụng, vận hành, và thống kê

AWS cung cấp rất nhiều module, để tùy chỉnh cloud. Ví dụ như Firewall, Group Security… Ngoài monitor web app trong Beanstalk, có thể monitor web server trong EC2 (Elastic Compute Cloud). Sử dụng Bill Dashboard để xem số tiền phải trả cho các dịch vụ đã sử dụng.

Việc sử dụng cloud, giúp cho các developer không phải bận tâm nhiều tới việc triển khai hạ tầng, đưa sản phẩm của mình tới user, tiết kiệm thời gian tối đa cho việc build application... Dùng bao nhiêu trả tiền bấy nhiêu. Không phải lo lắng về việc đầu tư cơ sở hạ tầng server ban đầu.

0