Produk yang terhubung mungkin kelihatan siap jauh sebelum kejuruteraan di sekelilingnya selesai. Prototaip stabil, data sampai ke awan, aplikasi menunjukkan nilai yang betul dan kumpulan pertama peranti sudah berada di tangan pengguna. Pada ketika itu, bahagian belakang mungkin masih cukup mudah sehingga pasukan mengetahui hampir setiap peranti secara individu. Peruntukan boleh dikendalikan dengan skrip, perubahan konfigurasi boleh dibuat secara manual dan jika sesuatu gagal, jurutera biasanya boleh mengesan masalah secara langsung.

Kemudian ia perlu mula hidup di dunia nyata. Semakan perkakasan kedua muncul. Sesetengah pelanggan masih menggunakan semakan pertama. Versi firmware mula berbeza. Konfigurasi baharu diperlukan untuk pelanggan atau pasaran yang berbeza, manakala peranti lama masih memerlukan kemas kini dan sokongan.

Tiada apa yang semestinya rosak. Perisian di sebalik peranti ini telah memperoleh kitaran hayatnya sendiri.

Peralihan itu mudah terlepas pandang kerana prototaip boleh terus berfungsi dengan sempurna. Tetapi sebaik sahaja berbilang versi produk fizikal yang sama perlu wujud bersama di lapangan, bahagian belakang bukan lagi sekadar infrastruktur di sebalik perkakasan. Ia menjadi sebahagian daripada seni bina produk itu sendiri.

Prototaip terhubung yang berfungsi belum lagi merupakan produk yang boleh diskalakan

Prototaip mempunyai tugas penting: membuktikan bahawa sistem berfungsi dari hujung ke hujung. Peranti menjalankan fungsi terasnya, perisian tegar berkomunikasi dengan bahagian belakang, telemetri tiba di tempat yang sepatutnya, arahan membuat perjalanan pulang dan antara muka mudah alih atau web mendedahkan fungsi tersebut kepada pengguna.

Apa yang biasanya tidak dibuktikan ialah betapa baiknya sistem yang sama mengendalikan kepelbagaian.

Dua puluh peranti pertama mungkin menjalankan firmware yang sama, dibina mengikut semakan perkakasan yang sama dan dikonfigurasikan oleh jurutera yang sama. Pada peringkat itu, pendaftaran manual, perubahan konfigurasi langsung atau skrip onboarding yang kecil boleh menjadi sangat masuk akal. Membina perkakasan gred pengeluaran sebelum produk terbukti berkesan mungkin terlalu awal.

Skala mengubah masalah. Peranti kekal di luar talian, diganti, menjalankan firmware yang berbeza dan memerlukan konfigurasi pelanggan yang berbeza. Sokongan perlu membezakan unit yang tidak pernah diperuntukkan dengan betul daripada unit yang salah konfigurasi atau tidak dapat dicapai.

Hutang prototaip selalunya bermula seperti ini: bukan dengan keputusan yang buruk, tetapi dengan keputusan sementara yang kekal di tempatnya selepas produk dipindahkan. Dan salah satu perkara pertama yang memaksa peralihan itu dilihat ialah perkakasan itu sendiri. Semakan baharu bukan sahaja menggantikan yang lama; ia perlu wujud bersamanya.

Setiap semakan perkakasan mewujudkan masalah kitaran hayat perisian

Semakan perkakasan baharu jarang sekali tiba sebagai pengganti yang bersih untuk yang lama. Dalam praktiknya, kedua-dua versi kekal di lapangan, kadangkala selama bertahun-tahun. Tambahkan kelompok peralihan, beberapa cabang perisian tegar dan konfigurasi khusus pelanggan, dan armada dengan cepat menjadi lebih pelbagai daripada yang dicadangkan oleh model produk asal.

Lapisan perisian tidak lagi boleh melayan setiap unit sebagai "peranti" abstrak. Ia perlu tahu apa yang unit tertentu itu mampu lakukan.

