Low-Code được ứng dụng như thế nào trong Cloud-Native?

cloudFun

Bài viết này xem xét mối quan hệ giữa low-codecloud-native computing dựa trên phân tích của Jason Bloomberg – chuyên gia phân tích thị trường IT hàng đầu kiêm chủ tịch công ty Intellyx.

Lowcode_Plattformen_web.jpg


Không giống như những công ty lớn, các chuyên gia phân tích thường tập trung vào các phân khúc thị trường hẹp để tránh giẫm đạp lên thị phần của nhau, tại Intellyx việc đưa ra các chủ đề xuyên suốt phù hợp với nhu cầu kinh doanh được xem là một đặc quyền. Một trong những công cụ được sử dụng trong thương mại là việc xem xét kỹ lưỡng cách hai thị trường khác nhau có liên quan với nhau và theo đó cung cấp giá trị kinh doanh.



Định nghĩa

Công cụ Low-code
đơn giản hoá và tăng tốc công việc của các developer chuyên nghiệp bằng cách cung cấp một môi trường dựa trên mô hình trực quan (visual model-based environment) để tạo các ứng dụng. Low-code có khả năng thay thế các developer trong các tác vụ như hand-coding integration (tích hợp mã hóa thủ công), khả năng bảo mật và việc viết các mẫu rập khuôn để họ có thể tập trung vào các nhiệm vụ có giá trị cao hơn nhằm phục vụ nhu cầu kinh doanh.

Cloud-native computing mở rộng các practice tốt nhất của cloud cho tất doanh nghiệp IT, bao gồm khả năng thay đổi quy mô theo chiều ngang (horizontal scalability), độ co giãn (elasticity), mô hình phân phối dựa trên đăng ký (subscription-based delivery models)... Hybrid IT, Edge computing, zero-trust sercurity và DevOps là các chương của câu chuyện cloud-native computing.

Hiện nay, Kubernetes đang ở trong “mắt bão” của cloud-native computing do container và microservice đang thúc đẩy sự đổi mới. Tuy nhiên, bối cảnh của cloud-native rộng hơn rất nhiều so với Kubernetes, nó bao gồm gamut của hầu hết các environment từ on-premise đến virtualized cho tới serverless.

Cuối cùng, microservice được định nghĩa là các đơn vị thực thi gắn kết siêu nhỏ. Gắn kết có nghĩa là mỗi microservice trong nhóm làm một việc và làm rất tốt phần việc này. Đơn vị thực thi đề cập đến thực tế là microservice bao gồm các đoạn modular code có thể thực thi được, tương tác với các microservice và các thành phần khác thông qua API.

Mặt trái của Microservice

Ban đầu, low-code và cloud-native có vẻ không bổ trợ nhiều cho nhau mặc dù các nhà cung cấp vẫn chỉ ra những điểm chung giữa chúng. Xét cho cùng, microservice là một khối software code. Vậy tại sao phải hand-code chúng khi có thể sử dụng cách tiếp cận low-code để tạo ra các microservice?

Các microservice thường tập trung vào chức năng back-end đơn giản thay vì gán chính nó vào bối cảnh mô hình trực quan (visual model) mà low-code cung cấp. Hơn nữa, ngày nay, các công cụ low-code có xu hướng tập trung vào việc tạo ứng dụng front-end (thường dành cho các mobile app), tương tự như thiết kế workflow và tự động hóa quy trình kinh doanh. Các microservce của Bespoke dường như không nằm trong danh sách hỗ trợ của low-code.

Theo định nghĩa nêu trên, microservice tập trung vào code (code-centric) và do đó có thể không gán bản thân nó để phát triển low-code. Tuy nhiên, cách các tổ chức lắp ráp microservice vào các ứng dụng là một câu chuyện khác.

Một số nhà cung cấp low-code sẽ khiến khách hàng tin rằng các microservice như các khối LEGO và có thể lắp ráp thành các ứng dụng. Nhìn bề ngoài, phép ẩn dụ LEGO này đang đi đúng hướng, tuy nhiên những sai lầm của tư duy này bộc lộ trong các chi tiết.

