Arquitetura da aplicação - Amazon Elastic Container Service

Arquitetura da aplicação

Você arquiteta a aplicação criando uma definição de tarefa para ela. A definição da tarefa contém os parâmetros que definem as informações sobre a aplicação, incluindo:

  • O tipo de execução a ser usado, que determina a infraestrutura na qual as tarefas são hospedadas.

    Ao usar o tipo de execução do EC2, você também escolhe o tipo de instância. Em alguns tipos de instância, como GPU, é necessário definir parâmetros adicionais. Para ter mais informações, consulte Casos de uso de definição de tarefa.

  • A imagem de contêiner, que contém o código da aplicação e todas as dependências que o código da aplicação requer para ser executado.

  • O modo de rede a ser usado para os contêineres na tarefa

    O modo de rede determina como sua tarefa se comunica pela rede.

    Em tarefas executadas na instância do EC2, há várias opções, mas recomendamos usar o modo de rede awsvpc. O modo de rede awsvpc simplifica a rede de contêineres, porque você tem mais controle sobre como as aplicações se comunicam entre si e com outros serviços dentro das VPCs.

    Em tarefas executadas no Fargate, você só pode usar o modo de rede awsvpc.

  • A configuração de registro em log a ser usada nas tarefas.

  • Quaisquer volumes de dados que são usados com os contêineres na tarefa.

Para obter uma lista completa de parâmetros de definição de tarefa, consulte Parâmetros de definição de tarefa do Amazon ECS.

Use as diretrizes a seguir ao criar suas definições de tarefas:

  • Use cada família de definição de tarefas para apenas uma finalidade comercial.

    Se você agrupar vários tipos de contêineres de aplicações na mesma definição de tarefa, não poderá escalar esses contêineres de forma independente. Por exemplo, é improvável que tanto um site quanto uma API exijam aumento de escala na horizontal na mesma taxa. À medida que o tráfego aumenta, será necessário um número diferente de contêineres da Web do que o de contêineres de API. Se esses dois contêineres estiverem sendo implantados na mesma definição de tarefa, todas as tarefas executarão o mesmo número de contêineres da Web e contêineres de API.

  • Combine cada versão da aplicação com uma revisão de definição de tarefa dentro de uma família de definição de tarefa.

    Dentro de uma família de definição de tarefa, considere cada revisão da definição de tarefa como um instantâneo pontual das configurações de uma imagem de contêiner específica. Isso é semelhante à forma como o contêiner é um instantâneo de tudo o que é necessário para executar uma versão específica do código da sua aplicação.

    Certifique-se de que haja um mapeamento individual entre uma versão do código da aplicação, uma tag de imagem de contêiner e uma revisão da definição da tarefa. Um processo de lançamento típico envolve um git commit que é transformado em uma imagem de contêiner com tag atribuída do SHA do git commit. Em seguida, essa tag de imagem de contêiner recebe sua própria revisão de definição de tarefa do Amazon ECS. Por último, o serviço Amazon ECS é atualizado para solicitar que ele implemente a nova revisão da definição de tarefas.

  • Use perfis do IAM diferentes para cada família de definição de tarefa.

    Defina cada definição de tarefa com seu próprio perfil do IAM. Essa recomendação deve ser feita em conjunto com nossa recomendação de fornecer a cada componente de negócios sua própria família de definição de tarefas. Ao implementar essas duas práticas recomendadas, é possível limitar o acesso que cada serviço tem aos recursos da sua conta da AWS. Por exemplo, é possível conceder acesso ao seu serviço de autenticação para se conectar ao seu banco de dados de senhas. Ao mesmo tempo, você também pode garantir que somente o serviço de pedidos tenha acesso às informações de pagamento do cartão de crédito.