Trong bài viết này, tôi sẽ không định nghĩa serverless là gì. Tôi thậm chí sẽ không mở rộng lợi ích kinh tế và kiến trúc của serverless mà tất cả chúng ta đã nghe nói - giảm hoạt động cơ sở hạ tầng, quy mô tức thì theo sự kiện và chi phí thấp.
Thay vào đó, tôi muốn giải thích lý do tại sao serverless lại là thứ mà tất cả các nhà phát triển nên quan tâm, cho dù sếp của họ có quan tâm đến nó hay không, YET.
Tất nhiên, bắt đầu bằng một câu chuyện cá nhân…
Tôi chưa bao giờ thực hiện bất kỳ “phát triển web” nào. Các dấu ngoặc kép ở đây không nhằm mục đích chọc cười khái niệm mà để biểu thị sự thiếu hiểu biết của tôi về ý nghĩa của nó. Tôi đã không biết sự khác biệt giữa một dịch vụ, bậc, Apache, IIS, ASP, JSP, JS, CSS hoặc các từ viết tắt khác trong thời gian dài nhất. Là một nhà phát triển phần mềm, tôi đã viết các ứng dụng máy tính để bàn xây dựng mã C ++ cho Windows hoặc các ứng dụng quản lý máy chủ xây dựng mã C cho Linux. Tôi luôn nghĩ rằng đó là điều mà những đứa trẻ tuyệt vời phải làm và tất cả “nội dung web” đều dành cho những lập trình viên kém hơn.
Tôi càng tránh xa trang web, nó càng trở nên bí ẩn đối với tôi. Những thứ như REST, JSON, WebAPI, v.v., xuất hiện trong mỗi bài viết thứ hai trên internet. Những người xây dựng ứng dụng dành cho thiết bị di động đang nói về việc xây dựng “phần mềm phụ trợ của dịch vụ web” cho ứng dụng của họ, điều này khiến tôi bối rối. Nó không giúp được gì khi thứ hấp dẫn nhất tiếp theo trong thị trấn - “đám mây” - vay mượn gần như tất cả các đặc điểm của nó từ “nội dung web”. Nếu bạn muốn xây dựng các ứng dụng trong “đám mây”, bạn phải hiểu rõ về “nội dung web” hoặc hiểu sâu về Máy ảo, Vùng chứa và các công nghệ liên quan đến ảo hóa khác. Tôi đã tránh mặt cả hai người đủ lâu để họ có được một luồng khí nào đó trong tâm trí tôi cho đến khi tôi nhận được một công việc mà tôi buộc phải học tất cả những điều đó. XIN CHÂN THÀNH CẢM ƠN!
Nhưng điều đó có liên quan gì đến Serverless?
Rất nhiều.
Tôi chắc chắn rằng bất chấp sự phổ biến rộng rãi của “phát triển web”, vẫn có một đội quân các nhà phát triển trên toàn thế giới xây dựng phần mềm cho máy tính để bàn, máy chủ, thiết bị nhúng, thiết bị di động, v.v. và không bao giờ xử lý nhiều đến các khía cạnh “web” (giống như tôi ). Nhiều người trong số họ chắc chắn đang lo lắng về “đám mây” và ý nghĩa của nó đối với họ - cho dù đó là về việc có các kỹ năng có thể tuyển dụng cho tương lai hay tìm ra cách kết nối / chuyển đổi các ứng dụng hiện có của họ sang đám mây (đã xem các bản ghi nhớ của công ty để hiệu ứng đó rồi).
Những nhà phát triển này có thể ghi nhớ thực tế rằng tất cả những gì họ cần làm để có các ứng dụng chạy trong “đám mây” chỉ là viết logic kinh doanh của họ. Trước khi không có máy chủ, quá trình chuyển đổi của họ có thể có nghĩa là phải học rất nhiều công nghệ mà tất cả đều mang tính chất hậu cần, chủ yếu chỉ thực hiện các công việc nặng nhọc không phân biệt. Với serverless, kỹ năng lập trình của họ là tất cả những gì họ cần. Lập trình viên nào không thích viễn cảnh chỉ tập trung vào lập trình?
Trong thế giới máy tính để bàn, việc xây dựng các ứng dụng console nhỏ hoặc các tiện ích dòng lệnh để kiểm tra một lý thuyết hoặc một ý tưởng là một việc thường ngày. Tuy nhiên, trong “đám mây”, đôi khi quy trình đi kèm xung quanh việc cố gắng tạo nguyên mẫu một ý tưởng rất cơ bản chứa đầy một số điểm khó khăn - cấu hình, thiết lập, SDK, tích hợp, v.v. Serverless làm giảm đáng kể nỗi đau đó cho các nhà phát triển bằng cách xử lý phần lớn thủ tục đằng sau hậu trường. Tạo mẫu dễ dàng, thử nghiệm nhanh, học hỏi từ những sai lầm và xoay vòng dựa trên các bài học, là những nguyên lý chính của phát triển phần mềm hiện đại. Một chất lượng bị đánh giá thấp hơn nhiều của serverless là khả năng cung cấp điều đó.
Đầu sự nghiệp của tôi, hội chứng cool-kid mà tôi đã đề cập trước đây (hội chứng khiến tôi tránh xa “nội dung web”) cũng khiến tôi rời xa Visual Studio quá lâu. Tôi đã kiên trì sử dụng vim và gdb trên Linux, ngay cả khi tất cả mã tôi làm việc trên đều là mã C / C ++ đa nền tảng có thể dễ dàng xử lý trong Visual Studio trên Windows. Tất cả những điều này, chỉ vì nó thật tuyệt khi giải tán bất cứ thứ gì không phải dòng lệnh. Tôi không muốn bắt đầu một cuộc tranh luận về chủ đề này nhưng đủ để nói rằng ít nhất tôi cảm thấy rằng tôi đã mất vô số giờ năng suất làm việc này.
Điểm lớn hơn mà tôi đang cố gắng đưa ra ở đây là các công nghệ cạnh tranh, ngay cả trong đám mây, cho phép bạn làm những điều tương tự. Có nhiều tình huống trong đó máy ảo, vùng chứa hoặc không có máy chủ sẽ cung cấp kết quả đầu ra tương tự. Tuy nhiên, serverless có thể sẽ là công cụ duy nhất tối ưu hóa năng suất của nhà phát triển bằng cách cung cấp trải nghiệm tập trung vào đơn vị tiền tệ của nhà phát triển - không phải máy ảo, vùng chứa, bộ điều phối hoặc phiên bản mà là CODE. Vấn đề xử lý mã hiệu quả (ngay cả mã dành cho đám mây) đã được giải quyết bởi các IDE đẳng cấp thế giới như Visual Studio.
Serverless có phải là thuốc chữa bách bệnh? Không. Nó có vấn đề gì không? Chắc chắn rồi. Tất cả chúng ta đã nghe nói về khởi động lạnh, thiếu trạng thái, giới hạn về thời lượng, bộ nhớ, v.v. Đây có phải là những kẻ phá vỡ giao dịch không? Trong hầu hết các trường hợp, Không. Lợi ích về năng suất vượt trội hơn những vấn đề này. Những vấn đề này là không thể vượt qua? Không có gì. Các nhà cung cấp đám mây đã nhận thấy đủ công lao và hứa hẹn trong công nghệ này sẽ có đủ động lực để sớm khắc phục những vấn đề này.
Tóm lại, serverless trình bày một công cụ tuyệt vời mà tất cả các nhà phát triển cần phải có trong hộp công cụ của họ.