Obiettivi dell'esame 701
Esame 701: DevOps Tools Engineer
Versione degli Obiettivi d'Esame: 1.0
Codice esame: 701-100
Pesi degli Obiettivi: A ogni Obiettivo viene assegnato un valore di "Peso". I Pesi indicano l'importanza relativa di ciascun Obiettivo d'Esame. Gli Obiettivi con peso più elevato sono trattati nell'Esame con un maggior numero di domande.

701 Ingegneria del Software
701.1 Sviluppo di Software Moderno (peso: 6)
Peso |
6 |
Descrizione |
Il Candidato dovrebbe essere in grado di progettare soluzioni software adatte ai moderni ambienti di runtime. Il Candidato deve comprendere come i servizi gestiscono la persistenza dei dati, le sessioni, le informazioni sullo stato, le transazioni, la concorrenza, la sicurezza, le prestazioni, la disponibilità, la scalabilità, il bilanciamento del carico, la messaggistica, il monitoraggio e le API. Inoltre, il Candidato dovrebbe comprendere le implicazioni di Agile e DevOps sullo sviluppo del software. |
Aree di Conoscenza Chiave:
- Comprendere e progettare applicazioni basate sui servizi
- Comprendere concetti e standard comuni delle API
- Comprendere gli aspetti dell'archiviazione dei dati, lo stato del servizio e la gestione delle sessioni
- Software di progettazione da eseguire all'interno di Container
- Progettare software da distribuire a servizi in Cloud
- Conoscenza dei rischi nella migrazione e integrazione di software legacy di tipo monolitico
- Comprendere i rischi comuni per la sicurezza delle applicazioni e i modi per mitigarli
- Comprendere il concetto di sviluppo software agile
- Comprendere il concetto di DevOps e le sue implicazioni per sviluppatori software e operatori IT
Di seguito è riportato un elenco parziale dei file, dei termini e dei comandi utilizzati:
- REST, JSON
- Service Orientated Architectures (SOA)
- Microservices
- Immutable servers
- Loose coupling
- Cross site scripting, SQL injection, rapporti di errore dettagliati, autenticazione tramite API, applicazione coerente della cifratura nel trasporto dati
- CORS headers e token CSRF
- Proprietà ACID e teorema CAP
701.2 Componenti e Piattaforme Standard per il Software (peso: 2)
Peso |
2 |
Descrizione |
Il Candidato dovrebbe comprendere i servizi offerti dalle piattaforme Cloud più comuni. Dovrebbe essere in grado di includere questi servizi nelle sue architetture applicative e nei toolchain di distribuzione e comprendere le configurazioni di servizio richieste. I componenti del servizio OpenStack vengono utilizzati come implementazione di riferimento. |
Aree di Conoscenza Chiave:
- Caratteristiche e concetti riguardanti l'archiviazione di oggetti
- Caratteristiche e concetti riguardanti i database relazionali e NoSQL
- Caratteristiche e concetti riguardanti i broker di messaggi e le code di messaggi
- Caratteristiche e concetti riguardanti i servizi Big Data
- Caratteristiche e concetti riguardanti il runtime dell'applicazione / PaaS
- Caratteristiche e concetti riguardanti le reti di distribuzione dei contenuti
Di seguito è riportato un elenco parziale dei file, dei termini e dei comandi utilizzati:
- OpenStack Swift
- OpenStack Trove
- OpenStack Zaqar
- CloudFoundry
- OpenShift
701.3 Gestione del Codice Sorgente (peso: 5)
Peso |
5 |
Descrizione |
Il Candidato dovrebbe essere in grado di utilizzare Git per gestire e condividere il codice sorgente. Ciò include la creazione e il contributo a un repository, nonché l'utilizzo di tag, branch e repository remoti. Inoltre, il Candidato dovrebbe essere in grado di unire file e risolvere i conflitti di fusione. |
Aree di Conoscenza Chiave:
- Comprendere i concetti di Git e la struttura del repository
- Gestire i file all'interno di un repository Git
- Gestire branch e tag
- Lavorare con repository, branch e sottomoduli remoti
- Unire file e branche
- Conoscenza di SVN e CVS, inclusi i concetti di soluzioni SCM centralizzate o distribuite
Di seguito è riportato un elenco parziale dei file, dei termini e dei comandi utilizzati:
- git
- .gitignore
701.4 Integrazione Continua e Erogazione Continua (peso: 5)
Peso |
5 |
Descrizione |
Il Candidato deve comprendere i principi e i componenti di un'integrazione continua e di una pipeline di erogazione continua. Il candidato dovrebbe essere in grado di implementare una pipeline CI/CD utilizzando Jenkins, inclusa l'attivazione della pipeline CI/CD, l'esecuzione di unità, test di integrazione e accettazione, software di packaging e gestione della distribuzione di artefatti di software testati. Questo Obiettivo copre il set di funzionalità di Jenkins versione 2.0 o successiva. |
Aree di Conoscenza Chiave:
- Comprendere i concetti di integrazione continua e distribuzione continua
- Comprendere i componenti di una pipeline CI/CD, inclusi build, unità, test di integrazione e accettazione, gestione degli artefatti, consegna e distribuzione
- Comprendere le best practice di distribuzione
- Comprendere l'architettura e le funzionalità di Jenkins, inclusi plug-in Jenkins, API Jenkins, notifiche e build distribuite
- Definire ed eseguire lavori in Jenkins, inclusa la gestione dei parametri
- Fingerprinting, artefatti e archivi di artefatti
- Comprendere come Jenkins modella le pipeline di distribuzione continua e implementare in Jenkins una pipeline di consegna continua dichiarativa
- Conoscenza di possibili modelli di autenticazione e autorizzazione
- Comprensione del plugin Pipeline
- Comprendere le funzionalità di importanti moduli Jenkins come Copy Artifact Plugin, Fingerprint Plugin, Docker Pipeline, Docker Build e Publish plugin, Git Plugin, Credentials Plugin
- Conoscenza di Artifactory e di Nexus
Di seguito è riportato un elenco parziale dei file, dei termini e dei comandi utilizzati:
- Step, Node, Stage
- Jenkins DSL
- Jenkinsfile
- Declarative Pipeline
- Blue-green e canary deployment
702 Gestione di un Container
702.1 Uso di un Container (peso: 7)
Peso |
7 |
Descrizione |
Il Candidato dovrebbe essere in grado di creare, condividere e gestire Container Docker. Ciò include la creazione di Dockerfile, l'utilizzo di un registro Docker, la creazione e l'interazione tra Container, nonché la connessione di Container a reti e volumi di archiviazione. Questo Obiettivo riguarda il set di funzionalità di Docker versione 17.06 o successiva. |
Aree di Conoscenza Chiave:
- Comprendere l'architettura Docker
- Usare le immagini Docker esistenti da un registro Docker
- Creare Dockerfile e costruire immagini da Dockerfile
- Caricare le immagini in un registro Docker
- Utilizzare e accedere ai Container Docker
- Connettere un Container alle reti Docker
- Utilizzare i volumi Docker per l'archiviazione condivisa o persistente di Container
Di seguito è riportato un elenco parziale dei file, dei termini e dei comandi utilizzati:
- docker
- Dockerfile
- .dockerignore
702.2 Distribuzione e Orchestrazione di Container (peso: 5)
Peso |
5 |
Descrizione |
Il Candidato dovrebbe essere in grado di eseguire e gestire più container che collaborano per fornire un servizio. Ciò include l'orchestrazione dei container Docker utilizzando Docker Compose insieme a un cluster Docker Swarm esistente, nonché l'utilizzo di un cluster Kubernetes esistente. Questo Obiettivo riguarda i set di funzionalità di Docker Compose versione 1.14 o successiva, Docker Swarm incluso in Docker 17.06 o successivo e Kubernetes 1.6 o successivo. |
Aree di Conoscenza Chiave:
- Comprendere il modello applicativo di Docker Compose
- Creare ed eseguire Docker Compose File (versione 3 o successiva)
- Comprendere l'architettura e la funzionalità della modalità Docker Swarm
- Eseguire Container in un Docker Swarm, inclusa la definizione di servizi, stack e l'uso delle password
- Comprendere l'architettura e il modello applicativo di Kubernetes
- Definire e gestire un'applicazione basata su un Container per Kubernetes, inclusa la definizione di Deployment, Service, ReplicaSet e Pod
Di seguito è riportato un elenco parziale dei file, dei termini e dei comandi utilizzati:
- docker-compose
- docker
- kubectl
702.3 Infrastruttura dei Container (peso: 4)
Peso |
4 |
Descrizione |
Il Candidato dovrebbe essere in grado di configurare un ambiente di runtime per i container. Ciò include l'esecuzione di container su una workstation locale e la configurazione di un host di container dedicato. Inoltre il Candidato dovrebbe essere consapevole di altre infrastrutture di container, storage, networking e aspetti di sicurezza specifici dei container. Questo Obiettivo riguarda il set di funzionalità di Docker versione 17.06 o successive e Docker Machine 0.12 o successive. |
Aree di Conoscenza Chiave:
- Usare Docker Machine per configurare un host Docker
- Comprendere i concetti di rete Docker, incluse le reti di tipo overlay
- Creare e gestire reti Docker
- Comprendere i concetti di archiviazione Docker
- Creare e gestire volumi Docker
- Conoscere Flocker e Flannel
- Comprendere i concetti di rilevamento dei servizi
- Conoscere le funzionalità base di CoreOS Container Linux, rkt e etcd
- Comprendere i rischi per la sicurezza della virtualizzazione di Container e delle immagini di Container e come limitarli
Di seguito è riportato un elenco parziale dei file, dei termini e dei comandi utilizzati:
- docker-machine
703 Distribuzione di un Sistema
703.1 Distribuzione di una Virtual Machine (peso: 4)
Peso |
4 |
Descrizione |
Il Candidato dovrebbe essere in grado di automatizzare la distribuzione di una virtual machine con un sistema operativo e un set specifico di file di configurazione e software. |
Aree di Conoscenza Chiave:
- Comprendere l'architettura e i concetti di Vagrant, inclusi archiviazione e rete
- Recuperare e usare i box da Atlas
- Creare ed eseguire Vagrantfiles
- Accedere alle virtual machine Vagrant
- Condividere e sincronizzare una cartella tra una macchina virtuale Vagrant e il sistema host
- Comprendere il provisioning di Vagrant, inclusi File, Shell, Ansible e Docker
- Comprendere la configurazione multi-macchina
Di seguito è riportato un elenco parziale dei file, dei termini e dei comandi utilizzati:
- vagrant
- Vagrantfile
703.2 Distribuzione in Cloud (peso: 2)
Peso |
2 |
Descrizione |
Il Candidato dovrebbe essere in grado di configurare le istanze cloud IaaS e adattarle alle loro risorse hardware disponibili, in particolare spazio su disco e volumi. Inoltre, il candidato dovrebbe essere in grado di configurare istanze per consentire accessi SSH sicuri e preparare le istanze nell'essere pronte a uno strumento di gestione della configurazione come Ansible. |
Aree di Conoscenza Chiave:
- Comprendere le caratteristiche e i concetti di cloud-init, inclusi dati utente e inizializzazione/configurazione di cloud-init
- Utilizzare cloud-init per creare, ridimensionare e montare file system, configurare account utente, comprese le credenziali di accesso come per esempio le chiavi SSH e installare pacchetti software dal repository della distribuzione
- Comprendere le funzionalità e le implicazioni dei Cloud IaaS e della virtualizzazione di un'istanza di elaborazione, come snapshot, pausa, clonazione e limiti delle risorse.
703.3 Creazione dell'Immagine di Sistema (peso: 2)
Peso |
2 |
Descrizione |
Il Candidato dovrebbe essere in grado di creare immagini per container, macchine virtuali e istanze cloud IaaS. |
Aree di Conoscenza Chiave:
- Comprendere le funzionalità e le caratteristiche di Packer
- Creare e mantenere i file template
- Costruire immagini da file template utilizzando diversi builder
Di seguito è riportato un elenco parziale dei file, dei termini e dei comandi utilizzati:
- packer
704 Gestione della Configurazione
704.1 Ansible (peso: 8)
Peso |
8 |
Descrizione |
Il Candidato dovrebbe essere in grado di utilizzare Ansible per garantire che un server di destinazione si trovi in uno stato specifico per quanto riguarda la sua configurazione e il software installato. Questo Obiettivo riguarda il set di funzionalità di Ansible versione 2.2 o successiva. |
Aree di Conoscenza Chiave:
- Comprendere i principi della configurazione automatizzata di un sistema e dell'installazione del software
- Creare e gestire file di inventario
- Comprendere come Ansible interagisce con i sistemi remoti
- Gestire le credenziali di accesso SSH per Ansible, incluso l'utilizzo di account di accesso non privilegiati
- Creare, mantere ed eseguire <i<playbook</i> Ansible, inclusi task, handler, condizionali, loop e registri
- Impostare e utilizzare le variabili
- Mantenere le password usando i vault Ansible
- Scrivere modelli Jinja2, incluso l'uso di filtri, loop e condizionali comuni
- Comprendere e utilizzare i ruoli Ansible e installare i ruoli Ansible da Ansible Galaxy
- Comprendere e utilizzare le attività Ansible più importanti, come file, copy, template, ini_file, lineinfile, patch, replace, user, group, command, shell, service, systemd, cron, apt, debconf, yum, git, e debug
- Conoscenza dell'inventario dinamico
- Conoscenza delle funzionalità Ansible per i sistemi diversi da Linux
- Conoscenza dei Container Ansible
Di seguito è riportato un elenco parziale dei file, dei termini e dei comandi utilizzati:
- ansible.cfg
- ansible-playbook
- ansible-vault
- ansible-galaxy
- ansible-doc
704.2 Altri Strumenti di Gestione della Configurazione (peso: 2)
Peso |
2 |
Descrizione |
lI Candidato deve comprendere le principali caratteristiche e principi di importanti strumenti di gestione della configurazione diversi da Ansible. |
Aree di Conoscenza Chiave:
- Funzionalità di base e conoscenza dell'architettura di Puppet.
- Funzionalità di base e conoscenza dell'architettura di Chef.
Di seguito è riportato un elenco parziale dei file, dei termini e dei comandi utilizzati:
- Manifest, Class, Recipe, Cookbook
- puppet
- chef
- chef-solo
- chef-client
- chef-server-ctl
- knife
705 Operatività di Servizio
705.1 Operatività IT e Monitoraggio (peso: 4)
Peso |
4 |
Descrizione |
Il Candidato deve capire come l'infrastruttura IT è coinvolta nella fornitura di un servizio. Ciò include la conoscenza degli obiettivi principali delle operatività IT, la comprensione delle proprietà funzionali e non funzionali dei servizi IT e dei modi per monitorarli e misurarli utilizzando Prometheus. Inoltre, il Candidato dovrebbe comprendere i principali rischi per la sicurezza nell'infrastruttura IT. Questo Obiettivo riguarda il set di funzionalità di Prometheus 1.7 o successivo. |
Aree di Conoscenza Chiave:
- Comprendere gli obiettivi delle operazioni IT e del provisioning dei servizi, comprese le proprietà non funzionali come disponibilità, latenza, reattività
- Comprendere e identificare metriche e indicatori per monitorare e misurare la funzionalità tecnica di un servizio
- Comprendere e identificare metriche e indicatori per monitorare e misurare la funzionalità logica di un servizio
- Comprendere l'architettura di Prometheus, inclusi Exporter, Pushgateway, Alertmanager e Grafana
- Monitorare Container e microservizi utilizzando Prometheus
- Comprendere i principi degli attacchi contro l'infrastruttura IT
- Comprendere i principi dei modi più importanti per proteggere l'infrastruttura IT
- Comprendere i componenti principali dell'infrastruttura IT e il loro ruolo nella distribuzione
Di seguito è riportato un elenco parziale dei file, dei termini e dei comandi utilizzati:
- Prometheus, Node exporter, Pushgateway, Altermanager, Grafana
- Exploit del servizio, attacchi Brute Force e attacchi Denial of Service
- Aggiornamenti di sicurezza, filtraggio dei pacchetti e gateway applicativi
- Host di virtualizzazione, DNS e bilanciatori di carico
705.2 Gestione e Analisi dei Log (peso: 4)
Peso |
4 |
Descrizione |
Il Candidato deve comprendere il ruolo dei file di log nelle operazioni e nella risoluzione dei problemi. Dovrebbe essere in grado di configurare un'infrastruttura di registrazione centralizzata basata su Logstash per raccogliere e normalizzare i dati di log. Inoltre, il Candidato dovrebbe capire come Elasticsearch e Kibana aiutano nella memorizzazione e successivo accesso ai dati di log. |
Aree di Conoscenza Chiave:
- Comprendere come funziona il logging applicativo e di sistema
- Comprendere l'architettura e le funzionalità di Logstash, inclusi i suoi plug-in e il ciclo di vita di un messaggio di log
- Comprendere l'architettura e le funzionalità di Elasticsearch e Kibana nel contesto della gestione dei dati di log (Elastic Stack)
- Configurare Logstash per raccogliere, normalizzare, trasformare e spedire i dati di log
- Configurare syslog e Filebeat per inviare i dati di log a Logstash
- Configura Logstash per inviare avvisi via e-mail
- Comprendere il supporto applicativo per la gestione dei log
Di seguito è riportato un elenco parziale dei file, dei termini e dei comandi utilizzati:
- logstash
- input, filter, output
- grok filter
- Log files, metrics
- syslog.conf
- /etc/logstash/logstash.yml
- /etc/filebeat/filebeat.yml