Una definizione di attività è una raccolta di 1 o più configurazioni di contenitori . Alcune attività potrebbero richiedere un solo contenitore, mentre altre attività potrebbero richiedere 2 o più contenitori potenzialmente collegati in esecuzione contemporaneamente. La definizione dell'attività consente di specificare quale immagine Docker utilizzare, quali porte esporre, quanta CPU e memoria assegnare, come raccogliere i log e definire le variabili di ambiente.
Una task viene creato quando si esegue un'attività direttamente, che lancia contenitore (s) (definito nella definizione dei compiti) fino a quando non vengono arrestati o l'uscita da soli, al punto che essi sono non sostituiti automaticamente . L'esecuzione diretta di attività è l'ideale per lavori di breve durata, forse ad esempio cose che sono state realizzate tramite CRON.
Un servizio viene utilizzato per garantire che tu abbia sempre un certo numero di attività in esecuzione in ogni momento . Se il contenitore di un'attività esce a causa di un errore o l'istanza EC2 sottostante non riesce e viene sostituita, il servizio ECS sostituirà l'attività non riuscita. Questo è il motivo per cui creiamo Cluster in modo che il Servizio abbia molte risorse in termini di CPU, Memoria e Porte di rete da utilizzare. Per noi non importa su quale istanza vengono eseguite le attività fintanto che vengono eseguite. Una configurazione del servizio fa riferimento a una definizione dell'attività. Un servizio è responsabile della creazione di attività .
I servizi vengono in genere utilizzati per applicazioni a esecuzione prolungata come i server Web. Ad esempio, se distribuissi il mio sito Web basato su Node.JS in Oregon (us-west-2), vorrei dire almeno tre attività in esecuzione nelle tre zone di disponibilità (AZ) per motivi di alta disponibilità; se uno fallisce ne ho altri due e quello fallito verrà sostituito (leggilo come auto-guarigione !). Creare un servizio è il modo per farlo. Se avessi 6 istanze EC2 nel mio cluster, 2 per AZ, il servizio bilancerà automaticamente le attività tra le zone nel miglior modo possibile, considerando anche CPU, memoria e risorse di rete.
AGGIORNARE:
Non sono sicuro che aiuti pensare a queste cose in modo gerarchico.
Un altro punto molto importante è che un servizio può essere configurato per utilizzare un bilanciamento del carico, in modo che mentre crea le attività, ovvero avvia i contenitori definiti nella definizione delle attività, il servizio registrerà automaticamente l'istanza EC2 del contenitore con il bilanciamento del carico. Le attività non possono essere configurate per utilizzare un bilanciamento del carico, solo i servizi possono farlo.