21. Yüzyılın Dijital Elçileri: API’lar

21. Yüzyılın Dijital Elçileri: API’lar

+ Ben, burada yalnızca bana anlatılanı aktardım sizlere. Kendimden hiçbir şey eklemedim.
– Peki size bunları kim anlattı?
+ O gün orada olan biri.
– O gün orada olan o biri niçin doğrudan doğruya bunları bize anlatmamış?
+ Bilmiyorum. Korktuğu için olabilir. Ya da anlatmayı beceremediği için.

Ferit Edgü bu satırları yazarken elbette API’ın ne olduğundan haberi yoktu. Ama tam olarak API’lar bu yüzden ortaya çıktı: Makineler arası sistematik bir iletişim kurmak. Uzun uzun yazmak gerekirse “Application Programming Interface”. API belli kurallar bütünü içinde gelen isteklere standart cevaplar (tipik olarak HTTP) veren bir sistemdir. Kod değil bir üründür. Bu nedenle dilden bağımsız çalışır.

 

API nasıl çalışır?

Günlük yaşantımızdan bir örnekle API’ın çalışma mantığını açıklayalım. Bir restorana gittiniz ve sipariş vereceksiniz. Restoran biraz kalabalık. Elinizdeki menüye baktınız, siparişinizi “menü dahilinde” garsona verdiniz. Garson müşterilerden sipariş aldıkça mutfağa iletti. Mutfak siparişleri hazırladıkça pirinç çanı çaldı. Garson siparişleri müşterilere dağıttı. Şimdi bakalım… Bu kurguda müşteriler talep oluşturan istemciler (client), menü talep edebileceğiniz şeyin sınırları (catalog), garson bu talepleri sunucuya ileten, sistemin doğru çalışmasını sağlayan API’ımız, mutfak gelen talepler karşılığında yanıt/çıktı üreten sunucumuz (server/back-end), yemekler ise talebimiz karşılığında oluşan yanıtlar (response).

IMG: https://medium.com/@ama.thanu/what-is-an-api-how-does-it-work-f4ea552d741f

Terimleri kavramak adına işi biraz daha ileriye götürelim. Diyelim ki restorana geldiğinizde garson sipariş için sizi çok bekletti veya siparişi aldı ama mutfağa iletmeyi unuttu. Bu gecikme bir “request latency”dir. Mutfak çok yoğun, garson da bir sebepten dolayı siparişi geç getirdiyse bu bir “response latency”dir. Yemeğiniz geldi ama içeceğiniz henüz gelmedi yani bir şeyler geliyor ama daha sipariş tamamlanmış değil, siparişi verdiğiniz andan garsonun masaya ilk parçayı koyduğu ana kadar geçen süreye “TTFB” (Time to First Byte), içeceğinizi de getirip siparişinizi tamamlayana kadar geçen toplam süreye ise “response time” deniyor. Menüde olmayan bir yemek isteseydiniz garson bunu mutfağa soracak, karşılığında “maalesef” (404) yanıtı alacaktınız. Üstelik bu süreç her müşteri için ayrı ayrı gerçekleşiyor. Buradaki sürecin standartlarını belirleyen araca API diyoruz. Elbette bir API sürekli gelen müşteriye çay ikram etmez 🙂 ama eğer isteğin içinde belirtilmişse hangi müşterinin istekte bulunduğunu bilir ve ona göre davranır.

Nerelerde kullanıyoruz?

Her yerde! İnternete yüklediğiniz bir fotoğraf, aldığınız uçak bileti, mobil uygulamadan çağırdığınız taksi. Tüm bu işlemler sizden gelen talepleri başka sistemlere iletebilmek için farklı API’lar kullanmakta.

Artistanbul olarak bizim de geliştirdiğimiz sistemlerin ucu bir şekilde farklı sistemlere dokunuyor. Kimi zaman veriyi farklı bir sisteme aktarmak, kimi zaman ise bir şeyleri harekete geçirmek için API kullanıyoruz. SMS/e-posta göndermek, iki farklı dille yazılmış bir sistemde frontend ve back-end’i birbiriyle haberleştirmek, kargo oluşturmak, e-fatura göndermek, banka ile ödeme entegrasyonu yapmak.. ve liste uzayıp gidiyor.

 

Artistanbul’un akıllı botu: Pismilla

Ofis içinde kullandığımız birçok programı kendimize göre şekillendiriyoruz. Bunlardan biri de bir Slack botu olarak Python ile yazdığımız Pismilla.

Yazının burasında, uygulamamızın ismini ödünç aldığımız eski Pardus ekibine bir selam gönderelim ve devam edelim. Peki, Pismilla nasıl çalışır? Nasıl ortaya çıktı? Ne yapar?

Slack bizim gibi teknoloji üreten şirketler için iyi bir iletişim aracı. Bunun yanında Slack’in epey iyi belgelendirilmiş bir API çözümü var (bkz.: https://api.slack.com). Bu API’yi kullanarak günlük rutin durumlarımızı veya aktivitelerimizi RSS olarak kanallara akıtabiliyoruz. GitLab’da yeni MR açılması, Redmine’da bir görevin durumunun değişmesi, Django resmi sitesinden yeni sürüm notlarının alınması gibi farklı işler için farklı uygulamalar yazdık. Pismilla da Slack API ile çalışan bir uygulama. Dahil edildiği kanalda tüm sohbeti dinler ve tanımlanmış bir komut verildiğinde harekete geçer. Ofiste markete gitmek, kedi kumunu değiştirmek, kahve yapmak gibi bazı görevleri kanal üyelerine rastgele atamak için yaratıldı. İçinde “!kim..” komutu geçen bir cümle yazılırsa, kanaldan rastgele bir kişiyi seçer ve soruyu kanaldaki kişiyi etiketleyerek cevap olarak yazar. Bir örnekle açıklamak gerekirse:

Pismilla iş başında

Buradaki rastgele seçimin adil olması için Python ile yerleşik olarak gelen “random” modülünde bulunan “choose” metodundan faydalandık. Random modülü sistem saatinden faydalanarak 0.0 ile 0.1 arasında ondalıklı sayı üreten bir modül. Choose metodu ise ona verilen data kümesinde sistemden aldığı milisaniye verisiyle index belirleme yaparak data seçen bir method. Böylece botun seçtiği kişiler gerçekten de rasgele seçilmiş oluyor.

 

In-house çözüm olarak Pismilla

Aslında Pismilla Artistanbul’un yazılım geliştirme mottosuna çok iyi uyuyor: “kurumlara özel yazılım çözümleri üretmek”. Pismilla’nın in-house olarak yapılmış, günlük hayatımızı kolaylaştıran çok basit bir yazılım çözümü olduğunu söyleyebiliriz.

Artistanbul olarak yazılım projelerinde şirketlere özel yazılım çözümleri üretiyor ve iş geliştirme konusunda baştan sona profesyonel destekler sunuyoruz. Böyle bir desteğe ihtiyacınız olduğunu düşünürseniz, verdiğimiz hizmetleri inceleyebilir ya da bizimle iletişime geçebilirsiniz. Hoşçakalın!

 

Cover IMG: https://jfactor.it/file-robots-txt
Alıntı: Ferit Edgü, Binbir Hece, 1991

Burak İbiş
Yorum Yok

Yorum Yaz

Yorum
İsim
E-Posta
Website