Papan yang disemak semula mungkin menggunakan sensor, modul komunikasi atau pengawal yang berbeza. Arahan yang sah untuk versi terkini mungkin tidak disokong oleh yang lebih awal. Nilai penentukuran boleh berubah. Had konfigurasi boleh berubah. Pakej firmware yang sesuai untuk satu generasi mungkin tidak selamat untuk generasi yang lain.

Jurutera produk fizikal sudah pun bekerja dengan cara ini. Dua komponen yang kelihatan hampir sama tidak boleh ditukar ganti jika semakan, toleransi atau spesifikasinya berbeza. Produk yang disambungkan menimbulkan masalah yang sama di bahagian perisian: platform memerlukan cara yang boleh dipercayai untuk memahami versi produk fizikal yang digunakan dan peraturan yang terpakai padanya.

Pertimbangkan produk yang semakan pertamanya menggunakan satu prosedur penentukuran manakala semakan kedua memperkenalkan sensor baharu dan set parameter yang berbeza. Bagi pelanggan, kedua-dua unit mungkin masih merupakan produk yang sama. Bagi platform, ia tidak boleh sama.

Jika perbezaan tersebut tidak diwakili secara eksplisit, ia cenderung bocor ke dalam logik aplikasi sebagai kes khas. Satu aliran kerja menyemak julat nombor siri. Satu lagi menggunakan versi perisian tegar sebagai proksi untuk penjanaan perkakasan. Satu lagi mengandungi pengecualian yang ditambah selepas sokongan menemui kumpulan lama yang bertindak berbeza di lapangan. Tiada satu pun daripada pembetulan ini kelihatan berbahaya dengan sendirinya, tetapi bersama-sama ia menjadikan setiap perubahan masa hadapan lebih sukar untuk dipertimbangkan.

Perkakasan lama jarang sekali hilang mengikut jadual. Pasukan produk secara semula jadinya memberi tumpuan kepada semakan terkini, manakala pelanggan sering menyimpan versi terdahulu lebih lama daripada yang dijangkakan. Oleh itu, platform ini perlu menyokong beberapa generasi sekaligus dan bukannya menganggap pangkalan yang dipasang akan tertumpu pada satu keadaan semasa.

Sebaik sahaja itu berlaku, evolusi perkakasan dan pengurusan kitaran hayat perisian menjadi tidak dapat dipisahkan. Platform ini bukan sahaja perlu mengetahui di mana peranti berada dan sama ada ia berada dalam talian, tetapi juga apa peranti itu, apa yang boleh dijalankan, bagaimana ia harus dikonfigurasikan dan perubahan mana yang selamat untuk digunakan.

Dan sebelum mana-mana soalan tersebut dapat dijawab dengan andal, setiap peranti perlu memasuki sistem dengan cara yang konsisten.

Peruntukan adalah tempat kejuruteraan manual berhenti berskala

Peruntukan kelihatan mudah apabila armada kecil: cipta rekod peranti, masukkan nombor siri, jana kelayakan, tetapkan unit kepada pelanggan, gunakan konfigurasi dan teruskan. Bagi beberapa dozen peranti, pengendalian sebahagian daripadanya secara manual mungkin masih merupakan pilihan yang tepat.

Walau bagaimanapun, pada skala pengeluaran, peruntukan terletak di persimpangan identiti peranti, kelayakan, pemilikan, konfigurasi dan keadaan kitaran hayat. Kesilapan yang dibuat semasa onboarding boleh menjejaskan cara unit dikendalikan dan disokong lama selepas ia meninggalkan kilang.

Hamparan mungkin tidak lagi sepadan dengan apa yang sebenarnya dipasang. Peranti gantian memerlukan perkaitan pelanggan yang betul tanpa mewarisi identiti yang salah. Tetapan semula kilang mewujudkan laluan lain melalui proses tersebut. Pemasang boleh menetapkan unit kepada akaun yang salah, meninggalkan sokongan untuk menentukan sama ada ia berada di luar talian, diperuntukkan dengan salah atau hanya menjalankan konfigurasi yang salah.

Sebaik sahaja menjawab soalan-soalan tersebut secara rutin memerlukan pembangun untuk memeriksa pangkalan data atau menjalankan skrip dalaman, proses tersebut telah berhenti berskala dengan produk.

