Apollo Federation Nedir?

Apollo Federation Nedir?

Apollo Federation, Apollo GraphQL platformunun bir bölmeleme sistemi olan Apollo Federation'ın nedir, nasıl çalışır ve neler sunar hakkında bilgi edinin Federasyon mimarisi ile kendi servislerinizi birleştirin ve daha büyük ve daha ölçeklenebilir GraphQL API'leri oluşturun Detaylar için hemen tıklayın!

Apollo Federation Nedir?

Apollo Federation, birden fazla GraphQL API'sinin birleştirilmesini sağlayan bir araçtır. Bu sayede, birçok farklı servisten gelen verileri tek bir API üzerinden kullanmak mümkün hale gelir.

Bu araç, özellikle microservice mimarisi kullanan büyük projeler için oldukça kullanışlıdır. Çünkü bu tarz projelerde, her servis kendi API'sine sahiptir ve yapılan işlem sonucunda ortaya farklı veriler çıkar. Apollo Federation, bu verileri birleştirerek tek bir API olarak sunar.

Apollo Federation, GraphQL'in sağladığı avantajları da kullanır. Yani, tam olarak ihtiyaç duyulan veriler alınır ve gereksiz yüklerden kaçınılır. Ayrıca, veri yapılarındaki değişiklikler de kolayca yapılabilir.

Apollo Federation ile birlikte, birden fazla servisin kendi modüllerinde çalışmasına olanak tanınır. Böylece, her servisin kendi özelliklerine sahip olması mümkün olur. Ayrıca, servisler arasındaki iletişim Apollo Gateway aracılığıyla sağlanır.


Microservice Mimarisinde GraphQL

Microservice mimarisi, büyük sistemleri küçük ve bağımsız alt sistemlere bölerek çalıştırılabilmesini sağlayan bir sistemdir. Her alt sistem tek başına çalışır ve bu sayede bir sistemdeki herhangi bir değişiklik diğer alanları etkilemez. Bu sayede sistemler daha esnek ve ölçeklenebilir hale gelir.

GraphQL ise, bu alt sistemler arasında iletişim kurmak için kullanılan bir API sorgulama dilidir. Bu sayede, aynı sistem içinde yer alan farklı alt sistemler arasında iletişim kurulabilir. Microservice mimarisinde GraphQL'in bu kadar önemli olmasının nedeni, büyük sistemlerin parçalara bölünmesi durumunda, alt sistemler arasında bağlantı sağlamak için kullanılabilecek tek bir dil olmasıdır. Bu sayede, farklı alt sistemler arasında sorgular yapılarak, verilerin birleştirilmesi sağlanır.


Apollo CLI Nedir?

Apollo CLI, Apollo platformunda kullanılan bir araçtır. Bu araç sayesinde önceden oluşturulmuş olan GraphQL API'leri birleştirmek ve yönetmek mümkündür. CLI yani Command Line Interface, yani Komut Satırı Arayüzü anlamına gelir. Bu sayede terminal üzerinden birden fazla servisi kolayca yönetmek mümkün olur.

Apollo CLI, servislerin kurulumundan şemanın oluşturulmasına, API'lere özel direktiflerin tanımlanmasına kadar birçok işlemi kolayca yapma imkanı sunar. CLI'nin avantajları arasında aynı zamanda API'lere yeni özellikler eklemek, testleri çalıştırmak, dosya yapısını kontrol etmek gibi işlemler de yer alır.

Apollo CLI ile daha hızlı ve daha tutarlı bir geliştirme süreci sağlanır. Bir servis oluşturulduğunda CLI otomatik olarak belirtilen şablonları kullanarak kod dosyalarını oluşturur. Bu sayede sürekli aynı yapıda kod dosyalarının oluşması sağlanır.

Bunun yanı sıra Apollo CLI, API'lerin kontrolünü sağlamak için de oldukça kullanışlı bir araçtır. Bir API'ye eklenen herhangi bir değişiklik, otomatik olarak diğer API'lere de yansıtılır. Bu sayede tek bir yerden kolayca API'leri yönetmek mümkün olur.


Apollo Federation Kullanarak GraphQL APIleri Birleştirme

Apollo Federation, birden fazla GraphQL API'sini birleştirmek için kullanılan bir araçtır. Bu araç sayesinde her bir API bir mikro hizmet olarak oluşturulur ve daha sonra Apollo Gateway üzerinde birleştirilir. Apollo Federation, API'lerin tek bir merkezi erişim noktası aracılığıyla yönetilmesine ve çağrılmasına olanak tanır. Bu yapısı sayesinde birçok avantaj elde edilir.

