Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?

Merhaba Arkadaslar,

Gelistirmekte oldugum bir "cihaz" icin web yazilimina ihtiyacim bulunmaktadir. "Yazilim" icin asagidaki genel teknolojiler kullanilacaktir

  1. Laravel framework ile tasarim. Bu teknoloji tercih edilmektedir fakat alternatif dusunulebilir.
  2. Leafletjs ve openstreetmap kutuphanesi ile harita uzerinde obje olusturma, islem yapabilme ve kullanici arayuzu
  3. HTML, js, CSS, mySql, Json
  4. Firma ve kullanici yonetim panelleri, email bildirimleri.
  5. AWS Lampda uzerinde kurulum
  6. Mobil uygulamasi (opsiyonel)

Yazilimin calisma prensibi su sekilde olacaktir:

  1. Web yazilimi, urettigimiz cihaz icin bir "yonetim bilgi saklama paltformu" olacaktir.
  2. Cihaz dan gelen bilgileri Json olarak alip isleyerek veri tabaninda saklama
  3. Ana Yonetim paneli "developer" ile "Firma" ekleme ve ona ait "admin" atama
  4. Her "admin" kendi "kullanici"larini ekleyebilecek
  5. Her "admin" kendi "firma"sinin "cihaz"larini ve urettigi bilgileri gorebilecek
  6. "Admin" kendi "kullanici"larina "cihaz" atamasi yapabilecek
  7. Kullanicilar sadece kendi cihazlarini ve ona ait bilgileri goruntuleyebilecek
  8. Cihazlar Harita uzerinde konum ve urettigi bilgiler ile goruntulenecek.
  9. Cihaz bilgileri icin alarm ve notifikasyonlar uretilebilecek. Ornegin sicaklik arttiginda kullaniciyi bilgilendir.
  10. Firmalar bagimsiz olacak. firmalar, ve kullanicilar baskalarinin bilgilerine erisemeyecek.

Adaylar benzer ozelliklerde proje gelistirmis ise bunu mutlaka on planda belirtmelidir. Yapilan isin demosunu sunma imkani tercih sebebi olacaktir. Benim su anda kullandigim demo sistemi secilen adaylara tanitilacak ve son teklifler bunun neticesinde degerlendirilecektir. Yazilim projesi mevcut demonun guncellenmesi icin degil, guncel teknolojiler kullanarak yeniden dizayn edilmesi icindir.

Gelistiriciden, Proje tesliminden sonra, en az 6 aylik bir destek programi ve hata ayiklama hizmeti icin opsiyonel butce istenecektir.

Yazilim proje fiyati ve gelistirme suresi teklif verenler/ilgilenenler ile birlikte belirlenecektir.
Uzaktan calisma seklinde hizmet alinacaktir

