Mühendislik

Modern Web Uygulama Mimarisi: 10'dan Fazla Yapay Zeka Aracı Geliştirmenin Dersleri

· Founder, Bastas Design

7 dk okuma

On'dan fazla yapay zeka destekli web uygulaması geliştirip dağıttıktan sonra mimari içgörülerimizi paylaşıyoruz — doğru teknoloji yığınını seçmekten alt alan adı tabanlı mikro servisleri yönetmeye ve her şeyi sürdürülebilir tutmaya kadar.

Son iki yılda ondan fazla yapay zeka destekli web uygulaması yayınladık — çeviri araçları, verimlilik uygulamaları, öğrenme platformları, yaratıcı yardımcı programlar. Her biri bize blog yazıları okuyarak öğrenemeyeceğimiz modern web mimarisi hakkında bir şeyler öğretti. Bu, üretimle temasa geçtikten sonra hayatta kalan fikirlerin bir özeti.

Kabuk için sıkıcı bir yığın seçin

Her yapay zeka uygulamasının ilginç bir kısmı — model, veri hattı, benzersiz özellik — ve sıkıcı bir kısmı — kimlik doğrulama, yönlendirme, dağıtım, SSL, günlük tutma — vardır. Yenilik bütçenizi ilginç kısma harcayın. Kabuk için sıkıcı, savaşta test edilmiş araçları kullanın.

Bizim sıkıcı yığınımız: Vite ile React, stil için Tailwind, gezinme için React Router ve gerektiğinde küçük bir Express arka ucu. Sıkıcı, eski anlamına gelmez. İyi anlaşılan, iyi belgelenen ve için personel bulması kolay demektir. Yeni bir mühendise kabuğu bir günde öğretebilmelisiniz.

Ayrı ürünler için monorepo yerine alt alan adları

Yaygın bir içgüdü her ürünü tek bir kod tabanına koymaktır. Bunu kısaca yaptık ve pişman olduk. Farklı ürünlerin farklı yayın temposu, farklı performans profilleri, farklı başarısızlık modları vardır. Biri için yapılan bir dağıtım diğerlerini riske atmamalıdır.

Alt alan adı tabanlı dağıtım her araca teknik bağımsızlık verir ve aynı zamanda küçük bir paylaşılan paket aracılığıyla marka, kimlik doğrulama ve tasarım belirteçlerini paylaşmalarına izin verir. Bir araç çökse diğerlerini götürmez. Ağır bir kütüphaneye ihtiyaç duyan bir araç diğerleri için paketi şişirmez.

Mümkün olduğunda durumu kenarda tutun

Modern web uygulamaları hızla durum biriktirir: kullanıcı tercihleri, taslak belgeler, önbelleğe alınmış çeviriler, oturum geçmişi. Varsayılan içgüdü bunların hepsini merkezi bir veritabanına itmektir. Mümkün olduğunda bu içgüdüye direnin.

IndexedDB, localStorage ve servis çalışanları, birçok uygulamanın durumunun çoğunu kullanıcının cihazında tutabileceği noktaya kadar olgunlaştı. Bunun üç faydası var: daha hızlı, daha özel ve ücretsiz ölçeklenir. Yalnızca kullanıcı cihazlar arası süreklilik istediğinde merkezi bir veritabanına senkronize etmeniz gerekir ve bu genellikle tercihe bağlı olabilir.

Yapay zeka çağrıları ağ çağrılarıdır — öyle davranın

Bir dil modelini çağırmak bir fonksiyon çağrısı gibi görünür. Değildir. Kuyruk gecikme dağılımı, hız sınırı, token başına maliyet ve sıfır olmayan bir başarısızlık oranı olan bir ağ çağrısıdır. Uygulamanızda bir modeli çağıran her yerde diğer ağ çağrılarıyla aynı disiplinle ele alınmalıdır: yükleme durumları, hata sınırları, geri çekilmeli yeniden denemeler, ilgili olduğunda kullanıcıya görünür maliyet göstergeleri.

Ayrıca her yapay zeka çağrısını istem, yanıt ve gecikmeyi kaydeden küçük bir soyutlamayla sarıyoruz. Üretimde bir şey ters gittiğinde okuduğumuz ilk şey bu kayıttır. Kendini defalarca amorti etti.

Tasarım belirteçleri anında karşılığını verir

On ürün arasında tutarlı tasarım dili bir savunma hattıdır. Tutarlı tasarım dili tasarım belirteçlerinden gelir — renkler, boşluk, tipografi, yarıçap, gölge — bir kez tanımlanıp her yerde tüketilir. Tailwind buna bağlı kalırsanız bunu basitleştirir.

Getirisi sadece estetik değil. Karanlık mod yayınlamak istediğinizde, belirteçleri değiştirirsiniz. Bir etkinlik için bir aracı yeniden temalandırmak istediğinizde, belirteçleri değiştirirsiniz. Yeni bir tasarımcı katıldığında, on değil, bir sözcük dağarcığı öğrenirler.

Hazır olmadan yayınlayın, gerçek kullanıcılarla yineleyin

Ekosistemimizdeki her araç, başlangıçta yayınlamayı planladığımız versiyondan daha iyidir. Gerçek kullanıcıların gerçek problemlerden şikayet etmesi olmadan hiçbiri oraya varamazdı. Mimari önemlidir, ama yayınlamanın hizmetinde önemlidir — onun yerine geçen bir şey olarak değil.

Kuralımız: bir araç yazarından başka bir kişi için gerçek bir problem çözüyorsa, dağıtıma hazırdır. Cila sonraki yirmi versiyondan gelir.