Khi xuất hiện lần đầu tiên trên thị trường công nghệ, microservice được nhận được sự hưởng ứng nhiệt tình từ cộng đồng developer trong việc build app. Tuy nhiên, vì tính chất “micro” của nó, các developer cần sử dụng nhiều microservice để build các chức năng kinh doanh quan trọng hơn so với cách tiếp cận development hướng đối tượng truyền thống. Theo đó, các developer cũng phải làm việc với các operator để quản lý, bảo mật và thay đổi quy mô microservice.

Rõ ràng việc thiết lập một số loại microservice miễn phí trong đó các microservice có thể tương tác với nhau dẫn đến sự phức tạp quá mức sẽ cản trở khả năng mở rộng nỗ lực build ứng dụng và quản lý resulting deployment.

Vì lý do này, người dùng nên tuân theo phép ẩn dụ khối LEGO cho microservice một cách thận trọng, cảnh giác với các nhà cung cấp quảng cáo rằng công cụ low-code của họ nên được sử dụng để lắp ráp microservice.


Sự nổi lên của kiến trúc Cloud-Native

Những thách thức của việc lắp ráp microservice đã giúp thúc đẩy sự phát triển của các nền tảng điều phối container như Kubernetes, cũng như một tập hợp rộng hơn các pratice tốt nhất ở trung tâm của cloud-native hay còn được gọi là kiến trúc cloud-native (cloud-native architecture).

Kiến trúc cloud-native đồng thời thông báo và tận dụng cách Kubernetes tiến hành sắp xếp các container thông qua các pod và cluster. Tuy nhiên nhưng điều này chỉ là bề nổi của tảng băng chìm.

Tương tự như các phương pháp kiến trúc khác, kiến trúc cloud-native dựa trên nền tảng cloud vốn trung lập về công nghệ. Thay vào đó, đặc điểm quan trọng nhất của nó là cách mô tả sự trừu tượng hóa mạch lạc và toàn diện, xác định cách thức hoạt động của cloud-native computing.

Trừu tượng hóa (abstraction) là sự đơn giản hóa có chủ ý nhằm che giấu sự phức tạp tiềm ẩn của công nghệ bằng cách cung cấp các representation hữu ích của công nghệ đó cho người dùng. Thông thường, trừu tượng áp dụng trong các bối cảnh công nghệ cụ thể: trình biên dịch code đối tượng trừu tượng (compilers abstract object code), máy chủ vật lý trừu tượng (virtual machines abstract physical servers)…

Ngược lại, với kiến trúc cloud- native, sự trừu tượng trải rộng trên toàn bộ bối cảnh của nền ngành IT, từ on-premise đến edge, từ cloud đến serverless computing.

Về bản chất, chúng tôi đã vẽ một đường nước trên tất cả mọi thứ chúng tôi đang làm. Bên dưới dòng là cơ sở hạ tầng hỗ trợ sự trừu tượng. Phía trên dòng là các doanh nghiệp, khách hàng, người dùng và bất kỳ ai muốn xây dựng các ứng dụng tận dụng các tài sản CNTT trừu tượng.

Một khi sự trừu tượng này được thực hiện, vai trò của low-code trong thế giới cloud-native sẽ trở nên rõ ràng hơn. Trên cả trừu tượng, Intellyx không chỉ có các microservice có thể kết hợp mà còn cung cấp các reprentation an toàn, được quản lý, có thể thay đổi quy mô về chức năng phần mềm cho phép gán để build ứng dụng low-code.

Do đó, kiến trúc cloud-native là chìa khóa để trao quyền cho low-code hoạt động với microservice hoặc bất kỳ khả năng phần mềm nào khác cùng quy mô.




Phần chìm của tảng băng Low-code

Khi hoạt động đúng, trừu tượng ẩn tất cả các kiểu phức tạp khỏi chế độ view, nhưng sự phức tạp đó vẫn tồn tại. Nếu có bất cứ sự hỗ trợ trừu tượng liền mạch, điều đó đòi hỏi sự phức tạp bổ sung cho phần chìm của tảng băng trừu tượng hoá.

Đó là thách thức với cloud-native infrastructure. Dân công nghệ quen làm việc với Kubernetes (hoặc bất kỳ công nghệ nào trong hệ sinh thái của nó) sẽ đồng ý với quan điểm rằng thế giới cloud-native cực kỳ phức tạp.

Chìa khoá giải quyết thách thức này là những nguyên tắc kiến trúc cloud-native cốt lõi giúp gỡ bỏ sự phức tạp này: trustlessness, statelessness và codelessness (tham khảo bài viết về các chủ đề này tại đây).

Trong ba nguyên tắc nói trên, Codelessness (tạm dịch: không mã hoá) là thứ liên kết cloud-native và low-code. Codelessness về cơ bản là nguyên tắc thực tiễn mà các mô tả khai báo sẽ điều khiển tất cả các cấu hình infrastructure. Nếu muốn thay đổi một thành phần trong production enviroment, hãy cập nhật mô tả của nó (hoặc recepe, hoặc bảng kê khai hoặc biểu đồ) và deploy lại.

Nguyên tắc khai báo này là trung tâm của chuyển động infrastucture dưới dạng code (infratructure as code), ngoại trừ việc codelessness trên nền tảng cloud-native còn đưa phong trào này đi xa hơn nữa. Cuối cùng, người dùng không thực sự muốn infrastructure là code, thay vào đó, muốn nó là một reprentation khai báo của hành vi mong muốn.

Cho đến nay, chỉ một stratic reprentation của hành vi mong muốn cũng không đủ. Giả sử một tập tin YAML hoặc manifest (bảng kê khai) hoặc recipe, làm thế nào để cập nhật, phiên bản, kiểm tra và quản lý các reprentation đó?

Thay vào đó, Intellyx muốn một mô hình trừu tượng về việc thể hiện hành vi mong muốn (abstracted model of the representation of the desired behavior). Những mô hình như vậy không chỉ đơn giản là nắm bắt hành vi mà còn nắm bắt khả năng thay đổi hành vi đó cũng như các ràng buộc đối với thay đổi và trao quyền cho những người tương tác với nó thực hiện và quản lý các thay đổi này.

Đến đây, khái niệm được hoàn thiện, những gì các công cụ low-code làm là cung cấp các mô hình trừu tượng của reprentation hành vi ứng dụng mong muốn. Nói cách khác, nguyên tắc codelessness của cloud-native và công cụ low-code được tạo ra cho nhau.

Quan điểm của Intellyx

Dựa vào nguyên tắc Codelessness trong thế giới cloud-native, mặc dù qua cụm từ “infrastructure as code” nhiều người có thể nghĩ rằng low-code sẽ thuộc một vị trí trong các nhóm cloud-native infrastructure.

Tuy suy luận đó không thuộc trường hợp của low-code. Thay vào đó, các chuyên gia trong các nhóm như vậy đang sử dụng một bộ mô hình trừu tượng hoàn toàn khác thông qua giao diện dòng lệnh (CLI – command line interface).

Khi các những người dựng app chỉ nhìn vào bề nổi của cloudnative để tìm giá trị trong các mô hình trực quan, các kỹ sư bên dưới bên dưới tảng băng, thay vào đó, sẽ chỉ ra một hướng dẫn cô đọng nhất.

Theo cách tiếp cận của Jason Bloomberg – chuyên gia phân tích thị trường IT hàng đầu kiêm chủ tịch công ty Intellyx, có hai điểm quan trọng.

Đầu tiên, cấu hình dựa trên CLI phổ biến trong các cloud-native infrastructure circle tự bản thân nó là một cấu trúc low-code (hoặc ít nhất, tương tự như một).

Thứ hai, nếu bất kỳ nhà cung cấp nào quyết định tạo ra các công cụ low-code dựa trên mô hình trực quan cho cloud-native infrastructure, họ có thể tìm thấy một đối tượng sẵn sàng. Xét cho cùng, CLI không nhất thiết phải là cách tiếp cận tốt nhất, ngay cả đối với các kỹ sư cloud-native infrastructure.

Nguồn: https://dzone.com/articles/how-does-low-code-fit-into-the-cloud-native-world
 
Top