Code Ofhängegkeeten sinn den Däiwel.

Är Ofhängegkeeten verbrennt Iech all Kéier.
"Ännerung ass déi eenzeg Konstant ..." - Heraclitus (Philosopher)

D'Instrumenter, d'Bibliothéiken, an de Kaderen, déi mir benotze fir eis Webapplikatiounen haut ze bauen, sinn drastesch anescht wéi déi, déi mir viru puer Joer benotzt hunn.

An e puer kuerzen Joer vun elo sinn déi meescht vun dësen Technologien erëm dramatesch geännert ginn. An awer maachen vill vun eis dës zu engem zentralen, onloschtlechen Deel vun eisen Apps.

Mir importéieren, benotzen an ierfen aus de Geschmaach-vum-Mount-Kaderen, wéi wa se alleguer ronderëm wäerte sinn an ëmmer onverännert. Gutt ... si sinn net. An dat ass e Problem.

No 20+ Joer Entwécklungen, Designen, an Architekter vu Webapplikatiounen, sinn ech zwee wichteg Wourechte geschätzt ginn:

  1. Extern Ofhängegkeete bilden eng grouss Gefor fir laangfristeg Stabilitéit a Liewensfähegkeet vun all Applikatioun.
  2. Et ass ëmmer méi schwéier - wann net onméiglech - all Zort vun net-trivialen App ze bauen ouni extern Ofhängegkeet z'erhalen.

Dësen Artikel geet iwwer d'Anhale vun dësen zwou Wouerechten, sou datt eis Apps déi gréisste Chance fir laangfristeg Iwwerliewe hunn.

De Kanéngchen ass wierklech déif.

Wa mir un all d'Saache denken, hänke vun eise Webapps of, et ass einfach un eng Dutzend oder méi ze denken ier mer iwwerhaapt un de Code kommen:

  • Kraaft
  • Konnektivitéit
  • Firewall
  • DNS
  • Server Hardware (CPU, Disk, Ram, ...)
  • Killmëttel
  • Virtualiséierung Plattform
  • Container Plattform
  • Betribssystem
  • Web Server Plattform
  • App Server Plattform
  • Web Browser

Als Entwéckler ass et gutt dës Saache bewosst ze ginn, awer et ginn dacks net vill wat mir un hinnen maachen. Also, loosst eis se fir elo ignoréieren an nëmmen iwwer de Code schwätzen.

Am Code sinn et dräi Aarte vun Ofhängegkeeten:

1. Ofhängegkeeten déi mir kontrolléieren

Dëse Code ass geschriwwen a Besëtz vun eis oder vun eiser Organisatioun.

2. Ofhängegkeeten déi mir net kontrolléieren

Dëst ass Code geschriwwe vun engem Drëtt Partei Verkeefer oder Open-Source Software Gemeinschaft.

3. Ofhängegkeeten eemol geläscht

Dëst sinn d'Codeafhängegkeeten déi eis Drëtt-Partei Code-Ofhängegkeeten ofhänken. (Sot dat dräimol séier!)

Mir wäerte haaptsächlech schwätzen iwwer Ofhängegkeeten déi mir net kontrolléieren.

Ofhängegkeeten déi mir kontrolléieren an Ofhängegkeeten eemol geläscht kënne nach ëmmer Kappwéi verursaachen, awer am Fall vun Ofhängegkeeten déi mir kontrolléieren, solle mer fäeg sinn direkt anzegräifen a Problemer ze reduzéieren.

Am Fall vun Ofhängegkeeten eemol geläscht, kënne mir normalerweis vun enger Drëtter vertrauen fir et fir eis ze këmmeren, well se ofhängeg vun dësen sinn.

Firwat Ofhängegkeet vun Drëtt Partei Code gutt sinn

E groussen Deel vun Ärer Webapplikatioun existéiert fir gemeinsam Probleemer ze léisen: Authentifikatioun, Autorisatioun, Daten Zougang, Feelerhantering, Navigatioun, Logging, Verschlësselung, eng Lëscht mat Elementer ze weisen, Formulär Input validéieren, an sou weider ...

Egal wéi en Technologiestapel Dir benotzt, et gëtt eng gutt Chance datt gemeinsam Léisunge fir dës Probleemer existéieren, a verfügbar als Bibliothéiken, déi Dir einfach ka kréien an Plugin op Är Codebase. All dës Saachen komplett aus Schreiwen ze schreiwen ass normalerweis e Offall vun Zäit.

