O que é Computação?
- #AWS
Fundamentos AWS - O que é Computação ?
Na computação em nuvem, o termo “computação” descreve conceitos e objetos relacionados à computação de software. É um termo genérico usado para fazer referência à capacidade de processamento, à memória, à rede, ao armazenamento e a outros recursos necessários para o sucesso computacional de qualquer programa.
Por exemplo, aplicações que executam algoritmos de machine learning ou funções de renderização de gráficos 3D exigem muitos gigabytes de RAM e várias CPUs para serem executadas com sucesso. Nesse caso, as CPUs, RAM e Unidades de Processamento Gráfico necessárias serão chamadas de recursos de computação e as aplicações seriam aplicações de uso intensivo de computação.
Vejamos algumas perguntas frequentes sobre computação para entender o termo no contexto da computação moderna.
O que são recursos de computação?
Os recursos de computação são quantidades mensuráveis de potência computacional que podem ser solicitadas, alocadas e consumidas para atividades de computação. Alguns exemplos de recursos de computação incluem:
CPU
A unidade central de processamento (CPU) é o cérebro de qualquer computador. A CPU é medida em unidades chamadas milicores. Os desenvolvedores de aplicações podem especificar quantas CPUs alocadas são necessárias para executar suas aplicações e processar dados.
Memória
A memória é medida em bytes. As aplicações podem fazer solicitações de memória que são necessárias para que sejam executadas com eficiência.
Se as aplicações estiverem sendo executados em um único dispositivo físico, elas terão acesso limitado aos recursos de computação desse dispositivo. Mas se as aplicações forem executadas na nuvem, elas poderão acessar simultaneamente mais recursos de processamento de vários dispositivos físicos. Vamos ver isso em mais detalhes.
O que é a computação em nuvem?
Computação em nuvem é um termo genérico para qualquer coisa que envolva a entrega de recursos de computação pela Internet. Os usuários podem acessar grandes quantidades de capacidade de computação sob demanda. Eles podem comprar por minuto ou por hora e usar tanto ou tão pouco quanto necessário para suas atividades de computação.
A história da computação em nuvem
Tradicionalmente, as aplicações Web eram hospedados em servidores físicos fixos. A potência computacional necessária para a aplicação era limitada ao servidor no qual ela era executada. Os proprietários de sites podiam comprar vários servidores ou espaço em um único servidor, mas tinham que pagar um preço fixo, independentemente do uso. Eles também tinham que gerenciar e manter sua própria infraestrutura de servidor de computador.
Hoje, as aplicações podem usar recursos de computação de muitos dispositivos físicos distintos de maneira flexível. Os provedores de nuvem têm vastos grupos de recursos de computação, incluindo servidores e datacenters físicos. As empresas podem hospedar aplicações e acessar esses recursos de computação do grupo. O provedor gerencia e otimiza totalmente os recursos para oferecer flexibilidade, escalabilidade e eficiência aos usuários. Os usuários só precisam manter suas aplicações; o gerenciamento da infraestrutura de computação é feito pelo provedor de nuvem.
Software de contabilidade: um exemplo de computação em nuvem
Vejamos o exemplo do software de contabilidade. Algumas décadas atrás, as empresas tinham que comprar e instalar software em seus respectivos hardwares físicos internos. Os recursos de software eram limitados ao hardware subjacente. Com o tempo, o sistema ficaria sem memória ou exigiria atualizações, e uma falha de hardware poderia perder dados de negócios importantes.
Hoje, os desenvolvedores de software de contabilidade podem executar software na nuvem. Os usuários podem acessá-lo da mesma forma que acessam qualquer site e podem adquirir planos escalonados de acordo com suas necessidades. As aplicações de software usam a capacidade de computação da nuvem e o próprio software pode ser escalado, conforme necessário. Também não há receio de que os clientes percam seus dados.
O que são microsserviços?
Os microsserviços, também conhecidos como arquitetura de microsserviços, são um estilo de arquitetura usado para aplicações de software estruturadas como um conjunto de serviços.
As aplicações empresariais geralmente são incorporadas em três partes principais:
1. Uma interface do usuário do lado do cliente (uma aplicação ou uma página HTML que é executada em um dispositivo do usuário final)
2. Um banco de dados (que armazena os dados da aplicação)
3. Uma aplicação do lado do servidor (que define o funcionamento prático e lógico da operação)
Esse estilo de arquitetura monolítica é inflexível e difícil de modificar. Pequenas alterações em uma parte do sistema exigem que todo o monólito seja reimplantado.
Por outro lado, a arquitetura de microsserviços projeta a aplicação como um conjunto de serviços funcionais com gerenciamento descentralizado. Um microsserviço tenta resolver uma única questão, como pesquisa de dados, função de registro em log ou função de serviço da Web. Esses microsserviços podem ser implantados de forma independente, usar seus próprios recursos de computação e se comunicar entre si.
Por exemplo, uma aplicação de notícias pode ser composta por microsserviços independentes como esportes, criminalidade, global etc. Cada microsserviço gerenciaria sua própria recuperação e classificação de conteúdo. Eles também podem sofrer aumento ou redução na escala vertical, conforme necessário. Durante um grande evento esportivo, o microsserviço esportivo usaria capacidade de processamento adicional, mas sofreria redução na escala vertical após a conclusão do evento.
O que são máquinas virtuais?
As máquinas virtuais são os blocos de construção básicos que obtêm potência computacional da nuvem. Uma máquina virtual é um software que pode executar todas as mesmas funções de um computador físico, incluindo a execução de aplicações e sistemas operacionais. É uma versão digital de um computador físico. As máquinas virtuais podem executar programas e sistemas operacionais, armazenar dados, conectar-se a redes e realizar outras funções de computação. Elas também podem exigir manutenção, como atualizações e monitoramento do sistema.
Uma máquina virtual pode ser executada em muitas máquinas físicas subjacentes, dando às aplicações a potência computacional necessária para serem executadas com sucesso. A computação em nuvem oferece aos usuários a capacidade de implantar e escalar máquinas virtuais sob demanda. Ela oferece recursos computacionais garantidos em um ambiente seguro e isolado sem as despesas gerais necessárias para gerenciar servidores físicos.
O que é uma instância do Amazon EC2?
Nos serviços de computação da AWS, as máquinas virtuais são chamadas de instâncias. O AWS EC2 fornece vários tipos de instâncias com diferentes configurações de recursos de CPU, memória, armazenamento e redes para que o usuário possa adaptar seus recursos de computação às necessidades de sua própria aplicação.
Existem cinco tipos de instâncias:
Instâncias de uso geral
Instâncias de uso geral fornecem um equilíbrio de recursos de computação, memória e redes e podem ser usadas para diversas workloads. Essas instâncias são ideais para aplicações que usam esses recursos em proporções iguais, como servidores da Web e repositórios de código.
Instâncias otimizadas para computação
As instâncias otimizadas para computação são usadas para executar aplicações de computação de alta performance que exigem performance de rede rápida, ampla disponibilidade e operações de alto volume de entrada/saída (E/S) por segundo. Modelagem e simulação científica e financeira, big data, data warehousing empresarial e inteligência de negócios são exemplos desse tipo de aplicação.
Instâncias com computação acelerada
Instâncias com computação acelerada usam aceleradores de hardware, ou coprocessadores, para executar funções, como cálculos de número de ponto flutuante, processamento de gráficos ou correspondência de padrões de dados de forma mais eficiente do que é possível no software em execução nas CPUs.
Instâncias otimizadas para memória
As instâncias otimizadas para memória usam infraestrutura de unidade de estado sólido de alta velocidade para fornecer acesso ultrarrápido aos dados e oferecer alta performance. Essas instâncias são ideais para aplicações que exigem mais memória e menos capacidade de CPU, como bancos de dados de código aberto e análises de big data em tempo real.
Instâncias otimizadas para armazenamento
As instâncias otimizadas para armazenamento são projetadas para workloads que exigem alto acesso de leitura e gravação sequencial a conjuntos de dados muito grandes no armazenamento local. São otimizadas para fornecer dezenas de milhares de operações de E/S aleatórias de baixa latência por segundo (IOPS) para aplicações.
O que é um contêiner?
Antes de o software ser lançado, ele deve ser testado, empacotado e instalado. A implantação de software refere-se ao processo de preparação de uma aplicação para execução em um sistema de computador ou dispositivo.
Docker é uma ferramenta usada por desenvolvedores para implantação de software. Ele fornece uma maneira padrão de empacotar o código de uma aplicação e executá-la em qualquer sistema. Ele combina o código do software e suas dependências dentro de um contêiner. Os contêineres (ou imagens do Docker) podem ser executados em qualquer plataforma por meio de um mecanismo do docker. O Amazon Elastic Container Service (ECS) é um serviço de gerenciamento de contêineres altamente escalável e de alta performance com suporte a contêineres do Docker, o que permite executar facilmente aplicações em um cluster gerenciado de instâncias do Amazon EC2. Isso garante implantações rápidas, confiáveis e consistentes, independentemente do ambiente.
Uma aplicação de reserva hospitalar: um exemplo de Docker
Por exemplo, um hospital deseja fazer um pedido de agendamento de consulta. Os usuários finais podem usar a aplicação no Android, iOS, em uma máquina Windows, MacBook ou pelo site do hospital. Se o código fosse implantado separadamente em cada plataforma, seria difícil mantê-lo. Em vez disso, o Docker pode ser usado para criar um único contêiner universal da aplicação de reserva. Esse contêiner pode ser executado em qualquer lugar, inclusive em plataformas de computação como a AWS.
O que é computação sem servidor com a Nuvem AWS?
A computação sem servidor refere-se ao desenvolvimento de aplicações com infraestrutura de servidor subjacente gerenciada externamente. Os serviços com tecnologia sem servidor, como o AWS Lambda, contam com escalabilidade automática, alta disponibilidade integrada e um modelo de cobrança de pagamento por valor.
A computação sem servidor é uma maneira de descrever os serviços, as práticas e as estratégias que permitem que as empresas de desenvolvimento de software inovem e respondam com mais agilidade às mudanças. As equipes podem lançar aplicações rapidamente, obter feedback e melhorar seus softwares eliminando as despesas operacionais.
Por exemplo, uma startup de tecnologia cria uma aplicação para pesquisar e filtrar cursos universitários. Para lançar, a empresa pode ficar sem servidor e se concentrar em refinar a experiência do usuário e os sistemas. Ao usar uma infraestrutura de hardware totalmente gerenciada, a empresa pode investir em marketing.
O que é balanceamento de carga elástico de recursos de computação?
O balanceamento de carga é o processo de distribuição uniforme de recursos de computação e workload em um ambiente de computação em nuvem. Isso é feito para reduzir o atraso e manter o tempo de processamento, mesmo quando a aplicação está em alta demanda. Os balanceadores de carga podem distribuir solicitações de clientes de forma inteligente em vários servidores de aplicações que estão sendo executados em um ambiente de nuvem.
O Elastic Load Balancing permite que os usuários maximizem a performance e a confiabilidade da aplicação. Ele pode fazer a distribuição automática do tráfego de aplicações de entrada em vários destinos, como instâncias do Amazon EC2, contêineres, endereços IP, funções do AWS Lambda e servidores virtuais. Ele também pode lidar com a carga variável de tráfego de aplicações, reduzir custos e aumentar ou reduzir a escala na vertical com eficiência para atender à demanda
Comércio eletrônico: um exemplo de balanceamento de carga elástico
Por exemplo, uma loja de comércio eletrônico online executa uma aplicação para classificar as melhores ofertas do dia. Como uma aplicação de uso intensivo de computação, ele usa computação em nuvem e balanceamento de carga para gerenciar a demanda. Isso usa automaticamente recursos de processamento adicionais nos fins de semana, no Natal e em outros picos sazonais quando a demanda aumenta. Em outros dias, ele reduz a escala da computação na vertical quando a demanda diminui. Sem balanceamento de carga, a loja teria que pagar taxas de pico de uso mesmo em dias com baixa demanda, reduzindo as margens de lucro.
O que são serviços computacionais?
Os serviços computacionais também são conhecidos como Infraestrutura como Serviço (IaaS). Plataformas de computação, como a AWS Compute, fornecem uma instância e armazenamento de servidor virtual e APIs que permitem aos usuários migrar workloads para uma máquina virtual. Os usuários alocam potência computacional e podem iniciar, interromper, acessar e configurar seus recursos de computador conforme desejado.
Como escolher entre diferentes serviços da AWS Compute
A escolha da melhor infraestrutura da AWS depende dos requisitos da aplicação, do ciclo de vida, do tamanho do código, da demanda e das necessidades de computação. Veja estes três exemplos:
Para implantar uma seleção de instâncias sob demanda que oferecem uma ampla variedade de diferentes benefícios de performance em seu ambiente da AWS, use o Amazon Elastic Compute Cloud (EC2).
Para executar aplicações habilitadas para o Docker empacotadas como contêineres em um cluster de instâncias do EC2, use o Amazon Elastic Container Service (Amazon ECS).
Para executar seu próprio código usando apenas milissegundos de recurso de computação em resposta a acionadores orientados por eventos em ambiente de tecnologia sem servidor, use o AWS Lambda.
Quais são os benefícios dos serviços computacionais da AWS?
Os serviços de computação da AWS oferecem a funcionalidade mais ampla e profunda para computação. Os principais benefícios de usar a AWS Compute incluem:
A computação adequada para suas workloads
O Amazon EC2 (Amazon Elastic Compute Cloud) oferece controle detalhado para gerenciar a infraestrutura de aplicações com opções de processadores, armazenamento e redes. O Amazon Elastic Container Services (Amazon ECS) oferece opções e flexibilidade para execução de contêineres.
Segurança integrada
A AWS oferece significativamente mais serviços de segurança, conformidade e governança e recursos importantes do que o outro maior provedor de nuvem concorrente. O AWS Nitro System conta com segurança integrada no nível do chip para monitorar, proteger e verificar continuamente o hardware da instância.
Otimização de custos
Com a AWS Compute, você paga apenas pelas instâncias ou recursos de que precisa, pelo tempo que utilizá-los, sem a necessidade de contratos de longo prazo ou licenciamento complexo.
Flexibilidade
A AWS oferece várias maneiras de criar, implantar e colocar aplicações no mercado rapidamente. Por exemplo, o Amazon Lightsail é um serviço fácil de usar que oferece tudo o que você precisa para criar uma aplicação ou um site.
_______________________________
Fonte: https://aws.amazon.com/pt/