De acordo com o vice-presidente do Gartner, Yefim Natis, um novo estilo de arquitetura corporativa está emergindo: o Software-Defined Architecture (SDA) - ou Arquitetura Definida por Software.
Durante o webinar "Software-Defined Architecture: Application Design for Digital Business" apresentado pelo Gartner (restrito a assinantes), Natis abordou os desafios atuais que arquitetos de software enfrentam e alguns dos princípios de design que ajudam a criar aplicações melhores e duradoras. No webinar foi apresentada a ideia do SDA como evolução natural no campo da arquitetura de software, sucedendo estilos antigos desde o estilo monolítico da década de 70 até os paradigmas mais recentes. A figura a seguir foi extraída de um dos slides apresentados no webinar (PDF) e mostra a evolução sugerida por Natis:
O SDA segue o mesmo caminho do Software-defined Networking (SDN), Software-defined Storage (SDS) e outros paradigmas introduzidos pela computação em nuvem, mas dessa vez o conceito é aplicado a todas as camadas arquiteturais de software. A ideia principal é introduzir um nível de virtualização entre softwares produtores e softwares consumidores. Essa fronteira esconde detalhes internos de implementação, tornando possível alterar ou substituir a implementação sem afetar o consumidor. O processo leva à criação de dois conjuntos de APIs: uma interna para o produtor e uma externa para o consumidor, como foi apresentado no gráfico anterior.
A API interna expressa a organização de um sistema através de módulos de fácil manutenção, seguindo princípios e padrões arquiteturais visando otimizações de desempenho. Por sua vez, a proposta da API externa é fazer com que a API interna seja consumida de maneira fácil e segura por várias entidades externas. As APIs externas oferecem uma visão simplificada do sistema e são otimizadas para invocações remotas a partir de longas distâncias.
Uma arquitetura SDA é criada a partir de serviços. Esses serviços, no entanto, não devem ser consumidos diretamente. Eles são separados dos seus consumidores por um gateway (porta de entrada ou camada intermediária), criando uma fronteira de abstração entre os dois, conforme mostrado a seguir:
O gateway SDA é responsável pelo processo de virtualização da implementação interna, resultando na tradução de APIs internas, protocolos e modelos utilizados, além de lidar com versionamento de APIs. O gateway cobre outras funções, como por exemplo segurança, roteamento, orquestração, etc. De acordo com Natis, atualmente os gateways são implementados parcialmente por diversos produtos, como o gerenciador de API da Apigee e Mashery, gateway de API da Layer 7 ou Vordel, ESBs que foram expandidos para incluir gestão de API, e IPaaS (Plataforma de Integração como Serviço) como CastIron ou Boomi.
Natis ainda recomenda lidar com segurança de dados criando um pequeno número de serviços que podem interagir com dados brutos, concentrando assim o gerenciamento e em um pequeno subconjunto de APIs, o que reduz a possibilidade de brechas de segurança.
O InfoQ entrevistou Natis para descobrir mais detalhes sobre o SDA.
InfoQ: Nunca tínhamos ouvido falar em SDA até o momento. Esse termo está sendo usado por mais alguém ou é algo que você mesmo criou?
[YN] Sim. O Gartner está introduzindo o termo Software-defined Architecture. O termo ainda é novo e nós ainda não publicamos relatórios ainda. Está em andamento.
InfoQ: O SDA é um passo natural no progresso das arquiteturas de software, que passou pelo monolítico, 2-tier (duas camadas), etc.?
[YN] Sim. Você pode enxergar o SDA como um SOA virtualizado ou gerenciado. É uma resposta à proliferação de interfaces SOA (APIs) e à demanda contínua por mais APIs com ênfase no usuário final. Com SDA, as aplicações são virtualizadas e as APIs externas se tornam desacopladas das APIs internas, permitindo livre criação de APIs externas customizadas para usuários sem perder o controle da aplicação.
InfoQ: Quais são os benefícios de se usar SDA?
Virtualização de aplicações e serviços; introdução de uma camada intermediária (gateway) entre o mundo externo e as aplicações; uma oportunidade para inclusão de gerenciamento, rastreamento, segurança, cobrança, monitoramento de atividades, otimização, roteamento, integração, composição, orquestração, injeção de contexto e vários outros benefícios entre o consumidor externo e as aplicações que implementam os serviços. Uma possibilidade em especial é permitir que consumidores criem suas próprias APIs sem criar riscos para a aplicação e os dados internos.
InfoQ: Você poderia dar alguns exemplos de onde o SDA está sendo utilizado?
[YN] O SDA é um conceito novo e, por conta disso, ainda existem poucas implementações significativas. A API de gerenciamento do Netflix é um exemplo de implementação proprietária. Mas já há bastante uso por empresas de integração e gateways de API, assim como gerenciadores de interfaces SOA, os quais fornecem algum grau da capacidade do SDA. Serão ainda necessários alguns anos até a utilização plena e consistente do SDA em aplicações de gestão de serviços. Isso depende bastante da tecnologia, mas ainda mais da cultura e disciplina das organizações que a implementam.