(Italiano) La mia workstation di sviluppo da Smart Worker
Nella mia attività lavorativa sono stato affiancato e lo sono tuttora da macchine di casa Apple (portatili), partendo dal mio il primo PowerBook G4 ancora operativo e attualmente affidato a mio nipote di quasi sei anni.
A quasi un anno di attività lavorativa in modalità da Smart Worker, ho sentito la necessità di dotarmi di una vera e propria workstation. Cos'è esattamente una workstation?
Workstation (in italiano stazione di lavoro) è un termine della lingua inglese utilizzato in informatica per indicare un tipo di computer monoutente, che si contraddistingue dall'essere destinato principalmente a un utilizzo produttivo (da cui il prefisso work = lavoro), e dall'avere alte prestazioni per poter assolvere compiti altamente professionali di vario genere (le prestazioni dei computer sono in continuo aumento quindi "alte prestazioni" è relativo al periodo di commercializzazione della workstation).
Sono utilizzate soprattutto nella forma di computer desktop, in ambiti di lavoro che necessitano di grandi potenze di calcolo come ad esempio il CAD, la ricerca scientifica, la produzione audio/video, le applicazioni di simulazione e calcolo ingegneristico. Esso è dunque sinonimo di un computer più potente rispetto ad un normale personal computer domestico o di ufficio. (Fonte Wikipedia https://it.wikipedia.org/wiki/Workstation)
Alla definizione standard aggiungerei che una workstation può definirsi tale se completa di uno o più monitor aventi caratteristiche che soddisfino le proprie esigenze lavorative.
In questo brevissimo articolo cercherò di esporre al meglio le scelte che ho seguito per costruire una workstation che rispondesse alla mie esigenze, senza assolutamente affermare che le scelte fatte da me siano il top. Questo articolo è in realtà la bella copia delle note che ho scritto durante la costruzione della mia workstation.
Quali sono le mie esigenze?
Il mio lavoro principale è la progettazione e realizzazione di soluzioni software. L'attività secondaria da Technical Blogger richiede che possa creare contenuti in diversi formati, tra cui, quello che impone la disponibilità di risorse non trascurabili è il video.
La selezione dell'hardware che andrà a costituire la propria workstation, deve essere eseguita sulla base delle proprie esigenze e nel mio caso queste corrispondono alle seguenti semplici domande.
- Qual è il Sistema Operativo che si vuole installare? Questa scelta potrebbe "tagliare" parecchio hardware, semplicemente per il fatto che siamo costretti a scegliere hardware con disponibilità di driver (possibilmente certificati) per il sistema operativo scelto.
- Quali sono i programmi di produttività e i tool di sviluppo maggiormente utilizzati? I programmi che usiamo hanno un peso notevole sulla scelta dell'hardware, è infatti importante conoscere le specifiche di dettaglio di ogni singolo programma.
- Una politica di backup locale è richiesta? L'applicazione di una politica di backup locale richiede senza ombra di dubbio la scelta di storage dedicato a ospitare le copie di backup dei nostri dati.
E il budget?
Indipendentemente dai miei desideri, la scelta del budget è il primo limite che ho imposto prima di condurre le attività di ricerca per la mia workstation. Chiaro, ognuno di noi vorrebbe tra le mani una Ferrari anche se il più delle volte risulterebbe essere troppo per le proprie esigenze. Per la mia workstation ho deciso di stanziare un budget di 2500€ con il 5% di tolleranza.
Brandizzata o Custom?
Questo è il primo dilemma. Sono sicuro che anche voi abbiate dovuto affrontare questo primo quesito. Personalmente ho risolto la questione ponendo un'altra domanda, ovvero, quale dovrà essere la caratteristica principale della mia workstation? La maggior flessibilità possibile.
Ecco cosa intendo per flessibilità di una workstation:
- agilità di configurazione;
- hardware standard;
- supporto ai più moderni standard hardware;
- CPU aggiornabile;
- RAM aggiornabile;
- hardware compatibile con sistemi operativi Unix/Linux;
- costo elastico.
Ho impiegato diverse settimane cercando soluzioni tra i produttori più conosciuti che potessero soddisfare i miei requisiti ma senza successo. Sicuramente il costo ha avuto il suo peso nella scelta ma soprattutto la flessibilità di cui ho scritto poc anzi. Alla fine ho deciso di prendere la strada della soluzione custom o come si suol dire, dell'assemblato.
La scelta dell'hardware
La scelta dell'hardware è stata guidata dalle domande che ho illustrato in precedenza. Il fatto di aver scelto Linux come sistema operativo, ha ristretto il range di hardware per via del supporto dei driver (anche certificati) per questo sistema operativo. Solitamente l'hardware che supporta nativamente Linux ha anche un costo maggiore. Per quanto possibile ho cercato di scegliere hardware recentissimo e con ampia possibilità di estensione. La tabella a seguire mostra i componenti hardware principali che ho scelto per la mia workstation e la motivazione che ha guidato la scelta.
Componente | Modello | Motivazione |
CPU | AMD Ryzen 9 3900X | Per il tipo di applicazioni che uso e che sviluppo, ho necessità di avere un processore che sia in grado di offrire una potenza computazionale abbastanza generosa a un costo contenuto. Per questo motivo ho scelto questa CPU AMD che offre ben 12 Core e ben 24 Thread. Più thread significa miglior multitasking e prestazioni migliorate con i software che sfruttano pesantemente i thread come gli editor e i transcoder video.
Questo processore supporta inoltre lo standard PCIe® Gen 4.0 di cui ne trarrà grande vantaggio lo storage e lo standard DDR4 per la memoria RAM fino a 3200MHz |
GPU | NVIDIA Quadro P2200 | La scelta della GPU è stata abbastanza semplice, guidata dal fatto che il mio scopo è prettamente circoscritto all'uso di programmi EDA (tipo KiCAD, Eagle PCB) di progettazione elettronica, DaVinci Resolve e OBS Studio per la creazione dei miei video tutorial e alcuni software che sfruttano CUDA. Caratteristica molto importante, questa scheda video dispone dei driver certificati per Linux e anche aggiornati. |
Memoria RAM | DDR 4 3600MHz 64GB Intel XMP-ready e AMD Ryzen | Ho scelto questo taglio apparentemente grande perché utilizzo frequentemente applicazioni basate su container che richiedono una considerevole disponibilità di memoria RAM. La prima certificazione (Intel XMP-ready) attesta la possibilità di sfruttare appieno le potenzialità della CPU in relazione all’applicazione. La seconda, garantisce la piena funzionalità con processori AMD Ryzen. |
Mother Board | Gigabyte X570 AORUS ULTRA | Questa è stata la scelta più sofferta tra tutti i componenti hardware, le motivazioni principali sono state:
Queste caratteristiche consentono una grande flessibilità di estensione futura, dal processore alla memoria RAM. Inoltre i componenti hardware integrati sono compatibili con Linux e le ultime versioni del Kernel e in particolare la scheda WiFi + BT. |
Storage NVME | Samsung SSD 980 PRO 1TB | Questo disco SSD NVMe 4 credo che sia una scelta obbligata per avere uno storage con impressionanti prestazioni sia in termini di scrittura sia in termini di lettura. Questo è lo storage principale per SO + Applicazioni + Dati. |
Sabrent Rocket 4.0 500GB | Questo è il disco di "seconda scelta" dedicato a un'installazione di Microsoft Windows + test delle nuove versioni della distribuzione Linux che uso. | |
Storage HDD | ST4000VN008-2DR166 (SC60) 4TB x2 | Ho scelto questo storage di casa Segate e serie IronWolf perché indicato per le operazioni di backup. |
La scelta della distribuzione Linux
Questa è stata la scelta certa fin dall'inizio della nascita dell'idea della workstation. Per la mia workstation di lavoro ho deciso di andare su una distribuzione stabile, al passo con i tempi e orientata a chi sviluppa. La distribuzione a cui faccio riferimento è Fedora, in particolare Fedora Workstation 34 con la nuova versione 40 di GNOME. Secondo il mio parere sono sette i punti di forza di questa distribuzione.
- Ultima versione del Desktop Environment GNOME 40
- Aggiornamenti veloci e affidabili
- Pacchetti Flatpak e Snap
- Una grande comunità
- Essenziale
- Già pronta per la tecnologia dei container
- Supportato da RedHat
Lo schema di partizionamento
L'installazione di un qualunque Sistema Operativo dovrebbe essere eseguita secondo un schema ragionato, pensando al proprio modo di lavorare e senza trascurare il modo di rendere più semplici gli aggiornamenti futuri, in particolare di major release della distribuzione. Implementare un buono schema di partizionamento dello storage a disposizione è a mio avviso essenziale.
La tabella a seguire mostra lo schema di partizionamento cucito sulle mi necessità.
Storage | File System (FS) | Type | Size | Device | Note |
Samsung SSD 980 PRO 1TB (2B2QGXA7) 1TByte |
/boot | ext4 | 500MByte |
/dev/nvme0n1p1
|
Partizione di boot (EFI System)
|
/boot/efi | EFI (vfat) | 750MByte |
/dev/nvme0n1p2
|
EFI Boot Partition
|
|
/ (root) | xfs | 100GByte |
/dev/nvme0n1p4
|
Partizione di Root | |
/home
|
xfs | 200GByte |
/dev/nvme0n1p3
|
User Home | |
swap | Linux Swap | 96GByte |
/dev/nvme0n1p5
|
Partizione di Swap del Sistema Operativo. La dimensione di questa partizione è stata calcolata sulla base della memoria RAM a disposizione sul sistema hardware. La guida all'installazione di Fedora riporta nel dettaglio la modalità di calcolo. | |
/uwfs01
|
xfs | 80GByte |
/dev/nvme0n1p6
|
Questa è la partizione dedicata a ospitare i setup/installer o archivi (zip, tar.gz, rpm, etc.) dei software installati sul sistema e fuori dai repository software standard di Fedora.
|
|
/uwfs02
|
xfs | 180GByte |
/dev/nvme0n1p7
|
Questa è la partizione dedicata a ospitare le macchine virtuali e container (Podman e Docker).
|
|
/uwfs03
|
xfs | 180GByte |
/dev/nvme0n1p8
|
Questa è la partizione dedicata a ospitare gli ambienti di lavoro suddivisi per progetto e i tool di lavoro specifici.
|
|
/uwfs04
|
xfs | 95GByte |
/dev/nvme0n1p9
|
Questa è la partizione dedicata a ospitare i sorgenti di progetti di terze parti e la cache di Gradle e Maven.
|
Ogni partizione indicata in tabella ha uno specifico scopo e rispecchia il mio modo personale di lavoro. Questo schema di partizionamento facilità inoltra l'aggiornamento di major release della distruzione, non intaccando in alcun modo le partizioni di lavoro. Quindi, fare una partizione unica non è mai una buona idea. Nel mio caso specifico, aggiornare da Fedora 33 a Fedora 34, con questo schema di partizionamento è stato una passeggiata di salute. Il nome del file system uwfs{n} sta per User Working File System.
Qualcuno di voi ha sicuramente notato che ho adottato il file system XFS e non BTRFS, quest'ultimo di default da Fedora 33. La risposta è abbastanza semplice. Non ho ancora avuto modo di testare approfonditamente il BTRFS e ho quindi optato per il rodato XFS.
Il mio software principale di lavoro
A seguire la lista dei software installati sulla mia workstation e che uso giornalmente.
-
Office Automation
- Libre Office
-
Email/Calendar
-
Mailspring
- GNOME Calendar (con CalDAV Remoto)
-
- Backup
-
Timeshift
-
- Source Control
- Git
-
Meld
- Network Tools
-
Wireshark
- TCP Dump
- Nmap
-
-
VPN/Remote Desktop
-
FortiClient
-
PulseSecure
-
OpenConnect
-
Citrix Workspace
- Remmina
-
-
Shell/Terminal
- Tilix
-
ZSH 5.8
-
Estensione oh-my-zsh
-
Editor - IDE
-
IntelliJ IDEA Enterprise
-
Visual Studio Code
- PlatformIO
-
Sublime Text
-
Vim + Plugins
-
Typora
-
-
Linguaggi e Compilatori
-
JDK 1.7
-
JDK 1.8
-
JDK 11
- JDK 16
-
Python 3.x
- GoLang
- GNU C/C++
-
-
Build
-
Ant
-
Maven
-
Gradle
-
Make
-
-
Tool Web Services
-
SOAP UI
-
Postman
- cURL
-
-
Database Client
-
SQL Developer
-
PostgreSQL Admin
-
-
Container
-
Docker
-
Podman
-
MiniOpenShift
-
-
VM
-
Virtual Box
-
VMWare Workstation
-
-
Mappe Mentali
-
XMind (true)
-
-
Video
-
OBS Studio
-
DavinciResolve Pro
-
-
Design/CAD
-
Draw.io
-
GIMP
- Inkscape
-
EASY EDA
-
KICAD
- Eagle PCB
-
Conclusioni
Ogni mestiere necessita degli strumenti adeguati affinché possa essere compiuto nel migliore dei modi e questi devono essere scelti con cura. Vi ho mostrato le motiviazioni che mi hanno portato alla costruzione della mia workstation da Smart Worker, le vostre quali sono?
Credo che la scelta di andare sulla soluzione dell'assemblato è senza dubbio quella che dà la maggior libertà di configurazione e di conseguenza permette di costruire una soluzione hardware adatta alle proprie esigenze.