Medii de codare pentru dezvoltatori

Finalizat

În ingineria platformei, una dintre provocările comune este să se asigure că dezvoltatorii își pot configura rapid și consecvent mediile de codare, în special atunci când dezvoltatorii noi se alătură echipelor, dezvoltatorii trec de la un proiect la altul sau este nevoie să scaleze. Automatizarea configurării mediilor pentru dezvoltatori poate simplifica integrarea și poate elimina timpul pierdut din cauza configurațiilor greșite sau a dependențelor rupte. Prin furnizarea de medii preconfigurate sau scripturi de configurare, echipele se pot concentra pe dezvoltare, mai degrabă decât să piardă timpul depanând inconsecvențele de mediu.

Abordarea gestionării mediilor de dezvoltare poate varia, dar include adesea virtualizare, containerizare și șabloane standardizate care se aliniază nevoilor organizației. Aceasta poate varia de la medii Windows complet virtualizate la containere găzduite în cloud pentru dezvoltarea Linux. În plus, crearea de șabloane "start right" care promovează consecvența, cele mai bune practici și securitatea ca cod este esențială pentru menținerea unui proces bine definit, repetabil, care se scalează între echipe. Acest lucru asigură că fluxul de lucru de dezvoltare nu numai că începe fără probleme, dar continuă să adere la cele mai bune practici, menținând proiectele pe drumul cel bun și în conformitate cu standardele de securitate și operaționale.

Automatizarea configurării mediului de codare pentru dezvoltatori

Începerea și normalizarea mediului de codare a dezvoltatorilor poate fi o provocare majoră în sistemele de inginerie. Aspectele cheie includ:

  • Timpi lungi de integrare: poate dura săptămâni pentru ca un nou dezvoltator să contribuie, mai ales atunci când transferă dezvoltatori între proiecte sau aduce contractori.
  • Inconsecvențe: Diferențele dintre mediile dezvoltatorilor și sistemele CI duc adesea la probleme de tipul "funcționează pe mașina mea".
  • Instabilitatea mediului: Experimentarea sau actualizarea cadrelor și software-ului poate întrerupe configurațiile existente, ceea ce duce la depanarea potențial lungă și complexă.
  • Întârzieri de revizuire a codului: modificările de configurare necesare pentru revizuirea codului pot încetini dezvoltarea, deoarece trebuie anulate mai târziu.
  • Creșterea pentru toate părțile interesate: Rolurile care nu sunt de dezvoltare (cum ar fi operatorii, QA și sponsorii de afaceri) trebuie, de asemenea, să fie instruite și implicate, ceea ce provoacă mai multe întârzieri.

Pentru a rezolva aceste probleme, standardizarea și automatizarea configurării mediilor de dezvoltare prin instrumente, scripturi sau medii containerizate/virtualizate poate ajuta. Mediile preconfigurate adaptate proiectelor specifice sau nevoilor organizaționale pot asigura consecvența, pot reduce timpul de configurare și pot îmbunătăți productivitatea generală.

Medii de codare pentru Windows și Linux

Atunci când vizați Windows pentru înlocuirea stației de lucru sau virtualizarea completă, mașinile virtuale (VM) oferă în general cea mai bună funcționalitate. Această abordare este benefică pentru dezvoltarea clientului Windows, gestionarea aplicațiilor web .NET full framework sau întreținerea serviciilor Windows. Puteți utiliza mașini virtuale găzduite în cloud, cum ar fi Microsoft Dev Box, care oferă virtualizare completă a stațiilor de lucru Windows cu integrare cu software-ul de gestionare a desktopului. Alternativ, VM-urile locale pot fi utilizate cu instrumente precum HashiCorp Vagrant pentru gestionarea mediilor, iar HashiCorp Packer poate fi folosit pentru a construi imagini VM atât pentru Vagrant, cât și pentru Dev Box.

