Data Engineer ili umri: priča o jednom programeru

Početkom prosinca napravio sam kobnu pogrešku i napravio prekretnicu u svom životu developera te sam prešao u Data Engineering (DE) tim unutar tvrtke. U ovom ću članku podijeliti neka zapažanja koja sam napravio tijekom dva mjeseca rada u DE timu.

Data Engineer ili umri: priča o jednom programeru

Zašto Data Engineering?

Moje putovanje u DE počelo je u ljeto 2019., kada smo Xneg idemo Škola distribuiranog računarstva, i tu sam postigao prosvjetljenje. Počeo sam se zanimati za temu, proučavati algoritme pa čak i o njima za pisanje, a potom razmišljali o opsegu primjene i vrlo brzo ustanovili da su praktična primjena u našoj tvrtki distribuirane baze podataka.

Što točno radi naš tim? Mi, poput svih modernih dječaka i djevojčica, želimo postati tvrtka vođena podacima. A kako bi to postalo moguće, moramo barem izgraditi pouzdano skladište, koje se može koristiti za izradu bilo kakvih izvješća koja su potrebna tvrtki. Ali najvažnije je da se podacima u ovoj pohrani mora vjerovati. Štoviše, koristeći te podatke, morate moći vratiti stanje sustava u trenutku t. Sve je to komplicirano činjenicom da živimo u vrlom novom svijetu mikroservisa, a ta ideologija podrazumijeva da svaki servis implementira svoju malu funkcionalnost, njegova baza podataka je vlastiti posao i može je brisati barem svaki dan, ali na u isto vrijeme moramo biti u stanju primiti i obraditi stanje usluge.

Ako želite biti vođeni podacima, prvo postanite vođeni događajima

Nije tako jednostavno. Događaji su različiti, a programer i podatkovni inženjer gledaju na njih drugačije. Razgovor o događajima je tema za poseban članak, pa neću o tome ovdje. Osim toga, takav članak već ima napisao sam izvjesni Martin Fowler, neću mu uzeti lovorike, neka i on postane slavan.

Općenito, ima se o čemu razmišljati i zato je ovaj kraj atraktivan. Slučajno je u našoj tvrtki Data Engineer puno šire područje odgovornosti nego samo osoba koja piše ETL/ELT cjevovode (ako ne znate što ove kratice znače, dođite na sastati se. Kao kontekstualno oglašavanje).

Bavimo se arhitekturom pohrane, modeliranjem podataka, pitanjima vezanim uz sigurnost podataka i samim cjevovodima, naravno. Također se moramo pobrinuti da, s jedne strane, naša prisutnost nije jako opterećujuća za razvojne programere proizvoda i da ih moraju što manje ometati naši zahtjevi prilikom urezivanja novih značajki u sustav, as druge strane, potrebno ih je osigurati prikladno raspoređene u podacima za pohranu za analitičare i BI tim. Tako mi živimo.

Poteškoće pri prijelazu iz razvoja

Prvog dana na poslu susreo sam se s brojnim poteškoćama koje želim podijeliti s vama.

1. Prvo što sam vidio je nedostatak tulinga i nekih praksi. Uzmimo, na primjer, pokrivenost koda testovima. Imamo stotine okvira za testiranje u razvoju. Kod rada s podacima sve je kompliciranije. Da, možemo testirati ETL cjevovode na testnim podacima, ali sve to moramo raditi ručno i tražiti rješenja za svaki pojedini slučaj. Zbog toga je pokrivenost testom mnogo lošija. Srećom, postoji još jedan sloj povratnih informacija u obliku praćenja i zapisa, ali to već zahtijeva da reagiramo reaktivno, a ne proaktivno, što je ljutito i uznemirujuće.

2. Svijet iz DE perspektive uopće nije onakav kakav se čini običnom programeru proizvoda (pa, naravno, čitatelj nije takav, i on već sve zna, ali ja nisam znao i sada sam zeznuti ga). Kao programer, kreiram vlastitu mikroservis, stavim podatke u [bazu podataka po vašem izboru], tamo spremim svoje stanje, dobijem nešto po ID-u i sve je u redu. Usluga je spora, narudžbe su zbunjujuće, to je sve. Traže me da potražim svoje stanje u drugom servisu, pa ću ubaciti event u neki RabbitMQ i to je to. I tu smo se ponovno vratili na gore opisano pitanje događaja.