Birleştirilen API'ler, ayrı ayrı yönetilebilen servisler halinde organize edilir. Bu şekilde daha küçük çaplı ve özelleşmiş hizmetler oluşturulabilir. Her bir hizmeti oluşturan ekibin sorumluluk alanları daha keskin hale getirilir ve bir ekipten beklenen işin tamamına hâkim olma sorumluluğu azaltılır. Ayrıca, yeniden kullanılabilir bileşenler kolayca ölçeklenebilir ve API'lerin birleştirilmesi gerektiğinde daha kolay bir şekilde yönetilebilir.

Avantajlar Dezavantajlar
API'lerin özelleşmiş bir şekilde oluşturulması ve yönetilmesi Birleştirilen API'lerin hata ayıklaması daha zor olabilir
Her bir mikro hizmetin sorumluluk alanlarının daha keskin belirlenmesi Bazı durumlarda, birleştirilen API'ler arasındaki uyumsuzluk sorunları oluşabilir
Eski API'lerin kolayca güncellenebilmesi Bazı durumlarda daha büyük bir bellek tüketimine yol açabilir

Apollo Federation ayrıca, her bir API'nin ayrı ayrı yönetilmesi nedeniyle API'lerin daha hızlı ve daha düşük maliyetle oluşturulmasına olanak tanır. API'lerin birleştirilmesiyle, bir istek sırasında birden fazla API çalıştırılmak yerine tek bir çağrı gerçekleştirilir. Bu da daha hızlı yanıt süreleri elde edilmesine ve sunucu maliyetlerinin azaltılmasına yardımcı olur.


Service ve Field Direktifleriyle API Entegrasyonu

Apollo Federation, birden fazla GraphQL API'nin birleştirilmesi için kullanılan bir araçtır. Bu araç, API'lerin oluşturulması sırasında entegrasyonu kolaylaştırmak için direktifler sağlar. Service direktifi, bir API'de sunulan verileri tanımlar ve bir Graph API'si yaratır. Field direktifi, bir Service tarafından sunulan verilerin ilişkilerini ayarlar.

Service direktifi, bir GraphQL Schema dosyası içinde kullanılır ve bir Service'in uzak bir GraphQL API'ye nasıl bağlanacağını belirleyen özellikleri tanımlar. Service directifi, aynı zamanda bir API'nin adını ve endpoint'ini, API için kullanılacak veri kaynağını ve API'ye özgü belgeleri içerebilir. Service direktifi, bir Service oluşturmak için önemli bir adımdır.

Field direktifi ise bir Service fonksiyon tecrübesini sağlamak amacıyla kullanılır ve bir API'nin ilişkili veriler arasında nasıl bağlantı kuracağını belirler. Bu direktif, bir Service fonksiyonunu belirlemek için kullanılır ve bir Service direktifi ile birlikte kullanılır. Field direktifi, bir API'nin birbirine bağlı verilerini tanımlamak için önemlidir.

Service ve Field direktiflerinin kullanımı, API'lerin birleştirilmesinde büyük rol oynar. Bu direktifler sayesinde bir API, bir başka API'nin verilerini kullanabilir ve ilişkili verileri bir arada sunabilir. Bu sayede, kullanıcılar daha tutarlı bir deneyim elde ederler.

Bu direktifler, GraphQL API'ler oluştururken olmazsa olmazdır. Apollo Federation tarafından sağlanan direktifler, API'lerin birbirine bağlanması için önemli bir araçtır. Bu yöntem, API'ler arasındaki veri entegrasyonunu daha da kolaylaştırır ve iş akışını hızlandırır.


Gateway ve Service Arasındaki İletişim

Gateway, Apollo Federation mimarisinde API'lere gelen tüm istekleri yönlendiren ana noktadır. Gerçek API'lerle bağlantı kurmak yerine, tüm istekler Gateway'e yönlendirilir ve Gateway bu istekleri API'ler arasında yönlendirir. Bu sayede, uygulamanın her bir parçası bağımsız olarak geliştirilebilir, test edilebilir ve bakımı yapılabilir.

Gateway, Apollo Server tarafından açılan bir web soketidir. Service'lerin toplu olarak yönetildiği Apollo Gateway, Service'lerin isteklerini arka planda yönetir ve tüm Service'ler arasında aracılık eder. Bu sayede, tek bir yerden tüm API'lere erişim sağlanabilir.

Gateway, Service'ler arasındaki koordinasyonu sağlar. Gateway, tüm Service'ler için tek bir GraphQL şeması sağlar ve Service'lerin, tüm şemaya katkıda bulunmasını sağlar. Tüm Service'ler, birleşik bir API olarak Gateway'e bağlanır ve Apollo Gateway, API taleplerini Service'ler arasında yönlendirir.

Bu yapı, Service'ler arasında iletişim kurulması gerektiğinde Apollo Server tarafından sağlanır. Bir Service bir GraphQL sorgusu yapmak için GraphQL şemasını tanımlar. Apollo Gateway, Service'e hangi sorguları yapacağını bildirir ve Service bunları işler.

