API yönetimi
gRPC ve REST: API tasarımında gRPC, OpenAPI ve REST’i anlama ve kullanım zamanı
- API tasarım modelleri: API tasarımında başlıca iki model kullanılır: RPC ve REST. Modern API’lerin çoğu HTTP protokolü temelinde uygulanır.
- gRPC: HTTP 2.0’ı taşıma protokolü olarak kullanan bir RPC API uygulama teknolojisidir. Google gibi şirketler, RPC ile HTTP fikirlerini birleştiren API’leri yaygın olarak kullanır.
- HTTP’nin üç ana kullanım biçimi:
- REST: İstemci, sunucunun sağladığı URL’leri olduğu gibi kullanır ve URL biçimini anlamak zorunda değildir.
- gRPC: HTTP/2 kullanır, ancak HTTP API tasarımcısına görünmez.
- OpenAPI: İstemci, API’yi çağırmak için URL yol şablonlarını kullanır.
REST
- Özellikler: İstemcinin URL biçimini anlaması gerekmez ve URL, API spesifikasyonunun bir parçası değildir.
- Avantajlar: Kararlılık, tutarlılık ve evrensellik gibi web’in avantajlarını taşır. Varlık odaklı model daha basit ve anlaşılması daha kolaydır.
gRPC
- Özellikler: HTTP/2 kullanır, ancak HTTP’nin ayrıntıları gizlenir. İstemci, prosedürleri çağırıp parametreler geçirerek API’yi kullanır.
- Avantajlar: İstemci tarafı programlama kütüphaneleri kolayca üretilebilir ve performansı yüksektir.
OpenAPI
- Özellikler: API’yi çağırmak için URL yol şablonları kullanılır ve istemcinin URL biçimini anlaması gerekir.
- Avantajlar: API’ye yalnızca standart HTTP teknolojileriyle erişilebilir. İstemci tarafı programlama kütüphaneleri üretilebilir.
gRPC ve OpenAPI karşılaştırması
- Benzerlikler: Her ikisi de RPC arayüz tanımlama dili (IDL) olarak kullanılabilir.
- Farklar: gRPC, HTTP ayrıntılarını gizler; OpenAPI ise HTTP ayrıntılarını açığa çıkarır.
REST’in avantajları
- Varlık odaklı model: Daha basit, anlaşılması daha kolay ve zaman içinde daha kararlıdır.
OpenAPI nasıl kullanılır
- Yol tanımı: API, yollar ve HTTP metotları kullanılarak tanımlanır.
OpenAPI’nin avantajları ve dezavantajları
- Avantajlar: RPC modeline benzer olduğu için programcılara tanıdıktır. HTTP isteklerine eşlenebilir.
- Dezavantajlar: HTTP ayrıntılarını tasarlamak için çok çaba gerekir.
gRPC’nin avantajları
- Basit uygulama: Sunucu tarafı uygulaması basittir ve istemci tarafı kütüphaneleri kolayca üretilebilir.
- Performans: İkili payload kullandığı için verimlidir.
gRPC’nin dezavantajları
- Özel yazılım gereksinimi: Hem istemci hem de sunucu özel yazılıma ihtiyaç duyar.
- Proxy işlevi sınırlamaları: HTTP API’lerden farklı olarak, proxy üzerinde işlevleri genişletmek veya değiştirmek zordur.
Sonuç
- API tasarımı seçimi: REST, OpenAPI ve gRPC’nin her birinin avantajları ve dezavantajları değerlendirilerek seçim yapılmalıdır.
- gRPC kullanırken dikkat edilmesi gerekenler: İstemcilerin gRPC teknolojisini benimsemek zorunda olmadığı durumlarda, iç API’ler için avantajlıdır.
1 yorum
Hacker News görüşleri
gRPC öğrenmemiş olmayı dilediğine dair bir pişmanlık var. Hata ayıklama ve yapılandırma ayarları için çok zaman harcanmış
Uzun süredir API geliştiriyor ve hem gRPC hem de HTTP/REST kullanmış
FAANG’da çalışma deneyimi var ve dahili servis yönlendirmesinde gRPC’nin faydalı olduğunu düşünüyor
Çift yönlü streaming yapılmadığı sürece gRPC’nin zaman kaybı olduğunu düşünüyor
gRPC kullanılan bir projede performans gerekçesiyle bu teknoloji benimsenmiş, ancak daha sonra JSON API’ye geçilmiş
connectrpc kullanarak gRPC’nin sorunlarını çözüyor
buf.buildsayesinde 3rd party proto dosyaları kolayca alınabiliyorgRPC’nin geliştirici deneyiminin REST’ten daha kötü olduğunu düşünüyor
Roy Fielding, bir REST API için yalnızca başlangıç URI’sini ve standartlaştırılmış medya tiplerini bilmenin yeterli olduğunu söylüyor
Veri merkezi içinde gRPC kullanmayı sevmiyor
gRPC’nin Google dışındaki dünyada erişilmesi zor olduğunu hissetmiş