Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, bir teknoloji etkinliğinde 3,5-4 yıllık bir startup olan Zombie ve Zogo şirketlerinin teknik sorumlusu olarak çalışan bir konuşmacının sunduğu eğitim sunumudur.
- Sunum, API geliştirme sürecinde karşılaşılan zorluklar, Swagger teknolojisinin temel prensipleri ve kullanım alanları üzerine odaklanmaktadır. Video, API dokümantasyonu, SDK geliştirme, otomasyon ve Swagger ile ilgili pratik uygulamaları adım adım göstermektedir. Ayrıca Kogen, Autores gibi code generation araçlarının kullanımı ve API Management ürünlerine entegrasyonu da anlatılmaktadır.
- Sunumda ayrıca Swagger'ın REST tasarım desenlerini zorunlu kıldığı, API Management ürünlerinin (Amazon API Gateway, Azure API Management) Swagger desteği sunduğu, otantikasyon, kota yönetimi ve cashing gibi özelliklerin nasıl sağlandığı konuları ele alınmaktadır. Konuşmacı, mevcut kod tabanından Swagger'a export etme, portal kullanımı, versiyonlama ve otomasyon süreçlerinde Swagger'ın zorlukları gibi teknik konulara da değinmektedir.
- 00:11Konuşmacının Tanıtımı
- Konuşmacı, hayatının boyunca Java kullanmadığını ve bu etkinlikte belki de hiç Java kodu yazmamış tek konuşmacı olabileceğini belirtiyor.
- Konuşmacı, Zombie ve Zogo adlı iki farklı ürünü olan, 3,5-4 yıllık bir Amerikan şirketi olan Rollimo'da çalıştığını söylüyor.
- Şirket, Türkiye'de yazılım geliştirme ofisi açmış ve ürün geliştirmeyi tamamen Türkiye'de yapan bir şirket olarak tanımlanıyor.
- 01:57Rollimo'nun Ürünleri ve İş Modelleri
- Rollimo, 3,5 yıldır aynı codebase üzerinde API açan, Azure üzerinde çalışan bir multi-venet cloud ürünü sunuyor.
- Şirket, perakendecilere mağaza içi deneyimleri, e-commerce web siteleri ve digital science'ların arkasında çalışan bir cloud platformu sunuyor.
- Ürünün görsel interface'i yok, sadece ufak bir CMS'i var ve bu da open source olarak paylaşılmış durumda.
- 03:24API Geliştirme Süreci ve Zorluklar
- Rollimo, 4 yıldır aynı codebase üzerinden API geliştiriyor ve şu anda 4.1 versiyonuna çalışıyor.
- API geliştirme sürecinde birçok acı çektiler ve bu süreçte database'ler arası veri taşıma ve dönüştürme işlemleri yapıyorlar.
- Microsoft'ta REST API'lar için DTS (Data Transformation Services) gibi bir araç olmadığı için benzer bir çözüm geliştirmeleri gerekiyordu.
- 05:11API Kullanımındaki Sorunlar
- API kullananlar için acı verici olan, API'ların nerede olduğu, dokümantasyon eksikliği ve hata mesajlarının garip şekilde gösterilmesi gibi sorunlar.
- Metadata ortalığa yayılmış durumda ve kimsenin birbirinden haberi yok.
- Rollimo, bu sorunları çözmek için kendi müşterilerine acı yaşatmamak amacıyla bir kural koydu: bir PB'nin dana çekilmesi için bir dokümanının yazılmış olması gerekiyor.
- 06:10API Geliştirme Süreci ve Otomasyon
- Şirket, sıfırdan developer portalı geliştirdi ve her API yazıldığında dokümanı yazılması gerektiğini belirledi.
- Her API için unit testi, integration testi, SDK geliştirilmesi ve dokümanları yazılması gerekiyor.
- Bu ekstra efor için ekstra eleman almadan, aynı çalışanlarla giderek artan artifact üretimi sorunu yaşanıyor.
- 08:16API Kullanımındaki Farklı Kitleler
- Konuşmacı, etkinlikte iki çeşit kitle olduğunu belirtiyor: son 10 yılda developer olmuş olanlar ve eski developer'lar.
- Yeni developer'lar REST API'ları çok beğeniyor ve SOAP gibi eski teknolojileri tercih etmiyorlar.
- Eski developer'lar ise "hayatımız ne kadar kolaydı, şimdi bizi bu vahşi dünyaya soktunuz" diyerek tepki gösteriyorlar.
- 08:59REST ve Swagger Kavramları
- REST kavramı her yerde farklı çalışıyor ve standartı yoktur, tarih tekerrürden ibarettir.
- Swagger, YAML (Yet Another Markup Language) adı verilen bir markadır ve design first yaklaşımıyla kod yazmadan önce API'yi tasarlamayı sağlar.
- Swagger ile API'yi tasarlamak için title, description, host, schema gibi bilgiler tanımlanır.
- 11:00Swagger Kullanımı ve Tavsiyeler
- Swagger'da version bilgisini koymamak tavsiye edilir çünkü bir resource versiyon bağımlı değildir.
- Version bilgisini header üzerinden taşımak, versiyon değişikliğinde tüm API'leri kırmamak için daha iyi bir yöntemdir.
- Kod varsa, metotların üzerine metadata koyarak ve generatör kullanarak YAML dosyası oluşturulabilir.
- 12:52Swagger'in Sunulan Özellikler
- Swagger, metadatayı alıp server yazılımı, SDK ve portal oluşturur.
- Portalda API dokümanı gösterilir ve doğrudan test edilebilir.
- Swagger, API kollarını test etme imkanı sunarak müşteriye vermek isteyebileceğiniz developer portalın neredeyse yüzde seksenini hazır bir şekilde sağlar.
- 14:21Swagger'in Referans Sistemi
- Swagger'da ürün ve array gibi konseptler tanımlanır ve referans verilir.
- Her yerde bu referanslar anlaşılabildiği için relation'lar anlaşılır hale gelir.
- Ürün ve array için id, açıklama, display name gibi alanlar tanımlanır.
- 16:20Swagger Oluşturma ve Kullanımı
- Swagger oluşturulduğunda sağ tarafta yaratıcı site görüntülenir.
- Site, ürün referansı ve modelleri içerir ve oynamak için tasarlanmıştır.
- Swagger, server yaratır ve bu server open source olarak indirilebilir.
- 18:38Swagger API Oluşturma ve Test Etme
- Swagger API'si çalıştırıldığında, "örnek set" adlı API'nin ürünleri gösterdiği bir sayfa oluşturulur.
- API test edildiğinde "no contagne" hatası alınır çünkü gitmeye çalıştığı adres doğru değil.
- API'nin arkasında iki not dosyası bulunur ve burada product id, description gibi bilgiler yer alır.
- 19:51API Parametreleri ve Doğrulama
- Ürünler API'sine parametre olarak "latif requite" kullanılır ve arkada validasyon yapılır.
- API'nin çalışması için yaml dosyasının dışarıya çıkması gerekir.
- Yaml dosyasını bir yerlerden yaratabiliyorsanız ve automate edebiliyorsanız, API oluşturma işlemi tamamlanmış demektir.
- 20:32Swagger'ın Entegrasyon Avantajları
- Swagger'ı kullanan birçok üretici vardır ve Amazon, Azure, Apache gibi API management ürünleri Swagger dokümanlarını import edebilir.
- Swagger, API'ları dışarıya açarken transforme eden ürünlerin anlayabileceği bir formattır.
- Swagger, API'dan gelen datayı tüketebilen bir interface design aracıdır.
- 21:41Swagger Editör ve Kogen Özellikleri
- Swagger editöründe kogen özelliği bulunur ve hem server hem de client ayağı mevcuttur.
- Kogen ile tüm API'ler için client oluşturulabilir ve GitHub'da tüm template'lar bulunmaktadır.
- Kullanıcılar custom template yazabilir veya mevcut template'ları kullanabilir.
- 22:16Swagger'ı Kullanma ve Entegrasyon
- Swagger'ı kullanmak için tek bir jar dosyası indirilir ve bu dosya tüm işlemleri gerçekleştirir.
- Swagger, yaml dosyasından istenilen klasöre Java SDK'sı çıkarabilir.
- Swagger, contin integration ile entegre edilebilir ve sürekli olarak yaml dosyasından SDK'lar oluşturulabilir.
- 24:16Code Generation As a Service
- Swagger, code generation as a service olarak da kullanılabilir.
- GitHub'a bağlanarak belirli bir endpoint'e istek gönderilebilir ve SDK otomatik olarak generate edilebilir.
- Bu servis tamamen halka açık olup, Swagger'ın resmi sitelerinde bu link kolay kolay bulunamaz.
- 26:12Autodesk Code Generation
- Microsoft'un Autodesk Code Generation adlı bir çözümü vardır.
- Autodesk, Azure'da milyonlarca servis yayınladığı için her dakika milyonlarca dil için SDK'nın çıkması gerekiyor.
- Autodesk Code Generation, GitHub'ta tamamen open source olarak bulunur ve JSON formatında yaml yerine kullanılır.
- 27:55Swagger ve Alternatifleri
- Swagger, API dokümantasyonunu kolayca görüntülemek için kullanılan bir araçtır ve herhangi bir JSON dosyasının adresini vererek dokümanını görebilirsiniz.
- Swagger ile baştan dizayn ederseniz mecburen REST kurallarına uymak zorunda kalırsınız.
- Alternatif olarak RAMML (Resource Model Markup Language) bulunur, bu YAML tabanlı bir dil olup Swagger'ın yaptığı her şeyi yapar ve REST design paternlerini zorlamaz.
- 30:12API Management Ürünleri
- Amazon API Gateway, Azure API Management ve AAC Smart Box gibi API management ürünlerinin Swagger desteği vardır.
- Bu ürünler, içerideki API'ları dışarıya açmak için otantikasyon, transaction sayımı, kotalama ve cashing gibi katmanları otomatik olarak sağlar.
- API management ürünlerinin Swagger desteği sayesinde hazır Swagger dosyalarını import edebilir ve dışarıya da Swagger formatında export edebilirsiniz.
- 34:50Hypermedia Kavramı
- Hypermedia, API'ların outputunda operasyonların nerede yapılabileceğini JSON output'unda vererek dokümantasyonsuz discovery sağlayan bir konsepttir.
- Hypermedia'nın implante edilmesi ciddi bir overhead'i olduğu için yaygın olarak kullanılmamaktadır.
- Hypermedia'nın merkezi bir yerde tutulması gerekir, aksi takdirde API'ları keşfetmek zorlaşır ve her operasyon için ayrı bir route oluşturmak gerekebilir.
- 40:09Swagger ile Kod Entegrasyonu
- Halihazırda bulunan bir kod tabanından Swagger'a doğrudan export yapmak zor olabilir.
- Swagger ile entegrasyon için özel bir Nuget paketi indirilebilir ve bu paket Swagger portalını da getirir.
- Bu paket, API'yi alıp Azure'daki hosting paketine atarsanız, C# yazıldığını algılayıp otomatik olarak Swagger'ı oluşturur.
- 42:50Swagger Güncellemesi ve Zorluklar
- Swagger'da metod eklemek için dosyaları kopyalayıp yapıştırmak yerine, bu işlem continue integration parçası olarak otomatikleştirilmelidir.
- Versiyonlama ve standart dışı otomasyon, Swagger ile entegrasyon sürecini zorlaştırabilir.
- Özel authorization sistemleri veya developer account gibi özel roller için ekstra ayarlar gerekebilir.