Cloud Computing for Developer

 Cloud Computing, một chủ đề có vẻ như rất cũ bởi lẽ tần suất xuất hiện của nó quá nhiều trong những năm gần đây và chắc bạn cũng ít nhất một lần nghe về nó. Nhưng để hiểu thực sự và áp dụng nó một cách hiệu quả vào quá trình phát triển phần mềm thì không phải Lập trình viên nào cũng biết.

Trong những năm gần đây, các công ty lớn đổ rất nhiều tiền của để đầu tư vào dịch vụ đám mây như Amazon Web Service, VMWare, Google Cloud, IBM Bluemix… đã tạo ra cuộc cách mạng về phần mềm và đã đến rất gần với chúng ta.

Bài viết này vừa là một chỉ dẫn cũng vừa là một lời nhắn để các Developer hiện tại cũng như các Developer tương lai chú ý để bắt kịp xu thế công nghệ đang rất nóng của thế giới.

 

A. Khái niệm về Cloud Computing

Để bắt đầu, chúng ta cùng nhìn lại khái niệm về Cloud Computing. Có rất nhiều khái niệm về cloud computing trên mạng nhưng ở đây tôi chọn ví dụ đơn giản nhất để các bạn dễ hình dung. Theo Wiki:

Điện toán đám mây (cloud computing), còn gọi là điện toán máy chủ ảo, là mô hình điện toán sử dụng các công nghệ máy tính và phát triển dựa vào mạng Internet. Thuật ngữ “đám mây” là lối nói ẩn dụ chỉ mạng Internet và như một liên tưởng về độ phức tạp của các cơ sở hạ tầng chứa trong nó.

Ở mô hình này, mọi khả năng liên quan đến công nghệ thông tin đều được cung cấp dưới dạng các dịch vụ.  Điều này cho phép người sử dụng truy cập các dịch vụ công nghệ thông tin từ một nhà cung cấp nào đó “trong đám mây” mà không cần có các kiến thức, kinh nghiệm về công nghệ đó, cũng như không cần quan tâm đến các cơ sở hạ tầng phục vụ công nghệ đó.”

Ở đây chúng ta lưu ý từ “dịch vụ” nó vô cùng quan trọng và chi phối phương thức hoạt động của Cloud Computing. Các phần bên dưới sẽ dần làm rõ điều đó.

Các ích lợi của điện toán đám mây:

Loi ich cua Cloud

 

Để giải thích vì sao có các lợi ích này các bạn có thể tìm đọc về khía niệm Cloud Computiong sẽ rõ. Trong khuôn khổ bài viết này tôi không đi quá sâu vào vấn đề này.

 

B. Cloud Computing thay đổi phương thức sản xuất và ứng dụng phần mềm

Công nghệ Cloud Computing cung cấp các nhu cầu công nghệ thông tin từ hạ tầng cho đến ứng dụng đều dưới dạng các dịch vụ có thể sử dụng trực tiếp hoặc sử dụng lại. Chính điều này đã làm thay đổi kiến trúc ứng dụng cũng như cách thức sử dụng phần mềm trong tương lai gần. Trong phần này tôi sẽ trình bày về kiến trúc dịch vụ của Cloud Computing và kiến trúc ứng dụng sử dụng Cloud để các bạn hiểu rõ hơn.

Các lớp dịch vụ Cloud Computing

Cloud computing Architech

 

Các dịch vụ của Cloud Computiong được chia làm 3 tầng gồm SaaS, PaaS, IaaS. Chúng ta sẽ lần lượt làm quen với các lớp dịch vụ ấy.

SaaS (Software as a Service): Đây là tầng trên cùng của Cloud Computing, nó cho phép chúng ta sử dụng phần mềm như là dịch vụ với chi phí hết sức hợp lý và dễ sử dụng. Ví dụ cụ thể như Email (Gmail, Outlook.com mail …), CRM: Zoho, Saleforce…

Các bạn có thể đặt câu hỏi như ứng dụng Email thì Cloud Computing ảnh hưởng như thế nào?