Edit: bu bir arac takip sistemi degildir, fakat IoT dunyasinda sablonlar birbirine benziyor 🙂

  • mgsmus bunu beğendi.
  • Konu hakkında irdelemek istediğim birkaç husus var;

    Cihaz Sadece verimi gönderecek?
    Eğer cihaz sadece veri gönderecekse, senaryonuz da sıkıntı yok; Sabit bir endpointiniz olur(iot-api.domain.com) ve cihaz kendi id'si ile birlikte verileri gönderir ve o id'li cihaz kime tanımlanmışsa verileri onun panelinde kullanabilirsiniz. Ama sizde cihaza bir şeyler gönderecekseniz bu senaryoya socket mantığıyla çalışan real time Iot çözümlerini de dahil etmeniz gerekir.
    En basit mantıkla bir örnek vereyim. Cihaz bir ışık yakacak diyelim; cihazın gönderdiğiniz komutu anında işleme alması için real time çalışan bir teknolojiye ihtiyacı vardır. Bu iş daha farklı yollarla da çözülebilir ama çok daha ilkel ve maliyetli olur.
    Yada ters bir mantık ile cihaza parametre göndereceksiniz; Sıcaklık sensörünün ölçtüğü değer 25 derece sıcaklığa ulaştığında bana(apiye) sıcaklık bilgisini gönder diyeceksiniz. Bu senaryoda da parametreler sabit bir endpoint üzerinden id ile çekilebilir ama buda daha maliyetli ve ilkel bir yol olur.
    Sonuç olarak, Sizin uygulamanızda böyle bir ihtiyaç olmayabilir ama Iot teknolojilerin optimum şekilde kullanılabilmesi için socket mantığı ile çalışan real time çözümlere ihtiyacı oluyor diyebiliriz. Bakınız: AWS IoT Uygulamaları ve Çözümleri

    Alt yapı seçimi
    Sistemin serverless bir mimaride barınması geliştiriciler ve proje sahipleri için çok güzel bir gelişme. Sizde çok haklı olarak serverless olsun bir daha donanım/sunucu derdim olmasın diyorsunuz. Ama maalesef serverless konusunda maliyet hesabının yapılması, optimize edilmesi ve Laravel gibi komplex yapıların hızlıca serverless üzerinde çalıştırılması noktasında katedilmesi gereken mesafeler var. Web uygulamanız Laravel ile hazırlanabilir ama Laravel'in Aws Lambda ile çalışır hale gelmesi biraz çetrefilli bir konudur. Aws Lambda'nın desteklediği diller içerisinde maalesef henüz PHP bulunmuyor. Lambda üzerinde PHP çalıştırılabilir(Custom Runtime) ama onun yerine NodeJS veya Python gibi popüler dillerin tercih edilmesi bu servisi kullanırken şimdilik daha fiyat/performans olabilir.
    Laravel'in Lambda ile çalışması neden çetrefilli? Serverless mimaride barınacak uygulamaların ya mikro servis olarak çalışması yada mikro servismiş gibi çalışması gerekmektedir. Özetle; Laravel uygulamaları monolit yapıda olduğundan, mikro servis gibi çalıştırılmaları gerekmektedir. Ayrıca bu mikro servismiş gibi olan Laravel endpointlerinin AWS Service Endpoint üzerinden ulaşılabilir hale getirilmeleri gereklidir.
    Ama bu konuda güzel haberlerde yok değil; Laravel'in geliştiricisi(Taylor Otwell) Vapor adında bir SAAS uygulaması geliştiriyor. Bu uygulama ile AWS üzerinde serverless Laravel çalıştırılabilecek/miş. Bu Saas'ı kiraladığınızda, Laravel'in serverless olarak yayınlanması işini sizin için Vapor halledecek. Deployment haricinde DNS(Route53), CDN(CloudFront), Database, Caching(ElastiCache), Queue, Storage(S3) vb. konularını da AWS teknolojileri ile çözecekmiş. Bakınız: Laravel Vapor, Laravel Vapor ve AWS Lambda, Laravel Vapor Fiyat/Performans Optimizasyonu
    Ayrıca işin birde database tarafı var. Ama neyse ki bu konuda da artık AWS'nin serverless database servisi bulunmakta. Bakınız: Aurora Serverless
    Sonuç olarak, şimdilik serverless üzerinde php çalıştırmak yerine, en azından vapor tarzı hızlandırıcı sistemler gelene kadar, AWS Elastic Beanstalk üzerinde, serverless database(Aurora Serverless) ile entegre çalışan otomatik ölçeklendirilebilir bir sunucu altyapısı daha fiyat/performans olabilir. Laravel Vapor çıktığında onunla devam edilebilir.

    Konum ile alakalı benzer işlemler yapacak bir proje için analiz aşamasındayız. Bizim projemizde Iot cihaz yerine mobil uygulama kullanılacak. Çünkü konum dışında harici çok fazla veriye ihtiyacımız yok. İnteraktif olması önemli; o yüzden sim kartlı tabletler ile konum bilgilerini alarak kullanmayı planlıyoruz. Konu araçlarla alakalı ama bizimkide araç takip sistemi değil. 🙂 Projenizde başarılar dilerim.

Konu hakkında irdelemek istediğim birkaç husus var;

Cihaz Sadece verimi gönderecek?
Eğer cihaz sadece veri gönderecekse, senaryonuz da sıkıntı yok; Sabit bir endpointiniz olur(iot-api.domain.com) ve cihaz kendi id'si ile birlikte verileri gönderir ve o id'li cihaz kime tanımlanmışsa verileri onun panelinde kullanabilirsiniz. Ama sizde cihaza bir şeyler gönderecekseniz bu senaryoya socket mantığıyla çalışan real time Iot çözümlerini de dahil etmeniz gerekir.
En basit mantıkla bir örnek vereyim. Cihaz bir ışık yakacak diyelim; cihazın gönderdiğiniz komutu anında işleme alması için real time çalışan bir teknolojiye ihtiyacı vardır. Bu iş daha farklı yollarla da çözülebilir ama çok daha ilkel ve maliyetli olur.
Yada ters bir mantık ile cihaza parametre göndereceksiniz; Sıcaklık sensörünün ölçtüğü değer 25 derece sıcaklığa ulaştığında bana(apiye) sıcaklık bilgisini gönder diyeceksiniz. Bu senaryoda da parametreler sabit bir endpoint üzerinden id ile çekilebilir ama buda daha maliyetli ve ilkel bir yol olur.
Sonuç olarak, Sizin uygulamanızda böyle bir ihtiyaç olmayabilir ama Iot teknolojilerin optimum şekilde kullanılabilmesi için socket mantığı ile çalışan real time çözümlere ihtiyacı oluyor diyebiliriz. Bakınız: AWS IoT Uygulamaları ve Çözümleri

