Antes de te contar como encontramos e executamos um framework de arquitetura essencial para software de sucesso, precisamos relembrar o contexto que vivenciamos por aqui e, possivelmente, você irá se identificar com ele.
Ao acompanhar a história do desenvolvimento de software, nunca tivemos tantas opções de frameworks, linguagens de programação, templates de projetos e ao mesmo tempo nunca falhamos tanto em alcançar o objetivo, que é atingir as expectativas de clientes.
Em um mundo de tantas complexidades, nasceu um framework de arquitetura cujo foco é trabalhar no essencial para atingir esse objetivo.
Afinal, indiferente da linguagem, metodologias, frameworks, todos temos um único objetivo que é fazer um produto que impacte e traga resultados para a sua organização. O sucesso é unanimemente o objetivo, porém não é trivial alcançá-lo. Você verá como ao longo deste texto!
Atingir o sucesso em um software: por que é tão difícil?
Alcançar o sucesso em desenvolvimento de software certamente é o ponto mais almejado de todas as organizações, porém não necessariamente é o que alcançamos. E podemos dizer que não é por falta de planejamento.
Em um artigo do último ano, a Forbes enumerou 16 obstáculos para ter um software de sucesso. É possível perceber que, ao contrário do que sempre imaginamos, no geral, não existe uma falta de planejamento em sua maioria. O que existe é um planejamento em demasia.
Apesar disso, por que não conseguimos atender ou satisfazer clientes?
> It is common for developers to deliver a product that doesn’t align with the client’s perceptions.
Dentre as várias respostas que podemos enumerar, uma em especial se encontra dentro do próprio artigo: a complexidade não esperada por parte da engenharia.
Complexidade: uma das maiores vilãs para um software de sucesso
Dentre os maiores obstáculos, o mais recorrente e o mais indesejado, certamente, acontece quando fazemos um esforço desnecessário para um caminho que não trará sucesso ou o resultado desejado e muitas vezes isso acontece pela complexidade desnecessária.
Um desses sintomas acontece de forma quase paradoxal, considerando o grande número de ferramentas que utilizamos visando facilitar o dia a dia e que, na verdade, só o tornam mais difícil.
Muitas dessas abordagens não apenas deixam o ambiente mais improdutivo, mas também podem aumentar o risco e a probabilidade de falhas dentro de um time de desenvolvimento.
Quando temos dificuldade de escalar times, disseminar conhecimento, encontrar alto risco na solução de problemas e improdutividade, temos que parar e pensar um pouco sobre a arquitetura atual do projeto.
Para mergulhar na discussão sobre overengineering, ouça o nosso podcast sobre o tema.
Arquitetura de software: ainda precisamos?
Certamente um dos pontos mais discutidos nos últimos anos e ao mesmo tempo mais difícil de se encontrar uma definição está relacionado ao termo “arquitetura de software”.
Diversas literaturas clássicas possuem uma variação do termo, como Just Enough Software Architecture; Software Architecture for Developer; e os quatro livros clássicos sobre arquitetura do Neal Ford: Evolutionary Architecture, Software Architecture the Hard Part, Software Architecture Metrics e Fundamentals of Software Architecture.
O que elas têm em comum é que a arquitetura de software está ligada a um ponto do sistema que é difícil de modificar e que é visto a longo prazo na maioria das vezes. É na arquitetura que definimos o objetivo principal do software além das consequências dessas escolhas.
Um ponto interessante está nas duas leis que foram definidas nos fundamentos de arquitetura de software já mencionados acima:
- O porquê é mais importante que o como;
- Toda escolha é baseada em trade-offs.
Para fãs do Simon Sinek, a primeira lei de arquitetura vem de encontro com o seu círculo dourado, do qual devemos sempre começar pelo porquê.
A arquitetura é extremamente importante para o sucesso de uma solução, uma vez que ela está amarrada com o objetivo e a visão do software a curto, médio e longo prazo. Ela estará presente seja de forma consciente, gerenciada e alinhada com o sucesso; ou inconsciente, onde o time ficará refém do acaso e das complexidades desnecessárias.
Uma vez definida a importância de uma arquitetura, como garantir que a tenhamos pronta para alcançar os nossos objetivos? Felizmente, temos um framework excelente para você garantir o seu sucesso e o da sua organização.
Arquitetura essencial: um framework para alcançar o seu sucesso com base na experiência Zup
O Framework de Arquitetura Essencial é uma ferramenta valiosa para empresas que buscam se destacar no mercado de tecnologia.
Criado pela Zup Innovation, o framework é um produto de anos de experiência da organização em atender o mais diverso mercado de tecnologia de impacto global com as novas tendências na indústria. O principal ponto aqui é que ela é flexível, uma vez que sabemos que não existem soluções bala de prata.
O nosso framework é composto por quatro especialidades e cada uma possui um ou mais itens de capacidades. Naturalmente, cada projeto tende a variar o número de capacidades que existirá em uma aplicação, no entanto, acreditamos que o essencial de um software de sucesso passará por aplicação, cloud, segurança e dados.
Aplicação
Garantir que o código seja mantido ao longo dos dias é um dos maiores desafios dentro de uma organização. Afinal, é importante escrever software com qualidade a ponto de não ser necessário que se reescreva toda a aplicação a cada ciclo de três ou cinco anos.
Essa especialidade é eficiente em lidar na construção do software em si e não é exclusiva para o back-end, afinal, assim como as boas práticas do The Twelve-Factor Application.
Qualidade de código, teste, documentação, resiliência e performance farão parte tanto de back, front e também com foco no mobile. Embora muitas organizações não imaginem, uma baixa qualidade de software tem um alto custo para a organização, por conta da complexidade de resolução e abertura de brechas como vulnerabilidades de código. Só no ano passado, estima-se que esse custo nos USA foi de 2.41 trilhões de dólares.
Cloud
O desperdício é um dos temas preferidos de muitas pessoas executivas de tecnologia, como redutor de TCO. O Gartner estima um gasto de $600 Billion em 2023, dos quais estudos apontam que 30% está relacionado a custos evitáveis.
Essa especialidade vem ao combate desse tipo de desperdício, além de utilizar o poder computacional da cloud para acelerar e modernizar a infraestrutura atual. Essa especialidade abrange capacidades de cultura como DevOps, GitOps, DocOps, FinOps, até práticas como observabilidade (logging, tracing e métricas) e infra como código.
Dados
Definido como o novo petróleo por Clive Humby em 2006, essa definição nunca foi mais viva e ativa: utilizar os dados já existentes dentro da organização para potencializar a geração e aprimoramento de informações de produtos dentro de uma organização.
Essa especialidade tem o objetivo de trazer todos os poderes existentes em dados para sua organização com a perspectiva de revolucionar os negócios atuais ou a criação de novos. Tudo isso através de formas descentralizadas como Data Mesh.
Segurança
Listado por último, porém não menos importante. A segurança é um dos pontos que mais impactam uma organização, afinal sua falha não impactará apenas o produto, mas a confiança da empresa com relação a clientes. No OWASP Top Ten, estima-se que grande parte das organizações possuem alguma vulnerabilidade dentro do seu sistema.
Essa especialidade tem o objetivo de evitar dores de cabeça para o negócio e a credibilidade dentro da organização de forma preventiva. Podemos incluir aqui a cultura de trazer a segurança nos processos de desenvolvimento e testes automatizados dentro da CI como uma análise estática; SAST dentro da cultura DevSecOps; além de proteção de dados e sistemas na nuvem com cloud security.
Conclusão
A criação de um framework arquitetural com o objetivo de potencializar os negócios existentes e criação de novos de maneira sustentável, segura, com qualidade e data-centric é a nossa maior motivação, alimentada por mais de uma década de experiência na construção desse framework.
Um ponto importante é que esse framework de arquitetura essencial não vem sozinho. Ele é integrado com a StackSpot, produto da Zup que visa através das quatro especialidades acima apresentadas potenciar o sucesso de software dentro da sua organização.
Tem curiosidade para conhecer um pouco mais sobre cada uma dessas especialidades e da StackSpot? Em breve, traremos para você um pouco mais sobre cada uma delas e como a plataforma pode te ajudar nessa jornada.