Monorepositories: don Allah, dole

Monorepositories: don Allah, dole

Fassara labarin da aka shirya don ɗaliban kwas "Ayyukan DevOps da kayan aikin" a cikin aikin ilimi na OTUS.

Yakamata ku zaɓi wurin zama ɗaya saboda halayen da yake haɓakawa a cikin ƙungiyoyin ku shine nuna gaskiya da alhakin haɗin gwiwa, musamman yayin da ƙungiyoyi ke girma. Ko ta yaya, dole ne ku saka hannun jari a cikin kayan aiki, amma yana da kyau koyaushe idan dabi'ar tsoho shine halin da kuke so a cikin umarninku.

Me yasa muke magana akan wannan?

Matt Klein ya rubuta labarin "Monorepos: Don Allah kar!"  (bayanin fassarar: fassarar kan Habré "Monorepositories: don Allah kar"). Ina son Matt, ina tsammanin yana da wayo kuma ya kamata ku karanta ra'ayinsa. Da farko dai ya buga zaben ne a shafin Twitter:

Monorepositories: don Allah, dole

Translation:
Wannan Sabuwar Shekara ta Day, Zan je jayayya game da yadda m monorepositories ne. 2019 ya fara shuru. A cikin ruhin wannan, na ba ku bincike. Su wane ne manyan masu tsattsauran ra'ayi? Magoya bayan:
- Monorepo
- Rust
- Zaɓen da ba daidai ba / duka biyu

Amsa na ita ce, "A zahiri ni duka mutanen biyu ne." Maimakon yin magana game da yadda Rust magani ne, bari mu dubi dalilin da yasa nake ganin ya yi kuskure game da monorepositories. Kadan game da kanka. Ni ne CTO na Chef Software. Muna da injiniyoyi kusan 100, tushen lambar da ke dawowa game da shekaru 11-12, da manyan samfuran 4. Wasu daga cikin wannan lambar suna cikin polyrepository (matsayin farawa na), wasu suna cikin monorepository (matsayi na a halin yanzu).

Kafin in fara: kowace hujja da zan yi a nan za ta shafi nau'ikan ma'aji biyu. A ra'ayina, babu wani dalili na fasaha da ya sa za ku zaɓi nau'in ma'ajin ajiya ɗaya akan wani. Kuna iya sa kowace hanya ta yi aiki. Ina farin cikin magana game da shi, amma ba ni da sha'awar dalilan fasaha na wucin gadi wanda ya sa wani ya fi wani.

Na yarda da sashin farko na batun Matt:

Domin a sikelin, monorepository zai magance duk matsalolin iri ɗaya waɗanda polyrepository ke warwarewa, amma a lokaci guda tilasta muku ku haɗa lambar ku tam kuma yana buƙatar ƙoƙari mai ban mamaki don haɓaka scalability na tsarin sarrafa sigar ku.

Dole ne ku magance matsalolin iri ɗaya ko da kun zaɓi monorepository ko polyrepository. Ta yaya kuke sakin saki? Menene tsarin ku na sabuntawa? Daidaituwar baya? Dogaran aikin giciye? Wadanne nau'ikan gine-gine ne aka yarda? Ta yaya kuke sarrafa ginin ku da gwada kayan aikin ku? Jerin ba shi da iyaka. Kuma za ku warware su duka yayin da kuke girma. Babu cuku kyauta.

Ina tsammanin hujjar Matt tayi kama da ra'ayoyin injiniyoyi da yawa (da manajoji) da nake girmamawa. Wannan yana faruwa ne ta fuskar injiniyan da ke aiki akan sashin ko ƙungiyar da ke aiki akan sashin. Kuna jin abubuwa kamar:

  • The codebase yana da girma - Bana buƙatar duk wannan takarce.
  • Yana da wuya a gwada saboda dole ne in gwada duk wannan kayan aikin da ba na buƙata.
  • Yana da wuya a yi aiki tare da dogara na waje.
  • Ina bukatan tsarin sarrafa nau'ikan kama-da-wane na.

Tabbas, duk waɗannan abubuwan sun dace. Wannan yana faruwa a cikin lokuta biyu - a cikin polyrepository Ina da takarce nawa, ban da wanda ake buƙata don ginin ... Ina iya buƙatar wasu takarce. Don haka "kawai" na ƙirƙira kayan aikin da ke duba duk aikin. Ko kuma na ƙirƙiri monorepository na bogi tare da submodules. Za mu iya yawo a cikin wannan dukan yini. Amma ina tsammanin hujjar Matt ta rasa babban dalilin, wanda na jujjuya shi sosai don goyon bayan monorepository:

Yana haifar da sadarwa kuma yana nuna matsaloli

