Ben sadece uygulamamın ne zaman bozulduğunu bilmek isteyen bir Laravel geliştiricisiydim. Fiyatlandırma sayfaları hayır dediler. Bu yüzden kendi hata izleyicimi inşa ettim.
Sentry’nin fiyatlandırma sayfasında üç tıklama derinliğine girdim ve yan projeme ne kadar maliyet çıkacağını düşündüm. İyi bir ayda kendi barındırma masraflarını karşılayacak kadar kazanıyor. İki yüz kişiye hizmet veren bir uygulama için hataları izlemek, ayda kırk dolar.
Sekmeyi kapattım.
Flare’ı denedim. Laravel için daha güzel, kesin. Yine de bir stüdyo dairesinde kurumsal kira ödemek gibi hissettirdi. Nightwatch? Aynı enerji. Bu araçların her biri, Jira panosuna sahip bir takım ve bu durumu fiziksel olarak hissetmeyecek bir bütçesi olan bir mühendislik VP’si için tasarlanmış. Ben sadece bir Laravel uygulaması ve bir DigitalOcean damlası olan bir adamım. Tek ihtiyacım olan şey, bir şeyin ne zaman bozulduğunu bilmektir.
Hepsi bu. Asıl gereklilik bu. Bir şey ters gittiğinde, bana bildir. Belki de hataları gruplandır ki beş yüz aynı yığın izinin içinde boğulmayayım. Belki de kullanıcılarım fark etmeden önce dikkatimi çekmek için bir Telegram mesajı gönder. Standart, açıkçası, o kadar yüksek değil.
Tabii ki — tabii ki — beynim işlevsel hale geldi. Biliyorsunuz o durumu. Bir geliştirici olarak bir probleme bakıyorsunuz ve başkalarına ödeme yapmak yerine, şunu düşünüyorsunuz: Bunu inşa edebilirim.
Bu genellikle korkunç bir fikirdir. Bunu biliyorum. Siz de biliyorsunuz. Hepimiz biliyoruz. Ve yine de.
Bir salı akşamı boş bir Laravel projesi açtım. Sadece alma uç noktasını prototip yapacağımı düşündüm. Başka bir Laravel uygulamasından bir istisna yakalayıp saklayıp saklayamayacağımı kontrol edeyim. En fazla iki saat, sonra mantığımı kazanıp Flare için ödeme yapacağım.
O, aylar önce gerçekleşti.
Yaptığım şey Oopsy adını aldım ve şu an tam anlamıyla bir Laravel hata izleme aracı oldu, bu beni biraz şaşırıyor. TALL yığını — Tailwind, Alpine, Livewire, Laravel — çünkü bununla alakalı olan budur ve bunun için React öğrenmeyecektim. Alan odaklı tasarım, çünkü kod tabanım üçüncü haftada karmaşıklaşmaya başladı ve aklımı kaybetmeden önce bazı düzenlemeleri uygulamak zorunda kaldım.
Aslında ne yaptığınıza bakalım. PHP tarafında, küçük bir Laravel paketi üzerinde composer require çalıştırıyorsunuz. İstisna işlemcisine bağlanıyor, yığın izini kod bağlamıyla yakalıyor, istek ve kullanıcı bilgilerini alıyor, günlükleriniz ve sorgularınızdan eklemek için iz parçalarını topluyor, ardından bunu asenkron bir şekilde gönderiyor. Uygulamanız yavaşlamıyor, Oopsy ulaşılamazsa çökmez. Sadece neyin yanlış gittiğini sessizce bildirir.
Garip bir şekilde gurur duyduğum bir özellik, JavaScript hata yakalama kısmı. Tek bir script etiketi ekliyorsunuz. Hepsi bu. Hiçbir npm yükleme, hiçbir yapı adımı, kırk seçenekli bir yapılandırma dosyası yok. Script, yakalanmamış istisnaları, işlenmemiş sözleşme reddetmelerini yakalar, yığın izlerini Chrome, Firefox ve Safari üzerinde (her biri farklı biçimlendirdiği için) ayrıştırır, kullanıcının tıkladığı ve hangi ağ isteklerinin gerçekleştiğine dair ek iz parçalarını kaydeder ve her şeyi sendBeacon ile gönderir, yani sayfanın kapanmasını engellemez. sendBeacon‘un CORS ön uç isteksiz istekleri olmadan çalışmasını sağlamak için utanç verici bir şekilde fazla zaman harcadım. İpucu ise text/plain olarak göndermektir. Neyse.
Hatalar parmak izi ile gruplandırılır — istisna sınıfının, dosyanın ve ilk non-vendor yığın çerçevesinden satır numarasının bir hash’i. Yani PaymentController her saat başı kırk kez aynı StripeException fırlatıyorsa, bir sorun görürsünüz ve bu, sahnenizi karıştırmayan kırk ayrı sorun değil, kırkın bir sayımına sahiptir. Şiddete, çevreye veya PHP ya da JavaScript’ten gelip gelmediğine göre filtreleyebilirsiniz. Şeyleri çözümlenmiş olarak işaretleyebilir ve geri dönerlerse otomatik olarak regressed durumuna geçerler.
Bu, karmaşıklık vergisi olmadan bir Laravel hata izleme aracıdır. Tüm amacımız buydu.
Sonra fiyatlandırma sorusu geldi, ki bu da benim için tuhaf hissettirdi. Bu projeye çünkü fiyatlandırma beni rahatsız ediyordu, ve şimdi kendim fiyatlandırma belirlemem gerekiyordu.
Basit tuttum. Ücretsiz katman, ayda bin hata verir, bir proje, yedi gün muhafaza. Çoğu hobi projeleri için bu muhtemelen yeterlidir. Ayda beş dolara — Hobi planı — elli bin hata, beş proje ve otuz gün alırsınız. Eğer daha ciddi bir şey çalışıyorsanız, on dokuz dolar ayda yarım milyon hata, sınırsız proje, doksan gün muhafaza, sınırsız takım üyesi alırsınız.
Bu rakamların doğru olup olmadığını bilmiyorum. Gerçekten bilmiyorum. Belki de ücretsiz katman çok cömert ve altyapıda para kaybedeceğim. Belki Pro katman çok ucuzdur ve masadan para bırakıyorum. Ama o Sentry fiyatlandırma sayfasındaki hisse geri dönmeye devam ettim — bu benim gibi insanlar için değil hissi — ve kendim için uygun bir tarafımda hatalı olmak istedim.
(Orada hatalar tarafında hatalı olmak ile ilgili bir şaka var. Bunu yapmayı seçiyorum. Rica ederim.)
Samimi olan şey, bunu yazmayı neredeyse bırakıyordum: bir iş olarak bunun çalışıp çalışmadığını bilmiyorum. Laravel hata izleme SaaS’inin ekonomi mantığı basit değil. Potansiyel olarak büyük veri hacimlerini işliyorsunuz, yığın izlerini ve ek parçaları saklıyorsunuz, her şeyi işlemek ve gruplamak için arka plan görevleri çalıştırıyorsunuz. Ücretsiz katman kullanıcıları gerçek maliyetler üretir. Barındırma ücretsiz değil. Zamanım da ücretsiz değil, yine de özgürmüş gibi yapmaya devam ediyorum.
Ama bir araç olarak çalışıyor. Kendi projelerimde kullanıyorum. Bir şey 2’de bozulduğunda, telefonum Telegram mesajıyla tam olarak ne olduğunu, hangi dosya, hangi satır, kullanıcının ne yaptığını bildiriyor. Sabah düzeltirim. Hiç kimse bana kızgın bir e-posta yazmıyor.
Ve bakın, belki de şu an için bu yeterlidir. Her şey bir girişim boyutunda iş olmak zorunda değil. Bazen bir şeyi var olduğu opsiyonlar profesyonel bir geliştirici olabilmek için yeterince karşılayamıyormuş hissini verdiyse oluşturursunuz ve diğer insanların da o şekilde hissedebileceğini düşünürsünüz. Bazen “Bunu inşa edebilirim” dürtüsü, tüm olasılıklara rağmen, gerçekten çalışan ve biraz gururlandığınız bir şeyi üretir.
Bazen korkunç bir fikir iyi sonuç veriyor.
Oopsy’yi incelemek isterseniz oopsy.dev‘de bulabilirsiniz. Ücretsiz katman, kredi kartı yok, kurulumu yaklaşık iki dakika sürüyor. Eğer Laravel hata izlemeyi bir bütçe ile yapıyorsanız — ya da sadece ilke olarak — belki de sizin için kullanışlıdır. Belki de değildir. İzleme işini sonsuza kadar çözdüğümü iddia etmiyorum.
Sadece uygulamamın ne zaman bozulduğunu bilmek istedim.
Dan
Kaynak: Orijinal Makale


