Uma definição de tarefa é uma coleção de 1 ou mais configurações de contêiner . Algumas tarefas podem precisar de apenas um contêiner, enquanto outras tarefas podem precisar de 2 ou mais contêineres potencialmente vinculados em execução simultaneamente. A definição de Tarefa permite que você especifique qual imagem Docker usar, quais portas expor, quanta CPU e memória alocar, como coletar logs e definir variáveis de ambiente.
Uma Tarefa é criada quando você executa uma Tarefa diretamente, que inicia o (s) contêiner (es) (definido (s) na definição da tarefa) até que sejam interrompidos ou saiam por conta própria, momento em que não são substituídos automaticamente . Executar tarefas diretamente é ideal para tarefas de execução curta, talvez como um exemplo de coisas que foram realizadas por meio do CRON.
Um serviço é usado para garantir que você sempre tenha um certo número de tarefas em execução o tempo todo . Se um contêiner de Tarefa sair devido a um erro, ou se a instância EC2 subjacente falhar e for substituída, o Serviço ECS substituirá a Tarefa com falha. É por isso que criamos Clusters para que o Serviço tenha muitos recursos em termos de CPU, Memória e portas de rede para usar. Para nós, realmente não importa em qual instância as Tarefas são executadas, desde que sejam executadas. Uma configuração de serviço faz referência a uma definição de tarefa. Um serviço é responsável por criar tarefas .
Os serviços são normalmente usados para aplicativos de longa duração, como servidores web. Por exemplo, se eu implantar meu site com tecnologia Node.JS em Oregon (us-west-2), gostaria de dizer pelo menos três tarefas em execução nas três Zonas de disponibilidade (AZ) por causa da alta disponibilidade; se um falhar, tenho outros dois e o que falhou será substituído (leia isso como autocura !). Criar um serviço é a maneira de fazer isso. Se eu tivesse 6 instâncias EC2 em meu cluster, 2 por AZ, o serviço equilibrará automaticamente as tarefas entre as zonas da melhor maneira possível, ao mesmo tempo que considera recursos de CPU, memória e rede.
ATUALIZAR:
Não tenho certeza se ajuda pensar nessas coisas hierarquicamente.
Outro ponto muito importante é que um serviço pode ser configurado para usar um balanceador de carga, de modo que, à medida que cria as tarefas, ou seja, inicia os contêineres definidos na Definição de tarefa, o serviço registra automaticamente a instância EC2 do contêiner com o balanceador de carga. As tarefas não podem ser configuradas para usar um balanceador de carga, apenas os serviços podem.
Lindamente explicado em palavras por @talentedmrjones. A imagem abaixo irá ajudá-lo a visualizar facilmente :)
fonte
Definição de Tarefa:
Este é o blueprint que descreve quais contêineres Docker executar e representa seu aplicativo. Inclui várias tarefas.
Serviço:
Uma instância de Definição de Tarefa. Ele também define as tarefas mínimas e máximas de uma definição de tarefa executada a qualquer momento, escalonamento automático e balanceamento de carga.
Instâncias de contêiner ECS:
Esta é uma instância EC2 que possui Docker e um Agente de Contêiner ECS em execução. O Agente cuida da comunicação entre o ECS e a instância, fornecendo o status dos containers em execução e gerenciando os novos em execução.
Relação:
fonte