Ở hai kì trước, mình đã giúp các bạn hiểu tổng quát cloud là gì, cũng như những dịch vụ mà Cloud cung cấp.
Tuy nhiên, khi chém gió về Cloud, có thể các bạn sẽ bị hỏi: Ủa vậy Cloud nó có gì hay ho? Tại sao phải dùng Cloud, nó có ưu nhược điểm gì không? Khi nào nên và khi nào không nên dùng Cloud!
Do vậy, trong bài này, mình sẽ chia sẻ về những ưu nhược điểm của Cloud so với việc tự host, để chúng ta có thể đưa ra lựa chọn cho phù hợp nhé.
Hôm trước, mình đã chia sẻ về khái niệm Cloud là gì, cũng như một số ưu điểm của Cloud rồi.
Trừ các công ty chuyên cung cấp dịch vụ Cloud, hoặc các công ty siêu bự ra; đa phần các công ty không tự xây dựng hệ thống Cloud của riêng mình, mà sử dụng dịch vụ Cloud được bên thứ ba cung cấp.
Hiện tại, 3 nhà cung cấp dịch vụ Cloud (Gọi tắt là Cloud Provider) phổ biến nhất là AWS – Amazon Web Service của Amazon, Azure của Microsoft, và GCP – Google Cloud Platform của Google.
Trong bài này, chúng ta sẽ tìm hiểu sơ về sự ra đời và thị phần của các dịch vụ này nha!
Sau một thời gian ấp ủ cũng khá lâu, hôm nay Code Dạo quay lại, viết một series hoàn toàn mới, hướng dẫn các bạn Nhập Môn về Cloud nha.
Sao đến bây giờ Code Dạo mới nói về Cloud?
Cách đây vài năm, đi đâu các bạn cũng sẽ nghe giang hồ ra rả về công nghệ Điện Toán Đám Mây, về Cloud Computing. Người ta bảo rằng nó là tương lai của công nghệ blah blah blah.
Bản thân mình thích đi ngược số đông, thấy công nghệ gì được bà con tung hô thì mình rất là dị ứng (Trước là Cloud, Angular 2, rồi React, gần đây là Bitcoin với Blockchain).
Mình thường hay đợi tới khi nó production-ready, được nhiều công ty sử dụng, mang lại lợi ích thực tế cho người dùng thì mới bắt đầu tìm hiểu.
Thời đấy, ban đầu chỉ có mỗi Amazon cung cấp dịch vụ Cloud Computing. Thế nhưng, nhu cầu ngày càng nhiều, doanh thu của Amazon Web Service – dịch vụ cung cấp Cloud của Amazon phát triển ngày càng vượt bật.
Thấy ngon ăn, Microsoft cũng nhảy vào với Azure, Google thì chậm chân hơn, cho ra đời Google Cloud Platform. Nhờ có sự cạnh tranh, giá thành cloud dễ chịu hơn, các công cụ hỗ trợ nhiều hơn, tài liệu học nhiều hơn.
Amazon, Microsoft và Google cạnh tranh thị trường Cloud
Hiện tại, các công ty sử dụng Cloud càng ngày càng nhiều, các qui trình cũng như best practice cũng đã rõ ràng. Cloud đã chứng minh được nó là một công nghệ có ích, được sử dụng nhiều, đáng học.
Do vậy Code Dạo mới cắm đầu vào học, tìm hiểu và chia sẻ!
Phần 6 – Từ demo tới deploy – Vô Thai Kiếm (Serverless Architecture)
Kết thúc phần trước, chúng ta đã Oauth WebTask để viết xong RestAPI của ứng dụng theo kiến trúc Serverless. Ở phần cuối này, chúng ta sẽ sử dụng AngularJS để tạo một ứng dụng Web đơn giản.
Phần 6 – Từ demo tới deploy – Vô Thai Kiếm (Serverless Architecture)
Sau khi đọc phần trước, bạn đã hiểu được khái niệm serverless. Ở phần này, chúng ta sẽ biến hàm recognizeđã viết ở phần 5 thành một RestAPI. Với cách thông thường, ta sẽ dùng NodeJS để viết một ứng dụng rồi deploy nó lên 1 server nào đó (Xem ví dụ phần 3 bài deploy chatbot).
Tuy nhiên, lần này chúng ta sẽ dùng kiến trúc Serverless, chỉ viết code và để bên thứ 3 lo các phần server và deploy. Sau khi đã có RestAPI này, ta viết 1 ứng dụng web nho nhỏ, dùng API này để nhận diện VAV idol. Sản phẩm cuối cùng: http://jav-idol.toidicodedao.com/vav/
Phần 6 – Từ demo tới deploy – Vô Thai Kiếm (Serverless Architecture)
Như đã nói trong bài đầu của series, mình áp dụng kiến trúc serverless trong thiết kế hệ thống. Kiến trúc này giúp ứng dụng có thể đáp ứng hàng triệu người truy cập với giá thành vô cùng rẻ. Trước khi bắt tay vào code, ta hãy cùng tìm hiểu khái niệm và kiến trúc Serverless nhé.
Serverless là cái chi chi?
Serverless được dùng để chỉ 2 khái niệm khác nhau (nhưng lại khá liên quan với nhau):
Một số ứng dụng chuyển phần lớn logic về front-end, không có server để làm back-end (serverless) mà chỉ sử dụng các API của bên thứ 3 để thay thế. Ví dụ trong Nhận diện Idol, mình không viết code trên server mà dùng API của Cloudinary upload ảnh và Firebase để hiển thị realtime. Nhiều ứng dụng di động cũng dùng kiến trúc này (Backend as a Service – BaaS).
Một số trường hợp khác, lập trình viên phải tự viết code để làm back-end. Với mô hình client-server thông thường, ta phải thuê server rồi deploy ứng dụng lên server. Với mô hình serverless, thay vì deploy code này lên server, ta deploy nó đưới dạng một Function (Function as a Service – FaaS). Funtion này có thể được gọi dưới dạng RestAPI hoặc chạy theo lịch đã sắp sẵn.
Sau phần 4.1, hẳn các bạn cũng đã hiểu cơ chế hoạt động của một hệ thống nhận diện khuôn mặt. Trong phần này, chúng ta sẽ sử dụng dữ liêu khuôn mặt đã có của 12 VAV Idol để huấn luyện cho máy (Được ngắm gái xinh chắc nó mừng lắm). Bắt đầu nào!
Ở phần 3, chúng ta đã có cơ sở dữ liệu của các VAV Idol xinh đẹp. Ở phần này, ban đầu mình cũng định hướng dẫn các bạn sử dụng trực tiếp API của Microsoft luôn.
Tuy vậy, mình nhận được nhiều feedback dạng: Sau không hướng dẫn cách code từ đầu bằng thuật toán mà lại sử dụng API? Xài API có gì hay ho cao siêu đâu?
Ờ mà cũng đúng thật, dùng API có gì cao siêu đâu nhỉ? Bản thân mình cũng không muốn các bạn chỉ biết cắm đầu dùng API mà không rõ cơ chế hoạt động bên trong.
Nhận diện khuôn mặt là một trong những ứng dụng phổ biến của Machine Learning. Nguyên tắc hoạt động của chúng cũng khá thú vị nên biết thêm một chút cũng không hại gì. Thôi thì tiện tay mình thêm tí “Học thuật” vào bài viết cho nó phức tạp hơn vậy.
Các bạn chịu khó đọc kĩ nguyên lý trước khi nhảy vào code nhé.
Sau bao ngày chờ đợi thì phần 3 của series cũng được ra mắt các bạn đọc. Lý do phần này bị mình “ngâm dấm” hơi lâu là do… JAV và 18+.
Do blog có nhiều trẻ em và cụ già đọc nên mình không thể thoải mái để link và hình ảnh 18+ trong bài viết được. Vì thế mình thay đổi hướng tiếp cận vấn đề. Thay vì nhận diện JAV Idol, chúng ta sẽ chuyển qua nhận diện… VAV Idol.
Sản phẩm cuối cùng của chúng ta sẽ có tương tự thế này, với kiến trúc đơn giản dễ hiểu hơn “Nhận diện Idol” nhiều: http://jav-idol.toidicodedao.com/vav/. Bắt đầu thôi nào!
Ở bài viết trước, mình đã giới thiệu về sự ra đời của Nhận Diện Idol. Ở phần này, mình sẽ tập trung về khía cạnh techincal như kiến trúc tổng thể và công nghệ sử dụng trong ứng dụng nhé.