Thực tế thì Webmail đã có từ rất lâu, trước khi các ứng dụng Cloud Computing phổ biến. Nhưng với việc xuất hiện Cloud computing với cơ chế ảo hóa hạ tầng giúp cho dịch vụ email trở nên linh hoạt, chi phí thấp và tích hợp tốt hơn. Ví dụ: với Gmail hiện nay bạn có thể sử dụng miến phí đến 25GB, tích hợp với Google Doc, Google Driver và nhiều ứng dụng khác.

Hay như CRM- Zoho, trước đây muốn dùng CRM bạn phải cài đặt phần mềm lên một Server (hoặc 1 hosting) với chi phí ít nhất 1.000.000 VNĐ/tháng. Hiện  nay với dịch vụ Cloud các nhà cung cấp có thể cung cấp cho bạn với chi phí 240.000 VNĐ/tháng mà bạn vẫn có thể Customize thỏa mái như một host độc lập.

Và còn nhiều ứng dụng khác nữa và đang trở thành xu thế trên thế giới nên chúng ta cần quan tâm để đón đầu xu hướng ấy.

PaaS (Platform as a Service): ở mức này các hệ thống sẽ cung cấp cho chúng ta những dịch vụ cơ sở mà dựa vào đó bạn có thể dễ dàng chỉnh sửa, lắp ghép để nó trở thành sản phẩm cung cấp cho khách hàng.

Các dịch vụ PaaS nổi tiếng như: Google App Engine, Salesforce’s Heroku và force.com, Microsoft Azure, and VMwares Cloud Foundry và ngay cả Share Point của Microsoft.

Không giống như SaaS là một dịch vụ phần mềm hoàn chỉnh cho người dùng cuối, PaaS cung cấp các dịch vụ phần mềm tầng giữa mạnh và nó cần những người lập trình sử dụng nó để tạo ra sản phẩm hoặc dịch vụ SaaS.

IaaS (Infrastructure as a Service): là dịch vụ cung cấp hạ tầng máy chủ ảo với đầy đủ cấu hình, hệ điều hành, hệ quản trị CSDL, hệ thống lưu trữ, đường truyền v…

Vậy tại sao bạn cần phải sắm máy chủ rất nhiều tiền, tốn điện, đường truyền và lại phải lo hỏng hóc? Với sự đầu tư lớn và phát triển mạnh như hiện nay của Amazon (Amazon Web Service) IBM (BlueMix)… trong 1- 2 năm tới chắc chắn bạn không phải mua máy chủ cho ứng dụng nữa mà nên thuê máy chủ ảo cho tiện lợi và tiết kiệm.

Kiến trúc ứng dụng sử dụng Cloud Service

Từ những dịch cơ sở do Cloud Service cung cấp dẫn đến việc thay đổi về kiến trúc ứng dụng và dẫn đến thay đổi cách thức sản xuất phần mềm. Phần mềm là sự lắp ghép, sử dụng lại, chỉnh sửa các thành phần để có một sản phẩm chứ không sản xuất từ đầu đến cuối.

Chúng ta tham khảo kiến trúc ứng dụng của Siemens để hiểu rõ thêm về điều đó:

Cloud computing Architech 2

 

Kiến trúc ứng dụng khi sử dụng Cloud Service

Tóm lại, hiện tại và trong tương lai rất gần, Cloud Service sẽ thống lĩnh thị trường phát triển phần mềm nên việc hiểu, sử dụng và học tập kinh nghiệm từ nó là vô cùng cần thiết với các Lập trình viên trong quá trình phát triển nghề nghiệp của mình.

 

C. Các dịch vụ Cloud dành cho Developer

Phía trên là những kiến thức cơ bản về Cloud Service. Bây giờ, chúng ta sẽ tiến hành tìm hiểu các dịch vụ Cloud Service phục vụ cho các Developer trong quá trình phát triển phần mềm.

–         Các dịch vụ SaaS:

Trong quá trình phát triển phần mềm, chúng ta thường sử dụng các công cụ lưu trữ, giao tiếp, quản lý … Trong phần này sẽ giới thiệu cho bạn một số công cụ như vậy:

  • Cá nhân và giao tiếp: Bạn có thể sử dụng bộ công cụ miễn phí Email, Cloud Drive, Cloud Office của Google hoặc Microsoft là có thể thực hiện đầy đủ công cụ của: Email Server, File Server, Data Server. Cụ thể:
    • Bạn có thể lưu trữ dữ liệu lên đến 15 GB (One Driver), 25GB Gmail
    • Bạn có thể phân quyền, chia sẻ dễ dàng
    • Bạn có thể kiểm tra việc truy cập thỏa mái ..

