Princípios de uma Plataforma digital
Elencando os principais tópicos para uma plataforma digital
Introdução
Esse é o segundo texto sobre plataformas, agora iremos detalhar uma plataforma digital do ponto de vista técnico. Caso você não tenha lido o primeiro artigo, recomendo repassar por ele, pois é uma introdução àplataformas e irá trazer mais detalhes do ponto de vista operacional, onde abordamos vantagens, desvantagens e potenciais plataformas dentro de um negócio.
Agora que temos uma compreensão mais detalhada sobre o tema, iremos esmiuçar as camadas específicas de uma plataforma digital, para isso nós vamos aplicar cada etapa desse modelo com softwares open source, assim conseguimos ser mais generalistas sem ficar preso a produtos ou fornecedores de cloud computing, focando apenas em arquitetura, tecnologia, benefícios e a responsabilidade que cada divisão terá dentro desse universo. O ideal de optarmos por essa forma de fazer é que nos possibilita a liberdade criativa de utilizarmos o que for mais conveniente ao seu cenário, tendo em vista que o baixo acoplamento faz com que possamos implementar e implantar as etapas mencionadas mais a frente desse texto de forma independente, lembrando que, caso você deseje levar essa construção para a sua produção, recomenda-se obter suporte comercial.
Plataforma Digital e suas características
Se você já é um profissional de tecnologia, acredito que já tenha tido contato com alguns termos que iremos mencionar, mas caso você não seja, irei detalhar cada propriedade que escolhemos para representar e que são essenciais para que a operação do seu negócio não seja comprometida, logo, são pontos essenciais podendo ser aprimorados, mas de preferência não reduzidos. As características principais são: Baixo acoplamento, APIs, Metodologia Ágil, Resiliência, Modularização, Performance-Eficiência e Open source.
Baixo Acoplamento
O termo de baixo acoplamento surgiu em meados de 1960, quando Larry Constantine conduziu um estudo sobre módulos de sistemas e suas definições. Sistemas com baixo acoplamento são mais bem desenvolvidos, esse comportamento fornece facilidade em futuras funcionalidades pois tem um custo e um risco menor. Um dos pontos essenciais para esse tipo de abordagem é sua maior facilidade de compreensão, podendo ser um fator interessante do ponto de vista de domínio de função, pois em tecnologia sabemos que há um alto índice do turnover e que o conhecimento está na forma empírica da construção da solução. As vantagens são extensas, testes e análises de sistemas com esse perfil são encarados de forma muito mais simples. Existem Patterns que auxiliam o baixo acoplamento e o Facade é um deles, fornecendo desacoplamento e abstrações.
APIs
Applications protocol interface, mais conhecido com API. Essa forma de integração surgiu nos primórdios da computação tendo sua aplicação muito utilizada nas bibliotecas dos primeiros sistemas operacionais. Apenas após a década de 1930, que essa forma de integração se expandiu, além de conexões locais. Sua principal função é permitir uma comunicação entre camadas do seu negócio sem precisar saber como ele foi implementado, aqui temos um exemplo de baixo acoplamento. O principal ganho das APIs é a simplificação no desenvolvimento, gerando otimização de tempo e redução de custo. Uma APItem a flexibilidade necessário para atender o negócio e ao mesmo tempo fornecer oportunidade de inovação. Esse tipo de comunicação fornece acessos de forma segura. Existem vários tipos de APIs que se categorizam de forma: Privada, Parceira e Pública. Com a evolução da Web 2.0, fez com que as APIs tornassem primordiais para o funcionamento dos produtos digitais que temos hoje, normalmente utiliza-se o protocolo HTTP para comunicação e suas mensagens seguem um padrão que podem ser XML ou JSON.
Metodologia Ágil
Desenvolver softwares que atendam requisitos técnicos são essenciais para o ciclo de vida e manutenções futuras, mas o tempo hábil de construir uma solução de acordo com o Time to Market é essencial para que o produto atinja as expectativas desejadas. O método ágil de desenvolvimento tem como principal objetivo a entrega de um produto com máxima qualidade com o menor tempo possível. Para alinhar esses dois objetivos, é necessário um planejamento que priorize as releases do protótipo, as entregas precisam agregar valor ao negócio e aproximar a experiência do usuário final ainda no processo de construção. Em 2001 foi publicado o manifesto ágil que tem como principal objetivo: priorizar o usuário e sua interação com o sistema em contrapartida de ferramentas e processos.
Resiliência
Esse é um tema de extrema importância e que abrange múltiplas práticas. O resumo de resiliência em sistemas seria: capacidade de um sistema lidar com mudanças de forma que não afete sua operação. É importante afirmar que dificilmente temos sistemas totalmente resilientes a todo tipo de adversidade enfrentada. Para se alcançar o nível desejado disponibilidade, precisamos fazer alguns questionamentos básicos e as respostas vão variar de produto a produto, as perguntas são: Quais serviços críticos o sistema precisa fornecer sem interrupções? Que tipo de adversidade podem afetar os sistemas críticos? Quais condições os sistemas críticos devem suportar? Com base nas respostas é possível mapear riscos e pensar em soluções que visam manter a operação íntegra em momentos críticos.
Modularização
Conceito computacional que consiste em divisão de responsabilidades sobre o sistema, parte dessa abordagem foi exemplificada quando falamos sobre baixo acoplamento. Das vantagens que essa prática nos possibilita é a capacidade de detecção de erros em respectivas camadas de sistemas, afinal teremos um módulo responsável em cobrir determinado domínio dentro da arquitetura. Os testes são mais intensificados pois você poderá aplicar vários tipos de testes num único ponto do sistema tornando sua homologação muito mais eficiente, a praticidade da manutenção não compromete o ecossistema como um todo, você será direcionado apenas no que for da responsabilidade sobre a função. Desenvolvimento paralelizado de forma que diversos times podem trabalhar na solução ganhando em performance de desenvolvimento, entrega e reutilização. Uma vez que uma funcionalidade bem construída e de comportamento genérico consiga atender outros sistemas.
Performance e Eficiência
Esse tópico abrange duas frentes pois precisam estar ligadas, pois para se ter performance precisa-se de eficiência e o mesmo caso para o inverso. A premissa da performance é extremamente essencial quando aplicamos conceitualmente a ideia de atender o máximo de pessoas com o mínimo de recurso possível. Pensar em performance vai desde adoções de processos e práticas que otimizem o time de desenvolvimento, pensamento de funcionalidades e que reflita diretamente no usuário final, seja como experiência de usuário ou em seu tempo de espera ao requisitar algo dentro do sistema, o ganho de tempo é essencial nesse tema. Já a eficiência pode ser focada em recursos, ter um modelo operacional sustentável que seja flexível, escalável e que torne a decisão de negócio cada vez mais fácil de ser aplicada e seu resultado seja obtido no menor intervalo de tempo possível. A eficiência envolve desde de adoções de ritos dentro da metodologia ágil, passando por ambiente computacional para operação e sua escolha pelo o provedor de cloud que é essencial para suportar as demandas de pico do seu negócio sem onerar a operação do ponto de vista financeiro.
Open Source
Matriz da inovação, o open source não é só ponto importante desse tema, mas determinante para uma solução disruptiva, potente e de grande engajamento da comunidade. Existem alguns pontos que são determinantes na escolha de ferramentas Open, lembrando que nós não estamos recomendando apenas esse tipo de ferramenta, mas é um estímulo a comunidade que sempre se mostrou uma potente vertente de inovação em soluções tecnológicas. Os seus benefícios são: Possibilidade de experimentar sem necessidade de pagamento prévio, flexibilidade de modificação para melhor atender o seu caso, código aberto e baixo custo.