paint-brush
Frameworks dilema pateikė@luminousmen
966 skaitymai
966 skaitymai

Frameworks dilema

pateikė luminousmen
luminousmen HackerNoon profile picture

luminousmen

@luminousmen

helping robots conquer the earth and trying not to increase...

7 min read2024/09/26
Read on Terminal Reader
Read this story in a terminal
Print this story
tldt arrow
lt-flagLT
Skaitykite šią istoriją lietuvių kalba!
en-flagEN
Read this story in the original language, English!
es-flagES
Lee esta historia en Español!
pt-flagPT
Leia esta história em português!
ja-flagJA
この物語を日本語で読んでください!
mg-flagMG
Vakio amin'ny teny malagasy ity tantara ity!
gl-flagGL
Le esta historia en galego!
am-flagAM
ይህንን ታሪክ በአማርኛ ያንብቡ!
zu-flagZU
Funda le ndaba ngesiZulu!
lo-flagLO
ອ່ານເລື່ອງນີ້ເປັນພາສາລາວ!
be-flagBE
Прачытайце гэтае апавяданне па-беларуску!
hr-flagHR
Pročitajte ovu priču na hrvatskom!
tg-flagTG
Ин қиссаро бо забони тоҷикӣ хонед!
LT

Per ilgai; Skaityti

Kaip kūrėjas, sistemos paprastai yra pirmas dalykas, kurį griebiatės, kai norite pagreitinti darbą ir išlaikyti jų patikimumą.
featured image - Frameworks dilema
luminousmen HackerNoon profile picture
luminousmen

luminousmen

@luminousmen

helping robots conquer the earth and trying not to increase entropy using Python, Data Engineering and Machine Learning

Kaip kūrėjas, sistemos paprastai yra pirmas dalykas, kurį griebiatės, kai norite pagreitinti darbą ir išlaikyti jų patikimumą. Žmonės dažnai kalba apie sistemas, tarsi jos būtų puikus sprendimas, galintis išspręsti visas jūsų problemas, todėl kūrimas bus greitesnis, lengvesnis ir efektyvesnis. Tačiau, jei turite patirties, žinote, kad karkasai nėra universalus sprendimas. Tinkamas pasirinkimas gali supaprastinti jūsų darbą, tačiau neteisingas pasirinkimas gali sukelti galvos skausmą kelyje ir sulėtinti jus tik tada, kai reikia greitai judėti.


Šiame tinklaraščio įraše pasinersime į tikrus iššūkius ir strategijas, kylančias renkantis ir naudojant sistemas. Išnagrinėsime galimas kliūtis, kaip jų išvengti ir būdus, kaip išlaikyti savo kodų bazę lanksčią – net kai veikia sistema.

Santykiai, kurių jūs nežinojote, kad užmezgate

Įsipareigojimas laikytis sistemos yra panašus į ilgalaikius santykius. Ir į tai neverta žiūrėti lengvabūdiškai. Skirtingai nei paprastoje bibliotekoje ar nedidelėje programinėje įrangoje, sistemos turi nuomonių – jų daug. Jie nustato jūsų paraiškos struktūrą ir metodiką, nesvarbu, jums tai patinka, ar ne.


Ilgalaikis struktūrų įsipareigojimas

Ilgalaikis struktūrų įsipareigojimas


Labai svarbu atsiminti, kad sistemos kūrėjai turi savo prioritetus. Jie sprendžia SAVO problemas, o ne tavo. Jie jums nieko neskolingi (nebent, žinoma, turite bičiulį vidinės sistemos komandoje, tokiu atveju jums pasisekė). Jei reikalai pakryps į pietus, ypač įsigilinus į jūsų projektą, galite patirti skausmą. Dabar jūs įstrigote jį taisydami arba, dar blogiau, visiškai jį išplėšdami.


Nesmagu, tiesa?


Taigi, prieš prisirišdami prie sistemos, įsitikinkite, kad ji iš tikrųjų atitinka tai, ko jums reikia. Kitu atveju metate kauliuką.

FAANG problemos

Autorius neįsivaizduoja, ar FAANG tapo MAANG, MANGA, ar dabar visi esame anime.

Štai kur patirtis tikrai svarbi. Kai įmonės sparčiai auga, jos dažnai susiduria su iššūkiais, su kuriais negali susidoroti joks paruoštas sprendimas. Šių problemų mastas verčia juos kurti savo įrankius – pasirinktines duomenų bazes, ETL variklius, BI įrankius – jūs tai vadinate. Didieji technologijų milžinai, tokie kaip „Google“, „LinkedIn“, „Spotify“ ir „Netflix“, pirmavo kurdami ir atvirojo šaltinio įrankius, kuriais dabar galime žaisti ir kiti.


