
Relativno kasno dolazim na temu udaljenih razvojnih okruženja (takođe poznatih kao Cloud razvojna okruženja). Glavni razlog je taj što nisam radio u razvojnom timu više od šest godina. Međutim, sada radim za Loft Labs i imamo proizvod za daljinsko razvojno okruženje: DevPod . Hteo sam da razumem našu ponudu vrednosti jer ću biti u FOSDEM- u koji vodi DevPod štand .
Kao bivši programer, živo se sjećam bola postavljanja razvojnog okruženja svakog programera. Na početku moje karijere, arhitekta je morao bolno da konfiguriše moju razvojnu mašinu, tako da je to bilo slično njegovoj postavci. Kasnije sam to isto radio za članove mog tima više puta. Opseg mogućih neslaganja koje utiču na razvoj je praktično beskonačan: operativni sistem, naravno, verzija i ukus SDK-ova, npr . Java Eclipse Temurin vs SapMachine, git hooks, itd. Bilo je znoja, truda i krvi na svakom projektu.
Tokom godina, vidio sam neke zanimljive pristupe reprodukciji razvojnih okruženja. U početku su poticali iz VM-a, a zatim iz kontejnera. Mislim da je Vagrant bio prvi alat koji mi je privukao pažnju: prisustvovao sam jednom govoru 2012. gdje je govornik spomenuo da ga je koristio za postavljanje mašina prije svojih treninga.
Arhitektura aplikacija značajno je evoluirala tokom godina, postajući složenija i sofisticiranija. Prije mnogo godina, šanse su bile da je jedina infrastrukturna ovisnost bila SQL baza podataka. U JVM ekosistemu, imali smo sreće da imamo JDBC, API koji bi radio u svim SQL bazama podataka. Sve što je trebalo da uradite je da napišete standardni SQL i mogli ste da konfigurišete instancu baze podataka u vreme izvođenja. Sa ugrađenim bazama podataka kao što su Apache Derby i H2 , nije vam bila potrebna posebna Oracle instanca za svakog programera.
Vremena su se promenila. Nije neuobičajeno da aplikacije trebaju SQL bazu podataka, NoSQL bazu podataka, Kafka klaster i nekoliko dodatnih servisa aplikacija. Organizacije koje razvijaju takve aplikacije već koriste neke tehnologije vezane za kontejnere, npr . Docker ili Kubernetes, za upravljanje ovom složenošću.
Međutim, to ne rješava početni problem: kako uskladiti IDE, njegove dodatke, SDK(ove), git kuke i sve ostalo? Vjerovatno ste to pogodili iz naslova - Remote Development Environments.
U uvodu sam spomenuo da se RDE-ovi nazivaju Cloud Development Environments. Glavna ideja iza RDE-ova je da pohranite sve što možete u oblaku i podijelite sa svim programerima. Osim toga, želite da rade na najrasprostranjenijim Cloud provajderima i najčešće korištenim IDE-ovima. Kada se pojavi takva potreba, vrijeme je da se akteri u industriji okupe oko standarda. Microsoft je pokrenuo standard razvojnog kontejnera za svoj dodatak za razvoj VS Code Remove upravo za ovu svrhu.
Kontejner za razvoj (ili skraćeno dev kontejner) omogućava vam da koristite kontejner kao potpuno funkcionalno razvojno okruženje. Može se koristiti za pokretanje aplikacije, za odvajanje alata, biblioteka ili vremena izvođenja potrebnih za rad sa kodnom bazom, kao i za pomoć u kontinuiranoj integraciji i testiranju. Dev kontejneri se mogu pokretati lokalno ili daljinski, u privatnom ili javnom oblaku, u raznim pomoćnim alatima i uređivačima.
Specifikacija razvojnog kontejnera nastoji pronaći načine za obogaćivanje postojećih formata uobičajenim postavkama, alatima i konfiguracijom specifičnim za razvoj, a istovremeno pruža pojednostavljenu, neorganiziranu opciju jednog kontejnera – tako da se mogu koristiti kao okruženja za kodiranje ili za kontinuiranu integraciju i testiranje. Osim osnovnih metapodataka specifikacije, specifikacija također omogućava programerima da brzo dijele i ponovo koriste korake postavljanja kontejnera kroz značajke i predloške.
Konfiguracijski fajl je devcontainer.json
. Ovdje možete pronaći referencu šeme. Proizvodi VS Code, Visual Studio i IntelliJ mogu iskoristiti datoteku devcontainer.json
. Na strani provajdera podržavaju ga GitHub Codespaces, CodeSandbox i DevPod.
DevPod je rješenje koje koristi devcontainer.json
. Implementira tri glavna svojstva:
DevPod je dizajniran tako da bude jednostavan za korištenje i jednostavan, što ga čini lakim za korištenje. Odlučio sam da napišem ovaj post jer sam bio impresioniran proizvodom i kako bih doveo svoje misli u red.
Prvi korak je da instalirate sam DevPod. Ja sam na Macu; postoji domaći recept.
brew install devpod
Jednom instaliran, možete ga pokrenuti iz CLI ili GUI. Ja preferiram GUI, na početku, kako bi lakše razumjeli dostupne opcije.
DevPod nudi dobavljačima: lokacije na kojima se mogu pokrenuti kontejneri. Podrazumevano je Docker. Možete dodati dodatne dobavljače, uključujući Cloud Providere i Kubernetes klastere.
Za ovu objavu ću zadržati Docker—koristim OrbStack. Sada na meso. Idemo na stavku menija radnog prostora. Ako ste već kreirali radne prostore, trebali bi se pojaviti ovdje. Pošto je ovo naša prva poseta, napravićemo je. Kliknite na dugme btn:[Kreiraj radni prostor]. Isprobajmo jedan od primjera za brzi početak, tj . Rust. Moj IDE izbor je IntelliJ IDEA, ali vi možete izabrati svoj. Nakon što odaberete sliku, IDE i dobavljača, kliknite na Kreiraj radni prostor.
U ovom trenutku, DevPod će preuzeti sliku i otvoriti projekat koji radi u OrbStack-u u IntelliJ-u.
Od sada možemo sa zadovoljstvom početi raditi na našem Rust projektu, uvjereni da svaki član tima koristi istu Rust verziju.
Imajte na umu da će prvi put kada koristite ovu postavku, DevPod preuzeti i JetBrains klijent. Ipak, to je jednokratno kašnjenje preuzimanja.
Isto vrijedi i za Git pre-urezivanje zakačiva, na primjer. Ako više volite da razvijate unutar drugog IDE-a, odaberite ga u vrijeme pokretanja i sve je u redu. Kada završite sa svojim dnevnim poslom, zaustavite kontejner. Ako radite u oblaku, to štedi novac. Sljedećeg dana nastavite sa kontejnerom i nastavite s radom.
DevPod je lijep alat oko vašeg pojasa s alatima koji omogućava vašim razvojnim timovima da dijele istu konfiguraciju stroja bez muke. U ovom uvodnom postu na blogu pokazao sam mali dio onoga što možete učiniti. Podstičem vas da iskoristite njegovu moć ako se suočite sa heterogenim razvojnim okruženjima.
Da idemo dalje: