Kendi döviz kuru API'nizi geliştirmek mi yoksa yönetilen bir tane satın almak mı, birden fazla para biriminde para işleyen her ekibin vermesi gereken ilk gerçek mimari kararlardan biridir. Kâğıt üzerinde geliştirmek ucuz görünür: Avrupa Merkez Bankası referans kurları ücretsiz yayımlar, veri yalnızca küçük bir XML dosyasıdır ve bir akışı ayrıştırıp HTTP üzerinden sunmak ne kadar zor olabilir ki? Pratikte, bir hafta sonu prototipi ile üretime hazır bir kur servisi arasındaki uçurum, maliyetin çoğunun saklandığı yerdir. Bu rehber, ekibinize gerçekten uyan yolu seçebilmeniz için döviz kuru API'si geliştir-mi-satın-al ödünleşimlerini dürüst mühendislik rakamlarıyla ayrıştırır.
Bir bakışta geliştir mi, satın al mı
Ayrıntılara girmeden önce kısa sürümü şu. Seçim nadiren bir kur akışını geliştirebilir misiniz sorusuyla ilgilidir — neredeyse her yetkin mühendis geliştirebilir — asıl mesele, ona sahip olmanın sürekli maliyetinin ayda birkaç dolar ödemeye kıyasla buna değip değmediğidir.
| Faktör | Geliştir (kendi sunucunda) | Satın al (yönetilen API) |
|---|---|---|
| Başlangıç mühendisliği | Günler veya haftalar | Dakikalar |
| Veri kaynağı | AMB / merkez bankası akışlarını siz bağlarsınız | Dahil |
| Güncelleme sıklığı | Planladığınız neyse | Gerçek zamanlı veya neredeyse |
| Geçmiş veri | Siz oluşturup saklarsınız | Talep üzerine mevcut |
| Erişilebilirlik sorumluluğu | Sizin | Sağlayıcının SLA'sı |
| Para birimi kapsamı | Kaynaklarınızla sınırlı | Kutudan 170+ |
| Aylık maliyet | Sunucu + mühendislik zamanı | Çoğu için $0–$129 |
| Bakım | Sürekli, sonsuza dek | Yok |
"Kendin geliştirmek" gerçekte neyi içerir
Geliştir-mi-satın-al kararının insanların kafasını karıştırmasının nedeni, demonun gerçekten kolay, üretim sisteminin ise gerçekten kolay olmamasıdır. Aslında neye imza attığınızı adım adım görelim.
Ham veriyi temin etmek
En yaygın ücretsiz kaynak, euro referans kurlarını her iş gününde bir kez, genellikle 16:00 CET civarında yayımlayan Avrupa Merkez Bankası'dır. Bu, 84 merkez bankasından 201 para biriminde veriyi harmanlayan Frankfurter gibi açık kaynak projeler dahil birçok "ücretsiz" kur akışının temelidir.
İki şey hemen sorun çıkarır. Birincisi, AMB akışı EUR tabanlıdır ve yalnızca iş gününde bir kez güncellenir — hafta sonu güncellemesi yok, gün içi hareket yok, TARGET tatillerinde kur yok. Kullanıcılarınız pazar günü işlem yapıyorsa veya gün içinde hareket eden kurlar bekliyorsa, günlük bir EUR akışı yetmez. İkincisi, AMB yaklaşık 30 para birimini kapsar. Egzotik bir pariteye, bir metale ya da bir kripto kuruna ihtiyacınız olduğu anda, yeniden birden fazla sağlayıcıyı kendiniz temin edip uzlaştırmaya dönersiniz.
İşte herkesin gördüğü "kolay" kısım — günlük AMB XML'ini çekip ayrıştırmak:
import requests
import xml.etree.ElementTree as ET
URL = "https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml"
NS = {"x": "http://www.ecb.int/vocabulary/2002-08-01/eurofxref"}
resp = requests.get(URL, timeout=10)
root = ET.fromstring(resp.content)
rates = {"EUR": 1.0}
for cube in root.findall(".//x:Cube[@currency]", NS):
rates[cube.attrib["currency"]] = float(cube.attrib["rate"])
print(rates["USD"]) # EUR -> USD reference rateBelki 15 satır. Bitmiş gibi görünüyor. Bitmedi.
Ayrıştırma, saklama ve sunma
Gerçek bir servisin son anlık görüntüden fazlasına ihtiyacı vardır. Geçmiş sorgulara yanıt verebilmek için her günün kurlarını kalıcılaştırmanız gerekir (belirli bir tarihteki kuru kullanması gereken faturaları, iadeleri, muhasebeyi ve vergi raporlamasını düşünün). Bu, bir veritabanı şeması, günlük bir veri alma işi, AMB uç noktası yavaş veya kapalıyken yeniden deneme mantığı ve kaynağınız yalnızca "EUR'dan her şeye" verirken "USD'den JPY'ye" yanıtlayabilmek için temel para birimi dönüşüm matematiği anlamına gelir.
Bir pivot para birimi üzerinden temel dönüşüm basit aritmetiktir ama ince bir şekilde yanlış yapmak kolaydır:
def convert(rates, amount, base, quote):
# rates are all relative to EUR
if base != "EUR":
amount = amount / rates[base] # to EUR
return round(amount * rates[quote], 6)
convert(rates, 100, "USD", "JPY")Sonra bunu önbellekleme, hız sınırlama, kimlik doğrulama ve tarayıcılar çağıracaksa CORS ile bir API üzerinden sunmanız gerekir. Bunların hiçbiri tek başına zor değil. Hepsi bir araya geldiğinde küçük bir ürün olur.
Gizli bakım yükü
Bu, prototipin asla göstermediği kısımdır. İşiniz akışa bağımlı hale geldiğinde, bir dizi tekrarlayan yükümlülüğü üstlenirsiniz: veri alma işini izlemek ve sessizce başarısız olduğunda uyarmak; kaynağın formatı veya URL'si değiştiği günlerle başa çıkmak; bir çekim kaçırıldığında boşlukları doldurmak; trafik büyüdükçe servisi ölçeklemek; ve kurlar bayatladığı için bir ödeme akışı koptuğunda gece 2'de uyandırılan kişi olmak. Kur akışı bir kez teslim ettiğiniz bir özellik değildir. Süresiz olarak işlettiğiniz bir sistemdir.
Geliştirmenin gerçek maliyeti
Ekipler bunu düzenli olarak hafife alır çünkü önemli olan kalem — mühendislik zamanı — bir faturada görünmez. Üretime hazır, kendi sunucunuzda barındırılan bir akış için temkinli bir dökümü şöyle görünür:
- İlk yapım: veri alma, saklama, dönüşüm, API katmanı, kimlik doğrulama, testler — genellikle bir ila üç haftalık yoğun mühendislik çalışması.
- Altyapı: küçük bir sunucu veya konteyner artı bir veritabanı. Dolar olarak mütevazı ama asla sıfır değil.
- Sürekli bakım: kararlı durumda gerçekçi olarak ayda birkaç saat, bir kaynak bozulduğunda veya gereksinimler büyüdüğünde ani artışlarla.
- Fırsat maliyeti: standart bir kur akışını işletmeye harcanan her saat, müşterilerinizin gerçekten ödeme yaptığı ürüne harcanmayan bir saattir.
Bu haftalara ortalama bir mühendislik ücreti uygulayın ve "ücretsiz" akış, kaynağınızın sağlamadığı tek bir gerçek zamanlı kur veya tek bir geçmiş sorgu sunmadan önce, yalnızca ilk çeyreğinde sessizce binlerce dolara mal olur. Bunu, sıfır dolardan başlayan yönetilen bir ücretsiz döviz API'si ve çoğu ekip için aylık $129'un epey altında kalan ücretli bir kademe ile karşılaştırın.
Bir döviz API'si satın aldığınızda ne elde edersiniz
Satın almak, tüm o yapımı tek bir HTTP isteğine indirger. Finexly gibi yönetilen bir sağlayıcı kaynak, normalleştirme, temel dönüşüm, geçmiş saklama ve erişilebilirliği halleder, böylece temiz, tutarlı bir arayüz kullanırsınız. Yukarıda bir şema ve veri alma hattı gerektiren aynı görev şuna dönüşür:
curl "https://api.finexly.com/v1/latest?base=USD&symbols=EUR,GBP,JPY&apikey=YOUR_API_KEY"{
"success": true,
"base": "USD",
"timestamp": 1760000000,
"rates": {
"EUR": 0.9241,
"GBP": 0.7886,
"JPY": 156.32
}
}Her temel para birimi her kademede çalışır — yalnızca EUR kısıtlaması yok — ve geçmiş veri, sürdürdüğünüz bir veritabanı yerine tek bir parametre değişikliğidir:
curl "https://api.finexly.com/v1/historical?base=USD&symbols=EUR&date=2026-01-15&apikey=YOUR_API_KEY"Gerçekte satın aldığınız şey, temin etmeniz gerekmeyen veri, doğrulamanız gerekmeyen dönüşümler ve sahip olmanız gerekmeyen erişilebilirliktir. 170+ para birimi kapsamı, 50 ms altı yanıtlar ve gerçek zamanlı güncellemeler standart olarak gelir. Uç noktaların tam seti Finexly API belgelerinde açıklanmıştır ve sağlayıcıları yan yana karşılaştırma aracıyla karşılaştırabilirsiniz.
Geliştirmek ne zaman mantıklıdır
Geliştirmek her zaman yanlış seçim değildir. Kendi sunucunuzda barındırmak gerçekten şu durumlarda mantıklıdır:
- İhtiyaçlarınız küçük ve sabitse. Geçmiş veya gerçek zamanlı gereksinimi olmayan dahili bir gösterge paneli için günlük EUR tabanlı bir referans kuru, AMB akışını kendiniz sarmalamak için meşru bir nedendir.
- Katı veri ikametgâhı veya hava boşluğu gereksinimleriniz varsa. Kurlar uyumluluk nedeniyle altyapınızdan çıkamıyorsa, Frankfurter gibi açık kaynak bir akışı kendiniz barındırmak zorunlu olabilir.
- Kur verisi ana ürününüzse. Kur motorunun ayırt edici unsur olduğu bir forex işlem platformu geliştiriyorsanız, baştan sona ona sahip olmak maliyete değebilir.
Diğer herkes için, standart bir kur akışı geliştirmek, zaten daha iyi çözülmüş bir sorunu çözmektir.
Satın almak ne zaman mantıklıdır
Satın almak yaygın durumda kazanır ve işaretleri fark etmek kolaydır:
- Herhangi bir temel para birimine ihtiyacınız var, yalnızca EUR'ya değil.
- Tek bir günlük anlık görüntüye değil, gerçek zamanlı veya gün içi harekete ihtiyacınız var.
- Faturalandırma, muhasebe veya raporlama için rastgele tarihlerde geçmiş kurlara ihtiyacınız var.
- Egzotikler, metaller veya kripto dahil geniş kapsama ihtiyacınız var.
- Altyapı işletmektense ürün özellikleri sunmayı tercih edersiniz.
- Erişilebilirlik ve SLA için başkasının sorumlu olmasını istersiniz.
Bunlardan ikisini veya daha fazlasını işaretlediyseniz, hesap neredeyse her zaman satın almadan yanadır.
Hibrit bir yaklaşım: veriyi satın al, kendin önbelleğe al
En akıllı üretim kurulumları nadiren saf geliştirme veya saf satın almadır. Maliyeti ve gecikmeyi kontrol etmek için veriyi satın alıp yerel olarak önbelleğe alırlar. İstek hacmini — ve faturanızı — düşük tutarken yönetilen bir sağlayıcının kapsamını ve güvenilirliğini elde edersiniz. İşte Node.js'te minimal bir önbellek katmanı:
const cache = new Map();
const TTL_MS = 60 * 60 * 1000; // refresh hourly
async function getRates(base = "USD") {
const hit = cache.get(base);
if (hit && Date.now() - hit.time < TTL_MS) return hit.rates;
const url = `https://api.finexly.com/v1/latest?base=${base}&apikey=${process.env.FINEXLY_KEY}`;
const res = await fetch(url);
const data = await res.json();
cache.set(base, { rates: data.rates, time: Date.now() });
return data.rates;
}Bu desen size iki dünyanın da en iyisini verir: bir veri alma hattı işletmezsiniz ama her sayfa görüntülemesinde bir ağ çağrısı da yapmazsınız. Daha derin desenler için önbellekleme ve hata yönetimi en iyi uygulamaları rehberimize bakın. Hacim büyüdükçe fiyatlandırma planları yeniden yapım zorlamak yerine sizinle birlikte ölçeklenir.
Hızlı bir karar kontrol listesi
Bu soruları dürüstçe gözden geçirin:
- Günlük bir EUR anlık görüntüsünden fazlasına ihtiyacım var mı? Evetse, satın almaya meyledin.
- Belirli tarihler için geçmiş kurlara ihtiyacım olacak mı? Evetse, satın almaya meyledin.
- Kur verisi ana ürünüm mü yoksa destekleyici bir özellik mi? Destekleyiciyse, satın almaya meyledin.
- Verinin altyapımdan çıkamayacağına dair bir uyumluluk nedenim var mı? Evetse, geliştirmeye (kendi barındırma) meyledin.
- Ekibin zamanı ürüne mi daha iyi harcanır? Neredeyse her zaman evet — satın almaya meyledin.
Fintech geliştiricilerinin, SaaS platformlarının ve e-ticaret ekiplerinin büyük çoğunluğu için cevap aynı yönü gösterir: standardı satın alın, ayırt edici unsuru geliştirin.
Sıkça Sorulan Sorular
Kendi döviz kuru API'mi geliştirmek daha mı ucuz? Yalnızca ihtiyaçlarınız önemsizse ve hiç büyümüyorsa. Veri kaynağı AMB üzerinden ücretsiz olabilir, ancak bir üretim akışını geliştirme ve sürdürme mühendislik zamanı — veri alma, saklama, dönüşüm, erişilebilirlik, izleme — genellikle ilk çeyrekte yönetilen bir API aboneliğinin yıllarından daha pahalıya mal olur.
Ücretsiz AMB akışını doğrudan kullanabilir miyim? Kullanabilirsiniz, iki büyük çekinceyle: EUR tabanlıdır ve hafta sonu veya gün içi kur olmadan yalnızca iş gününde bir kez güncellenir. Dahili gösterge panelleri için sorun değil; kullanıcıya dönük veya işlemsel herhangi bir şey için genellikle değil.
Frankfurter ile Finexly gibi ücretli bir API arasındaki fark nedir? Frankfurter, merkez bankası referans kurları üzerine kurulu, API anahtarı ve kotası olmayan, düşük riskli veya kendi barındırılan kullanım için ideal mükemmel bir ücretsiz açık kaynak akıştır. Finexly gibi ücretli bir API, herhangi bir tabana dönüşüm, gerçek zamanlı güncellemeler, 170+ para birimi, garantili erişilebilirlik/SLA ve destek ekler — para kurlara bağlı olduğunda ihtiyaç duyduğunuz şeyler.
Her iki yaklaşımı birleştirebilir miyim? Evet ve çoğu olgun ekip bunu yapar. Kapsam ve güvenilirlik için veriyi yönetilen bir API'den satın alın, ardından gecikmeyi ve istek hacmini — ve maliyeti — düşük tutmak için makul bir TTL ile yerel olarak önbelleğe alın.
Kendi geliştirdiğim bir akıştan yönetilen bir API'ye nasıl geçerim? Dahili kur fonksiyonunuzun veri kaynağını tek bir API çağrısıyla değiştirin, mevcut önbellek katmanınızı koruyun ve geçmiş ihtiyaçları sağlayıcının geçmiş uç noktası üzerinden doldurun. Genellikle yeniden yazım değil, birkaç saatlik iştir.
Geliştirmeyi atlayıp bunun yerine özelliği teslim etmeye hazır mısınız? Ücretsiz Finexly API anahtarınızı alın — kredi kartı gerekmez. 170+ para biriminde ayda 1.000 ücretsiz istekle başlayın ve yalnızca trafiğiniz gerçekten büyüdüğünde yükseltin.
Explore More
Vlado Grigirov
Senior Currency Markets Analyst & Financial Strategist
Vlado Grigirov is a senior currency markets analyst and financial strategist with over 14 years of experience in foreign exchange markets, cross-border finance, and currency risk management. He has wo...
View full profile →