Tačiau štai kas: šie įrankiai nebuvo sukurti taip, kad būtų taikomi visuotinai. Jie buvo sukurti siekiant išspręsti konkrečias problemas, su kuriomis dauguma įmonių niekada nesusidurs. Šiose didelėse įmonėse dirbę inžinieriai yra įpratę spręsti tokius iššūkius – jie sukūrė sprendimus, kurie veikia tokiu mastu, kokį dauguma iš mūsų tik įsivaizduoja. Taigi, kai jie pereina į mažesnes įmones, jų priimami sprendimai ir sprendimai yra pagrįsti giliu šių technologijų galios ir spąstų supratimu.

Pushback Against Frameworks

Pastaruoju metu kyla šioks toks maištas – žmonės pavargsta nuo rėmų. Ypač „JavaScript“ pasaulyje kūrėjai pavargo nuo nuolatinio trūkumo. Tikriausiai tai matėte: kiekvieną kartą, kai nukrenta pagrindinis atnaujinimas, turite perrašyti reikšmingas kodų bazės dalis, kad išliktumėte aktualios. Neverskite manęs pradėti nesibaigiančio pokyčių ciklo.


Šis nusivylimas paskatino paprastesnių, stabilesnių stackų atgimimą. Tokie dalykai kaip vanilinis HTML, CSS, jQuery, PHP ir SQLite sugrįžta tarp kūrėjų, kurie teikia pirmenybę tam, kad būtų atliktas darbas, o ne likti pažangioje technologijų srityje. Taip, tai gali jaustis šiek tiek „senosios mokyklos“, bet toli gražu nėra pasenusi. Naudodami paprastesnį krūvą galite greitai kartoti ir išsiųsti dar greičiau. Žinoma, naujesnės sistemos, tokios kaip „React“, „Node.js“ ir „Flask“, turi savo vietą, bet kartais jums nereikia visų įmantrių dalykų. Kartais laikydamiesi to, kas veikia, galite sutaupyti daug galvos skausmo.

„Framework“ pramonės kompleksas?

Ar karkasai tampa... per daug išpūsti? Sunku nepastebėti, kad kai kurios sistemos atrodo labiau kaip įrankiai, skirti pritraukti VC finansavimą, o ne išspręsti tikras kūrėjo problemas. Panašu, kad visa ekosistema stumia kūrėjus į šias sistemas, kad vėliau jie suprastų, kad, kai jie plečiasi, jie yra užrakinti brangiose platformose. Žinoma, tokios sistemos kaip Databricks yra atvirojo kodo ir gali būti nemokamos, tačiau augant esate linkę į jų verslo sprendimus. Ir staiga jūsų prieglobos ir eksploatavimo išlaidos yra be galo didelės, o gali pakakti paprasto VPS.


Tai atrodo kaip spąstai, ar ne?

Pamatinio sprendimo atidėjimas

Štai patarimas, kuriuo prisiekiu: neskubėkite rinkdamiesi karkaso . Neįsipareigokite, kol jūsų architektūra nebus visiškai suformuluota.


Karkasas turėtų būti paskutinis dalykas, dėl kurio nerimaujate, o ne pirmas.


Pirmiausia įsitikinkite, kad jūsų architektūra yra tvirta. Žinokite savo pagrindinius komponentus ir kaip jie sąveikaus. Kai tai padarysite, galėsite įvertinti sistemas aiškiai suprasdami, kur jos gali tikti – ar iš viso jos tinka.


Šis metodas užtikrina, kad jūsų dizainas būtų tvirtas ir atitiktų jūsų konkrečius poreikius. Kai ateis laikas apsvarstyti sistemą, galėsite aiškiai matyti, kur ji gali pagerinti jūsų architektūrą jos neapribodama.


Prieš pradėdami naudoti bet kokią sistemą, paklauskite savęs: ar jums to tikrai reikia? Žinoma, sistemos gali papildyti automatizavimo ir patogumo sluoksnius, tačiau jos taip pat turi savo apribojimų. Jei jūsų programai keliami unikalūs reikalavimai, sistemos gali būti netinkamos.


Ilgai ir kruopščiai pagalvokite apie ilgalaikę naudą prieš apribojimus.

Padaryti rėmus išnaudojamus