Penduaan merupakan satu lagi tanda amaran. Setiap varian produk mula memperoleh skrip onboarding, alat konfigurasi atau aliran kerja pemasangnya sendiri. Perbezaan tersebut mungkin kelihatan kecil, tetapi tanggungjawab asasnya adalah sama. Peruntukan telah menjadi infrastruktur platform yang boleh diguna semula dan bukannya tugas persediaan yang dilampirkan pada peranti tertentu.

Dan ia jarang sekali satu-satunya keupayaan yang perlu diguna semula.

Lapisan platform harus menjadi infrastruktur yang boleh diguna semula

Sebaik sahaja beberapa produk atau semakan perkakasan berkongsi keperluan asas yang sama, sesetengah keupayaan perisian tidak lagi khusus untuk produk. Identiti peranti, peruntukan, ketersambungan, telemetri, penghantaran perisian tegar, keadaan kitaran hayat, keterlihatan armada dan diagnostik adalah contoh yang baik. Membina semula peranti untuk setiap varian baharu mewujudkan lebih banyak kod dan lebih banyak laluan operasi untuk diselenggara tanpa menjadikan produk itu sendiri lebih tersendiri.

Pasukan jarang sekali berhasrat untuk mencipta pertindihan ini. Perbezaan kecil akan terkumpul di sekitar setiap produk sehingga pasukan tersebut mengekalkan beberapa pelaksanaan bagi apa yang telah menjadi tanggungjawab kejuruteraan yang sama.

Sempadan yang lebih bersih adalah dengan memisahkan lapisan produk daripada lapisan platform. Lapisan produk mengandungi tingkah laku, aliran kerja, antara muka, integrasi dan logik domain yang menjadikan peranti tertentu berharga. Lapisan platform mengendalikan mekanik yang sepatutnya kekal konsisten walaupun perkakasan berubah.

Apabila produk yang terhubung bergerak melangkaui keluaran pertama mereka, peruntukan peranti, pengurusan kitaran hayat peranti, pengurusan armada dan perkakasan sokongan menjadi infrastruktur kongsi dan bukannya butiran projek sekali sahaja. PaaS IoT untuk perusahaan boleh menyediakan lapisan platform boleh guna semula merentasi berbilang produk atau varian produk, mengendalikan pengurusan peranti dan data standard melalui blok binaan boleh guna semula sementara pasukan kejuruteraan mengekalkan usaha tersuai mereka tertumpu pada perkakasan, aliran kerja dan pengalaman pengguna.

Asas yang sama masih perlu memberi ruang untuk perbezaan produk sebenar. Peranti baharu mungkin memerlukan model data, aliran konfigurasi, integrasi atau logik kawalan yang berbeza, dan perbezaan tersebut sepatutnya mudah diperkenalkan. Matlamatnya hanyalah untuk mengelakkan setiap perbezaan daripada berlarutan di sepanjang pendaftaran peranti, saluran paip telemetri, mekanisme peruntukan atau set alat pengurusan armada yang lain.

Platform mungkin kelihatan seperti overhead semasa pasukan membina produk pertama dan seperti aset menjelang produk kedua atau ketiga. Sebaik sahaja mekanik operasi biasa disediakan, varian baharu boleh mewarisi asas kerja dan bukannya tiba dengan backend lain yang perlu diselenggara oleh pasukan sepanjang hayat produk tersebut.

Kekalkan kejuruteraan tersuai di tempat produk sebenarnya berbeza

Platform yang boleh diguna semula tidak sepatutnya menjadikan produk yang berkaitan lebih generik. Tugasnya adalah untuk menghapuskan kejuruteraan berulang daripada bahagian yang tidak mewujudkan pembezaan.

Usaha tersuai masih tergolong dalam tingkah laku peranti, logik khusus domain, aliran kerja, pengalaman pengguna, integrasi khusus dan cara produk tertentu berinteraksi dengan dunia fizikal. Itulah sebenarnya bidang di mana pilihan kejuruteraan boleh menjadikan satu produk lebih bermakna daripada yang lain.

