vineri, 10 octombrie 2014

DevOps - sau "sunt programator si am "root" pe servere"

DevOps - unul din multele cuvinte "magice" care au intrat in vocabularul nostru in ultimii ani, odata cu "continous integration" (putin mai vechi, dar inteles abia acum), "cloud", "test driven development" si asa mai departe.

Totusi, nimeni nu are o explicatie standard pentru termen si interpreteaza acest rol contextual.
Ceea ce e bine si corect - DevOps este termenul, rolul insa se defineste in functie de nevoile companiei, a workflowului, modalitatilor de lucru, arhitecturii, tehnologiilor, etc.
Ce am intalnit insa, irefutabil si periodic ca si neclar referitor la acest concept este legat de accesul privilegiat pe servere - eternul "root debate", care e vechi de cand exista "root" si de cand exista "dev".

Din experienta, exista o curba Gaussiana in istoria unei companii / unei echipe IT / de tehnologie - care deseneaza relatia intre acesul programatorilor "pe servere, ca root" si timp.

Adica, cand compania este tanara, "toata lumea" are acces privilegiat la infrastructura existenta. Mai apoi, odata cu cresterea generata de succesul produsului creat si cu cresterea echipei (in stransa relatie), apare separarea (clasica) a rolurilor in echipele tehnice. Adica, apar roluri ca : sysadmin, QA, integrator, release master, etc.

Surpriza insa vine dupa ce compania trece la maturitate - intervine o "democratizare" a structurilor echipei, cu scopul principal de a imparti cat mai mult din ownership. Da, ownershipul este principala problema cu care se bat echipele pe schema clasica de functionare si discutii de genul "QA nu a gasit problema asta cat a fost la ei?", "DBA nu mi-a spus ca selectul meu este gresit si puteam folosi index acolo" si asa mai departe. In afara de neproductivitatea acestor discutii, problema majora este spargerea echipelor in boxuri de responsabilitate, care genereaza de fapt o scadere drastica a ownershipului si implicarii. Ceea ce este riscant sa se intample si dramatic daca chiar se ajunge aici.


Si aici intervin o serie de concepte noi, printre care si DevOPS. Care, de fapt, inseamna extinderea ownershipului pe arii cat mai mare din procesul de dezvoltare. Adica, DEV este responsabil cu etapa de codare, de testare unitara, de testare functionala si chiar de release/maintenance. Full stack!

Si asta, dragii mosului, inseamna DevOps : devii care au acces ca "root" pe masini pentru ca nu exista rolul de sysadmin, dar si programatorii/sysadminii (seniori/experti) care au destule cunostinte tehnice pentru a putea fi responsabili pe o zona extinsa (poate chiar toata!) a procesului de dezvoltare.

Nota :
Ce nu inseamna DevOps?
- "sysadmini care stiu php"
- "testeri care stiu coding"
- "programatori care pot da restart la apache"


miercuri, 21 mai 2014

Da-mi legatura cu tehnicul!


Ieri mi s-a intamplat. Am fost summonat intr-un thread de email intre product_managementul nostru si marketingul unui furnizor. Threadul era despre erorile de conectare ale "sarvarului" furnizorului la platforma noastra via FTP.
First WTF.
Directorul de marketing isi dadea cu multiple pareri despre comunicarea noastra interna, despre procese si proceduri care tin strict de tehnic/PM. Mi s-a parut un moment bun sa intervin, mai ales ca acel furnizor era "implementat" inca de acu' cateva luni. Problema este ca atunci cand s-a remarcat prima data issue-ul, feedbackul a fost dat de catre tehnicul (90% e un singur om) lor (outsource-at) catre marketingul lor, care le-a scris un frumos mail departamentului nostru de ... achizitii.
Second WTF.
Le-am explicat pe scurt (si a fost interpretat ca si raspuns taios si orgolios - ghinion, eu-l categorisesc ca si eficient) cum ca despre probleme tehnice + proiecte diverse (inclusiv marketing - pun intended :) ) sa contacteze dept. PM, achizitiile urmand a fi contactate pentru ... (surpriza maxima, drum roll) ... achizitii! In sfarsit, am concluzionat ca ar fi (totusi) bine ca "tehnicul sa vorbeasca cu tehnicul"...
Incomming tehnicul_lor - paste din email :
INCEARCA DIN LINIE DE COMANDA EXACT CUM AM FACUT SI EU (VEZI ATASAT).
IN MOMENTUL IN CARE II DAU COMANDA “MGET” NU AR TREBUI SA-MI DEA TOATA CALEA CATRE FISIER.
PS: CRED CA MI-ATI BLOCAT IP-UL (xxx.xxx.xxx.xxx)
> - serverul de pe care se incearca conectarea este in spatele unui NAT? ( <-- astea sunt zisele mele)DA
> - serverul de pe care se incearca conectarea este in spatele unui firewall?
DA
> - care este mesajul de eroare primit la incercarea de accesare a unui fisier de pe FTP?
ATASAT
> - tu reusesti sa te conectezi pe acel FTP cu credentialele pe care le folositi in productie?
DA
> - se poate ca modalitatea de conectare la FTP sa fie modificata din activa -> pasiva (si invers)?
NU
Third WTF.
Raspunsul meu continea si :
Cred ca ai facut o greseala, uitand CAPS-LOCK apasat - vezi :
http://fabafter40.tumblr.com/post/43530963637/a-bit-of-advice-for-people-who-always-write-in-all-caps(... si alte materiale echivalente).

Note finale :
- tehnicu' lor facea teste pentru conectarea FTP folosind clientul windows din cmd, care NU stie (by design) de passive_mode ; dar nu e blocker, moving along
- tehnicu' lor facea teste folosind comanda "mget" pentru a downloada un fiser de test, care dadea eroare ; moving along
- i s-a sugerat schimbarea sintaxei din "mget file" in "get file" ; a fost ignorata sugestia, moving along
- i s-a sugerat schimbarea sintaxed din "mget file" in "mget file*" (daca tot are o afinitate pentru mget) ; a fost inorata si aceasta, moving along

Conexiunea la FTP functioneaza in orice mod (activ/pasiv), testat din 3 sisteme de operare, 3 ISP diferiti, inclusiv din toate browserele usuale. 

Threadul are si un apogeu, redat mai jos :
Cum am spus si in mailul trimis catre Xulescu: folosesc linia de comanda si “mget” pentru test.
Pentru tot procesul de import comanda si procesare folosesc un program care la randul lui foloseste o librarie de la Microsoft, si functioneaza pentru alte servere de ftp, descarca fisiere fara probleme.

Atentie - el foloseste doar pentru teste, pentru comunicarea inter-platforma se foloseste altceva. Lui testele ii failau ...

Final : nici in ziua de azi nu-i functioneaza "testele" ...