gRPC-Web được ra đời để cho phép các ứng dụng trình duyệt gọi dịch vụ gRPC mà không cần thay đổi máy chủ, nhưng nó dựa trên việc mã hóa lại payload và thường yêu cầu một proxy như Envoy để chuyển đổi giữa HTTP/1.1 của trình duyệt và HTTP/2 của máy chủ. Vì trình duyệt không hỗ trợ nguyên bản HTTP/2, gRPC-Web buộc phải sử dụng định dạng mã hóa đặc biệt và thường chỉ hỗ trợ gọi unary, khiến các tính năng streaming của gRPC bị hạn chế hoặc mất đi. Điều này dẫn đến độ trễ tăng lên, kích thước gói tin lớn hơn và khiến trình duyệt trở thành khách hàng hạng hai so với các client gốc sử dụng gRPC qua HTTP/2. Bài viết gợi ý thay vào đó các nhà phát triển nên cân nhắc sử dụng giao thức RPC gốc cho web như ConnectRPC hoặc tRPC, hoặc đơn giản là REST/GraphQL khi không cần các tính năng streaming mạnh mẽ của gRPC. Bài học là khi chọn RPC cho ứng dụng web, ưu tiên những giải pháp không cần proxy và không làm thay đổi semantics của giao thức gốc để tránh những Overshoot về hiệu suất và tính năng.
Why read it: Đọc bài này để hiểu cách gRPC-Web đã bị hạn chế trong môi trường web so với gRPC truyền thống, và tìm hiểu về những lỗ hổng về an toàn và hiệu suất, cùng so sánh với các giải pháp RPC phù hợp hơn cho web như Protocol Buffers Web để tối ưu hóa ứng dụng web hiện đại.
Answer 3 short questions to earn reward points for this article. Only do it if you want the points.
3 questions · under a minute · optional
Source: https://buf.build/blog/grpc-web-failed-the-web. 8 Sync News only summarizes and links out; content copyright belongs to the authors and original sources.
Đang tải bình luận…
Chris Richardson trong buổi trò chuyện Dear Architects với Luca Mezzalira giải thích tại sao nhiều doanh nghiệp vẫn xây dựng hệ thống big ball of mud. Nguyên nhân kỹ thuật là distributed monolith hiện ra qua dấu hiệu như quá nhiều dịch vụ mỗi nhà phát triển, phát hành lockstep và không có tăng tốc độ, cùng với khung dark energy và dark matter để xác định ranh giới dịch vụ. Khi sử dụng GenAI coding agents, các yếu tố cơ bản như phản hồi nhanh, kiểm thử tự động và kết nối lỏng lẻo trở nên quan trọng hơn vì cần có bảo vệ và vòng phản hồi nhanh để tránh tạo mã chết hoặc tài liệu ảo; đồng thời ông nghi ngại về hiện đại hóa di sản nhanh bằng AI, khuyến nghị dùng Strangler Fig thay vì viết lại toàn bộ, và nêu lo ngại về mệt mỏi từ lập trình đôi với AI, tác động của GenAI đến mô hình kinh doanh mã nguồn mở và khả năng phát triển theo spec trở lại mô hình waterfall. Điều đáng học là các kiến trúc sư nên tập trung vào cơ sở vững chắc (feedback nhanh, kiểm thử tự động, coupling lỏng) trước khi áp dụng AI, và cân nhắc cách tiếp cận Strangler Fig để thay đổi hệ thống cũ thay vì viết lại toàn bộ. Bài học còn nhắc nhở việc giám sát mệt mỏi từ lập trình đôi với AI và đánh giá tác động của GenAI đến kinh doanh mã nguồn mở để tránh quyết định dựa trên xu hướng mà không có căn cứ thực tiễn.
Bài viết này giúp lập trình viên hiểu rõ cách kết hợp Microservices và GenAI trong tương lai, tránh các cạm bẫy kiến trúc phân mòn và tận dụng AI một cách hiệu quả.
Forgejo Runner phiên bản 13.1.0, ra mắt ngày 31 tháng 8 năm 2026, giới thiệu một plugin execution engine thử nghiệm cho phép các nhà phát triển tạo backend thực thi tùy chỉnh như Firecracker microVMs, Kubernetes pods hoặc QEMU dưới dạng ứng dụng gRPC bên ngoài thay vì yêu cầu đội ngũ cốt lõi xây dựng và bảo trì mỗi engine. Protocol plugin đang ở giai đoạn alpha và có thể thay đổi. Phiên bản này cũng loại bỏ pseudo-tty terminal attachment từ job command execution, một thay đổi phá vỡ có thể ảnh hưởng đến các lệnh như docker run -it nay thất bại nếu không bỏ cờ -t; đây là tác phụ không được dự báo trước sau khi phát hành. Ngoài ra, bản cập nhật còn nâng cấp các dependency thông thường và chuẩn bị cho bản sửa lỗi sắp tới của Forgejo.
Phiên bản Forgejo Runner v13.1.0 giới thiệu công cụ thực thi plugin thử nghiệm và thay đổi quan trọng về cách thực thi lệnh job, ảnh hưởng trực tiếp đến quy trình CI/CD của bạn.
Bài viết chỉ ra hiện tượng coi số lượng dịch vụ microservices như dấu hiệu của kinh nghiệm …
AI đã làm cho việc tạo ra code trở nên rẻ hơn, nhưng việc sở hữu và duy trì code lại đòi …
Mô hình miền (domain model) và Ngôn ngữ phổ quát (Ubiquitous Language) càng trở nên quan trọng khi AI tự động sinh code.
Lập trình viên nên đọc bài này để hiểu cách Domain-Driven Design (DDD) và ngôn ngữ chung (Ubiquitous Language) trở nên quyết định hơn bao giờ hết khi AI tự động hóa viết code, giúp bảo vệ chất lượng logic và tính tương thích với yêu cầu thực tế của dự án.
Bài viết mô tả cách tích hợp Tailscale vào ứng dụng bằng thư viện tsnet để tạo mạng ảo riêng mà không cần cài client riêng. Sử dụng API của Tailscale, nhà phát triển có thể lập trình tạo và xoá các tailnet cô lập, mỗi tailnet có bộ thiết bị và chính sách riêng. Quá trình này được tự động hoá qua webhook hoặc script CI/CD, cho phép chia sẻ truy cập và quản trị admin mà không cần thao tác thủ công. Kết quả là giảm thời gian cấu hình mạng từ vài giờ xuống dưới vài phút và tăng khả năng cô lập giữa các môi trường test hoặc khách hàng. Bài học chính là khi xây dựng dịch vụ cần kết nối an toàn, nên xem tsnet như lớp SDK Go và khai thác API Tailscale để tự động hoá việc tạo, chia sẻ và quản trị tailnet.
Bài này giúp lập trình viên tích hợp Tailscale vào ứng dụng một cách hiệu quả bằng cách sử dụng tsnet và APIs để tự động hóa chia sẻ.
Các nhà phát triển thường gặp vấn đề khi tích hợp AI do thiếu giao chuẩn hóa dẫn đến hệ thống yếu kém. Model Context Protocol (MCP) ra đời như giải pháp kết nối ứng dụng AI với công cụ và tài nguyên thông qua giao diện tiêu chuẩn hóa. Giao thức này giúp giảm thiểu sự phụ thuộc vào từng vendor cụ thể và tăng khả năng bảo trì. Các pattern thực tế trong MCP cho phép xây dựng hệ thống AI bền vững, dễ mở rộng mà không bị ràng buộc bởi công nghệ độc quyền.
MCP giúp xây dựng hệ thống AI ổn định và dễ bảo trì khi tích hợp với nhiều công cụ khác nhau.
Bối cảnh là nhu cầu xây dựng HTTP client trong Node.js có thể hoạt động qua proxy mà không phụ thuộc vào nhà cung cấp dịch vụ. Nguyên nhân kỹ thuật xuất phát từ Undici's dispatcher abstraction, cho phép tách rời cấu hình proxy khỏi logic nghiệp vụ. Hệ quả là ứng dụng có thể thay đổi nhà cung cấp proxy (như Cloudflare, AWS) mà không cần sửa code, đồng thời hỗ trợ tính năng quan trọng như retry có backoff, rate limiting, request ID, phân loại lỗi, kiểm soát luồng xử lý, streaming an toàn bộ nhớ và shutdown graceful. Điều đáng học là cách tổ chức ranh giới HTTP client, lưu trữ routing trong config môi trường, quản lý credential an toàn, kiểm thử tách biệt giữa unit test (với fake client) và integration test (lớp routing), cũng như đảm bảo idempotency khi retry.
Bài viết này giúp bạn thiết kế client HTTP có khả năng sử dụng proxy trong Node.js một cách linh hoạt mà không phụ thuộc vào nhà cung cấp cụ thể.
Read the news here, practice coding, follow structured courses and train for IELTS on our sibling products — all connected through one 8 Sync account.
The ecosystem home: product overviews, blog and full pricing.
ExploreLearn along a clear roadmap: videos, auto-graded quizzes, certificates and mentors who ship for a living.
View the roadmap1,000+ DSA problems in Vietnamese, auto-graded across 7 languages — many FREE, right in your browser.
Practice for freeAI grading for all four IELTS skills with detailed rubric feedback.
Try it freeA 22 MB AI IDE for Vietnamese devs.
Download freeOrganizational memory for AI agents.
ExploreAI that staffs your Fanpage and qualifies leads for you.
Try it