Τέλος υποστήριξης για το Vue 2: τι σας κοστίζει πραγματικά η αναμονή

Τέλος υποστήριξης Vue 2 — το κόστος της αναμονής

Μια εφαρμογή σε Vue 2 μπορεί να συνεχίσει να λειτουργεί μετά το τέλος υποστήριξης. Από τις 31 Δεκεμβρίου 2023, όμως, η upstream ομάδα δεν δημοσιεύει νέες λειτουργίες, ενημερώσεις ή διορθώσεις για την έκδοση της κοινότητας. Η ημερομηνία δεν προκαλεί από μόνη της βλάβη. Αλλάζει το ποιος αναλαμβάνει τη συντήρηση και πώς αξιολογείτε το ρίσκο.

Εξετάζω ξεχωριστά το framework, τις εξαρτήσεις του έργου και τις απαιτήσεις της επιχείρησης. Μόνο έτσι φαίνεται αν μπορείτε να μείνετε προσωρινά στη σημερινή έκδοση, αν χρειάζεστε εμπορική υποστήριξη ή αν πρέπει να οργανώσετε μετάβαση.

Τι σταμάτησε και τι παραμένει διαθέσιμο

Η 2.7.16 είναι η τελευταία επίσημη έκδοση της σειράς 2. Παραμένει διαθέσιμη και εκτελεί τον υπάρχοντα κώδικα, αλλά δεν λαμβάνει νέες λειτουργίες ή διορθώσεις από την upstream ομάδα.

Η εμπορική υποστήριξη είναι ξεχωριστή διαδρομή. Η HeroDevs προσφέρει extended support με ενημερώσεις και security patches. Άρα, το «δεν υπάρχουν upstream patches» δεν σημαίνει ότι δεν υπάρχει καμία επιλογή συντήρησης.

Οι υπόλοιπες εξαρτήσεις χρειάζονται δικό τους έλεγχο. Router, state management, βιβλιοθήκες components και build tools μπορεί να έχουν διαφορετικές εκδόσεις και πολιτικές συντήρησης. Το τέλος υποστήριξης του βασικού framework δεν αποδεικνύει από μόνο του ότι κάθε πακέτο είναι ευάλωτο ή ασύμβατο.

Τέλος υποστήριξης του Vue 2 από την upstream ομάδα στις 31 Δεκεμβρίου 2023
Η έκδοση της κοινότητας δεν λαμβάνει πλέον upstream security patches. Η εμπορική υποστήριξη διατίθεται χωριστά.

Τέσσερις έλεγχοι πριν πάρετε απόφαση

Η έκδοση και η πηγή των patches

Επιβεβαιώνω πρώτα ποια έκδοση τρέχει πραγματικά σε παραγωγή. Το vue@2.7.16 είναι η τελευταία επίσημη έκδοση της σειράς 2 και η αφετηρία για όσους εξετάζουν extended support ή μετάβαση.

Έπειτα ξεχωρίζω τις upstream διορθώσεις από τις εμπορικές. Ένα εύρημα στο npm audit χρειάζεται έλεγχο ως προς το επηρεαζόμενο πακέτο, την έκδοση και το αν η ευάλωτη διαδρομή χρησιμοποιείται στην εφαρμογή.

Οι εξαρτήσεις που κρατούν το έργο στην παλιά έκδοση

Καταγράφω router, state management, βιβλιοθήκες components, plugins, build tools και την έκδοση του Node. Για κάθε εξάρτηση εξετάζω αν υπάρχει συντηρούμενη έκδοση συμβατή με το σημερινό stack.

Το αποτέλεσμα δεν είναι ίδιο σε κάθε codebase. Μια εφαρμογή μπορεί να έχει λίγες άμεσες ασυμβατότητες, ενώ άλλη να εξαρτάται από plugin που χρησιμοποιεί εσωτερικά APIs της παλιάς σειράς.

Οι υποχρεώσεις του προϊόντος

Ελέγχετε αν συμβάσεις, SLA ή εσωτερικές πολιτικές απαιτούν λογισμικό με ενεργή υποστήριξη. Το τέλος upstream υποστήριξης μπορεί να χρειάζεται τεκμηριωμένη αποδοχή ρίσκου, εμπορική υποστήριξη ή συγκεκριμένο σχέδιο μετάβασης.

Η παρουσία μη συντηρούμενης έκδοσης δεν αποδεικνύει αυτόματα ότι μια εφαρμογή είναι ανασφαλής ή ότι θα αποτύχει σε έλεγχο. Το ρίσκο αξιολογείται μαζί με τις γνωστές ευπάθειες, την έκθεση της εφαρμογής και τα μέτρα που ήδη εφαρμόζετε. Στον ίδιο έλεγχο καταγράφω τυχόν απαίτηση για συγκεκριμένη έκδοση TypeScript.

Το πραγματικό αντικείμενο της μετάβασης

Μετρώ components, state modules, routes, custom directives, tests και σημεία που βασίζονται σε παλιά ή μη τεκμηριωμένη συμπεριφορά. Ελέγχω επίσης αν υπάρχουν απαιτήσεις για Internet Explorer 11 ή custom server-side rendering, επειδή επηρεάζουν τη διαθέσιμη διαδρομή.

Κάθε νέα λειτουργία που εξαρτάται από παλιά APIs ή μη συντηρούμενες εξαρτήσεις μπορεί να αυξήσει το αντικείμενο της μετάβασης. Δεν σημαίνει, όμως, ότι κάθε νέο component θα ξαναγραφτεί από την αρχή.