Dir wëllt op Code konzentréieren deen entweder en ongewéinlechen Problem léist oder e gemeinsame Problem op enger ongewéinlecher Aart léist. Dat ass wat Är Uwendung wäertvoll mécht: de Code, deen d'Geschäftsregele implementéiert déi eenzeg fir Är App eleng sinn - déi "geheim Zooss."

Google's Sich- an Säit Ranking Algorithmus, Facebook's Timeline Filteren, Netflix's "recommandéiert fir Iech" Sektioun an Datakompressiouns Algorithmen - de Code hannert all dës Funktiounen ass "geheime Zooss."

Drëtt-Partei Code - a Form vu Bibliothéiken - erlaabt Iech séier déi commoditéiert Funktiounen vun Ärer App ëmzesetzen, sou datt Dir op Är "geheim Sauce" fokusséiere bleift.

Firwat Ofhängegkeet vun Drëtt Partei Code sinn schlecht

Kuckt eng all net-trivial Web-App déi an de leschte Jore gebaut gouf an Dir wäert absolut iwwerrascht sinn iwwer de Betrag vum Code deen tatsächlech aus enger Drëtt-Partei Bibliothéik kënnt. Wat wann een oder méi vun deenen Drëtt-Parteibibliothéiken drastesch ännert, oder verschwënnt oder brécht?

Wann et Open-Source ass, kënnt Dir et vläicht selwer fixéieren. Awer wéi gutt verstitt Dir all de Code an där Bibliothéik déi Dir net hutt? E grousse Grond firwat Dir eng Bibliothéik op der éischter Plaz benotzt, ass d'Virdeeler vum Code ze kréien ouni Iech iwwer all Detail ze Suergen. Awer elo stitt Dir fest. Dir hutt Äert Verméige komplett mat dësen Ofhängegkeeten gebonnen, déi Dir net hutt an net kontrolléiert.

Maacht Iech keng Suergen, um Enn vun dësem Artikel fannt Dir eng nei Hoffnung.

Vläicht denkt Dir datt ech iwwerdreiwen, oder aus engem reng akademesche Standpunkt schwätzen. Loosst mech Iech versécheren - ech hunn Dutzende vu Beispiller vu Clienten déi sech selwer komplett snookeréieren andeems se Drëtt-Partei Code ze enk an hir App agebonnen hunn. Hei ass just ee rezent Beispill ...

E fréiere Client vu mir huet hir App gebaut mat engem Backend-as-a-Service Fournisseur vu Facebook, genannt Parse. Si hunn eng JavaScript Client Bibliothéik benotzt, déi vu Parse zur Verfügung gestallt gëtt fir de Parse Service ze konsuméieren. Am Prozess hu se all hire Code - dorënner de "geheime Zooss" Code an dës Bibliothéik gekoppelt.

Dräi Méint no mengem initialen Produit Start vun mengem Client - just wéi se ugefaang hunn e puer gutt Traktioun mat echte, bezuelende Clienten ze kréien - huet Parse ugekënnegt datt et zougeet.

Elo amplaz et sech op säi Produkt ze fokusséieren an hir Clientbasis ze wuessen, huet mäi Client missen erausfannen, wéi entweder eng selbsthosteg, Open-Source Versioun vu Parse migréieren, oder d'Pars komplett ersetzen.

D'Stéierungen, déi dëst fir eng jonk, nei Applikatioun verursaacht huet, war sou enorm, datt mäi Client schlussendlech d'App komplett ofgeschraaft huet.

Balancéieren tëscht Gutt an Schlecht

E puer Joer, meng Go-to-Léisung fir d'Risiken ze iwwerwannen, während d'Virdeeler vun Drëtt-Partei-Bibliothéike behalen war se ze wrapelen mam Adapter Muster.

Wesentlech wéckelt Dir den Drëtt Partei Code an enger Adapterklass oder Modul dat Dir geschriwwen hutt. Dëst funktionnéiert dann fir d'Funktioune vun den Drëtt Parteibibliothéiken opzezeechnen op eng Manéier déi Dir kontrolléiert.

Benotzt dëst Muster, wann eng Drëtt-Partei Bibliothéik oder e Kader ännert oder geet fort, musst Dir nëmmen e bësse Adaptercode fixéieren. De Rescht vun Ärer App bleift intakt.

Adapter Muster Diagramm vun Dofactory.com