Ono što servisu treba za operativni rad ne odgovara nam za povijesne podatke, pa se postavlja pitanje prerade servisnih ugovora i bliskog rada s razvojnim timovima. Ne možete ni zamisliti koliko nam je sati trebalo da se složimo: kakav je on Event Driven u našem društvu.

3. Treba misliti svojom glavom. Ne, ne mislim da programeri ne razmišljaju (iako tko sam ja da govorim u ime svih), samo u razvoju proizvoda vrlo često već imate neku vrstu arhitekture i režete različita miješanja iz zaostataka. Naravno, to zahtijeva planiranje i promišljanje, ali ovo je tok rada, gdje je glavni problem jednostavno obaviti ga dobro i učinkovito.

Za nas to nije tako jednostavno jer prijenos raznih komponenti sustava iz toplog i ugodnog monolita u svijet divlje mikroservisne džungle nije tako jednostavan. Kada servis počne izbacivati ​​događaje, morate ponovno razmotriti logiku popunjavanja pohrane jer podaci sada izgledaju drugačije. Tu treba puno i temeljito razmišljati, ne više kao programer, već kao data inženjer. Normalna je priča kada dane provodite s bilježnicom i olovkom ili s flomasterom za pločom. Jako je teško, ne volim razmišljati, volim i produkciju.

4. Možda je najvažnija informacija. Što radimo kada nam nedostaje znanja? Tko je rekao stackoverflow? Izvedite ovu osobu iz sobe. Idemo čitati dokumente, knjige na tu temu, a postoji i zajednica koja organizira forume, susrete i konferencije. Dokumentacija je odlična, ali nažalost može biti nepotpuna. Cosmos DB koristimo u nizu projekata. Sretno u čitanju dokumentacije za ovaj proizvod. Knjige su jedini spas, srećom, one postoje i mogu se naći, sadrže puno temeljnih znanja i morate čitati puno i stalno. Ali problem je u zajednici.

Sada je teško pronaći barem jednu adekvatnu konferenciju ili meetup na našim prostorima. Ne, naravno, postoji mnogo susreta s riječju Data, ali pored ove riječi obično postoje čudne kratice poput ML ili AI. Dakle, nije ovo za nas, mi pričamo kako izgraditi skladišta, a ne kako se mazati neuronima. Ovi hipsteri su preuzeli sve. Kao rezultat toga, ostali smo bez zajednice. Usput, ako ste Data Engineer i poznajete dobre zajednice, napišite u komentarima.

Zaključci i najava susreta

Što ćemo dobiti na kraju? Moje prvo iskustvo mi govori da će osjećaj u koži podatkovnog inženjera biti koristan za svakog programera. To nam samo omogućuje da drugačije gledamo na stvari i da se ne iznenadimo kad nam se oči zakrvave kad vidimo kako programeri postupaju sa svojim podacima. Dakle, ako postoji DE u vašoj tvrtki, samo razgovarajte s tim dečkima, naučit ćete puno novih stvari (o sebi).

I za kraj, najava. Budući da je teško pronaći susrete na našu temu tijekom dana, odlučili smo napraviti vlastiti. Zašto smo gori? Srećom imamo nevjerojatno Schvepsss i naši prijatelji iz Laboratorija za nove profesije, koji, poput nas, smatraju da su podatkovni inženjeri nepravedno uskraćeni za pozornost.

Ovom prilikom pozivam sve kojima je stalo da dođu na naš prvi community meetup obećavajućeg naziva “DE or DIE” koji će se održati 27.02.2020. veljače XNUMX. u uredu Dodo Pizze. Detalji na TimePad.

Ako se nešto dogodi, bit ću tu, možete mi osobno u lice reći koliko griješim u vezi s programerima.

Izvor: www.habr.com

Dodajte komentar