Hãy thử: Gmail, Google Driver, Google Office hoặc Outlook mail, One Driver và Microsoft Office 365 để thực hiện các công việc của bạn. Bạn sẽ thấy hài lòng.

  • Quản lý dự án: Bạn có thể sử dụng Quản lý như: Redmine Online để quản lý dự án với chi phí thấp mà không cần cài đặt phức tạp. Chỉ đăng ký và sử dụng. Nếu dùng ít bạn có thể được miễn phí.

Hãy thử sử dụng Redmine Online tại:  https://www.hostedredmine.com/

  •  Công cụ quản lý code: Nếu bạn phát triển theo nhóm, bạn không cần cài đặt các công cụ source control quá phức tạp như SVN. Bạn có thể sử dụng Online với GitHub, Bitbucket (Free 5 Users) một cách dễ dàng và thuận lợi. Rất tuyệt vời cho việc phát triển các nhóm nhỏ.

https://bitbucket.org/

–         PaaS:  Dịch vụ Flatform

Nếu bạn được yêu cầu phát triển các sản phẩm phổ biến như CRM, Điều hành tác nghiệp, Nhân sự v.v… Bạn hoàn toàn có thể sử dụng các dịch vụ PaaS như Force.com hoặc muốn phát triển ứng dụng tương tác, chia sẻ qua mạng có thể sử dụng Google App Engine, Facebook App Engine …Bạn sẽ cảm thấy hiệu quả vô cùng.

–         IaaS: Dịch vụ hạ tầng CNTT

Giờ đây, có lẽ mọi người sẽ đặt câu hỏi tại sao phải mua máy chủ, thuê người quản trị, bảo trì, tốn điện, tốn chỗ để v… Vì tất cả việc đó bạn dễ dàng có được thông qua các dịch vụ máy chủ ảo trên mạng. Bạn muốn cấu hình nào cũng có, thậm chí bạn có thể thuê theo giờ để giảm chi phí.

Các nhà cung cấp IaaS nổi tiếng như Amazon Web Service, RackSpace, IBM Bluemix, Google Cloud Storage hay các nhà mạng cung cấp tại Việt Nam cũng bắt đầu cung cấp dịch vụ này như VDC, Viettel… Nhiều nhà cung cấp nhưng cách thức nó khá giống nhau ở đây tôi giới thiệu cùng các bạn một dịch vụ mà tôi đã dùng rồi và thấy rất hiệu quả là Amazon Web Service (http://aws.amazon.com/).

Amazon Webservice(AWS) có nhiều dịch vụ nhưng có 02 dịch vụ chúng ta hay dùng là Máy chủ ảo (Amazon EC2) và File Server (Amazon S3). Với  Amazon EC2 bạn có ngay Server Linux, Windows hay máy chủ có môi trường lập trình Java, Android, .Net … sau vài phút khai báo.

Nếu bạn cần trong một khoản thời gian ngắn và không yêu cầu quá cao, bạn có thể sử dụng Free các dịch vụ này cho thuận lợi. Ví dụ AWS miễn phí 12 tháng cho gói nhỏ nhất EC2 với dung lượng 8GB lưu trữ, Bộ nhớ 8GB, đường truyền thấp.

 

D. Kết luận

Cloud computing đã làm thay đổi hạ tầng, dịch vụ công nghệ thông tin. Việc nắm bắt và ứng dụng được nó sẽ giúp cho các bạn sinh viên hay những Developer dễ dàng hơn trong quá trình phát triển và triển khai các dự án phần mềm trong thời gian đến. Qua đó cũng có thể tìm hiểu và định hướng để tạo ra những sản phẩm có giá trị trong tương lai.

Trong khuôn khổ một bài viết cũng không thể chia sẻ chi tiết được mà chỉ trình bày khái quát về các dịch vụ Cloud. Các bạn quan tâm có thể tham gia các hội thảo của Trung tâm đào tạo Lập trình viên iViettech để hiểu rõ hơn về cách ứng dụng các dịch vụ này.