![IA em todos os lugares: superando barreiras à adoção](https://optimuscloud.com.br/wp-content/uploads/2024/03/IA-em-todos-os-lugares-superando-barreiras-a-adocao-150x150.jpg)
IA em todos os lugares: superando barreiras à adoção
7 de março de 2024![A jornada do Astro do gerador de site estático ao rival Next.js](https://optimuscloud.com.br/wp-content/uploads/2024/03/1709841474_A-jornada-do-Astro-do-gerador-de-site-estatico-ao-150x150.jpg)
A jornada do Astro do gerador de site estático ao rival Next.js
7 de março de 2024A comunidade de software adora debater sobre o tema da abstração; em algum lugar, alguém foi queimado pelo aprisionamento e não consegue mais imaginar a possibilidade de que existam abstrações realmente bem elaboradas, capazes de atender à natureza única do desenvolvimento de aplicativos. Ao mesmo tempo, toda a nossa indústria é construída sobre camadas e mais camadas de abstração.
Os gateways de API, por exemplo, abstraem os detalhes de roteamento, segurança e escalabilidade dos endpoints de API, permitindo que os desenvolvedores gerenciem suas APIs de forma eficiente, sem se aprofundar na infraestrutura subjacente. Da mesma forma, o Amazon S3 fornece uma solução de armazenamento abstrata e escalável, permitindo aos usuários armazenar e recuperar qualquer quantidade de dados sem gerenciar os sistemas de armazenamento físico.
Essas abstrações são tão perfeitamente integradas à estrutura do desenvolvimento de aplicativos em nuvem que se tornam quase invisíveis para os desenvolvedores que as utilizam. No entanto, eles são fundamentais, permitindo rápido desenvolvimento, implantação e dimensionamento de aplicativos, lidando com detalhes intrincados por trás de interfaces simples.
As saídas de emergência são um recurso vital para garantir que os desenvolvedores não fiquem presos a tecnologias específicas, especialmente quando há abstração envolvida. Eles oferecem um caminho para acessar e usar diretamente os serviços de nuvem subjacentes e trabalhar com recursos ou conjuntos de ferramentas existentes. Além disso, eles permitem aproveitar os benefícios da estrutura, ao mesmo tempo que fornecem a flexibilidade, o poder e o controle necessários para construir aplicativos complexos, de alto desempenho e personalizados em um ambiente nativo da nuvem.
Por que as escotilhas de escape são cruciais para a abstração da nuvem
Embora as camadas de abstração visem cobrir casos de uso comuns e fundamentais, elas são construídas propositalmente para evitar a exposição de cada configuração ou configuração disponível. Uma saída de emergência permite um controle mais refinado sobre os serviços em nuvem, permitindo otimizações e personalizações de desempenho.
Camadas de abstração que não introduzem saídas de escape propositalmente são mais difíceis de confiar e mais difíceis de trabalhar. No entanto, muitas estruturas de abstração reconhecem prontamente a necessidade de saídas de emergência e antecipam que mudanças devem ser possíveis em qualquer integração. Engenheiros que foram prejudicados uma ou duas vezes podem achar essas estruturas mais fáceis de confiar.
Exemplos de boas escotilhas de fuga
A melhor maneira de entender o que constitui uma boa saída de emergência é observar alguns exemplos. Anteriormente, observei que a maior parte do software é construída sobre camadas de abstração, então começarei com uma das abstrações mais comuns em projetos: bancos de dados.
Exemplo 1: Prisma
Prisma é um kit de ferramentas de banco de dados de código aberto que simplifica o acesso e o gerenciamento de dados em aplicativos Node.js e TypeScript. Ele fornece uma camada ORM (mapeamento objeto-relacional) que permite aos desenvolvedores interagir com seu banco de dados por meio de uma API de alto nível.
Apesar de sua abstração, o Prisma reconhece a necessidade de acesso direto ao banco de dados em determinados cenários, portanto, fornece saídas de escape para quando os desenvolvedores precisam de mais controle ou precisam executar operações de banco de dados não cobertas pela API do Prisma.
Uma das saídas de escape mais significativas que o Prisma oferece é a capacidade de executar consultas SQL brutas diretamente no banco de dados. Esse recurso é crucial para cenários onde a API do cliente Prisma não oferece suporte a uma operação de banco de dados específica ou quando uma otimização requer SQL direto para eficiência.
Aqui está um exemplo simples de como você pode usá-lo $queryRaw
para realizar um complexo SELECT
consulta que não é facilmente expressa por meio da API do cliente gerada pelo Prisma:
Observação: o Prisma atenua riscos como a injeção de SQL, fornecendo uma sintaxe literal de modelo marcada para $queryRaw
que ajuda a proteger contra injeção de SQL, permitindo vinculação de variáveis.
Exemplo 2: Pulumi
Pulumi é uma ferramenta de infraestrutura como código que permite aos desenvolvedores definir, implantar e gerenciar serviços em nuvem usando linguagens de programação como TypeScript, Python, Go e C#. Ele oferece suporte a vários provedores de nuvem, incluindo AWS, Microsoft Azure, Google Cloud e Kubernetes, permitindo implantação e gerenciamento entre nuvens em um produto de código aberto conhecido como API de automação.
A API de automação encapsula as APIs de vários provedores de nuvem, permitindo que os desenvolvedores interajam com os recursos da nuvem de maneira consistente e idiomática em diferentes nuvens. Para acessar recursos futuros ou experimentais ainda não totalmente suportados pelas abstrações do Pulumi, as saídas de emergência fornecem flexibilidade e extensibilidade integradas para os desenvolvedores.
Os provedores dinâmicos do Pulumi permitem definir recursos personalizados quando os provedores existentes não atendem às suas necessidades. Ao implementar os quatro métodos – criar, ler, atualizar e excluir – você pode integrar qualquer serviço externo ou API em um aplicativo Pulumi.
Aqui está um trecho que você pode expandir no guia detalhado de Pulumi Dynamic Providers:
Essa abordagem permite que os desenvolvedores incorporem os recursos de nuvem mais recentes em sua infraestrutura como código, mesmo que esses recursos ainda não estejam encapsulados nos provedores de recursos da Pulumi.
Exemplo 3: Nítrico
Nitric é uma estrutura construída para aproveitar Pulumi, Terraform e os SDKs de nuvem, projetada para simplificar o desenvolvimento de aplicativos nativos de nuvem, fornecendo um conjunto abstrato de APIs que podem funcionar em diferentes provedores de nuvem. A abstração permite que os desenvolvedores escrevam código que seja menos dependente dos serviços e APIs específicos de qualquer provedor de nuvem único, facilitando a implantação de aplicativos em várias nuvens ou a troca de provedores, se necessário.
Os provedores Nitric lidam com as operações de provisionamento e tempo de execução de aplicativos em nuvem. Ao estender um provedor, os desenvolvedores obtêm uma saída de emergência para substituir ou estender a configuração dos recursos abstraídos. Isso inclui ajustes nas configurações de desempenho, regras de segurança ou outras configurações específicas do provedor que não são expostas pela API padrão da estrutura.
Aqui está um exemplo de como uma solicitação de recurso de bucket é implantada, que os desenvolvedores podem facilmente modificar ou estender:
Essa abordagem significa que quando um desenvolvedor precisa usar um recurso específico de serviço da AWS não abstraído atualmente pela Nitric, ele pode recorrer às tecnologias abstraídas subjacentes para atingir seus objetivos.
Aproveite abstrações com escotilhas de escape
Boas saídas de emergência significam que o uso de uma estrutura de abstração não significa ficar preso às suas limitações. Eles fornecem uma maneira segura para quando você precisar sair dos limites da abstração para atender às necessidades específicas de uma aplicação, seja para otimização, acesso a novos recursos ou integração com sistemas legados.
Um equilíbrio entre a conveniência da abstração e a flexibilidade proporcionada pelas saídas de emergência garante que os desenvolvedores possam aproveitar o melhor dos dois mundos. Estamos pensando e trabalhando nesse problema na Nitric. Venha conversar conosco!
A postagem Como as escotilhas de escape tornam a abstração mais poderosa apareceu pela primeira vez em The New Stack.