Οι διαθέσιμες διαδρομές

Παραμονή στην έκδοση της κοινότητας. Μπορείτε να μείνετε προσωρινά στη σειρά 2, γνωρίζοντας ότι δεν θα έρθουν νέες upstream διορθώσεις. Η απόφαση χρειάζεται καταγραφή των εξαρτήσεων, παρακολούθηση των ανακοινώσεων ασφαλείας και σαφή ιδιοκτησία για την αντιμετώπισή τους.

Εμπορική υποστήριξη (extended support). Η HeroDevs προσφέρει συνεχιζόμενες ενημερώσεις και security patches για τη σειρά 2. Αυτή είναι ξεχωριστή εμπορική διαδρομή, όχι συνέχιση της συντήρησης από την κοινότητα, και δεν καταργεί την ανάγκη για μελλοντική μετάβαση.

Μετάβαση στην έκδοση 3. Η εφαρμογή επιστρέφει σε έκδοση που συντηρείται από την upstream ομάδα. Αν το codebase χρειάζεται server rendering, εξετάζω μαζί και τη μετάβαση του server-rendered frontend.

Η διαδρομή προκύπτει από τον κώδικα

Δεν θεωρώ εκ των προτέρων ότι χρειάζεται ξαναγράψιμο από την αρχή ή ότι η κανονική ανάπτυξη μπορεί να συνεχιστεί χωρίς καμία αλλαγή. Χαρτογραφώ πρώτα τις εξαρτήσεις και δοκιμάζω τις κρίσιμες ροές. Έτσι φαίνεται ποια κομμάτια μεταφέρονται ανεξάρτητα και πού απαιτείται συντονισμένη θέση σε λειτουργία.

Πρώτα αποδεικνύω τη συμβατότητα. Το @vue/compat μπορεί να εκτελέσει πολλές τεκμηριωμένες συμπεριφορές της σειράς 2 πάνω στη σειρά 3 και να εμφανίσει προειδοποιήσεις ανά component. Μετά ορίζω τα όρια της αλλαγής. Εξαρτήσεις που χρησιμοποιούν εσωτερικά APIs, παλιό SSR ή ασύμβατες βιβλιοθήκες μπορεί να χρειάζονται διαφορετικό χειρισμό.

Στην υλοποίηση μεταφέρω τα κατάλληλα τμήματα με ελέγχους στις κρίσιμες ροές και συμφωνημένα ορόσημα. Η παράδοση λειτουργιών συνεχίζεται μόνο εκεί όπου το επιτρέπουν οι εξαρτήσεις και το πλάνο έκδοσης. Μετά τη θέση σε λειτουργία παρέχω 30 ημέρες τεχνική εγγύηση. Πρόσθετη υποστήριξη μπορεί να συμφωνηθεί χωριστά.

Έχω κάνει μεταβάσεις εφαρμογών παραγωγής για enterprise backoffice πλατφόρμες και SaaS προϊόντα. Το case study της Arcual δείχνει ένα σχετικό πραγματικό έργο. Για παλιότερο frontend, δείτε επίσης πώς προσεγγίζω τη μετάβαση από jQuery.

Απαντήσεις που εξαρτώνται από το codebase

Το τέλος υποστήριξης σημαίνει ότι η εφαρμογή είναι ήδη ευάλωτη;

Όχι από μόνο του. Σημαίνει ότι η upstream ομάδα δεν θα διορθώσει μια νέα ευπάθεια στην έκδοση της κοινότητας. Η κατάσταση ασφαλείας της εφαρμογής εξαρτάται από την ακριβή έκδοση, τις υπόλοιπες εξαρτήσεις, τη ρύθμιση, την έκθεση και το αν χρησιμοποιείτε εμπορική υποστήριξη.

Μπορούμε να μείνουμε στη σειρά 2 με extended support;

Ναι, αν αυτή είναι η κατάλληλη επιχειρησιακή επιλογή και οι όροι της εμπορικής κάλυψης ανταποκρίνονται στις απαιτήσεις σας. Παραμένετε, όμως, στην παλιά σειρά και η πιθανή μελλοντική μετάβαση εξακολουθεί να χρειάζεται σχεδιασμό.

Μπορεί να χρησιμοποιηθεί το migration build;

Το migration build βοηθά πολλές εφαρμογές να περάσουν σταδιακά σε συμπεριφορά της σειράς 3, αλλά δεν ταιριάζει σε κάθε codebase. Η επίσημη τεκμηρίωση αναφέρει περιορισμούς σε εξαρτήσεις που βασίζονται σε εσωτερικά APIs, σε Internet Explorer 11 και σε custom SSR.

Πότε μπορώ να πάρω αξιόπιστο χρονοδιάγραμμα;

Αφού ελέγξω τις εκδόσεις, τις εξαρτήσεις, τις κρίσιμες ροές και την κάλυψη των tests. Χωρίς αυτά μπορώ να περιγράψω επιλογές, όχι να δώσω υπεύθυνα διάρκεια για το συγκεκριμένο έργο.

Ξεκινήστε από όσα τρέχουν σήμερα

Στείλτε μου την έκδοση του framework, το package.json και τους βασικούς περιορισμούς της εφαρμογής. Θα εξετάσω ποια διαδρομή ταιριάζει στο codebase σας και θα σας απαντήσω με τιμή και χρονοδιάγραμμα μέσω email, χωρίς να χρειάζεται κλήση.