Apa yang jarang sekali mendapat layanan yang sama ialah sistem paip operasi di sekelilingnya. Versi asas dan versi perindustrian bagi mesin yang sama mungkin memerlukan sensor, kawalan dan antara muka yang berbeza, tetapi ia tidak sepatutnya memerlukan cara berasingan untuk mengenal pasti peranti, menjejaki versi perisian tegar atau mengurus armada.

Saya lebih suka melihat jurutera meluangkan masa itu untuk memperhalusi cara produk berfungsi di lapangan daripada membina semula mekanik yang telah disediakan oleh pasukan untuk produk lain. Asas yang dikongsi tidak mengurangkan skop untuk kejuruteraan tersuai; ia melindungi usaha itu daripada terjejas oleh infrastruktur.

Ujian sebenar datang apabila pasukan memulakan produk nombor dua.

Platform yang baik menjadikan produk seterusnya lebih mudah daripada yang pertama

Jika produk nombor dua memerlukan kerja platform yang hampir sama seperti produk nombor satu, sangat sedikit yang sebenarnya telah digunakan semula.

Varian baharu sepatutnya dapat mewarisi bahagian model operasi yang tidak berubah: aliran peruntukan, identiti, mekanik kitaran hayat, alatan armada, proses perisian tegar, keterlihatan sokongan dan integrasi biasa. Usaha kejuruteraan kemudiannya melibatkan perbezaan — mungkin pakej sensor baharu, aliran kerja kawalan lain atau integrasi khusus pelanggan — dan bukannya membina semula asas.

Generasi perkakasan baharu meletakkan idea yang sama di bawah tekanan yang lebih besar. Keupayaannya mungkin berubah dengan ketara sementara unit lama kekal aktif di lapangan. Platform yang matang boleh menyokong kedua-duanya tanpa memaksa pasukan untuk mengekalkan dua susunan platform berasingan untuk apa yang pelanggan masih anggap sebagai satu keluarga produk.

Tiada satu pun daripada ini memerlukan satu bahagian belakang monolitik. Produk yang berbeza mungkin masih memerlukan sempadan seni bina yang jelas. Apa yang penting ialah mengelakkan pelaksanaan kedua tanggungjawab kejuruteraan yang sama tanpa sebab yang kukuh.

Ketika itulah platform menjadi aset dan bukannya overhed terkumpul. Sokongan mempunyai lebih sedikit alat selari untuk difahami, keluaran mengikuti laluan yang lebih konsisten, dan penambahan produk lain menjadi sambungan terkawal dan bukannya backend lain yang diwarisi syarikat selama-lamanya.

Anggap platform sebagai sebahagian daripada seni bina produk

Produk fizikal direka bentuk dengan mengambil kira semakan, kebolehkhidmatan, kebolehkilangan dan perubahan masa hadapan. Produk yang berkaitan memerlukan disiplin yang sama dari segi perisian.

Bahagian belakang pertama boleh bersifat sementara. Begitu juga skrip peruntukan atau alat sokongan pertama. Tiada apa yang salah dengan itu. Masalah bermula apabila mekanik sementara itu secara senyap-senyap menjadi seni bina kekal sementara produk itu sendiri terus berkembang.

Menjelang masa itu, produk yang disambungkan bukan lagi sekadar perkakasan, perisian tegar dan aplikasi. Ia juga bergantung pada infrastruktur yang mengenal pasti setiap peranti, memahami keupayaannya, menggunakan konfigurasi yang betul, menyokong kemas kini dan membantu pasukan mendiagnosis masalah bertahun-tahun selepas penghantaran.

Sebaik sahaja lapisan itu dianggap sebagai seni bina produk, pembahagiannya menjadi lebih jelas: mekanik standard kekal boleh diguna semula, manakala kerja tersuai akan menentukan apa yang sebenarnya membezakan satu produk atau keluarga produk daripada yang lain.

Platform terkuat bukan sekadar platform yang membolehkan produk pertama yang disambungkan. Ia juga platform yang membolehkan pasukan kejuruteraan membina platform kedua, ketiga dan keempat tanpa mewarisi backend baharu setiap kali.

Pengarang