Rigel
Yapay zekâ video uygulaması
API Gateway arkasında Lambda fonksiyonları; bildirim ve e-posta gönderimi hata kuyruklu SQS’te, dosyalar S3’te, OpenAI anahtarı Secrets Manager’da, alarmlar CloudWatch’ta. Hepsi tek bir SAM şablonunda.
Ürünü inceleHepsi yayında; mağaza sayfalarına ve ayrıntılara Ürünler sayfasından ulaşabilirsiniz.
Yapay zekâ video uygulaması
API Gateway arkasında Lambda fonksiyonları; bildirim ve e-posta gönderimi hata kuyruklu SQS’te, dosyalar S3’te, OpenAI anahtarı Secrets Manager’da, alarmlar CloudWatch’ta. Hepsi tek bir SAM şablonunda.
Ürünü inceleYapay zekâ bütçe koçu
API Gateway ve Lambda; harcama fişleri S3’te tutulup süreli imzalı bağlantılarla açılıyor, şifre sıfırlama e-postaları SES ile gidiyor, banka bağlantısı webhook’ları ayrı bir fonksiyona geliyor.
Ürünü inceleSunucusuz (serverless) bir arka uçta sürekli açık duran bir sunucu yok. Kod, AWS Lambda üzerinde fonksiyonlar olarak duruyor ve yalnızca bir istek, bir kuyruk mesajı ya da zamanı gelmiş bir görev olduğunda çalışıyor. İstekler artınca AWS aynı fonksiyonun yeni kopyalarını açıyor; işletim sistemi, kapasite ve yük dağıtımı AWS’nin sorumluluğunda. Bize düşen iş, fonksiyonları, aralarındaki kuyrukları, yetkileri ve izlemeyi doğru kurmak.
| AWS Lambda (SAM ile) | Kendi sunucunuz (Docker ve Coolify ile) | |
|---|---|---|
| Trafik yokken | Fonksiyon çalışmıyor; Lambda istek sayısına ve çalışma süresine göre ücretlendiriliyor | Sunucu her an açık ve bedeli değişmiyor |
| Ani yoğunluk | AWS yeni kopyalar açıyor; sınırı hesabın eşzamanlılık kotası ve veritabanı belirliyor | Sunucunun gücüyle sınırlı; büyütmek önceden planlama istiyor |
| Uzun iş ve kalıcı bağlantı | İş kuyruğa ya da ayrı bir fonksiyona bölünüyor | Sürekli çalışan bir süreç doğrudan taşıyor |
| Bakım | İşletim sistemi AWS’de; Node.js sürümünü şablonda biz yükseltiyoruz | İşletim sistemi yamaları, disk ve yedek sizin ya da bakım ekibinin işi |
| Bizim örneğimiz | Rigel, LydiaVault | Hippotenus, Logaritim, pepechura.com |
Kata Technology için geliştirdiğimiz iki mobil uygulamanın arka ucu AWS üzerinde sunucusuz çalışıyor. Veritabanı her ikisinde de MongoDB; diğer parçalar AWS servisleri:
API uç noktaları, webhook’lar, kuyruk işçileri ve zamanlanmış görevler. Rigel’de video birleştirme gibi ağır işler, ffmpeg katmanı eklenmiş ve daha fazla bellek verilmiş ayrı fonksiyonlarda.
REST API’nin kapısı. İstek fonksiyona ulaşmadan önce bir Lambda yetkilendiricisi kullanıcının JWT’sini doğruluyor. Rigel ve LydiaVault’ta; Rigel’in API’si kendi alan adından yayında.
Rigel’de bildirim ve e-posta gönderim kuyrukları; her kuyruğun arkasında, işlenemeyen mesajları toplayan bir hata kuyruğu (DLQ) var.
Rigel’de yüklenen fotoğraflar ve üretilen videolar, LydiaVault’ta harcama fişleri. Fotoğraflar ve fişler süreli imzalı bağlantılarla açılıyor; Rigel’in videoları CloudFront üzerinden sunuluyor.
Rigel OpenAI anahtarını, JWT imzalama anahtarını ve Firebase servis hesabını buradan okuyor; okunan değer fonksiyon kopyası açık kaldıkça bellekte tutuluyor.
Rigel’de kayıt doğrulama kodları ve kampanya e-postaları, LydiaVault’ta şifre sıfırlama e-postaları.
Günlükler, günlüklerden üretilen ölçümler, alarmlar ve paneller. X-Ray her iki uygulamada fonksiyon çağrılarını izliyor.
Rigel’in keşfet akışı için önbellek; kayıtlar süresi dolunca DynamoDB tarafından kendiliğinden siliniyor.
Lambda’da her fonksiyon kopyası kendi veritabanı bağlantısını açar. Bu yüzden MongoDB bağlantısını isteğin dışında, modül düzeyinde tutuyoruz: aynı kopyaya gelen sonraki istekler mevcut bağlantıyı kullanıyor ve bağlantı havuzu bilerek küçük tutuluyor. Rigel’de bağlantı kullanılmadan önce yoklanıyor; kopmuşsa kapatılıp yenisi açılıyor.
Rigel’in yönetim panelinden hazırlanan bildirim ve e-posta kampanyaları, panelin isteği içinde gönderilmiyor. Gönderim, aralarında SQS kuyrukları olan fonksiyonlara bölünmüş durumda:
Rigel’in fonksiyonları, API’si, kuyrukları ve hata kuyrukları, zamanlanmış görevleri, DynamoDB tablosu, alarmları, panelleri ve özel alan adı tek bir AWS SAM şablonunda tanımlı. LydiaVault’ta da fonksiyonlar, API ve yetkilendirici aynı biçimde şablonda. Şablon kodla aynı depoda duruyor; bir kuyruğun ya da alarmın ne zaman, neden eklendiği commit geçmişinde görülüyor.
| Konu | Rigel’de nasıl | Ne kazandırıyor |
|---|---|---|
| Ortamlar | Aynı şablondan staging ve production için ayrı stack’ler; ortam ayarları samconfig dosyasında | İki ortam aynı tanımdan kuruluyor; alarm ve paneller koşulla yalnızca production’da açılıyor |
| Paketleme | sam build her fonksiyonu esbuild ile ayrı ve küçültülmüş olarak paketliyor | Her fonksiyon yalnızca kendi kodunu taşıyor |
| Yayın | sam deploy, değişiklikleri uygulamadan önce CloudFormation değişiklik setini gösterip onay istiyor | Neyin ekleneceği, değişeceği ya da silineceği önceden görülüyor |
| Yerel geliştirme | sam local ile API geliştiricinin bilgisayarında çalıştırılabiliyor | Bir değişiklik AWS’ye gitmeden denenebiliyor |
| Kontrol | main ve develop dallarına gelen her push ve pull request’te GitHub Actions lint, tip denetimi ve birim testlerini çalıştırıyor | Derlenmeyen ya da testi kıran kod erkenden görülüyor |
İzleme de şablonun parçası. Rigel’in günlükleri yapılandırılmış JSON olarak yazılıyor; CloudWatch ölçüm filtreleri belirli günlük satırlarından, örneğin başarısız video üretimlerinden ve RevenueCat ödeme hatalarından ölçüm üretiyor. Eşiği aşan bir ölçüm alarmı tetikliyor, alarm SNS üzerinden bir Lambda fonksiyonuna, oradan da Slack’e iletiliyor. Kritik fonksiyonların hata seviyesindeki günlük satırları da ayrıca Slack’e düşüyor. X-Ray, Rigel’de dış servislere giden HTTP çağrılarını da izlemeye katıyor.
Hangi işlerin anında, hangilerinin arka planda yapılması gerektiğini ve AWS hesabınızın bugünkü durumunu konuşuyoruz.
Fonksiyonları, kuyrukları, zamanlanmış görevleri, veri ve dosya depolamayı ve izlemeyi, kabul kriterleriyle birlikte yazıya döküyoruz.
Her hafta staging ortamına çalışan bir sürüm çıkıyor; uç noktaları uygulamanın kendisinden ya da bir API istemcisinden deneyebiliyorsunuz.
Senior QA, staging’deki sürümü production’a geçmeden önce test ediyor; production’a çıkarken değişiklik seti gözden geçirilip onaylanıyor.
Bu dönemde bulunan hataları ücretsiz düzeltiyoruz; ardından aylık bakımla devam edebilirsiniz.
Süre ve bütçe aralıkları hizmet sayfalarımızda ve fiyatlar sayfasında; bu sayfa onlardan farklı bir rakam içermiyor.
Kısmen, ve bunu baştan açıkça konuşuyoruz. İş kuralları sıradan TypeScript kodunda, veritabanı MongoDB; bunlar AWS’ye bağlı değil. SQS, SES, Secrets Manager ve SAM şablonu ise AWS’ye özgü; başka bir ortama geçerken bunların karşılıkları kurulur. S3’ün arayüzü ise yaygın bir standart: Hippotenus dosyalarını aynı AWS SDK ile S3 uyumlu başka bir depolama hizmetinde tutuyor.
Bir fonksiyon kopyası ilk kez açılırken kısa bir gecikme olur. Bunu küçültmek için her fonksiyonu esbuild ile ayrı ve küçültülmüş paketliyoruz; veritabanı bağlantısını, Rigel’de Secrets Manager’dan okunan değerleri de, kopya açık kaldıkça bellekte tutuyoruz. Böylece bu bedeli kopyaya gelen ilk istek ödüyor. Her isteğin gecikmeye çok duyarlı olduğu bir işte bunu keşif görüşmesinde ayrıca ele alıyoruz.
Rigel ve LydiaVault’ta hayır: ikisi de sunucu ya da konteyner yönetmeden Lambda ile çalışıyor, veritabanları MongoDB. Sürekli çalışan bir konteyner gereken projelerde, Hippotenus ve Logaritim’de olduğu gibi, Docker ve Coolify ile kendi sunucumuzu kullanıyoruz.
Evet. Altyapı şablonda tanımlı olduğu için aynı şablon sizin hesabınıza kurulabilir; staging ve production’ı ayrı stack’ler olarak açıyoruz. S3 bucket’ı ve alan adı sertifikası gibi şablonun dışında kurulan kaynaklar da şablona parametre olarak verildiği için hangi kaynağın nereden geldiği görülebiliyor.
Yazılımı süresiz kullanma lisansı ve dokümantasyon. Kaynak kodun SAM şablonuyla birlikte size devredilmesini isterseniz bu ek ücretlidir ve teklifte ayrıca yazılır.
30 dakikalık ücretsiz keşif görüşmesinde uygulamanızın hangi parçalarının Lambda’ya, hangilerinin kuyruğa ya da kendi sunucunuza uygun olduğunu birlikte çıkaralım.