Jei nuspręsite, kad karkasas vertas rizikos, įsitikinkite, kad jį lengva pakeisti. Taip, girdėjote teisingai. Sukurkite šiek tiek lankstumo, kad jei vėliau prireiktų jo atsisakyti, tai nebūtų didžiulė užduotis. Štai kaip:

Apibendrinkite savo priklausomybes

Saugokite, kad sistemos nešvarios rankos nepatektų į pagrindinį kodą. Naudokite sąsajas, kad abstrahuotų sistemos funkcijas, kad jūsų verslo logika tiesiogiai nepriklausytų nuo sistemos.


Tarkime, kad mašininiam mokymuisi naudojate „TensorFlow“. Užuot įdėję TensorFlow kodą visoje programoje, apibrėžkite sąsajas, kad viskas būtų tvarkinga ir abstrakčiai:

 from abc import ABC, abstractmethod import tensorflow as tf class ModelTrainer(ABC): @abstractmethod def train(self, data): pass class TensorFlowTrainer(ModelTrainer): def train(self, data): # TensorFlow-specific training logic model = tf.keras.models.Sequential([...]) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy') model.fit(data, epochs=5) return model


Tai darant, jūsų pagrindinė logika nėra glaudžiai susieta su „TensorFlow“. Jei reikia pereiti prie kitos mašininio mokymosi sistemos, tereikia pakeisti diegimą.

Priklausomybės injekcija (DI) yra jūsų draugas

Toliau pakalbėkime apie priklausomybės injekciją (DI). Ši technika leidžia į klases įtraukti konkrečius sąsajų diegimus, išlaikant kodų bazę atsietą ir modulinę.

 class TrainingPipeline: def __init__(self, trainer: ModelTrainer): self.trainer = trainer def execute(self, data): return self.trainer.train(data) # Inject the TensorFlowTrainer implementation pipeline = TrainingPipeline(TensorFlowTrainer())


Dabar jūsų kodas yra lankstus, lengvai išbandomas ir paruoštas viskam, kas nutiks ateityje.

Apimkite valdymo inversiją (IoC)

Siekdami maksimalaus lankstumo, patobulinkite viską naudodami valdymo inversiją (IoC). Šis modelis leidžia nurodyti diegimus konfigūracijos faile arba centralizuotoje kodo vietoje. Tai vyšnia ant jūsų sistemos agnostinės architektūros.


Štai pavyzdys, kaip tai gali veikti naudojant konfigūracija pagrįstą metodą:

 # config.py class Config: TRAINER = 'my_project.trainers.TensorFlowTrainer' # main.py import importlib class TrainingPipeline: def __init__(self, trainer_class: str): module_name, class_name = trainer_class.rsplit('.', 1) module = importlib.import_module(module_name) trainer_cls = getattr(module, class_name) self.trainer = trainer_cls() def execute(self, data): return self.trainer.train(data) # Inject the trainer specified in the configuration from config import Config pipeline = TrainingPipeline(Config.TRAINER)


Dabar, jei kada nors reikės pakeisti TensorFlow kita mašininio mokymosi sistema, tiesiog atnaujinkite konfigūraciją ir tęskite. Jokio vargo, jokios dramos.

Išvada

Atminkite, kad karkasai turi tarnauti JŪSŲ architektūrai, o ne ją diktuoti. Kruopštus planavimas ir strateginis abstrakcija, galite pasinaudoti sistemomis, neįstrigdami ilgalaikėse priklausomybėse. Triukas yra išlaikyti kontrolę. Taigi kitą kartą, kai ketinate pasinerti į sistemą, ženkite žingsnį atgal ir priminkite sau: čia skambinkite.


Pasiruošę būti įskaudinti

Pasiruošę būti įskaudinti


Ačiū, kad skaitėte!


Kyla klausimų? Palikite savo komentarą žemiau, kad pradėtumėte nuostabias diskusijas!


Peržiūrėkite mano tinklaraštį arba ateikite pasisveikinti 👋 „Twitter“ arba užsiprenumeruokite mano telegramos kanalą . Suplanuokite savo geriausia!

L O A D I N G
. . . comments & more!

About Author

luminousmen HackerNoon profile picture
luminousmen@luminousmen
helping robots conquer the earth and trying not to increase entropy using Python, Data Engineering and Machine Learning

PABAIGTI ŽYMES

ŠIS STRAIPSNIS BUVO PRISTATYMAS...

Read on Terminal Reader
Read this story in a terminal
 Terminal
Read this story w/o Javascript
Read this story w/o Javascript
 Lite
Also published here
X REMOVE AD