Dëst kléngt gutt op Pabeier. Wann Dir selbstänneg Ofhängegkeeten hutt, déi nëmmen e puer Funktiounen ubidden, mécht dat den Trick. Awer Saache kënne séier ellen.

Kënnt Dir Iech virstellen datt Dir d'ganz React Bibliothéik wéckelt (inklusiv JSX) ier Dir iergend eppes benotzt? Wéi wier et mat jQuery ze wrappen, oder Angular, oder de Fréijoersraum a Java? Dëst gëtt séier en Nightmare.

Dës Deeg recommandéieren ech eng méi nuancéiert Approche…

Fir all Ofhängegkeet déi Dir op Är codebase wëllt bäidroen, bewäert de Niveau vum Risiko deen et wäert aféieren andeems Dir zwee Faktore multiplizéiert:

  1. D'Wahrscheinlechkeet datt d'Ofhängegkeet op eng materiell Manéier ännert.
  2. De Betrag vum Schued eng materiell Ännerung vun der Ofhängegkeet géif Är Applikatioun maachen.

Eng Bibliothéik oder e Kader vun Drëtt-Partei wäert manner änneren wann e puer oder all folgend Saachen richteg sinn:

  • Et war fir e puer Joer ronderëm an hat e puer grouss Verëffentlechungen.
  • Et gëtt wäit vu ville kommerziellen Uwendungen benotzt.
  • Et huet déi aktiv Ënnerstëtzung vun enger grousser Organisatioun - am léifsten e Haus Numm Firma oder Institutioun.

Eng Drëttpartei-Bibliothéik oder e Kader mécht manner Schied un Ärer Uwendung wann e puer oder all folgend Saachen richteg sinn:

  • Et gëtt nëmme vun engem klengen Deel vun Ärer Uwendung benotzt, anstatt datt se benotzt gi wärend.
  • De Code deen dovun ofhänkt ass net Deel vun där "geheime Zooss", vun där ech virdru geschwat hunn.
  • Ewechhuelen Et erfuerdert minimal Ännerunge vun Ärem Codebase.
  • Är ganz Applikatioun ass ganz kleng a ka séier nei geschriwwe ginn. (Sief virsiichteg mat dësen - et ass selten richteg fir ganz laang.)

Wat méi riskant eppes ass, wat méi wahrscheinlech Dir sollt et wéckelen oder et ganz vermeiden.

Wann et ëm de Code geet deen wierklech zentral ass am Wäertpropositioun vun Ärer Uwendung - Är "geheimer Zooss" - musst Dir extrem Schutzhaft virginn. Maacht dee Code sou onofhängeg wéi méiglech. Wann Dir onbedéngt eng Ofhängegkeet benotze muss, berécksiichtegt se ze injizéieren anstatt se direkt ze referenzéieren. Och dann, passt virsiichteg.

Heiansdo bedeit dëst "Nee" ze soen zu enger Drëtt-Partei Bibliothéik, déi Dir mengt wierklech wier cool, oder datt Dir wierklech aus engem oder engem Grond benotze wëllt. Staark sinn. Vertrau mir, et wäert bezuele. Frot just all déi Leit déi vill investéiert hunn an der éischter Verëffentlechung vu Angular, oder mäi fréiere Client dee Parse iwwerall benotzt huet. Et ass kee Spaass. Gleew mir.

Apropos Spaass, kuckt emol…

Ofhängegkeet Grafik fir TinyTag Explorer

D'Bild hei uewen ass d'Ofhängegkeet Grafik fir eng Applikatioun mam Numm TinyTag Explorer.

Eng Ofhängegkeet Grafik fir Är existent Apps ze generéieren ass e super Wee fir den Niveau vum Risiko vun Ären Ofhängegkeeten ze verstoen. Ech hunn eng Lëscht vu gratis Tools zesummegesat fir Grafike ze generéieren ähnlech wéi déi uewe genannte a ville Sproochen dorënner JavaScript, C #, Java, PHP, a Python. Dir kënnt et hei kréien.

Hëlleft mir anerer ze hëllefen

Ech wëll sou vill Entwéckler hëllefen wéi ech kann, andeems ech mäi Wëssen an hir Erfarung mat hinnen deelen. W.e.g. hëlleft mir andeems Dir op der ❤ Empfehlerknäppchen (gréng Häerz) hei drënner klickt.

Schliisslech, vergiesst net Är Lëscht mat gratis Grafikengeneratoren fir Ofhängegkeet hei z'erreechen.