Alt yapı seçimi
Sistemin serverless bir mimaride barınması geliştiriciler ve proje sahipleri için çok güzel bir gelişme. Sizde çok haklı olarak serverless olsun bir daha donanım/sunucu derdim olmasın diyorsunuz. Ama maalesef serverless konusunda maliyet hesabının yapılması, optimize edilmesi ve Laravel gibi komplex yapıların hızlıca serverless üzerinde çalıştırılması noktasında katedilmesi gereken mesafeler var. Web uygulamanız Laravel ile hazırlanabilir ama Laravel'in Aws Lambda ile çalışır hale gelmesi biraz çetrefilli bir konudur. Aws Lambda'nın desteklediği diller içerisinde maalesef henüz PHP bulunmuyor. Lambda üzerinde PHP çalıştırılabilir(Custom Runtime) ama onun yerine NodeJS veya Python gibi popüler dillerin tercih edilmesi bu servisi kullanırken şimdilik daha fiyat/performans olabilir.
Laravel'in Lambda ile çalışması neden çetrefilli? Serverless mimaride barınacak uygulamaların ya mikro servis olarak çalışması yada mikro servismiş gibi çalışması gerekmektedir. Özetle; Laravel uygulamaları monolit yapıda olduğundan, mikro servis gibi çalıştırılmaları gerekmektedir. Ayrıca bu mikro servismiş gibi olan Laravel endpointlerinin AWS Service Endpoint üzerinden ulaşılabilir hale getirilmeleri gereklidir.
Ama bu konuda güzel haberlerde yok değil; Laravel'in geliştiricisi(Taylor Otwell) Vapor adında bir SAAS uygulaması geliştiriyor. Bu uygulama ile AWS üzerinde serverless Laravel çalıştırılabilecek/miş. Bu Saas'ı kiraladığınızda, Laravel'in serverless olarak yayınlanması işini sizin için Vapor halledecek. Deployment haricinde DNS(Route53), CDN(CloudFront), Database, Caching(ElastiCache), Queue, Storage(S3) vb. konularını da AWS teknolojileri ile çözecekmiş. Bakınız: Laravel Vapor, Laravel Vapor ve AWS Lambda, Laravel Vapor Fiyat/Performans Optimizasyonu
Ayrıca işin birde database tarafı var. Ama neyse ki bu konuda da artık AWS'nin serverless database servisi bulunmakta. Bakınız: Aurora Serverless
Sonuç olarak, şimdilik serverless üzerinde php çalıştırmak yerine, en azından vapor tarzı hızlandırıcı sistemler gelene kadar, AWS Elastic Beanstalk üzerinde, serverless database(Aurora Serverless) ile entegre çalışan otomatik ölçeklendirilebilir bir sunucu altyapısı daha fiyat/performans olabilir. Laravel Vapor çıktığında onunla devam edilebilir.

Konum ile alakalı benzer işlemler yapacak bir proje için analiz aşamasındayız. Bizim projemizde Iot cihaz yerine mobil uygulama kullanılacak. Çünkü konum dışında harici çok fazla veriye ihtiyacımız yok. İnteraktif olması önemli; o yüzden sim kartlı tabletler ile konum bilgilerini alarak kullanmayı planlıyoruz. Konu araçlarla alakalı ama bizimkide araç takip sistemi değil. 🙂 Projenizde başarılar dilerim.

Evrend,

Paylastiginiz bilgiler icin tesekkur ederim. yorumlariniza cevap olarak,

  1. Cihaz sadece veri gonderecek. Su an icin realtime veri gondermeye gereksinim yok fakat basit bir "mesajlasma" ile cihaza veri de komut ta verebiliyoruz.

  2. Google gcloud iot sistemlerini cok inceledim ve sonrasinda kullanmaktan vazgectim. benim herzaman icin bir kullanici uygulamasina ihtiyacim olacak o yuzden hazir iot sistemini kullanmak cok bir fayda saglamadi. tek yapmam gereken uygulamaya, sizinde bahsettiginiz gibi iot-api.domain.com olusturmak ve gelen veriyi isleyip database'e aktarmak.

  3. Laracast videolari ilgimi cekti ve Laravel'i ogrenmeye basladim. o yuzden Laravel diyorum 🙂 yoksa teknik acidan dediginiz gibi daha uygun cozumler vardir. Vapor konusunu takip ediyorum fakat bana biraz pahali geldi. sonucta server masrafindan kurtulmak icin gelistirilen bir teknoloji ve AWS masrafina extra masraf katiyor. Son birkacgundur NodeJs benim uygulama icin sanki daha uygun gibi geliyor ama henuz degistirme karari vermedim.

  4. Su anda calisan bir demo sistemim mevcut. ilgilenirseniz, sistemi tanitabilir bilgi paylasimi yapabiliriz.

    Maxiimuss,

    Bu sizin calistiginiz firmami, yoksa tasarladiginiz sistem mi?

    ilginc, benim calistigim sektore benziyor, yan masada oturan kisi degilsiniz degil mi 🙂

    mesajinizi bekliyorum.

    ethem
    Bilgi paylaşımı için buradayız, memnun olurum. 🙂
    Bu arada proje Laravel ile çok rahat hazırlanır; eğer serverless konusunu öyle veya böyle çözerseniz projenizde Laravel ile hızlıca çözemeyeceğiniz bir şey yok onuda belirtmiş olayım tekrardan. 👍

      evrend Evren Bey, degerli gorusleriniz icin tesekkur ederim.

      Yasasin bilgi paylasimi 🙂

      3 ay sonra

      Bu arada proje Laravel ile çok rahat hazırlanır; eğer serverless konusunu öyle veya böyle çözerseniz projenizde Laravel .