Ostegun gauero 10etan, garatzaile taldea isilik geratzen da. Azken asteetan gogor landutako funtzio berria Ekoizpen (Production) ingurunera hedatzeko (deploy) eguna da. "Mesedez, oraingoan ezer ez gertatzea!" erregutzen dute, hedatze botoia sakatzen duten bitartean. Baina laster, errore-jakinarazpenak uholdean iristen dira, eta goizaldeko ordu txikietan zehar luzatzen den Premiazko Atzeraeragina (Rollback) eta bug konponketa hasten da. Izugarria, ezta? ๐ซ
'Big Bang Hedatze' horren beldurra garatzaile talde askoren patua izan da. Baina kodea hedatzeko moduari buruzko pentsaera apur bat aldatuz gero, ezinegon hori guztia desagerraraz dezakegu. Erantzunaren erdian, hain zuzen ere, Funtzio Bandera (Feature Flag) edo Funtzio Txandakagailua (Feature Toggle) dago.
Funtzio Bandera Zer da? Kodearen 'Etengailu' Bat Da
Funtzio Bandera kodean sartutako if esaldi bat bezalakoa da. Baina, if esaldi horren egia () / gezurra () kodea aldatu edo berriro hedatu gabe ere kanpotik urrunetik kontrola daitekeen 'etengailu' bat dela pentsa dezakezu.
Adibiderik errazena etxeko argi-etengailua da. ๐ก Etxea eraikitzean, gela guztietan argia eta kableatua aurrez instalatzen dugu. Baina lehen egunean ez ditugu gela guztietako argiak piztuta uzten. Behar denean, behar den gelako etengailua piztu eta erabiltzen dugu.
Funtzio Banderak berdin funtzionatzen du. Oraindik bukatu gabeko edo ezegonkorra den funtzio berriaren kodea Bandera baten bidez inguratzen dugu, 'itzalita' dagoen egoeran Maisu Adarrean (Master Branch) batu eta ekoizpenera hedatzen dugu. Kodea zerbitzarian dago jada, baina etengailua itzalita dagoenez, erabiltzaileek ez dute ikusten eta ez du inolako eraginik sortzen. Mamu-kode baten antzera. ๐ป
Atzeko Sisteman, Nola Ikusiko Litzateke? (Adibidea)
Funtzio Bandera kudeatzen duen zerbitzu edo liburutegi bat erabiliz gero, kodea oso modu zuzenean agertzen da.
๐ Funtzio Banderarik Gabeko Kodea (Arriskutsua)
// 'Ordainketa Azkarreko' logika berri bat gehitu dela suposa dezagun.
// Hedatzean, ordainketa eskaera guztiek logika berri hau erabiliko dute.
void processPayment(User user, Order order) {
// ... Aurreko ordainketa logika ...
// [Funtzio Kode Berria]
// Kanpoko API arazoak edo denbora-muga arazoak gerta daitezke!
new FastPayGateway().execute(order);
}
๐ Funtzio Banderak Erabiliz (Segurua)
// featureFlagClient urruneko konfigurazioa irakurtzen duen liburutegia da.
import featureFlagClient from 'feature-flag-service';
void processPayment(User user, Order order) {
// 'fast-pay-integration' Bandera piztuta badago soilik exekutatzen du logika berria.
if (featureFlagClient.isEnabled('fast-pay-integration')) {
// [Funtzio Kode Berria]
new FastPayGateway().execute(order);
} else {
// [Aurreko ordainketa logika]
new OldGateway().execute(order);
}
}
Orain, garatzaile taldeak administratzaile orrialdean 'fast-pay-integration' Bandera ON/OFF jartzea besterik ez du, berriro hedatu gabe denbora errealean ordainketa sistema berria piztu eta itzaltzeko.
Funtzio Banderak Atzeko Garatzaile Taldeari Emandako Superbotereak โก๏ธ
Etengailu sinple honek izugarrizko superbotereak ematen dizkio garatzaile taldeari, sistemaren egonkortasuna eta malgutasuna maximizatuz.
1. Hedatzea eta Argitaratzea Bereiztea (Deployment from Release)
Hau da funtsezkoa. Garatzaileek jada ez dute itxaron behar kode guztia perfektua izan arte. Egunero kode amaitu gabea batu eta hedatu dezakete modu seguruan. Hedatzea () kodea zerbitzarira eramateko ekintza teknikoa da, eta Argitaratzea () funtzioa erabiltzaileari erakusteko negozio-ekintza. Azken hau, marketin taldeak edo produktuen arduradunek erabakitzen dute, etengailu digital bat erabiliz.
2. Kanariar Askazioa (Canary Release) eta Erabiltzailearen Araberako Kontrola
API endpoint berri bat edo DB kontsulten optimizazio konplexua erabiltzaile guztiei batera erakustea arriskutsuegia da.
- Kanariar Askazioa: Funtzio berria barne langileentzat edo IP barruti zehatz batentzat bakarrik piztu dezakezu lehenik. Gero, trafiko osoaren %1erako soilik, eta poliki-poliki handituz, egonkortasuna baieztatu dezakezu.
- Erabiltzailearen Araberako Kontrola: bezero talde zehatz bati edo testatzaile talde bati bakarrik eskaini ahal izango zaie atzeko funtzio berria.
3. Muturreko Egonkortasuna: Hilketa Etengailua (Kill Switch) ๐คฏ
Kaxen biltegiratze (caching) logika berria aplikatu da, baina ustekabeko Memoria Ihesa (Memory Leak) bat sortu da? Bada, lasai. Ez duzu gaua eman behar berriro hedatzen edo hotfix egiten. Administrazio orrialdean, funtzio bandera hori 'OFF' jarri besterik ez duzu. Segundo gutxitan, funtzio arriskutsua desgaituta geratzen da eta sistema egoera egonkorrera itzultzen da. Desgaitze gaitasun azkar honek atzeko sistema operatiboan balio handiko aseguru bat da.
Amaiera
Funtzio Banderak kodea ezkutatzeko teknika bat baino gehiago dira; softwarea garatzeko eta hedatzeko kultura errotik aldatzen dute. Luzaroan mantentzen ziren funtzio-adarren () bategite (merge) gatazka mingarriak murrizten dituzte eta 'Hedadura = Ezinegona' formula apurtzen dute.
Orain, 'Big Bang Hedatze' arriskutsu eta erraldoi baten ordez, hedatze txiki, seguru eta konfiantzaz beteak egunez egun egiteko kultura. Funtzio Bandera kultura hori irekitzeko giltza boteretsuena da. Zergatik ez duzu etengailu magiko hau zure hurrengo proiektuan sartzen?
๋๊ธ