Lokacin da muka raba ma'ajiyar ajiya, muna haifar da matsala ta gaskiya ta daidaitawa da bayyana gaskiya. Wannan ya yi daidai da yadda muke tunani game da ƙungiyoyi (musamman yadda kowane membobi suke tunani game da su): muna da alhakin wani sashi. Muna aiki a ware. An kayyade iyakoki akan ƙungiyara da kuma ɓangaren(s) da muke aiki akai.

Yayin da gine-ginen ya zama mafi rikitarwa, ƙungiya ɗaya ba za ta iya sarrafa shi ita kaɗai ba. Injiniyoyi kaɗan ne ke da tsarin gaba ɗaya a cikin kawunansu. Bari mu ce kuna sarrafa sashin da aka raba A wanda Ƙungiyoyin B, C, da D ke amfani da su. Ƙungiya A tana sake fasalin, inganta API, da kuma canza aiwatar da ciki. Sakamakon haka, canje-canjen ba su dace da baya ba. Wace shawara kuke da ita?

  • Nemo duk wuraren da ake amfani da tsohuwar API.
  • Shin akwai wuraren da ba za a iya amfani da sabon API ba?
  • Shin za ku iya gyarawa da gwada sauran abubuwan da aka gyara don tabbatar da cewa ba su karye ba?
  • Shin waɗannan ƙungiyoyi za su iya gwada canje-canjenku a yanzu?

Lura cewa waɗannan tambayoyin sun kasance masu zaman kansu daga nau'in ma'ajiya. Kuna buƙatar nemo ƙungiyoyin B, C da D. Kuna buƙatar yin magana da su, gano lokacin, fahimtar abubuwan da suka fi dacewa. Aƙalla muna fatan za ku yi.

Babu wanda yake son yin wannan da gaske. Wannan ba shi da daɗi da yawa fiye da gyara API ɗin tsine. Duk mutum ne kuma ya lalace. A cikin polyrepository, zaku iya yin canje-canje kawai, ba da shi ga mutanen da ke aiki akan wannan ɓangaren (wataƙila ba B, C ko D) don bita, sannan ku ci gaba. Ƙungiyoyin B, C da D za su iya kasancewa tare da sigar su ta yanzu a yanzu. Za a sabunta su lokacin da suka gane hazakar ku!

A cikin ma'auni, ana canja alhaki ta tsohuwa. Ƙungiya A ta canza ɓangaren su kuma, idan ba a yi hankali ba, nan da nan ta karya B, C da D. Wannan yana kaiwa ga B, C da D suna nunawa a ƙofar A, suna mamakin dalilin da yasa Ƙungiyar A ta karya taron. Wannan yana koya wa A cewa ba za su iya tsallake lissafina na sama ba. Dole ne su yi magana game da abin da za su yi. Shin B, C da D za su iya motsawa? Me zai faru idan B da C zasu iya, amma D yana da alaƙa ta kud da kud da tasirin tsohon algorithm ɗin?

Sai mu yi magana kan yadda za mu fita daga cikin wannan hali:

  1. Taimako don APIs na ciki da yawa, kuma zai yiwa tsohon algorithm alama kamar yadda aka yanke har sai D zai iya daina amfani da shi.
  2. Taimako don nau'ikan saki da yawa, ɗaya tare da tsohon dubawa, ɗaya tare da sabon.
  3. Jinkirta sakin canje-canjen A har sai B, C, da D za su iya karɓe shi lokaci guda.

Bari mu ce mun zaɓi 1, APIs da yawa. A wannan yanayin muna da guda biyu code. Tsoho da sabo. Ya dace sosai a wasu yanayi. Muna duba tsohuwar lambar, mu yi masa alama kamar yadda aka yanke, kuma mun yarda kan jadawalin cirewa tare da ƙungiyar D. Mahimmanci iri ɗaya ne ga ma'ajiyar poly da mono.

Don saki nau'i-nau'i masu yawa, muna buƙatar reshe. Yanzu muna da abubuwa biyu - A1 da A2. Ƙungiyoyin B da C suna amfani da A2 kuma D suna amfani da A1. Muna buƙatar kowane bangare ya kasance a shirye don fitarwa saboda ana iya buƙatar sabuntawar tsaro da sauran gyare-gyaren kwaro kafin D ya ci gaba. A cikin polyrepository, za mu iya ɓoye wannan a cikin reshe mai tsawo wanda ke jin dadi. A cikin monorepository, muna tilasta ƙirƙira lambar a cikin sabon tsari. Ƙungiyar D har yanzu dole ne ta yi canje-canje ga ɓangaren "tsohuwar". Kowa na iya ganin farashin da muke biya a nan - yanzu muna da lamba sau biyu, kuma duk wani gyaran kwaro da ya shafi A1 da A2 dole ne ya shafi su biyun. Tare da tsarin reshe a cikin polyrepository, wannan yana ɓoye a bayan ceri-pick. Muna ganin farashin ya yi ƙasa da ƙasa saboda babu kwafi. Daga mahangar aiki, farashin iri ɗaya ne: za ku gina, saki, da kuma kula da manyan lambobi guda biyu iri ɗaya har sai kun iya share ɗayansu. Bambanci shine cewa tare da monorepository wannan ciwon kai tsaye da bayyane. Wannan ma ya fi muni, kuma hakan yana da kyau.

