Ένα συνδεδεμένο προϊόν μπορεί να φαίνεται ολοκληρωμένο πολύ πριν ολοκληρωθεί η μηχανική γύρω από αυτό. Το πρωτότυπο είναι σταθερό, τα δεδομένα φτάνουν στο cloud, η εφαρμογή εμφανίζει τις σωστές τιμές και η πρώτη παρτίδα συσκευών βρίσκεται ήδη στα χέρια των χρηστών. Σε αυτό το σημείο, το backend μπορεί να είναι ακόμα αρκετά απλό ώστε η ομάδα να γνωρίζει σχεδόν κάθε συσκευή ξεχωριστά. Η παροχή μπορεί να αντιμετωπιστεί με ένα σενάριο, οι αλλαγές διαμόρφωσης μπορούν να γίνουν χειροκίνητα και, εάν κάτι αποτύχει, ένας μηχανικός μπορεί συνήθως να εντοπίσει το πρόβλημα απευθείας.
Στη συνέχεια, πρέπει να αρχίσει να ζει στον πραγματικό κόσμο. Εμφανίζεται μια δεύτερη αναθεώρηση υλικού. Ορισμένοι πελάτες εξακολουθούν να χρησιμοποιούν την πρώτη αναθεώρηση. Οι εκδόσεις υλικολογισμικού αρχίζουν να αποκλίνουν. Απαιτείται μια νέα διαμόρφωση για έναν διαφορετικό πελάτη ή αγορά, ενώ οι παλαιότερες συσκευές εξακολουθούν να χρειάζονται ενημερώσεις και υποστήριξη.
Τίποτα δεν είναι απαραίτητα χαλασμένο. Το λογισμικό πίσω από τη συσκευή έχει απλώς αποκτήσει έναν δικό του κύκλο ζωής.
Αυτή η μετάβαση είναι εύκολο να παραβλεφθεί, επειδή το πρωτότυπο μπορεί να συνεχίσει να λειτουργεί άψογα. Αλλά όταν πολλές εκδόσεις του ίδιου φυσικού προϊόντος πρέπει να συνυπάρχουν στο πεδίο, το backend δεν είναι πλέον απλώς υποδομή πίσω από το υλικό. Γίνεται μέρος της ίδιας της αρχιτεκτονικής του προϊόντος.
Ένα λειτουργικό συνδεδεμένο πρωτότυπο δεν είναι ακόμη ένα επεκτάσιμο προϊόν
Ένα πρωτότυπο έχει μια σημαντική δουλειά: να αποδείξει ότι το σύστημα λειτουργεί από άκρο σε άκρο. Η συσκευή εκτελεί την βασική της λειτουργία, το firmware επικοινωνεί με το backend, η τηλεμετρία φτάνει εκεί που πρέπει, οι εντολές κάνουν το ταξίδι επιστροφής και μια διεπαφή για κινητά ή ιστού εκθέτει τη λειτουργικότητα σε έναν χρήστη.
Αυτό που συνήθως δεν έχει αποδειχθεί είναι το πόσο καλά χειρίζεται το ίδιο σύστημα την ποικιλία.
Οι πρώτες είκοσι συσκευές ενδέχεται να εκτελούν όλες το ίδιο υλικολογισμικό, να έχουν κατασκευαστεί με την ίδια αναθεώρηση υλικού και να έχουν διαμορφωθεί από τους ίδιους μηχανικούς. Σε αυτό το στάδιο, η χειροκίνητη εγγραφή, οι άμεσες αλλαγές διαμόρφωσης ή ένα μικρό σενάριο ενσωμάτωσης μπορεί να είναι απολύτως λογικό. Η δημιουργία εργαλείων παραγωγικού επιπέδου πριν το προϊόν αποδειχθεί αξιόπιστο μπορεί να είναι πρόωρη.
Η κλιμάκωση αλλάζει το πρόβλημα. Οι συσκευές παραμένουν εκτός σύνδεσης, αντικαθίστανται, εκτελούν διαφορετικό υλικολογισμικό και απαιτούν διαφορετικές διαμορφώσεις πελατών. Η υποστήριξη πρέπει να διακρίνει μια μονάδα που δεν έχει ποτέ παρασχεθεί σωστά από μια μονάδα που έχει εσφαλμένα διαμορφωθεί ή απλώς δεν είναι προσβάσιμη.
Το χρέος των πρωτοτύπων συχνά ξεκινά με αυτόν τον τρόπο: όχι με μια κακή απόφαση, αλλά με μια προσωρινή που παραμένει σε ισχύ μετά την εξέλιξη του προϊόντος. Και ένα από τα πρώτα πράγματα που επιβάλλουν αυτή τη μετάβαση είναι το ίδιο το υλικό. Μια νέα αναθεώρηση δεν αντικαθιστά απλώς την παλιά. Πρέπει να συνυπάρχει με αυτήν.
Κάθε αναθεώρηση υλικού δημιουργεί ένα πρόβλημα κύκλου ζωής λογισμικού
Μια νέα αναθεώρηση υλικού σπάνια έρχεται ως καθαρή αντικατάσταση της παλιάς. Στην πράξη, και οι δύο εκδόσεις παραμένουν διαθέσιμες, μερικές φορές για χρόνια. Προσθέστε μια παρτίδα μετάβασης, μερικούς κλάδους υλικολογισμικού και διαμορφώσεις ειδικές για τον πελάτη, και ο στόλος γίνεται γρήγορα πιο ποικιλόμορφος από ό,τι υποδηλώνει το αρχικό μοντέλο προϊόντος.
Το επίπεδο λογισμικού δεν μπορεί πλέον να αντιμετωπίζει κάθε μονάδα ως μια αφηρημένη «συσκευή». Πρέπει να γνωρίζει τι είναι ικανή να κάνει αυτή η συγκεκριμένη μονάδα.
Μια αναθεωρημένη πλακέτα μπορεί να χρησιμοποιεί διαφορετικό αισθητήρα, μονάδα επικοινωνίας ή ελεγκτή. Μια εντολή που ισχύει για την πιο πρόσφατη έκδοση ενδέχεται να μην υποστηρίζεται από μια παλαιότερη. Οι τιμές βαθμονόμησης ενδέχεται να αλλάξουν. Τα όρια διαμόρφωσης ενδέχεται να μετατοπιστούν. Ένα πακέτο υλικολογισμικού κατάλληλο για μια γενιά ενδέχεται να μην είναι ασφαλές για μια άλλη.
Οι μηχανικοί φυσικών προϊόντων εργάζονται ήδη με αυτόν τον τρόπο. Δύο στοιχεία που μοιάζουν σχεδόν πανομοιότυπα δεν είναι εναλλάξιμα εάν οι αναθεωρήσεις, οι ανοχές ή οι προδιαγραφές τους διαφέρουν. Τα συνδεδεμένα προϊόντα δημιουργούν το ίδιο πρόβλημα από την πλευρά του λογισμικού: η πλατφόρμα χρειάζεται έναν αξιόπιστο τρόπο για να κατανοήσει σε ποια έκδοση του φυσικού προϊόντος αναφέρεται και ποιοι κανόνες ισχύουν για αυτήν.
Θεωρήστε ένα προϊόν του οποίου η πρώτη αναθεώρηση χρησιμοποιεί μία διαδικασία βαθμονόμησης, ενώ η δεύτερη εισάγει έναν νέο αισθητήρα και ένα διαφορετικό σύνολο παραμέτρων. Για τον πελάτη, και οι δύο μονάδες μπορεί να εξακολουθούν να είναι το ίδιο προϊόν. Για την πλατφόρμα, δεν μπορούν να είναι.
Εάν αυτές οι διαφορές δεν αναπαρίστανται ρητά, τείνουν να διαρρέουν στη λογική της εφαρμογής ως ειδικές περιπτώσεις. Μία ροή εργασίας ελέγχει ένα εύρος σειριακών αριθμών. Μια άλλη χρησιμοποιεί μια έκδοση υλικολογισμικού ως μεσολάβηση για τη δημιουργία υλικού. Μια τρίτη περιέχει μια εξαίρεση που προστέθηκε αφού η υποστήριξη ανακάλυψε ότι μια παλαιότερη παρτίδα συμπεριφερόταν διαφορετικά στο πεδίο. Καμία από αυτές τις διορθώσεις δεν φαίνεται ιδιαίτερα επικίνδυνη από μόνη της, αλλά μαζί καθιστούν κάθε μελλοντική αλλαγή πιο δύσκολο να ληφθεί υπόψη.
Το παλαιότερο υλικό σπάνια εξαφανίζεται σύμφωνα με το χρονοδιάγραμμα. Οι ομάδες προϊόντων επικεντρώνονται φυσικά στην νεότερη έκδοση, ενώ οι πελάτες συχνά διατηρούν τις παλαιότερες εκδόσεις για πολύ περισσότερο από το αναμενόμενο. Επομένως, η πλατφόρμα πρέπει να υποστηρίζει πολλές γενιές ταυτόχρονα αντί να υποθέτει ότι η εγκατεστημένη βάση θα συγκλίνει ποτέ σε μία μόνο τρέχουσα κατάσταση.
Μόλις συμβεί αυτό, η εξέλιξη του υλικού και η διαχείριση του κύκλου ζωής του λογισμικού γίνονται άρρηκτα συνδεδεμένες. Η πλατφόρμα πρέπει να γνωρίζει όχι μόνο πού βρίσκεται μια συσκευή και αν είναι συνδεδεμένη, αλλά και τι είναι, τι μπορεί να λειτουργήσει, πώς πρέπει να ρυθμιστεί και ποιες αλλαγές είναι ασφαλείς για εφαρμογή.
Και προτού απαντηθεί αξιόπιστα οποιοδήποτε από αυτά τα ερωτήματα, κάθε συσκευή πρέπει να εισέλθει στο σύστημα με συνεπή τρόπο.
Η παροχή είναι το σημείο όπου η χειροκίνητη μηχανική σταματά την κλιμάκωση
Η παροχή φαίνεται απλή όταν ο στόλος είναι μικρός: δημιουργήστε μια εγγραφή συσκευής, εισαγάγετε έναν σειριακό αριθμό, δημιουργήστε διαπιστευτήρια, αντιστοιχίστε τη μονάδα σε έναν πελάτη, εφαρμόστε μια διαμόρφωση και προχωρήστε. Για μερικές δεκάδες συσκευές, ο χειρισμός ορισμένων από αυτά χειροκίνητα μπορεί να εξακολουθεί να είναι η σωστή επιλογή.
Σε κλίμακα παραγωγής, ωστόσο, η παροχή βρίσκεται στο σημείο τομής της ταυτότητας της συσκευής, των διαπιστευτηρίων, της ιδιοκτησίας, της διαμόρφωσης και της κατάστασης του κύκλου ζωής. Ένα λάθος που γίνεται κατά την ενσωμάτωση μπορεί να επηρεάσει τον τρόπο λειτουργίας και υποστήριξης της μονάδας πολύ μετά την έξοδό της από το εργοστάσιο.
Ένα υπολογιστικό φύλλο ενδέχεται να μην ταιριάζει πλέον με αυτό που είναι πραγματικά εγκατεστημένο. Μια συσκευή αντικατάστασης χρειάζεται τη σωστή συσχέτιση πελάτη χωρίς να κληρονομήσει λάθος ταυτότητα. Οι επαναφορές εργοστασιακών ρυθμίσεων δημιουργούν μια άλλη διαδρομή στη διαδικασία. Ένας εγκαταστάτης μπορεί να αντιστοιχίσει μια μονάδα σε λάθος λογαριασμό, αφήνοντας την υποστήριξη να καθορίσει εάν είναι εκτός σύνδεσης, έχει προβλεφθεί εσφαλμένα ή απλώς φέρει λάθος διαμόρφωση.
Μόλις η απάντηση σε αυτά τα ερωτήματα απαιτεί συστηματικά από έναν προγραμματιστή να επιθεωρήσει μια βάση δεδομένων ή να εκτελέσει ένα εσωτερικό σενάριο, η διαδικασία έχει σταματήσει να κλιμακώνεται με το προϊόν.
Η διπλοτυπία είναι ένα άλλο προειδοποιητικό σημάδι. Κάθε παραλλαγή προϊόντος αρχίζει να αποκτά το δικό της σενάριο ενσωμάτωσης, εργαλείο διαμόρφωσης ή ροή εργασίας εγκατάστασης. Αυτές οι διαφορές μπορεί να φαίνονται μικρές, αλλά η υποκείμενη ευθύνη είναι η ίδια. Η παροχή έχει γίνει επαναχρησιμοποιήσιμη υποδομή πλατφόρμας και όχι μια εργασία εγκατάστασης που συνδέεται με μια συγκεκριμένη συσκευή.
Και σπάνια είναι η μόνη δυνατότητα που χρειάζεται να επαναχρησιμοποιηθεί.
Το επίπεδο πλατφόρμας θα πρέπει να γίνει επαναχρησιμοποιήσιμη υποδομή
Μόλις πολλά προϊόντα ή αναθεωρήσεις υλικού μοιράζονται τις ίδιες βασικές ανάγκες, ορισμένες δυνατότητες λογισμικού παύουν να είναι ειδικές για το προϊόν. Η ταυτότητα συσκευής, η παροχή, η συνδεσιμότητα, η τηλεμετρία, η παράδοση υλικολογισμικού, η κατάσταση του κύκλου ζωής, η ορατότητα του στόλου και τα διαγνωστικά είναι καλά παραδείγματα. Η ανακατασκευή τους για κάθε νέα παραλλαγή δημιουργεί περισσότερο κώδικα και περισσότερες λειτουργικές διαδρομές προς συντήρηση χωρίς να καθιστά το ίδιο το προϊόν πιο ξεχωριστό.
Οι ομάδες σπάνια επιδιώκουν να δημιουργήσουν αυτήν την επανάληψη. Μικρές διαφορές συσσωρεύονται γύρω από κάθε προϊόν μέχρι η ομάδα να διατηρεί αρκετές υλοποιήσεις αυτού που έχει γίνει η ίδια μηχανική ευθύνη.
Ένα πιο καθαρό όριο είναι ο διαχωρισμός του επιπέδου προϊόντος από το επίπεδο πλατφόρμας. Το επίπεδο προϊόντος περιέχει τη συμπεριφορά, τις ροές εργασίας, τις διεπαφές, τις ενσωματώσεις και τη λογική τομέα που καθιστούν μια συγκεκριμένη συσκευή πολύτιμη. Το επίπεδο πλατφόρμας χειρίζεται μηχανισμούς που θα πρέπει να παραμένουν συνεπείς ακόμη και όταν αλλάζει το υλικό.
Καθώς τα συνδεδεμένα προϊόντα προχωρούν πέρα από την πρώτη τους κυκλοφορία, η παροχή συσκευών, η διαχείριση του κύκλου ζωής των συσκευών, η διαχείριση του στόλου και τα εργαλεία υποστήριξης γίνονται κοινόχρηστη υποδομή και όχι μεμονωμένες λεπτομέρειες έργου. Ένα IoT PaaS για επιχειρήσεις μπορεί να παρέχει αυτό το επαναχρησιμοποιήσιμο επίπεδο πλατφόρμας σε πολλά προϊόντα ή παραλλαγές προϊόντων, χειριζόμενο τυπική διαχείριση συσκευών και δεδομένων μέσω επαναχρησιμοποιήσιμων δομικών στοιχείων, ενώ οι ομάδες μηχανικών διατηρούν την προσαρμοσμένη προσπάθειά τους επικεντρωμένη στο υλικό, τις ροές εργασίας και την εμπειρία χρήστη.
Μια κοινή βάση πρέπει να αφήνει χώρο για πραγματικές διαφορές προϊόντων. Μια νέα συσκευή μπορεί να χρειάζεται διαφορετικό μοντέλο δεδομένων, ροή διαμόρφωσης, ενσωμάτωση ή λογική ελέγχου και αυτές οι διαφορές θα πρέπει να παραμείνουν εύκολο να εισαχθούν. Ο στόχος είναι απλώς να αποφευχθεί η μεταφορά κάθε διαφοράς σε ένα άλλο μητρώο συσκευών, αγωγό τηλεμετρίας, μηχανισμό παροχής ή σύνολο εργαλείων διαχείρισης στόλου.
Η πλατφόρμα μπορεί να μοιάζει με επιβάρυνση όσο η ομάδα κατασκευάζει το πρώτο προϊόν και με πλεονέκτημα μέχρι το δεύτερο ή το τρίτο. Μόλις τεθούν σε εφαρμογή οι κοινοί λειτουργικοί μηχανισμοί, μια νέα παραλλαγή μπορεί να κληρονομήσει μια λειτουργική βάση αντί να φτάσει με ένα άλλο backend που η ομάδα θα πρέπει να συντηρεί για το υπόλοιπο της ζωής του προϊόντος.
Διατηρήστε την προσαρμοσμένη μηχανική όπου το προϊόν είναι στην πραγματικότητα διαφορετικό
Μια επαναχρησιμοποιήσιμη πλατφόρμα δεν θα πρέπει να καθιστά τα συνδεδεμένα προϊόντα πιο γενικά. Η δουλειά της είναι να αφαιρεί την επαναλαμβανόμενη μηχανική από τα μέρη που δεν δημιουργούν διαφοροποίηση.
Η προσαρμοσμένη προσπάθεια εξακολουθεί να αφορά τη συμπεριφορά της συσκευής, τη λογική που αφορά συγκεκριμένα τον τομέα, τις ροές εργασίας, την εμπειρία χρήστη, τις εξειδικευμένες ενσωματώσεις και τον τρόπο με τον οποίο ένα συγκεκριμένο προϊόν αλληλεπιδρά με τον φυσικό κόσμο. Αυτοί είναι ακριβώς οι τομείς όπου οι επιλογές μηχανικής μπορούν να κάνουν ένα προϊόν σημαντικά καλύτερο από ένα άλλο.
Αυτό που σπάνια αξίζει την ίδια μεταχείριση είναι οι λειτουργικές υδραυλικές εγκαταστάσεις που το περιβάλλουν. Μια βασική έκδοση και μια βιομηχανική έκδοση του ίδιου μηχανήματος μπορεί να χρειάζονται διαφορετικούς αισθητήρες, χειριστήρια και διεπαφές, αλλά δεν θα πρέπει να απαιτούν ξεχωριστούς τρόπους για την αναγνώριση συσκευών, την παρακολούθηση εκδόσεων υλικολογισμικού ή τη διαχείριση ενός στόλου.
Θα προτιμούσα να δω τους μηχανικούς να αφιερώνουν αυτόν τον χρόνο βελτιώνοντας τον τρόπο με τον οποίο συμπεριφέρεται το προϊόν στο πεδίο, παρά να ανακατασκευάζουν τους μηχανισμούς που η ομάδα έχει ήδη θεσπίσει για ένα άλλο προϊόν. Μια κοινή βάση δεν μειώνει τις δυνατότητες για προσαρμοσμένη μηχανική, αλλά προστατεύει αυτή την προσπάθεια από το να καταναλώνεται από υποδομές.
Η πραγματική δοκιμασία έρχεται όταν η ομάδα ξεκινά το προϊόν νούμερο δύο.
Μια καλή πλατφόρμα κάνει το επόμενο προϊόν ευκολότερο από το πρώτο
Αν και το προϊόν νούμερο δύο απαιτεί σχεδόν την ίδια πλατφόρμα εργασίας με το προϊόν νούμερο ένα, πολύ λίγα έχουν επαναχρησιμοποιηθεί στην πραγματικότητα.
Μια νέα παραλλαγή θα πρέπει να είναι σε θέση να κληρονομήσει τα μέρη του λειτουργικού μοντέλου που δεν έχουν αλλάξει: ροές παροχής, ταυτότητα, μηχανισμούς κύκλου ζωής, εργαλεία στόλου, διαδικασίες υλικολογισμικού, ορατότητα υποστήριξης και κοινές ενσωματώσεις. Στη συνέχεια, η μηχανική προσπάθεια επικεντρώνεται στις διαφορές - ίσως ένα νέο πακέτο αισθητήρων, μια άλλη ροή εργασίας ελέγχου ή μια ενσωμάτωση ειδικά για τον πελάτη - αντί να ανακατασκευάζεται η βάση.
Μια νέα γενιά υλικού ασκεί μεγαλύτερη πίεση στην ίδια ιδέα. Οι δυνατότητές της ενδέχεται να αλλάξουν σημαντικά, ενώ οι παλαιότερες μονάδες παραμένουν ενεργές στον τομέα. Μια ώριμη πλατφόρμα μπορεί να υποστηρίξει και τα δύο χωρίς να αναγκάσει την ομάδα να διατηρήσει δύο ξεχωριστές στοίβες πλατφορμών για αυτό που οι πελάτες εξακολουθούν να αντιλαμβάνονται ως μία οικογένεια προϊόντων.
Τίποτα από αυτά δεν απαιτεί ένα μονολιθικό backend. Διαφορετικά προϊόντα ενδέχεται να χρειάζονται σαφή αρχιτεκτονικά όρια. Αυτό που έχει σημασία είναι η αποφυγή μιας δεύτερης υλοποίησης της ίδιας μηχανικής ευθύνης χωρίς σοβαρό λόγο.
Τότε είναι που η πλατφόρμα γίνεται ένα περιουσιακό στοιχείο και όχι συσσωρευμένο κόστος. Η υποστήριξη έχει λιγότερα παράλληλα εργαλεία προς κατανόηση, οι κυκλοφορίες ακολουθούν πιο συνεπείς διαδρομές και η προσθήκη ενός ακόμη προϊόντος γίνεται μια ελεγχόμενη επέκταση αντί για ένα άλλο backend που η εταιρεία κληρονομεί επ' αόριστον.
Αντιμετωπίστε την πλατφόρμα ως μέρος της αρχιτεκτονικής του προϊόντος
Τα φυσικά προϊόντα σχεδιάζονται με γνώμονα τις αναθεωρήσεις, τη δυνατότητα συντήρησης, την κατασκευασιμότητα και τις μελλοντικές αλλαγές. Τα συνδεδεμένα προϊόντα χρειάζονται την ίδια πειθαρχία από την πλευρά του λογισμικού.
Το πρώτο backend μπορεί να είναι προσωρινό. Το ίδιο μπορεί να κάνει και το πρώτο σενάριο παροχής ή το εργαλείο υποστήριξης. Δεν υπάρχει τίποτα εγγενώς κακό σε αυτό. Τα προβλήματα ξεκινούν όταν αυτοί οι προσωρινοί μηχανισμοί γίνονται αθόρυβα μόνιμη αρχιτεκτονική, ενώ το ίδιο το προϊόν συνεχίζει να εξελίσσεται.
Μέχρι τότε, το συνδεδεμένο προϊόν δεν θα είναι πλέον απλώς υλικό, υλικολογισμικό και μια εφαρμογή. Εξαρτάται επίσης από την υποδομή που αναγνωρίζει κάθε συσκευή, κατανοεί τις δυνατότητές της, εφαρμόζει τη σωστή διαμόρφωση, υποστηρίζει ενημερώσεις και βοηθά τις ομάδες να διαγνώσουν προβλήματα χρόνια μετά την αποστολή.
Μόλις αυτό το επίπεδο αντιμετωπιστεί ως αρχιτεκτονική προϊόντος, η διαίρεση γίνεται πιο ξεκάθαρη: οι τυπικοί μηχανισμοί παραμένουν επαναχρησιμοποιήσιμοι, ενώ η προσαρμοσμένη εργασία εστιάζει σε αυτό που πραγματικά διακρίνει ένα προϊόν ή μια οικογένεια προϊόντων από ένα άλλο.
Η ισχυρότερη πλατφόρμα δεν είναι απλώς αυτή που καθιστά δυνατή την δημιουργία του πρώτου συνδεδεμένου προϊόντος. Είναι αυτή που επιτρέπει στην ομάδα μηχανικών να κατασκευάσει το δεύτερο, το τρίτο και το τέταρτο χωρίς να κληρονομεί ένα νέο backend κάθε φορά.

