Năm 2008 Google đã cho ra mắt Google App Engine và lần đầu tiên các developers có thể phát triển và chạy chương trình trên đám mây của Google mà không cần quan tâm đến các chi tiết về máy chủ được hoặc hệ điều hành. Năm 2015 Amazon đã tung ra một dịch vụ tương tự: Lambda. Từ đó, các nhà phát triển có thể tạo phần mềm mà không phải lo lắng về phần cứng, bảo trì hệ điều hành, khả năng mở rộng như trước đó. Đó là chính là những khởi đầu về Serverless.
Trong vài năm gần đây, mọi thứ liên quan đến serverless đã phát triển mạnh mẽ. Các công ty khởi nghiệp và công ty công nghệ đã bắt đầu tận dụng khả năng mở rộng, độ tin cậy và sức mạnh của serverless để có thể phát triển nhanh hơn, và vì vậy họ cũng cần nhiều nhà phát triển serverless hơn bao giờ hết.
Vậy serverless là gì và cơ hội nào cho các developer? Bài viết này sẽ điểm qua những khái niệm về serverless và lộ trình cơ bản dành cho những ai muốn trở thành một serverless developer.
Công nghệ Serverless là gì?
Khi nói về công nghệ “Serverless”, chúng ta đề cập đến 2 hai nhóm khác nhau, mỗi nhóm mô tả kiến trúc ứng dụng của chúng.
- Đầu tiên là Back-End dưới dạng Dịch vụ (Back-End as a Service – BaaS). BaaS áp dụng cho các ứng dụng có hầu hết backend trên đám mây và thường được giám sát hoặc duy trì bởi bên thứ ba thông qua các API. Bạn thường sẽ tìm thấy các ứng dụng nặng về giao diện người dùng tồn tại trên kiến trúc serverless. Hay nói cách khác logic được chuyển từ backend sang frontend. Các ứng dụng có thể bao gồm các ứng dụng di động hoặc ứng dụng web có giao diện người dùng phong phú và phức tạp.
- Nhóm thứ hai là Chức năng như một Dịch vụ ( Function as a Service or FaaS – FaaS). FaaS cho phép một ứng dụng chạy các phần code thông qua các event triggers. Kiến trúc serverless cho phép các ứng dụng gọi các chức năng theo yêu cầu. Điều này rất hữu ích vì nó cung cấp tính linh hoạt cho các ứng dụng phía máy chủ.
Ngày nay, khi nói đến Serverless người ta hay nói đến FaaS và nhiều người xem nó là một. Tuy nhiên, FaaS thực sự là một tập hợp con của serverless – nó là mô hình tính toán trung tâm cho serverless, trong đó mã ứng dụng hoặc container chỉ chạy để phản hồi các sự kiện hoặc yêu cầu. Serverless bao gồm FaaS cộng với tất cả các tài nguyên liên quan khác và các dịch vụ đám mây và các tài nguyên hỗ trợ code, ví dụ: lưu trữ, cơ sở dữ liệu, mạng, cổng API, xác thực.. trong đó các cấu hình, quản trị và thanh toán dịch vụ (billing of the service) là ẩn đối với người dùng.
Các trường hợp sử dụng serverless
Với sự kết hợp độc đáo của các thuộc tính và lợi ích, kiến trúc serverless rất phù hợp cho các trường hợp sử dụng xung quanh microservice, mobile backends cũng như xử lý luồng dữ liệu và sự kiện.
Serverless và microservices
Trường hợp sử dụng phổ biến nhất của serverless ngày nay là hỗ trợ các kiến trúc microservices. Mô hình microservices tập trung vào việc tạo ra các dịch vụ nhỏ thực hiện một công việc duy nhất và giao tiếp với nhau bằng cách sử dụng các API. Mặc dù microservices cũng có thể được xây dựng và vận hành bằng cách sử dụng PaaS hoặc container, serverless đã đạt được động lực đáng kể nhờ các thuộc tính của nó xung quanh các đoạn code nhỏ, tự động mở rộng, có thể cung cấp nhanh chóng và một mô hình định giá không bao giờ tính phí dung lượng nhàn rỗi.
API backends
Bất kỳ hành động (hoặc chức năng) nào trong nền tảng serverless đều có thể được biến thành một HTTP endpoint và sẵn sàng để các web clients sử dụng. Khi được bật cho web, những hành động này được gọi là tác vụ web. Sau khi bạn có các hành động trên web, bạn có thể tập hợp chúng thành một API đầy đủ tính năng với cổng API mang lại bảo mật bổ sung, hỗ trợ OAuth, giới hạn tốc độ và hỗ trợ miền tùy chỉnh.
Xử lí dữ liệu
Serverless rất phù hợp để làm việc với dữ liệu văn bản, âm thanh, hình ảnh và video có cấu trúc, xung quanh các tác vụ như làm giàu dữ liệu, chuyển đổi, xác thực, làm sạch, Xử lý PDF, chuẩn hóa âm thanh;, xử lý hình ảnh (xoay, làm sắc nét, giảm nhiễu, tạo hình thu nhỏ); nhận dạng ký tự quang học (OCR); và chuyển mã (transcoding) video.
Các hoạt động tính toán song song
Các loại tác vụ song song đều ứng dụng tốt với serverless runtime, với mỗi tác vụ có thể song song hóa dẫn đến một lệnh gọi hành động. Các tác vụ mẫu bao gồm việc tìm kiếm và xử lý dữ liệu (cụ thể là Cloud Object Storage), các tác vụ bản đồ(-Reduce) và quét web đến tự động hóa quy trình kinh doanh, điều chỉnh siêu tham số, mô phỏng Monte Carlo và xử lý bộ gen.
Stream processing workloads
Việc kết hợp Apache Kafka với FaaS và cơ sở dữ liệu cung cấp một nền tảng mạnh mẽ cho việc xây dựng đường ống dữ liệu và ứng dụng phát trực tuyến (streaming) theo thời gian thực. Các kiến trúc này lý tưởng để làm việc với tất cả các loại nhập luồng dữ liệu (để xác thực, làm sạch, làm giàu, chuyển đổi), bao gồm dữ liệu cảm biến IoT, dữ liệu nhật ký ứng dụng, dữ liệu thị trường tài chính và luồng dữ liệu kinh doanh (từ các nguồn dữ liệu khác).
Ứng dụng phổ biến
Trong một cuộc khảo sát gần đây của IBM cho thấy sử dụng serverless trên nhiều ứng dụng, bao gồm quản lý quan hệ khách hàng (CRM), phân tích và kinh doanh thông minh, tài chính… ngày càng phổ biến
Các nhà cung cấp dịch vụ serverless hàng đầu
Dưới đây là 3 nhà cung cấp dịch vụ serverless đáng chú ý:
# 1 – AWS Lambda
AWS Lambda là một dịch vụ serverless của AWS. Nền tảng này tương ứng với các trình kích hoạt (triggers) để xác định mức độ năng lượng tính toán mà ứng dụng cần tại một thời điểm nhất định. Đây là một tùy chọn phù hợp cho các ứng dụng theo yêu cầu (on-demand) được xây dựng bằng Python, Node.js, Java, Go, C # và Ruby. Nó thường được sử dụng cho các nền tảng web software-as-a-service và được coi là nền tảng căn bản để phát triển Node.js.
# 2 – Google Cloud Functions + Firebase
Google Cloud Functions là một nền tảng serverless để phát triển theo hướng sự kiện (event-driven). Nền tảng này kết nối code của bạn với Google Cloud Platform, thiết lập các triggers và các triggers này sẽ kích hoạt phản hồi đối với hành động của người dùng và các thay đổi của ứng dụng.
# 3 – Microsoft Azure
Azure là một tổ hợp gồm 100 công cụ serverless để phát triển, kiểm thử, triển khai và quản trị phần mềm. Nền tảng sử dụng Đám mây và điện toán biên thay vì sử dụng hoàn toàn tài nguyên cục bộ. Đặc điểm khác biệt của Microsoft Azure là mối quan hệ của nó đối với DevOps – các công cụ của nó tập trung vào việc cho phép kiểm tra, triển khai và tích hợp liên tục.
Làm thế nào để trở thành một serverless developer?
Trở thành Serverless Developer có nghĩa là bạn xây dựng các giải pháp với các dịch vụ được quản lý từ AWS, Google Cloud (GCP) hoặc Azure. Bạn xây dựng các giải pháp bằng cách ghép các dịch vụ khác nhau lại với nhau và chạy tất cả logic nghiệp vụ của mình trong AWS Lambda hoặc CGP Cloud Functions thay vì trên một máy chủ.
Các nền tảng đám mây của bạn xử lý hầu hết tất cả các hoạt động (bảo mật, dự phòng, khả năng mở rộng và mạng), việc còn lại của bạn là tập trung vào việc xây dựng các giải pháp tốt nhất mà bạn có thể. Điều này có nghĩa là các tính năng có thể được xây dựng nhanh hơn và các công ty không cần phải thuê các chuyên gia vận hành.
Dưới đây là 5 bước để học trở thành một serverless developer cho những ai muốn phát triển sự nghiệp trong lĩnh vực này.
# 1 – Phát triển kỹ năng lập trình JavaScript or Python
Đây là 2 ngôn ngữ này mà hầu hết các công ty sử dụng Serverless Architecture sẽ sử dụng một trong hai. Vì vậy thành thạo hai ngôn ngữ này sẽ là tiền đề để bạn phát triển thành một serverless developer chuyên sâu
# 2 – Chọn framework
Khi nắm chắc ngôn ngữ , bạn cần một công cụ để giúp bạn tạo các thành phần serverless trong AWS. Có rất nhiều lựa chọn và hai trong số những framework bạn nên xem xét là Serverless Framework hoặc AWS CDK. Sẽ rất hữu ích nếu chúng ta chọn một framework cho phép chúng ta viết Infrastructure-as-Code (IaC). Nó cho phép bạn sử dụng Git để kiểm soát phiên bản, giúp làm việc theo nhóm dễ dàng, cho phép triển khai trên nhiều môi trường, thậm chí tích hợp và triển khai liên tục. Ngoài Serverless Framework và AWS CDK thì bạn cũng có thể xem xét các framework khác như AWS SAM & AWS Amplify, Terraform & Ansible, Webiny & Serverless Cloud..
# 3 – Bắt đầu với những thứ cơ bản
Với framework bạn đã chọn, bây giờ bạn có thể bắt đầu xây dựng mọi thứ với nó.
Điều đầu tiên bạn nên xây dựng một API chỉ sử dụng Lambda và API Gateway. Điều này rất đơn giản nhưng sẽ giúp bạn thực hành với các nguyên tắc cơ bản cốt lõi của framework. Hiểu được những điều cơ bản sẽ giúp việc học những thứ nâng cao hơn dễ dàng hơn rất nhiều.
# 4 – Tìm hiểu thêm về các dịch vụ bạn đang sử dụng
Khi ban đã sử dụng dịch vụ mới, bạn nên tìm hiểu thêm một chút về nó. Những điều quan trọng mà ban cần biết về dịch vụ mà bạn sử dụng là:
- Điểm mạnh, điểm yếu và hạn chế của nó là gì?
- Một số trường hợp sử dụng lý tưởng để sử dụng dịch vụ là gì?
- Một số trường hợp mà bạn nên tránh sử dụng dịch vụ này là gì?
Biết được ba điều này, bạn sẽ có thể quyết định tốt hơn liệu một dịch vụ có phù hợp với giải pháp mà bạn đang xây dựng hay không.
Ví dụ: AWS Lambda là tuyệt vời cho hầu hết các API, nhưng không thể chạy quá 15 phút. Nếu bạn cần xây dựng một API thực hiện một số xử lý hàng loạt mất 10-20 phút thì cần phải tìm một giải pháp khác.
# 5 – Xây dựng các dự án của riêng bạn
Khi bạn đã biết cách xây dựng với dịch vụ mới và hiểu rõ về thời điểm sử dụng dịch vụ thì đã đến lúc sử dụng các dịch vụ này trong các dự án của riêng bạn. Bạn nên bắt đầu với một dự án cá nhân mà bạn chỉ sử dụng để thực hành sử dụng các dịch vụ mới. Bằng cách đó, bạn không phải lo lắng về việc phá vỡ mọi thứ và bạn có thể tập trung vào cách dịch vụ đang hoạt động. Sau khi đã thành thạo, đó là lúc bạn có thể bắt đầu như một serverless developer thực thụ
Kết luận
Ngày nay, serverless ngày càng phổ biến và mọi nhà cung cấp dịch vụ đám mây hàng đầu đều cung cấp nền tảng này như Microsoft Azure (Azure Functions), Google Cloud (Google Cloud Functions) và AWS Lambada. Cùng với serverless, microservices và container, tạo thành bộ ba công nghệ thường được coi là cốt lõi của phát triển ứng dụng cloud native. Và vì vậy, phát triển sự nghiệp trong lĩnh vực này cũng đáng xem xét và muốn trở thành một serverless developer, bạn cần có một kế hoạch rõ ràng cho việc học hỏi.
Bài viết có tham khảo thông tin từ các nguồn:
2/10 amazing benefits of serverless technology
3/ How to become serverless developer in 2022