GraphQL - Mimari
GraphQL, bir GraphQL sunucusunun davranışını tanımlayan bir özelliktir. Desteklenen protokoller, sunucu tarafından kabul edilebilecek verilerin formatı, sunucu tarafından döndürülen yanıtın formatı vb. Gibi isteklerin ve yanıtların nasıl ele alınması gerektiğine dair bir dizi kılavuzdur. Bir istemci tarafından GraphQL'e yapılan istek. sunucuya Sorgu denir. GraphQL'in bir diğer önemli kavramı, taşıma katmanı agnostikleridir. TCP, websocket veya başka herhangi bir taşıma katmanı protokolü gibi mevcut herhangi bir ağ protokolü ile kullanılabilir. Ayrıca veritabanlarına karşı tarafsızdır, bu nedenle onu ilişkisel veya NoSQL veritabanlarıyla kullanabilirsiniz.
GraphQL Server, aşağıda listelenen üç yöntemden herhangi biri kullanılarak dağıtılabilir -
- Bağlı veritabanına sahip GraphQL sunucusu
- Mevcut sistemleri entegre eden GraphQL sunucusu
- Hibrit yaklaşım
Bağlı Veritabanına Sahip GraphQL Sunucusu
Bu mimari, entegre bir veritabanına sahip bir GraphQL Sunucusuna sahiptir ve genellikle yeni projelerde kullanılabilir. Bir Sorgu alındığında, sunucu istek yükünü okur ve veri tabanından veri alır. Buna sorguyu çözme denir. Müşteriye döndürülen yanıt, resmi GraphQL spesifikasyonunda belirtilen formata uygundur.
Yukarıdaki şemada, GraphQL sunucusu ve veritabanı tek bir düğümde entegre edilmiştir. İstemci (masaüstü / mobil), HTTP üzerinden GraphQL sunucusu ile iletişim kurar. Sunucu isteği işler, veri tabanından veri alır ve istemciye geri gönderir.
Mevcut Sistemleri Entegre Eden GraphQL Sunucusu
Bu yaklaşım, eski altyapıya ve farklı API'lere sahip şirketler için yararlıdır. GraphQL, mevcut sistemdeki mikro hizmetleri, eski altyapıyı ve üçüncü taraf API'leri birleştirmek için kullanılabilir.
Yukarıdaki şemada, bir GraphQL API, istemci ile mevcut sistemler arasında bir arayüz görevi görür. İstemci uygulamaları, sırayla sorguyu çözen GraphQL sunucusuyla iletişim kurar.
Hibrit Yaklaşım
Son olarak, yukarıdaki iki yaklaşımı birleştirebilir ve bir GraphQL sunucusu oluşturabiliriz. Bu mimaride, GraphQL sunucusu alınan herhangi bir talebi çözecektir. Ya bağlı veritabanından ya da entegre API'lerden veri alır. Bu, aşağıdaki şekilde gösterilmektedir -