Pentru a viza Linux, virtualizarea spațiului de lucru este mai potrivită, concentrându-se pe medii specifice proiectului sau aplicațiilor, mai degrabă decât pe înlocuirea unui desktop complet. Containerele găzduite în cloud sunt o alegere comună, cu opțiuni precum GitHub Codespaces, care oferă un mediu Dev Container bazat pe cloud compatibil cu VS Code, JetBrains IntelliJ și instrumente bazate pe terminal. Dacă opțiunile cloud nu corespund nevoilor dvs., SSH sau tunelul la distanță al VS Code acceptă conectarea la mașinile virtuale Linux auto-găzduite. În plus, containerele locale sunt o opțiune dacă preferați să rulați Dev Containers local. VS Code și IntelliJ oferă suport robust pentru aceste medii. Pentru mai multă flexibilitate, pot fi utilizate și VM-uri găzduite în cloud, unde puteți SSH direct în VM-uri Linux auto-gestionate. În cazurile în care dezvoltatorii lucrează exclusiv pe Windows, Windows Subsystem for Linux (WSL) oferă o soluție locală convenabilă de dezvoltare Linux. Distribuțiile WSL pot fi exportate și partajate între echipe. Serviciile bazate pe cloud, cum ar fi Microsoft Dev Box , acceptă, de asemenea, WSL pentru dezvoltarea Linux.

Utilizarea șabloanelor de aplicații pentru consecvență și standardizare

Pentru a promova consecvența, standardizarea și cele mai bune practici în echipele de dezvoltare, organizațiile pot utiliza șabloane de aplicații ca parte a unei abordări "totul ca cod". Aceste șabloane pot eficientiza dezvoltarea, asigurându-se că echipele rămân pe căile pavate stabilite. Pentru organizațiile care urmează un model monorepo, instrumente precum Azure Developer CLI (azd) pot fi utilizate pentru a crea șabloane care includ nu numai configurări sursă de aplicații, ci și configurații de mediu și fluxuri de lucru CI/CD.

Atunci când creați șabloane pentru dezvoltare, este util să luați în considerare diverse domenii cheie pentru a vă asigura că șabloanele sunt cuprinzătoare și consecvente, respectând cele mai bune practici:

  • Exemplu de cod sursă: Includeți exemplu de cod sursă pentru a ghida dezvoltatorii către limbajele recomandate, modelele de aplicații, serviciile, API-urile, SDK-urile și modelele arhitecturale.
  • Scripturi de compilare și implementare: Încorporați scripturi care oferă o modalitate consecventă de a declanșa compilări și de a implementa local sau într-un mediu sandbox. Asigurați-vă că sunt incluse configurații de depanare în IDE sau editor pentru a se sincroniza cu conductele CI/CD.
  • Configurare CI/CD: Furnizați fluxuri de lucru sau conducte pentru construirea și implementarea aplicațiilor, utilizând fluxuri de lucru reutilizabile și centralizate. Tratați-le ca șabloane "start corect" și asigurați-vă că permit declanșarea manuală atunci când este necesar.
  • Active de infrastructură ca cod (IaC): Includeți configurații recomandate și referințe la modulele gestionate central pentru a vă asigura că configurațiile de infrastructură respectă cele mai bune practici.
  • Securitate și politică ca active de cod: Adăugați fișiere de configurare legate de securitate, cum ar fi CODEOWNERS și dependabot.yaml, pentru a încorpora securitatea direct în procesul de dezvoltare. Fluxurile de lucru programate pentru scanările de securitate, inclusiv instrumente precum Microsoft Defender pentru cloud, ar trebui să fie furnizate pentru a încorpora securitatea în canalul CI/CD și pentru a îmbunătăți securitatea lanțului de aprovizionare.
  • Observabilitate, monitorizare și înregistrare în jurnal: Furnizați configurații de configurare pentru instrumentele de monitorizare, cum ar fi IaC pentru implementarea agentului sau configurarea ca cod pentru monitorizarea tablourilor de bord. Includeți un exemplu de cod pentru înregistrarea în jurnal și urmărirea distribuită pentru a vă asigura că aplicațiile pot fi monitorizate eficient odată implementate.
  • Configurarea mediului de codare: Adăugați fișiere de configurare pentru linter-uri, formatatori și IDE-uri și configurați scripturi pentru medii de dezvoltare virtualizate, cum ar fi devcontainer.json, devbox.yaml sau fișiere legate de Docker.
  • Configurarea testului: Furnizați fișiere pentru testarea unitară și scenarii de testare mai extinse, utilizând instrumente precum Microsoft Playwright Testing sau Azure Load Testing.

Configurarea instrumentului de colaborare: dacă este acceptat, includeți șabloane de sarcini/probleme sau șabloane PR ca cod. Opțional, furnizați fluxuri de lucru care utilizează CLI-uri sau API-uri disponibile pentru a actualiza sistemele sau a configura instrumente de colaborare precum Microsoft Teams sau Slack.