GraphQL có thể là chìa khóa để kiểm soát sự bùng nổ của API
Phát triển ứng dụng có một lịch sử dài với sự tiến triển và biến đổi nhanh chóng, có lẽ nhanh hơn bất kỳ ngành công nghiệp nào khác. Các công cụ chúng ta sử dụng để tạo và lưu trữ ứng dụng của mình đang liên tục thay đổi.
Sự phát triển nhanh chóng trong các công cụ lập trình cung cấp nhiều cơ hội để tạo phần mềm cho các doanh nghiệp với các quy mô, ngành và ngân sách khác nhau. Tuy nhiên, tính linh hoạt và đa dạng của các công cụ, cùng với cảnh đổi thay liên tục, cũng đưa ra những thách thức riêng của chúng.
Nhà phát triển phải có khả năng tạo ứng dụng của họ theo cách có thể thích ứng với quy mô và những thay đổi mà tổ chức, khách hàng và cơ sở hạ tầng của họ trải qua. May mắn thay, với sự chuyển đổi hướng điều khiển dựa trên đồ thị, các công ty sẽ được trang bị tốt hơn để duy trì tính linh hoạt của họ khi liên tục phát triển và thích ứng với nhu cầu của khách hàng.
Những thách thức của phát triển ứng dụng hiện đại
Một trong những phước lành — và lời nguyền — của phát triển ứng dụng hiện đại là bạn có nhiều lựa chọn.
Bạn có thể lựa chọn giữa việc chạy ứng dụng trên máy chủ của riêng bạn, trên đám mây hoặc trong mô hình lai. Bạn có thể sử dụng mô hình serverless, nơi một nhà cung cấp đám mây quản lý máy chủ của bạn ở nền và bạn tập trung vào chức năng, hoặc chọn mô hình containerized, nơi ứng dụng của bạn được đóng gói vào một tệp docker. Bạn có thể lựa chọn giữa các mô hình lưu trữ và lưu trữ dữ liệu khác nhau, bao gồm cả các hệ thống lưu trữ dữ liệu và hồ chứa dữ liệu. Và bạn có thể đưa ra những lựa chọn này và nhiều lựa chọn khác cho từng thành phần của ứng dụng của bạn.
Lợi ích của loạt nền tảng tính toán và lưu trữ mạnh mẽ này là bạn có thể điều chỉnh ứng dụng của mình theo nhu cầu của khách hàng và tổ chức của bạn. Tuy nhiên, nhược điểm là sự phức tạp được thêm vào khi giao tiếp với nhiều API dịch vụ khác nhau hỗ trợ ứng dụng của bạn.
GraphQL giúp nhà phát triển giao tiếp với API thông qua truy vấn dữ liệu linh hoạt và có cấu trúc.
"Nhiều ứng dụng phải giao tiếp với hàng chục, thậm chí hàng trăm dịch vụ trong quá trình chạy. Trong một số trường hợp, mỗi cập nhật ứng dụng (di động, web, v.v.) đều đòi hỏi hàng trăm cuộc gọi API đến các dịch vụ khác nhau," nói Peggy Rayzis, Giám đốc cao cấp trải nghiệm phát triển tại Apollo Graph, Inc. "Điều này đòi hỏi một nỗ lực lớn và phức tạp từ phía nhà phát triển, phải đảm bảo tất cả các dịch vụ khác nhau này tương thích và có thể tương tác."
Sự phức tạp thêm vào cũng làm khó khăn việc lặp lại, thêm hoặc sửa đổi tính năng hoặc thay đổi cơ sở hạ tầng cơ bản. Trong mỗi trường hợp, việc triển khai lặp lại và không nhất quán giữa các dịch vụ buộc nhà phát triển phải trải qua những thay đổi cường độ trong mã nguồn của họ để kết nối tất cả các dịch vụ cũ và mới.
Lập trình dựa trên đồ thị đến cứu thế
Một trong những xu hướng giúp nhà phát triển đối mặt với sự phức tạp của hệ sinh thái ứng dụng là lập trình dựa trên đồ thị. Lập trình dựa trên đồ thị cho phép nhà phát triển thêm một tầng lược đồ dữ liệu giữa ứng dụng của họ và các dịch vụ API chạy ở phía sau cảnh. Tầng trừu tượng này tách rời những phần này và cho phép chúng phát triển mà không gây ra sự quậy pha lớn lẻ trong lẫn nhau.
“Đơn giản là, ý tưởng là bạn thêm một tầng trung gian cho phép ứng dụng của bạn tương tác với thực thể dữ liệu của bạn bằng cách truy vấn một đồ thị,” Rayzis nói. “Tầng đồ thị là đồng nhất và linh hoạt, bất kể loại cơ sở hạ tầng nào đang hoạt động ở phía sau cảnh, cho dù đó là một máy chủ on-prem, một VM đám mây, một REST API, một kho dữ liệu hay một chức năng serverless như AWS Lambda.”
Lập trình dựa trên đồ thị được phổ biến bởi GraphQL, một ngôn ngữ truy vấn dữ liệu được giới thiệu bởi Facebook vào năm 2015. GraphQL giúp nhà phát triển giao tiếp với API thông qua các truy vấn dữ liệu linh hoạt và có cấu trúc. Điều này giúp nhà phát triển dễ dàng tập trung vào lược đồ dữ liệu và logic của ứng dụng và duy trì tính ổn định của ứng dụng khi các API phát triển và thay đổi.
Chúng ta đang thấy 30% trong số 500 công ty đa quốc gia xây dựng ứng dụng của họ trên siêu đồ thị.
Các công ty và ứng dụng của các quy mô khác nhau có thể hưởng lợi từ lập trình dựa trên đồ thị. Rayzis nói:
Bất kể kích thước và cấu trúc, mọi ứng dụng đều có thể hưởng lợi từ sự phát triển dựa trên đồ thị. Khi ứng dụng của bạn phát triển hoặc cơ sở hạ tầng dữ liệu của bạn thay đổi, đồ thị của bạn vẫn nhất quán và vẫn liên kết với logic của ứng dụng của bạn.
Ví dụ, Walmart đã sử dụng GraphQL để tạo một lược đồ liên minh của các thực thể khác nhau được sử dụng trong các ứng dụng và dịch vụ khác nhau của họ trên web và di động. Với GraphQL, họ có thể loại bỏ nhiều mã được sao chép trên các API của họ, thống nhất ứng dụng của họ và trở nên linh hoạt hơn trong việc triển khai tính năng và cải thiện trải nghiệm người dùng.
Thế hệ tiếp theo của các công cụ dựa trên đồ thị
“Những gì chúng tôi phát hiện qua hơn sáu năm làm việc với nhà phát triển triển khai GraphQL ở quy mô lớn là tính linh hoạt của nó là sức mạnh lớn nhất, nhưng cũng có thể dẫn đến một số hậu quả tiêu cực nếu nó không được triển khai một cách chính đạo,” Rayzis nói.
Những hạn chế này dẫn đến ý tưởng về siêu đồ thị, Apollo’s phiên bản đặc biệt của GraphQL. Siêu đồ thị vượt xa những lợi ích cơ bản của GraphQL, là thay thế mã lấy dữ liệu và mã backend for frontend (BFF) bằng lược đồ và truy vấn. Nó kết hợp dữ liệu, microservices và khả năng số hóa của một công ty, tạo ra một lớp hợp nhất cho toàn bộ tổ chức. Kiến trúc siêu đồ thị được xây dựng trên công nghệ mở của Apollo, Apollo Federation. Apollo cũng cung cấp GraphOS, một nền tảng dựa trên đám mây của các công cụ với một runtime và pipeline giao diện cho siêu đồ thị. Theo Rayzis:
Siêu đồ thị cho phép bạn phân phối lược đồ đồ thị qua các đội ngũ và dịch vụ khác nhau, nhưng sau đó thống nhất nó lại thành một giao diện cho khách hàng. Điều này liên quan đến việc giải quyết vấn đề thực sự của khách hàng. Nó dựa trên nhiều năm kinh nghiệm của chúng tôi, giúp khách hàng triển khai GraphQL. Và thực sự, các nguyên tắc chính là nó là một tầng thống nhất, có các mô-đun tích hợp mà bạn có thể phát triển theo thời gian.
Một trong những công ty đã hưởng lợi từ siêu đồ thị là Booking.com, một trong những đại lý du lịch trực tuyến lớn nhất thế giới. Booking.com đã tồn tại từ năm 1996 và do đó đang chạy nhiều mã và cơ sở hạ tầng lỗi thời. Điều này khiến cho việc thay đổi kiến trúc phần mềm rất khó khăn, đặc biệt là khi công ty có hàng nghìn kỹ sư và cần đảm bảo họ có thể hợp tác một cách an toàn.
Nhờ vào tính linh hoạt và sự đa dạng của siêu đồ thị, Booking.com đã có thể chuyển đổi từ từ sang GraphQL mà không làm hỏng bất kỳ dịch vụ nào của họ. Khi họ từ từ triển khai siêu đồ thị trên toàn bộ tổ chức, các kỹ sư và quản lý nhận ra những lợi ích của nó và giúp đẩy nhanh quá trình chuyển đổi. Việc áp dụng đầy đủ của siêu đồ thị đã giúp Booking.com chuyển phát 40% nhanh hơn, đôi khi làm tăng gấp đôi tốc độ phát hành tính năng. Đồng thời, họ đã giảm đáng kể số lượng lỗi và thay đổi gây rủi ro.
“Chúng ta đang thấy 30% trong số 500 công ty đa quốc gia xây dựng ứng dụng của họ trên siêu đồ thị. Và tôi nghĩ rằng con số đó sẽ tăng lên trong những năm sắp tới,” Rayzis nói.
Điều này sẽ giảm đáng kể rào cản cho việc phát triển ứng dụng và khiến cho nhiều nhà phát triển có thể tạo ra ứng dụng. Nó sẽ tiếp tục giảm thời gian cần thiết để tạo ra những ứng dụng đó. Và vì vậy, bằng cách làm cho nó trở nên dễ tiếp cận hơn và giảm thời gian đó, bạn sẽ thấy thêm nhiều sự đổi mới.
