Ağları birbirine bağlayacak yerli üretimimiz: Neteryum
Neteryum, fabrika ağlarındaki PLC, robot ve endüstriyel cihazlara, fiziksel olarak yanındaymış gibi uzaktan erişimi mümkün kılan, yerli geliştirdiğimiz bir ürün. Fikir çok somut bir ihtiyaçtan doğdu ve kulağa basit gelse de işin içine girince hiç de öyle olmadığını anladım.
Fabrika ağı NAT arkasında, uzaktaki teknisyen de NAT arkasında; iki tarafı buluşturmanın tek mantıklı yolu ortada bir relay sunucu kurmaktı. İlk büyük teknik karar burada çıktı karşıma: endüstriyel protokoller multicast ve broadcast trafiğine bağımlı çalışıyor, dolayısıyla klasik bir uygulama katmanı çözümü işe yaramayacaktı. Layer 2 köprüleme şarttı ve bu da mimarinin bütününü baştan şekillendirdi.
Sahadaki tarafa küçük, sessiz ve dayanıklı bir cihaz lazımdı. Bunun için tek kart bilgisayarları endüstriyel istemci olarak konumlandırdım; fabrika ağına fiziksel olarak takılıp bulut tarafına köprü görevi görüyorlar. Cihazlar müşteriye gittikten sonra hangisinin kim tarafından ve ne zaman aktive edildiğini bilmem gerekiyordu, bu yüzden bir lisans ve aktivasyon sistemi geliştirdim. Cihaz fabrikaya fiziksel olarak ulaşana kadar bir bekleme durumunda kalıyor, kullanıcı web panelinden aktive edince devreye giriyor. Bu asenkron akışı oturtmak başta sandığımdan zor çıktı; cihazın elimden çıktığı an ile kullanıcının onu kendi hesabına bağladığı an arasındaki boşlukta her türlü ihtimali düşünmek gerekiyordu. Bir de cihazın fiziksel olarak müşterinin elinde olması demek, içindeki kodun okunabilme riski demekti. Embedded tarafı için tercihimi buna göre yaptım ve derleme avantajları nedeniyle Go'ya geçtim.
Masaüstü tarafında en çok evrilen kısım kullanıcı deneyimi oldu. İlk başta klasik pencereli bir uygulama yapmıştım ama kullanıcının her seferinde açıp kapatmakla uğraşmaması için sistem tepsisinde sessizce çalışan bir servise dönüştürdüm. Web paneli ile bu servis arasında, kullanıcı bazlı izolasyonu sağlayan, kimlik doğrulamalı bir iletişim katmanı kurdum. Böylece her kullanıcı sadece kendi cihazlarına ait mesajları alıyor.
Bant genişliği yönetimi başlı başına ayrı bir konu oldu. Fabrika internetleri çoğu zaman kıt kanaat, bir de büyük bir yedek dosyası transfer ederken PLC ile gerçek zamanlı haberleşmenin bozulması düşünülemezdi. Linux'un trafik şekillendirme araçlarıyla dosya transferlerini ayrı bir kuyruğa düşürdüm; PLC trafiğinin önceliğine dokunmadan büyük transferlerin akmasını sağladım.
USB cihaz erişimi başka bir cephe oldu. Hem dosya depolama hem de PLC programlamada kullanılan seri çeviriciler için farklı yaklaşımları uzun uzun karşılaştırdım, fabrika senaryosuna en uyanı seçene kadar epey kıyaslama yaptım.
Geriye dönüp baktığımda Neteryum'un bana öğrettiği en kıymetli şey şu oldu: endüstriyel uygulamalarda güvenilirlik, asla konfor uğruna feda edilemez. Tüketici dünyasındaki birçok pratik buraya doğrudan çevrilmiyor, çünkü fabrikadaki bir milisaniyelik gecikme bir hattın durması anlamına gelebiliyor. Mimari kararları matematiksel ve mantıksal temellerine inerek vermek, ileride çıkacak baş ağrılarının çoğunu en başta engelliyor. Şu an gözüm hem altyapı tarafındaki bazı alternatif teknolojilerde, hem de cihazların kullanıcılar arasında onay mekanizmasıyla devredilebilmesini sağlayacak senaryolarda. Network keşfini de daha akıllı hale getirip kullanıcının hangi alt ağda olduğunu bilmek zorunda kalmadığı bir deneyime doğru götürmek istiyorum. Yol uzun ama her adım, sahada gerçek bir derdi çözüyor olmanın getirdiği bir tatmin duygusuyla atılıyor.