Il team di Visual Studio Code ha presentato in questi giorni un nuovo set di estensioni, disponibili in forma di preview, che abilitano le funzionalità di sviluppo in remoto all'interno di contaier o macchine virtuali. Esse operano con WSL (Windows Subsystem for Linux), dunque gli sviluppatori non saranno vincolati ad una piattaforma specifica.
Le nuove funzionalità di remote development sono nate grazie al feedback ricevuto dalla vasta community di utenti di VS Code. Microsoft ha constatato infatti che una grande fetta di sviluppatori sfruttava l'IDE per lavorare su progetti basati su container o macchine virtuali in remoto.
L'implementazione di queste estensioni non è stato semplicissimo, i developer di Redmond hanno dovuto trovare il giusto approccio che permettesse di non duplicare gli ambienti di sviluppo. E' stata necessaria la creazione di un sistema che consentisse a VS Code di interfacciarsi oltre che con le librerie disponibili su Windows anche con quelle installate sulla distribuzione Linux di WSL.
Ciò per poter lavorare con i tool di VS Code e connettersi contemporaneamente al Docker in remoto, o alla macchine virtuale, per lavorare in un determinato ambiente in tempo reale.
Le VS Code Remote Extensions si occupano proprio di questo e si chiamano Remote - WSL, Remote - SSH e Remote - Containers, con esse è possibile lavorare tramite remote workspace, stabilendo connessioni SSH ed eseguendo comandi su WSL, Docker o su macchine virtuali.
Remote - WSL
Remote - WSL è l'estensione che consente di usare WSL come un full development environment.
Si potranno sviluppare ed eseguire la proprie applicazione Linux su Windows ed effettuarne il debug. Gli sviluppatori avranno quindi a disposizione strumenti per modificare file in WSL o in un Windows filesystem "mounted" (ad esempio /mnt/c
).
I comandi e le estensioni saranno eseguiti direttamente all'interno dell'ambiente Linux, dunque non ci si dovrà preoccupare delle binary compatibility o di altre problematiche derivate dallo sviluppo multipiattaforma.
Remote - SSH
Remote - SSH è l'estensione che permette di accedere ai sistemi in remoto (directory, VM, container) eseguendo un server SSH. Sfruttando la Secure Shell è possibile accedere a sistemi più potenti, o specializzati, disponibili solo in remoto.
Se si sta lavorando per esempio ad un progetto di deep learning è necessario avere accesso ad una GPU molto potente configurata con tutti i tool ed i framework necessari per eseguire l'addestramento dei modelli tramite dataset su larga scala. Tale ambiente è ovviamente disponibile quasi esclusivamente tramite un Cloud provider. Lo sviluppatore potrà quindi accedere a tale ambiente da remoto, direttamente da VS Code, usando Remote - SSH
Remote - Containers
Remote - Containers permette di usare Docker come un development container. I sistemi di container possono infatti diventare degli ottimi development environment.
Con Remote - Containers si potrà quindi sviluppare in modo completamente isolato dal proprio sistema, senza impattare eccessivamente sulle risorse hardware disponibili e con un toolchain facilmente riproducibile.