Hem Gateway hem de Service'ler, Apollo Federation direktiflerini kullanır. Bu direktifler, Service'lerin ürettiği tip tanımlarının GraphQL şemasıyla uyumlu hale gelmesine yardımcı olur. Böylece, her Service, uygulamanın tamamındaki diğer Service'ler tarafından kolayca kullanılabilir.

Sonuç olarak, Apollo Gateway, tüm Service'ler arasındaki koordinasyonu sağlar ve GraphQL API'leri aynı zamanda kendi hizmetleri olarak sunar. Böylece, uygulama daha modüler hale gelir ve tüm Service'ler bağımsız olarak geliştirilebilir, test edilebilir ve bakımı yapılabilir.


Apollo CLI ile Microservice Kurulumu

Apollo CLI, temel bir Microservice mimarisi kurulumu oluşturmaya yardımcı olan bir araçtır. Apollo CLI ile kurulumu yapmadan önce, sisteminizde Node.js'in yüklü olması gerektiğini unutmayın.

İlk adım olarak, Apollo CLI kurulumunu gerçekleştirin. Daha sonra, terminal penceresinde apollo create komutunu kullanarak bir proje oluşturun ve gerekli seçimleri yapın. Oluşturulan proje, temel bir API Gateway içerecektir.

API Gateway, farklı servisler arasındaki iletişimi kolaylaştırır. Gateway, ayrıca tüm GraphQL şemalarını birleştirir ve sorguları uygun servislere yönlendirir. Bu nedenle, API Gateway'in iyi bir şekilde oluşturulması, bir Microservice mimarisi için kritik öneme sahiptir.

Projenin sonraki adımı, her bir servisin kendi özel şemasını oluşturmasıdır. Servislerin şemaları, Apollo Server kullanılarak oluşturulabilir. Ayrıca, her servis için Apollo Server'in kurulumu gereklidir.

API Gateway'iniz artık birden fazla servisin şemasını birleştirebilir hale geldi. Şimdi, her bir servisin çalışır durumda olması gerekir. Bu nedenle, servislerin çalışabilmesi için, terminal penceresinde npm start komutunu kullanarak her bir servisi başlatmanız gerekir.

Microservices mimarisi oluşturmanın en önemli adımlarından biri de, servislerin ve Gateway'in birbirleriyle iletişim kurabildiğinden emin olmaktır. Bu adım, Apollo Gateway'in otomatik olarak gerçekleştirdiği bir adımdır. Gateway, kendi kapasitesine göre tüm sorguları doğru servislere yönlendirir.

Bu adımdan sonra, API'nizi birleştirerek istediğiniz şekilde çalıştırabilirsiniz. Apollo CLI kullanarak oluşturduğunuz temel Microservice mimarisine, yeni servisler de dahil edebilirsiniz.


Schema ve Gateway Kurulumu

Apollo Federation ile birleştirilecek olan tüm GraphQL servislerini, Apollo Server ve Apollo Gateway üzerinde çalışacak şekilde kurmanız gerekiyor. Bu aşamada her bir servis için ayrı bir Apollo Server kurulumu yapmanıza gerek yok, tüm servislerin ortak bir Apollo Gateway kullanarak birleştirilmesi mümkün.

Apollo Server, GraphQL API'lerinin çalıştığı ortamı sağlayan bir HTTP sunucusudur. Apollo Gateway ise, servislerin birleştirilmesi için gerekli araçları ve mantığı sağlayan bir GraphQL sunucusudur. Bu iki bileşen kurulduktan sonra, Apollo Server tarafından sunulan GraphQL şemaları, Apollo Gateway üzerinde birleştirilir ve son halini alır.

Apollo Server kurulumu için, öncelikle Node.js ve npm'in yüklü olduğundan emin olmalısınız. Daha sonra konsol ekranından aşağıdaki komutu çalıştırarak gerekli bağımlılıkları yükleyebilirsiniz:

Command:npm install apollo-server graphql

Apollo Gateway kurulumu için ise yine aynı şekilde öncelikle Node.js ve npm'in yüklü olduğundan emin olmalısınız. Daha sonra aşağıdaki komutları çalıştırarak gerekli bağımlılıkları yükleyebilirsiniz:

Command:npm install apollo-server graphql apollo-gateway

Kurulum işlemi tamamlandıktan sonra servislerin şemalarının, Apollo Gateway üzerinde birleştirilmesi için bir "federation service" dosyası oluşturmanız gerekiyor. Bu dosyada, her bir servisin URL'si, üzerinde çalıştığı Apollo Server şeması, ve her servise özel tanımlanmış direktifler yer alır. Bu adımdan sonra, Apollo Gateway kurulumu tamamlanmış olur ve tüm servislerin birleştirilmiş GraphQL şemasına erişebilirsiniz.


Service Kurulumu

İşlevsel bir Apollo Federation projesi kurmak için, Service'leri çalıştırmak gerekir. Bu adımları takip ederek Apollo CLI kullanarak Service'lerin kurulum adımlarını gerçekleştirebilirsiniz.

  • Apollo CLI yükleme: Yapmanız gereken ilk şey, Apollo CLI'yi yüklemek. Yüklemek için terminal ekranına şu komutu yazmanız yeterli:
    npm install -g apollo
  • Service oluşturma: Yeni bir Service eklemek için
    apollo service:create
    komutunu kullanın. Bu adımı gerçekleştirdiğinizde, Service'lerin bulunacağı bir dizin oluşturulur.
  • Yeni bir Service ekleme: Service'leri eklemek için
    apollo service:add
    komutunu kullanabilirsiniz. Komutu çalıştırdıktan sonra, Service'nin adını girmeniz ve url adresini belirtmeniz yeterlidir.
  • Schema ve resolverlar oluşturma: Her Service için schema ve resolverlar oluşturmanız gerekiyor. Mutations, queries ve subscriptions oluşturmak için bileşenleri ayrı ayrı tanımlamanız gerekebilir. Schema'yı oluşturmak için, GraphQL syntax'ını kullanarak dosyalar oluşturabilirsiniz. Resolvers'ları ise .js dosyası olarak oluşturup schema'ya import edebilirsiniz.

Service'leri kurarak, birbirinden bağımsız olarak çalışan Service'lerin tümü Apollo Federation'da bir araya getirilebilir. Bu nedenle, Apollo CLI kullanarak Service'leri oluşturarak, projenin yapılandırılması ve işlevselliği kolaylaştırılabilir.


Projenin Test Edilmesi

Projenizi tamamladıktan sonra, bir sonraki adım projenin test edilmesidir. Projede yer alan Atom pluginleri, testimizi daha kolay ve hızlı hale getirirler.

İlk adım, Atom plugini yüklemektir. GraphiQL Atom paketini yüklerken tüm bağımlılıkları da yüklemeyi unutmayın. Bu paket, projenizdeki sorguları çalıştırmak için kullanılır.

İkinci adım, Apollo Client Devtools paketinin yüklenmesidir. Bu paket, proje içindeki isteklerin kaydedilmesini ve düzenlenmesini sağlar. İhtiyacınız olan tüm bilgileri almak için, Atom paketlerinde Apollo Client Devtools araması yapabilirsiniz.

Bir sonraki adım, projeyi test etmeye başlamaktır. Atom paketlerinde GraphiQL'i açmanız gerekiyor. Ardından, sol üst köşedeki "New Tab" düğmesine tıklayarak bir sorgu oluşturun. Oluşturduğunuz sorguları çalıştırmak için, "Play" düğmesine tıklayın.

Eğer sorgularınızda hatalar varsa, GraphiQL size hata açıklaması yapar. Bu açıklamalar, hataları çözmek için size rehberlik eder.

Son olarak, Atom paketlerinde Apollo Client Devtools'u açarak isteklerinizi görüntüleyebilirsiniz. Bu, projenizin herhangi bir yerinde hataların veya performans sorunlarının tespiti için çok önemlidir.


GraphQL Sorgularının Testi

Apollo Federation ile birleştirilen GraphQL API'ler proje içerisinde test edilmelidir. GraphQL sorgularının testi için GraphiQL kullanılabilir. GraphiQL, backend tarafında hazırlanan API'leri test etmek için kullanılır. Kullanıcının sorgulama işlemini kolaylaştırmak için otomatik tamamlama özelliği mevcuttur.

Proje içindeki GraphQL API'lere sorgular göndermek için GraphiQL arayüzüne erişmek gerekir. Bunun için proje URL'sine /graphql eklemek yeterlidir. Örneğin, http://localhost:4000/graphql gibi. GraphiQL arayüzünde sol tarafta yer alan 'Docs' kısmından projedeki tüm sorgulara ulaşılabilir. Burada sorguların nasıl kullanılacağına dair örnekler de yer alır.

GraphQL sorgularının test edilmesi için öncelikle GraphiQL arayüzüne erişmek gerekir. Arayüze erişildikten sonra sol taraftaki 'Docs' bölümünden test edilecek sorgu seçilir ve 'Run' butonuna tıklanır. Sorgu sonucunda dönen veriler sağ taraftaki 'Result' bölümünde görüntülenir.

GraphQL sorguları için hazırlanan testlerin mümkün olan tüm senaryolarda çalıştığından emin olunmalıdır. Testlerin kapsayıcı ve ayrıntılı olması API'nin doğru bir şekilde çalıştığının garantisi olacaktır. Ayrıca testlerin düzenli olarak yapılması, API'deki olası hataların erken tespit edilmesine yardımcı olur.