A karshe, mun kai ga batu na uku. Jinkirin sakin Yana yiwuwa canje-canjen da A ya yi zai inganta rayuwar Ƙungiyar A. Muhimmanci, amma ba gaggawa ba. Za mu iya jinkirta kawai? A cikin polyrepository, muna tura wannan don saka kayan tarihi. Tabbas muna gaya wa Team D. Kawai ku tsaya kan tsohon sigar har sai kun kama! Wannan yana saita ku don kunna matsoraci. Ƙungiya A ta ci gaba da aiki akan ɓangaren su, ta yin watsi da gaskiyar cewa Team D na amfani da wani sabon zamani (wannan shine matsalar Team D, wawa ne). A halin yanzu, Team D yayi magana mara kyau game da halin rashin kulawar Team A game da kwanciyar hankali, idan sun yi magana game da shi kwata-kwata. Watanni sun shude. A ƙarshe, Ƙungiyar D ta yanke shawarar duba yiwuwar sabuntawa, amma A kawai yana da ƙarin canje-canje. Ƙungiya A da kyar ta tuna lokacin ko yadda suka karya D. Haɓakawa ya fi zafi kuma zai ɗauki lokaci mai tsawo. Wanne ya aika da shi zuwa ƙasa mai fifiko. Har zuwa ranar da muke da batun tsaro a cikin A wanda ke tilasta mana yin reshe. Dole ne ƙungiyar A ta koma cikin lokaci, nemo wurin lokacin da D ya tsayayye, gyara matsalar a can, kuma a shirya shi don fitarwa. Wannan shi ne ainihin zabin da mutane suke yi, kuma shi ne mafi muni. Da alama yana da kyau ga duka Team A da Team D muddin za mu iya yin watsi da juna.

A cikin monorepository, na uku da gaske ba zaɓi bane. An tilasta muku ku magance lamarin ta ɗayan hanyoyi biyu. Kuna buƙatar ganin farashin samun rassan saki biyu. Koyi don kare kanku daga sabuntawa waɗanda ke warware daidaituwar baya. Amma mafi mahimmanci: ba za ku iya guje wa yin tattaunawa mai wahala ba.

A cikin kwarewata, lokacin da ƙungiyoyi suka yi girma, ba zai yiwu a ci gaba da kiyaye tsarin duka ba, kuma wannan shine mafi mahimmancin sashi. Dole ne ku inganta ganin rashin jituwa a cikin tsarin. Dole ne ku yi aiki tuƙuru don samun ƙungiyoyi su nisanta kansu daga abubuwan haɗinsu kuma su kalli aikin sauran ƙungiyoyi da masu amfani.

Ee, zaku iya ƙirƙirar kayan aikin da ke ƙoƙarin warware matsalar polyrepository. Amma gwaninta na koyar da ci gaba da bayarwa da aiki da kai a cikin manyan masana'antu ya gaya mani wannan: dabi'ar da ta dace ba tare da amfani da ƙarin kayan aikin ba shine halin da kuke tsammanin gani. Dalili na asali na polyrepository shine keɓewa, wannan shine gaba ɗaya batu. Tsohuwar halin da ake ciki na monorepository alhaki ne na kowa da kuma bayyana gaskiya, shi ke nan duka batu. A cikin duka biyun, zan ƙirƙiri kayan aiki wanda zai santsi da m gefuna. A matsayina na jagora, zan zaɓi wurin zama ɗaya a kowane lokaci saboda kayan aikin suna buƙatar ƙarfafa al'adun da nake so, kuma al'ada ta fito ne daga ƙananan yanke shawara da aikin yau da kullun.

Masu amfani da rajista kawai za su iya shiga cikin binciken. Shigadon Allah.

Su wane ne manyan masu tsattsauran ra'ayi? Magoya bayan:

  • Monorepo

  • Rust

  • Zaɓen da ba daidai ba / duka biyu

Masu amfani 33 sun kada kuri'a. Masu amfani 13 sun kaurace.

source: www.habr.com

Add a comment