Tehniline võlg skaalal: pankroti vältimine

Sissejuhatus
Risttee on sama vältimatu asi, mille läbimisega iga edukas tarkvarakompanii peab tegelema. Ei ole tegemist halva MVP-ga, mis läbis toote-turu sobivuse testi, vaid on välja töötatud mitmekülgne süsteem, mis teenindab tuhandeid või miljoneid kasutajaid. Kuid on midagi, mis jääb varju. Uued versioonid ilmuvad aeglaselt. Lihtsate muudatuste arendamiseks kulub nädalaid. Vead parandatakse kiiremini kui vanad probleemid. Koodibaas sunnib insenere kulutama rohkem aega võitlusele kui uute funktsioonide loomisele. Selline stsenaarium kordub tehnoloogia valdkonnas kohutava sagedusega. Ettevõtted, mis näisid olevat suundumas tipptasemele, on oma esialgse edu poolt lämmatatud ja peavad kas jätkama leebes stagnatsioonis või taaskäivitama oma arengu kulukate ümberkorraldustega. Süüdlaseks ei ole kindlasti kehvad arendajad ega ressursside puudus. Pigem peitub põhjus alguses tehtud põhilistes arhitektuurilistes valikutes, kui turule jõudmise kiirus oli olulisem kui pikaajaline hooldatavus. Õppida, kuidas tehnilised otsused aja jooksul vastu peavad, on üks olulisemaid teadmisi igale kasvava tehnoloogiaorganisatsiooni juhile. Täna tehtud valikud kiirendavad kas tulevikus kasvu või põhjustavad nähtamatuid takistusi, mis pidurdavad kõiki teisi algatusi. Kasvavate ja ebaõnnestuvate ettevõtete vaheline erinevus seisneb sageli õigel ajal kasutatud arhitektuurilises tarkuses.
Olulised järeldused
Prototüübi ja tootmisvalmis tarkvara vahel on lühikesi teid, mis on mõeldud lühiajaliseks, kuid millel on väga pikk tasuvusaeg. Algstaadiumis keskendub arendus loomulikult kiirele prototüüpimisele ja otsesele funktsionaalsusele, mitte sellistele abstraktsetele küsimustele nagu modulaarne ülesehitus või laiendatavus. See meetod on täiesti ratsionaalne, kui peamine eesmärk on hüpoteeside kinnitamine ning turuvõimaluste hõlvamine enne konkurentide turule sisenemist. Kuid sellised taktikalised võidud võivad tekitada strateegilisi nõrkusi. Monoliitsed arhitektuurid, mis väikeste rühmade puhul tundusid võluvate, osutuvad organisatsioonide laienedes pudelikaeladeks. Esialgu optimaalsed andmebaasi skeemid on uute funktsioonide toetamiseks raske muuta. Sadadest kasutaja autentimissüsteemidest jäävad tuhandete all kokku varisema. Mõne kolmanda osapoole teenusega efektiivsed integratsioonimudelid osutuvad ökosüsteemi ulatuse tõttu kontrollimatuks.
Arhitektuurilise võla õõvastav aspekt on see, et selle ilmnemine võtab kaua aega. Struktuurilised probleemid ei ole tavaliselt nähtavad enne kriitilise taseme saavutamist, erinevalt funktsionaalsetest veadest, mis ilmnevad kohe.
Olulised järeldused
Ebaefektiivne API võib suuta praegust liikluskoormust probleemideta hallata, kuid kukub läbi, kui kasutamine kahekordistub. Tihedalt seotud koodibaas võib esialgu võimaldada kiiret funktsioonide arendamist, kuid paralleelne arendamine võib muutuda veelgi keerulisemaks, kui meeskond suureneb. Ettevõtted kipuvad sageli tõlgendama neid sümptomeid valesti kui ajutisi ja mitte süsteemseid kasvuraskusi, mis vajavad arhitektuurilist parandamist. Juhtkond võib uskuda, et rohkem insenere kiirendab arendusprotsessi, kuid siis avastab, et koordineerimise lisakulu ja koodikonfliktid tegelikult aeglustavad arendust. Jõudlusega seotud probleeme lahendatakse serverite võimsuse suurendamisega, selle asemel et teha põhilisi tõhususe parandusi. Turvalisuse probleeme lahendatakse punktlahendusega, mitte süsteemi ülevaatamisega. Majanduslikud tagajärjed ja ulatus on palju suuremad kui tootlikkus inseneriteaduses. Klientide kogemus kannatab, kuna süsteemid on vähem stabiilsed ja reageerivad. Kui platvorm ei suuda potentsiaalseid ettevõtteid kliente vastu võtta, kaotatakse müügivõimalused. Konkurentsieelised vähenevad, kuna funktsioonid arenevad aeglaselt. See raskendab värbamisprotsessi, kuna insenerid ei soovi töötada organisatsioonides, kus esineb tehnilisi häireid.
Peamine sisu
Modulaarse arhitektuuri loomine
Arhitektuuri tõhusaks arendamiseks on vaja tunda põhimõtteid, mis aitavad luua head disaini, ning praktilisi piiranguid, mida tuleb arvesse võtta, kui otsustatakse, kas midagi rakendada või mitte. Aluseks on modulaarne ülesehitus ja ülesannete eraldamine. Arendatud süsteemid struktureerivad funktsionaalsuse eraldiseisvateks elementideks, määratletud liideste ja vastutusaladeks. Selline strateegia võimaldab meeskondadel luua ja teha muudatusi või asendada üksikuid osi, häirimata kogu süsteemi tööd. Teenusekesksed arhitektuurid on selle kontseptsiooni hea näide. Selle asemel, et arendada monoliitseid rakendusi, mille kõik funktsioonid kasutavad sama koodibaasi ja mida rakendatakse sarnasel viisil, võivad organisatsioonid jagada süsteemid spetsiaalseteks teenusteks, mis suhtlevad ühtsete API-de kaudu. Teenused on sõltumatud ja neid saavad arendada, testida ja rakendada erinevad meeskonnad samaaegselt, ilma et need üksteist segaksid.
Mikroteenused on siiski vaid üks modulaarse disaini rakendustest. Sisemiste piiride tundlikkus ja sõltuvuste kontrollimine võivad olla abiks ka monoliitsetes arhitektuurides.
Peamine sisu
Trikk seisneb selles, et määratleda süsteemi erinevate osade vahel selged lepingud ja vältida tihedat seost, mis põhjustab muutuste levimist kogu koodibaasi ulatuses kõikides suundades.
Andmearhitektuuri kaalutlused
Erilist tähelepanu tuleks pöörata andmearhitektuurile, kuna sellised otsused võivad andmebaasi puhul osutuda kõige kulukamaks. Kasutusjuhtude optimeerimisskeem võib olla tõsine takistus muutuvate nõuete puhul. Tõhusad ettevõtted investeerivad andmemudelitesse, mis on piisavalt paindlikud, et toetada kasvu ilma ulatuslikke migratsioone tegemata. See võib olla järgmises vormis:
- Valige vastavalt vajadustele dokumendibaasid suhteliste andmebaaside asemel.
- Andmete versioonihalduse strateegia kasutamine
- API-de loomine, mis varjavad aluseks olevaid salvestusrakendusi
Praeguste ja tulevaste vajaduste tasakaalustamine
Skaalautuvuse nõuded peaksid looma tasakaalu praeguste nõuete ja tulevaste võimaluste vahel. Kui nad loovad liiga keerukaid lahendusi probleemidele, mis ei pruugi kunagi tekkida, raiskavad nad ressursse ja muudavad asjad keerulisemaks, kui need olema peaksid. Lahendused, mis on liiga lihtsad, et kohaneda prognoositava kasvuga, põhjustavad eksponentsiaalselt kasvavat tehnilist võlga. Parim lahendus on tunnistada skaalautuvuse pudelikaelad varases staadiumis ja rakendada arhitektuur, mis suudab koormuse all sujuvalt skaalautuda.
Ära lase tehnilisel võlal oma idufirmat hukata
Õppige tõestatud strateegiaid, et luua skalpeeruv arhitektuur juba esimesest päevast alates.
Küsige ekspertide nõuPeamine sisu
Jälgitavus ja turvalisus
Jälgitavus on veel üks oluline arhitektuuriline tegur, mida arenduse algstaadiumis tavaliselt ei võeta arvesse. Iga süsteem, millel puuduvad põhjalikud logimise, seire ja veaparandamise vahendid, muutub keerulisemaks, mida keerulisemaks see muutub. Jälgitavuse integreerimine arhitektuuri algstaadiumis on palju odavam kui hiljem, kuid kogemused on optimeerimise ja veaparandamise seisukohalt hindamatud. Sama kehtib ka turvalisuse arhitektuuri kohta, mis on samuti varajane investeering. Autentimise, autoriseerimise ja andmekaitse baaskomponentide kasutuselevõtt võimaldab funktsioone kiiresti arendada, ilma et see tooks kaasa turvalisuse võlgnevust. Teisalt on turvalisuse käsitlemine järelmõttena kulukas ümberkujundada juhtudel, kus muudetakse nõuetele vastavuse vajadusi või ohumudeleid.
Praktilised soovitused
Tehniliste otsuste tegemine
Ettevõtted, kes soovivad vältida arhitektuurilisi lõkse, peaksid kehtestama tehniliste otsuste tegemise mudelid, mis on tasakaalustatud lühiajalise tempoga ja pikaajalise vastupidavusega. See hõlmab järgmist:
- Arhitektuurilise läbivaatamise protseduuride väljatöötamine oluliste tehniliste valikute osas
- Kompromisside dokumenteerimine
- Hinnake sageli äriprioriteetide suhtes tekkinud tehnilist võlga.
Testimine ja integreerimine
Investeeringud automatiseeritud testimisse ja pidevasse integratsiooni tasuvad end ära ka selle poolest, et võimaldavad kindlalt refaktoreerida ja teha arhitektuurilisi investeeringuid. Kui meeskonnad suudavad muudatusi kiiresti kinnitada, on neil suurem tõenäosus rakendada proaktiivseid kohandusi, selle asemel et hooldusprotsessi lõputult edasi lükata. Paralleelne arendus on võimalik ka tänu terviklikele testikomplektidele, mis tuvastavad integratsiooni probleemid varases staadiumis.
Koodi läbivaatamine ja teadmiste jagamine
Koodide läbivaatamisel tuleb kontrollida nii arhitektuurilisi mõjusid kui ka funktsioneerimise korrektsust. Ainult vahetu funktsionaalsusega seotud läbivaatamised ei anna võimalust avastada ja parandada struktuurilisi probleeme enne, kui need juurdunud on. Organisatsiooni otsuste kvaliteedi parandamine on võimalik, koolitades insenere arhitektuuriliste kompromisside tuvastamiseks ja nendest teavitamiseks.
Komplekssus Võrreldes lihtsate süsteemidega muutuvad dokumentatsioon ja teadmiste jagamine üha olulisemaks. Arhitektuuriliste otsuste dokumenteerimine, mis annab teavet kriitiliste otsuste põhjenduste kohta, aitab tulevastel arendajatel teada saada, kuidas süsteeme kavandada ja tõhusaid otsuseid teha.
Praktilised soovitused
Sagedased tehnilised esitlused ja arhitektuurikoosolekud võimaldavad säilitada ühise arusaama laienevate insenerimeeskondade kontekstis.
Regulaarsed arhitektuuriülevaated
Regulaarsed arhitektuurilised hindamised annavad võimaluse võtta veidi distantsi igapäevasest arendustööst ja analüüsida süsteemide tervist suuremas mastaabis. Sellised ülevaated peaksid kindlaks tegema, kuhu on viinud tehniline võlg, kas praegused arhitektuurid vastavad äri vajadustele ja mida saab teha nende parandamiseks, et pakkuda optimaalset tulu inseneritöö investeeringutelt.
Kokkuvõte
Start-up'i järgne protsess on kindlasti arhitektuuriline areng, kuid see ei pea tähendama kulukaid ümberkirjutamisi ega isegi arengu stagnatsiooni. Ettevõtted, kes teevad alguses mõistlikke arhitektuurilisi otsuseid, on paremas positsioonis jätkusuutlikkuse saavutamiseks, samas kui ettevõtted, kes eiravad struktuuride struktuurilisi aspekte, jäävad tavaliselt oma saavutuste tõttu kodutuks. Enamik edukate mudelitega tehnoloogiaettevõtteid ei pea arhitektuuri otsuseks, vaid pidevaks distsipliiniks. Nad arendavad süsteeme, mis võimaldavad sujuvat arengut, investeerivad vahenditesse ja protsessidesse, mis on vajalikud kindlate muudatuste tegemiseks, ning omavad arhitektuurialaseid teadmisi, et teha õigeid kompromisse, kui see on tõesti oluline. Arhitektuurilise distsipliini kulud on tühised võrreldes tehnilise pankroti kuludega. Mõistes, et varases etapis tehtud otsused kordistuvad aja jooksul, ja järgides järjekindlalt ajaproovitud arhitektuurilisi põhimõtteid, suudavad organisatsioonid arendada tarkvara, mis pikas perspektiivis ainult suurendab nende edu. Küsimus ei ole selles, kas arhitektuurilised probleemid tekivad, vaid selles, kas neid märgatakse ja lahendatakse enne, kui need muutuvad näiliselt ületamatuteks probleemideks.
Tags
Sissejuhatus
Risttee on sama vältimatu asi, mille läbimisega iga edukas tarkvarakompanii peab tegelema. Ei ole tegemist halva MVP-ga, mis läbis toote-turu sobivuse testi, vaid on välja töötatud mitmekülgne süsteem, mis teenindab tuhandeid või miljoneid kasutajaid. Kuid on midagi, mis jääb varju. Uued versioonid ilmuvad aeglaselt. Lihtsate muudatuste arendamiseks kulub nädalaid. Vead parandatakse kiiremini kui vanad probleemid. Koodibaas sunnib insenere kulutama rohkem aega võitlusele kui uute funktsioonide loomisele. Selline stsenaarium kordub tehnoloogia valdkonnas kohutava sagedusega. Ettevõtted, mis näisid olevat suundumas tipptasemele, on oma esialgse edu poolt lämmatatud ja peavad kas jätkama leebes stagnatsioonis või taaskäivitama oma arengu kulukate ümberkorraldustega. Süüdlaseks ei ole kindlasti kehvad arendajad ega ressursside puudus. Pigem peitub põhjus alguses tehtud põhilistes arhitektuurilistes valikutes, kui turule jõudmise kiirus oli olulisem kui pikaajaline hooldatavus. Õppida, kuidas tehnilised otsused aja jooksul vastu peavad, on üks olulisemaid teadmisi igale kasvava tehnoloogiaorganisatsiooni juhile. Täna tehtud valikud kiirendavad kas tulevikus kasvu või põhjustavad nähtamatuid takistusi, mis pidurdavad kõiki teisi algatusi. Kasvavate ja ebaõnnestuvate ettevõtete vaheline erinevus seisneb sageli õigel ajal kasutatud arhitektuurilises tarkuses.
Olulised järeldused
Prototüübi ja tootmisvalmis tarkvara vahel on lühikesi teid, mis on mõeldud lühiajaliseks, kuid millel on väga pikk tasuvusaeg. Algstaadiumis keskendub arendus loomulikult kiirele prototüüpimisele ja otsesele funktsionaalsusele, mitte sellistele abstraktsetele küsimustele nagu modulaarne ülesehitus või laiendatavus. See meetod on täiesti ratsionaalne, kui peamine eesmärk on hüpoteeside kinnitamine ning turuvõimaluste hõlvamine enne konkurentide turule sisenemist. Kuid sellised taktikalised võidud võivad tekitada strateegilisi nõrkusi. Monoliitsed arhitektuurid, mis väikeste rühmade puhul tundusid võluvate, osutuvad organisatsioonide laienedes pudelikaeladeks. Esialgu optimaalsed andmebaasi skeemid on uute funktsioonide toetamiseks raske muuta. Sadadest kasutaja autentimissüsteemidest jäävad tuhandete all kokku varisema. Mõne kolmanda osapoole teenusega efektiivsed integratsioonimudelid osutuvad ökosüsteemi ulatuse tõttu kontrollimatuks.
Arhitektuurilise võla õõvastav aspekt on see, et selle ilmnemine võtab kaua aega. Struktuurilised probleemid ei ole tavaliselt nähtavad enne kriitilise taseme saavutamist, erinevalt funktsionaalsetest veadest, mis ilmnevad kohe.
Olulised järeldused
Ebaefektiivne API võib suuta praegust liikluskoormust probleemideta hallata, kuid kukub läbi, kui kasutamine kahekordistub. Tihedalt seotud koodibaas võib esialgu võimaldada kiiret funktsioonide arendamist, kuid paralleelne arendamine võib muutuda veelgi keerulisemaks, kui meeskond suureneb. Ettevõtted kipuvad sageli tõlgendama neid sümptomeid valesti kui ajutisi ja mitte süsteemseid kasvuraskusi, mis vajavad arhitektuurilist parandamist. Juhtkond võib uskuda, et rohkem insenere kiirendab arendusprotsessi, kuid siis avastab, et koordineerimise lisakulu ja koodikonfliktid tegelikult aeglustavad arendust. Jõudlusega seotud probleeme lahendatakse serverite võimsuse suurendamisega, selle asemel et teha põhilisi tõhususe parandusi. Turvalisuse probleeme lahendatakse punktlahendusega, mitte süsteemi ülevaatamisega. Majanduslikud tagajärjed ja ulatus on palju suuremad kui tootlikkus inseneriteaduses. Klientide kogemus kannatab, kuna süsteemid on vähem stabiilsed ja reageerivad. Kui platvorm ei suuda potentsiaalseid ettevõtteid kliente vastu võtta, kaotatakse müügivõimalused. Konkurentsieelised vähenevad, kuna funktsioonid arenevad aeglaselt. See raskendab värbamisprotsessi, kuna insenerid ei soovi töötada organisatsioonides, kus esineb tehnilisi häireid.
Peamine sisu
Modulaarse arhitektuuri loomine
Arhitektuuri tõhusaks arendamiseks on vaja tunda põhimõtteid, mis aitavad luua head disaini, ning praktilisi piiranguid, mida tuleb arvesse võtta, kui otsustatakse, kas midagi rakendada või mitte. Aluseks on modulaarne ülesehitus ja ülesannete eraldamine. Arendatud süsteemid struktureerivad funktsionaalsuse eraldiseisvateks elementideks, määratletud liideste ja vastutusaladeks. Selline strateegia võimaldab meeskondadel luua ja teha muudatusi või asendada üksikuid osi, häirimata kogu süsteemi tööd. Teenusekesksed arhitektuurid on selle kontseptsiooni hea näide. Selle asemel, et arendada monoliitseid rakendusi, mille kõik funktsioonid kasutavad sama koodibaasi ja mida rakendatakse sarnasel viisil, võivad organisatsioonid jagada süsteemid spetsiaalseteks teenusteks, mis suhtlevad ühtsete API-de kaudu. Teenused on sõltumatud ja neid saavad arendada, testida ja rakendada erinevad meeskonnad samaaegselt, ilma et need üksteist segaksid.
Mikroteenused on siiski vaid üks modulaarse disaini rakendustest. Sisemiste piiride tundlikkus ja sõltuvuste kontrollimine võivad olla abiks ka monoliitsetes arhitektuurides.
Peamine sisu
Trikk seisneb selles, et määratleda süsteemi erinevate osade vahel selged lepingud ja vältida tihedat seost, mis põhjustab muutuste levimist kogu koodibaasi ulatuses kõikides suundades.
Andmearhitektuuri kaalutlused
Erilist tähelepanu tuleks pöörata andmearhitektuurile, kuna sellised otsused võivad andmebaasi puhul osutuda kõige kulukamaks. Kasutusjuhtude optimeerimisskeem võib olla tõsine takistus muutuvate nõuete puhul. Tõhusad ettevõtted investeerivad andmemudelitesse, mis on piisavalt paindlikud, et toetada kasvu ilma ulatuslikke migratsioone tegemata. See võib olla järgmises vormis:
- Valige vastavalt vajadustele dokumendibaasid suhteliste andmebaaside asemel.
- Andmete versioonihalduse strateegia kasutamine
- API-de loomine, mis varjavad aluseks olevaid salvestusrakendusi
Praeguste ja tulevaste vajaduste tasakaalustamine
Skaalautuvuse nõuded peaksid looma tasakaalu praeguste nõuete ja tulevaste võimaluste vahel. Kui nad loovad liiga keerukaid lahendusi probleemidele, mis ei pruugi kunagi tekkida, raiskavad nad ressursse ja muudavad asjad keerulisemaks, kui need olema peaksid. Lahendused, mis on liiga lihtsad, et kohaneda prognoositava kasvuga, põhjustavad eksponentsiaalselt kasvavat tehnilist võlga. Parim lahendus on tunnistada skaalautuvuse pudelikaelad varases staadiumis ja rakendada arhitektuur, mis suudab koormuse all sujuvalt skaalautuda.
Ära lase tehnilisel võlal oma idufirmat hukata
Õppige tõestatud strateegiaid, et luua skalpeeruv arhitektuur juba esimesest päevast alates.
Küsige ekspertide nõuPeamine sisu
Jälgitavus ja turvalisus
Jälgitavus on veel üks oluline arhitektuuriline tegur, mida arenduse algstaadiumis tavaliselt ei võeta arvesse. Iga süsteem, millel puuduvad põhjalikud logimise, seire ja veaparandamise vahendid, muutub keerulisemaks, mida keerulisemaks see muutub. Jälgitavuse integreerimine arhitektuuri algstaadiumis on palju odavam kui hiljem, kuid kogemused on optimeerimise ja veaparandamise seisukohalt hindamatud. Sama kehtib ka turvalisuse arhitektuuri kohta, mis on samuti varajane investeering. Autentimise, autoriseerimise ja andmekaitse baaskomponentide kasutuselevõtt võimaldab funktsioone kiiresti arendada, ilma et see tooks kaasa turvalisuse võlgnevust. Teisalt on turvalisuse käsitlemine järelmõttena kulukas ümberkujundada juhtudel, kus muudetakse nõuetele vastavuse vajadusi või ohumudeleid.
Praktilised soovitused
Tehniliste otsuste tegemine
Ettevõtted, kes soovivad vältida arhitektuurilisi lõkse, peaksid kehtestama tehniliste otsuste tegemise mudelid, mis on tasakaalustatud lühiajalise tempoga ja pikaajalise vastupidavusega. See hõlmab järgmist:
- Arhitektuurilise läbivaatamise protseduuride väljatöötamine oluliste tehniliste valikute osas
- Kompromisside dokumenteerimine
- Hinnake sageli äriprioriteetide suhtes tekkinud tehnilist võlga.
Testimine ja integreerimine
Investeeringud automatiseeritud testimisse ja pidevasse integratsiooni tasuvad end ära ka selle poolest, et võimaldavad kindlalt refaktoreerida ja teha arhitektuurilisi investeeringuid. Kui meeskonnad suudavad muudatusi kiiresti kinnitada, on neil suurem tõenäosus rakendada proaktiivseid kohandusi, selle asemel et hooldusprotsessi lõputult edasi lükata. Paralleelne arendus on võimalik ka tänu terviklikele testikomplektidele, mis tuvastavad integratsiooni probleemid varases staadiumis.
Koodi läbivaatamine ja teadmiste jagamine
Koodide läbivaatamisel tuleb kontrollida nii arhitektuurilisi mõjusid kui ka funktsioneerimise korrektsust. Ainult vahetu funktsionaalsusega seotud läbivaatamised ei anna võimalust avastada ja parandada struktuurilisi probleeme enne, kui need juurdunud on. Organisatsiooni otsuste kvaliteedi parandamine on võimalik, koolitades insenere arhitektuuriliste kompromisside tuvastamiseks ja nendest teavitamiseks.
Komplekssus Võrreldes lihtsate süsteemidega muutuvad dokumentatsioon ja teadmiste jagamine üha olulisemaks. Arhitektuuriliste otsuste dokumenteerimine, mis annab teavet kriitiliste otsuste põhjenduste kohta, aitab tulevastel arendajatel teada saada, kuidas süsteeme kavandada ja tõhusaid otsuseid teha.
Praktilised soovitused
Sagedased tehnilised esitlused ja arhitektuurikoosolekud võimaldavad säilitada ühise arusaama laienevate insenerimeeskondade kontekstis.
Regulaarsed arhitektuuriülevaated
Regulaarsed arhitektuurilised hindamised annavad võimaluse võtta veidi distantsi igapäevasest arendustööst ja analüüsida süsteemide tervist suuremas mastaabis. Sellised ülevaated peaksid kindlaks tegema, kuhu on viinud tehniline võlg, kas praegused arhitektuurid vastavad äri vajadustele ja mida saab teha nende parandamiseks, et pakkuda optimaalset tulu inseneritöö investeeringutelt.
Kokkuvõte
Start-up'i järgne protsess on kindlasti arhitektuuriline areng, kuid see ei pea tähendama kulukaid ümberkirjutamisi ega isegi arengu stagnatsiooni. Ettevõtted, kes teevad alguses mõistlikke arhitektuurilisi otsuseid, on paremas positsioonis jätkusuutlikkuse saavutamiseks, samas kui ettevõtted, kes eiravad struktuuride struktuurilisi aspekte, jäävad tavaliselt oma saavutuste tõttu kodutuks. Enamik edukate mudelitega tehnoloogiaettevõtteid ei pea arhitektuuri otsuseks, vaid pidevaks distsipliiniks. Nad arendavad süsteeme, mis võimaldavad sujuvat arengut, investeerivad vahenditesse ja protsessidesse, mis on vajalikud kindlate muudatuste tegemiseks, ning omavad arhitektuurialaseid teadmisi, et teha õigeid kompromisse, kui see on tõesti oluline. Arhitektuurilise distsipliini kulud on tühised võrreldes tehnilise pankroti kuludega. Mõistes, et varases etapis tehtud otsused kordistuvad aja jooksul, ja järgides järjekindlalt ajaproovitud arhitektuurilisi põhimõtteid, suudavad organisatsioonid arendada tarkvara, mis pikas perspektiivis ainult suurendab nende edu. Küsimus ei ole selles, kas arhitektuurilised probleemid tekivad, vaid selles, kas neid märgatakse ja lahendatakse enne, kui need muutuvad näiliselt ületamatuteks probleemideks.


