Tipos de Arquitetura no Desenvolvimento de Software
Setembro 05, 2023

Tipos de Arquitetura no Desenvolvimento de Software

No que se refere a disciplina de arquitetura no desenvolvimento de software, nos deparamos com vários tipos de arquitetura. Cada qual, com suas características e especificidades.  Nesse artigo iremos abordar três tipos de arquitetura, são elas: Arquitetura de Software, Arquitetura de Soluções e Arquitetura Corporativa. Apesar de serem arquiteturas diferentes e terem funções específicas em algum momento durante o desenvolvimento elas acabam fazendo interface entre si.  Arquitetura de Software  Essa arquitetura é a que está mais próxima do código e do desenvolvedor. Concentra-se na organização interna de um sistema e aborda a divisão do sistema em componentes, como: classes, módulos ou serviços. Também define qual será a interação entre eles, sendo responsável por aspectos como a modularidade, escalabilidade, segurança e reutilização de código.  Algumas das definições dessa arquitetura:  • Qual a linguagem de programação será adotada; Por exemplo: Java ou .NET C#.  • Quais frameworks e bibliotecas usar na solução;Por exemplo, caso opte pela linguagem de programação Java, utilizar o Spring Boot Framework para facilitar e agilizar o desenvolvimento de aplicativos web e de microsserviços.  • Qual a forma de acesso a camada de dados, e de que maneira ocorrerá a persistência, se por algum framework de Mapeamento Objeto-Relacional ou manualmente. Caso opte por um ORM definir qual será a ferramenta utilizada; Por exemplo: Hibernate ou EclipseLink.  • Qual o modelo arquitetural será usado na implementação e os padrões arquiteturais adequados que atendam aos requisitos do sistema. Por exemplo: MVC, Arquitetura em Camadas, Cliente-Servidor, Hexagonal ou Orientada a Serviços.  • Qual a forma de comunicação entre os componentes do sistema; Por exemplo: HTTP, REST ou Mensageria Assíncrona.  • De que forma se dará a escalabilidade e como o sistema será dimensionado para lidar com aumentos de carga e demanda; Por exemplo: Balanceamento de Carga, Escalonamento Horizontal/Vertical ou Particionamento de Dados.  Qual seguir? Esses tópicos listaram alguns exemplos de decisões arquiteturais que podem ser tomadas durante o processo de definição de uma arquitetura de software. Para essas definições não existe a resposta certa ou errada. Apenas a que melhor se encaixa para atender uma necessidade dentro de um contexto do negócio. Essas decisões são muito importantes e devem ser tomadas com bastante embasamento e cautela, pois mudá-las mais tarde afetará toda a estrutura do sistema, ocasionando custos e atrasos indesejados no projeto. Por isso, é indicado a realização de Provas de Conceitos (POC's) para que as decisões tomadas sejam as mais assertivas possíveis e que garantam um sistema robusto, escalável e de alta qualidade.  É importante que o arquiteto de software tenha um bom conhecimento técnico e com base em suas experiências tome a melhor decisão para que o desenvolvimento seja fluido e cadenciado. Além do mais, o arquiteto deve estar preparado para agir em momentos de crise. Muitas vezes, ele poderá ser demandado para identificar problemas específicos e de complexidade elevada, como por exemplo debugar uma biblioteca ou framework para tomar uma decisão importante e corrigir um problema em produção, fazendo com que a operação volte a funcionar normalmente.  Arquitetura de Soluções  A Arquitetura de Soluções está em uma camada superior em relação a Arquitetura de Software, e é responsável por transformar o requisito do negócio em componentes de engenharia que irão atuar em conjunto para resolver o problema e atender as necessidades do negócio. Abrange a definição dos sistemas envolvidos, a integração entre eles, as interfaces de comunicação e as estratégias para garantir que a solução como um todo funcione de maneira eficaz e atinja seus objetivos. Esse tipo de arquitetura é ideal para identificar áreas dentro de uma organização onde pode haver uma redução de custos, melhorar seu desempenho e automatizar os processos de modo a tornarem mais eficientes, otimizados e padronizados.  A principal diferença entre Arquitetura de Software e Arquitetura de Soluções é que a primeira trata apenas de questões relacionadas a engenharia, enquanto a segunda é responsável por garantir que um produto de software resolva um problema de negócio específico dentro da estratégia de uma empresa. Atividades que estão associadas a esta disciplina: • Compreender e analisar os requisitos do negócio e do sistema para identificar as necessidades e os objetivos da solução; Por exemplo: Entrevistas/workshops, estudos de viabilidade e criação de diagramas de contexto.  • Criar e liderar os processos de integração entre sistemas para atender os requisitos de negócio; Por exemplo: Definição de interfaces, serviços web (API's REST) e Middleware de integração (Kafka).  • Identificar e definir as medidas de segurança necessárias para proteger a solução contra ameaças; Por exemplo: Autenticação, Autorização, Criptografia e proteção de dados sensíveis.   • Colaborar com stakeholders (desenvolvedores, analistas de negócios e gerentes de projeto), para garantir a compreensão e a adoção da arquitetura de soluções; Por exemplo: Comunicação clara das decisões arquiteturais, realização de revisões técnicas e a obtenção de feedback dos envolvidos.  • Identificar os riscos associados à solução e desenvolver estratégia para mitigá-los; Por exemplo: Análise de riscos técnicos, operacionais e segurança.  • Considerar os requisitos de desempenho, como tempo de resposta e capacidade de processamento, e também a capacidade de escalar a aplicação para lidar com picos de aumento de carga; Por exemplo: Uso de caches, escalonamento horizontal, arquitetura de microsserviços ou serviços de mensageria.  Vínculo forte Podemos concluir que a arquitetura de soluções está na divisão entre o técnico e o negócio, e que há um vínculo forte entre essas duas vertentes, considerando a importância de que a solução técnica está sendo definida para resolver um problema de negócio. As habilidades de comunicação na arquitetura de soluções são imprescindíveis, pois há frequentemente um contato direto com a área de negócio, que normalmente tem o conhecimento técnico muito pequeno ou inexistente, com isso, cabe ao papel do arquiteto de soluções ser capaz de explicar e traduzir de forma simples toda a solução técnica que será construída, de uma forma abstrata o suficiente para que todos entendam. Algo importante a se considerar é o conhecimento necessário para representar a arquitetura através de diagramas, como por exemplo o C4, e que ele possa representar de forma clara os componentes do software, a interface com outros sistemas, o fluxo de dados e demais informações que forem pertinentes tanto para a engenharia quanto para o negócio.  Arquitetura Corporativa Define-se arquitetura corporativa como uma série de conhecimentos técnicos e habilidades de gestão que integram a tecnologia aos objetivos do negócio, é uma visão mais ampla que abrange a arquitetura de todo o ambiente de tecnologia da informação da organização. Determina os princípios, políticas e os padrões de governança que orientam a estruturação dos sistemas de software e infraestrutura de uma empresa, se concentrando em como os diferentes sistemas e soluções se encaixam dentro do contexto organizacional, garantindo a consistência, a integração e a eficiência dos recursos de TI.A arquitetura corporativa também considera fatores estratégicos e de negócios, alinhando a tecnologia da informação com os objetivos e necessidades da organização. Ela pode incluir a definição de modelos de processos de negócios, a gestão do portifólio de sistemas, a governança de TI e a definição de políticas de segurança da informação.  Decisões tomadas dentro desse tipo de arquitetura:  • Padronização de linguagem de programação e frameworks utilizados nas soluções dentro da empresa, delimitando quais tecnologias estarão habilitadas para serem utilizadas; Por exemplo: Utilizar a stack Java com Spring Boot Framework em soluções de API.  • Padronização de bases de dados; Por exemplo: SQLServer e Oracle.  • Processos de controle de mudança para auditoria de publicações em ambiente produtivo; Por exemplo: Controle de acesso e permissões, revisão e aprovação de alterações. • Definir e documentar um modelo de arquitetura que a organização irá trabalhar; Por exemplo: Criar um diagrama que ilustre as principais camadas da arquitetura, abrangendo as camadas de apresentação, negócio e dados.  • Avaliar a implantação de novas tecnologias; Por exemplo: Realização de Provas de Conceito (POC's) e pesquisas de mercado.  • Implementar soluções corporativas de DevOps; Por exemplo: Automação de compilação e empacotamento utilizando o Jenkins como esteira de CI/CD.  Importância da arquitetura corporativa Ter uma arquitetura corporativa é muito importante, pois define padrões que a empresa toda deve adotar e seguir, e ajuda a alinhar os objetivos estratégicos da organização com suas atividades operacionais, auxiliando na identificação de redundâncias, ineficiências e oportunidades de otimização, permitindo a simplificação, consolidação e racionalização dos recursos resultando em maior eficiência operacional e redução de custos. A arquitetura corporativa auxilia na gestão do ciclo de vida dos sistemas de TI, desde o planejamento estratégico, estabelecendo padrões de qualidade, governança e conformidade para o desenvolvimento, implantação, operação e manutenção dos sistemas garantindo uma gestão efetiva e sustentável dos ativos de TI.  Conclusão Nesse artigo, abordamos os três principais tipos de arquitetura existentes no desenvolvimento de software, os detalhes de cada tipo e como eles se relacionam entre si. Essa divisão é importante para que cada arquitetura foque em uma área específica de modo que as três juntas possam abranger todo o ciclo de desenvolvimento de um software. Como vimos a arquitetura de software está mais próxima ao código e ao desenvolvedor, a arquitetura de soluções mais voltada ao negócio que a solução pretende resolver e a arquitetura corporativa para definir os padrões tecnológicos que a organização deve adotar para as soluções de software implementadas. A aplicação desses tipos de arquitetura varia de acordo com o tamanho da organização, quanto maior, mais separado e específico os tipos de arquitetura, e quanto menor, menos separação entre os tipos de arquitetura, e muitas das vezes se fundindo em apenas um tipo. É importante salientar que, para cada tipo de arquitetura, pode-se executar um papel diferente por parte do arquiteto, e cada qual com suas habilidades específicas para cada área, porém as habilidades de comunicação, senso crítico, proatividade e resiliência são comuns para todos os tipos de arquitetura. Referências https://blog.xpeducacao.com.br/o-que-e-arquitetura-de-software https://www.infoq.com/br/articles/papel-arquiteto-solucao

Minha vida é como um ticket de suporte
Agosto 30, 2023

Minha vida é como um ticket de suporte

Aqui no time de suporte da Projuris, quando recebemos um ticket (também conhecido por muitos como chamado), analisamos cuidadosamente qual é a demanda do cliente e o qual o seu impacto na operação.   Já dizia o ditado: “a vida imita a arte”. Por isso, posso dizer que nossa vida tem muita relação com um ticket de suporte. Podemos até dividir nas mesmas etapas de análise para resolver um problema. Serviço, categoria e urgência.  Em relação a análise do serviço, podemos comparar com a vida ao separar em áreas todos os pontos da vida, sejam eles na área pessoal, profissional ou espiritual. Ou seja, buscar, de forma ampla, não só a sua a identificação, mas também, a sua melhor forma de atuação.  Logo depois do serviço, chegamos na categoria, que podemos relacionar como se fosse a dúvida, problema ou tarefa. Esta questão é importante para analisarmos as atitudes para contornar este problema. Os problemas, que são parte da vida dos seres humanos, podem ser confundidos com a dúvida. Mas, há diferença: enquanto as dúvidas se referem ao desconhecimento ou falta de interpretação sobre algo, os problemas não seguem o mesmo fluxo.   Os problemas são apontamentos em que deveriam seguir assim, mas não são. Por exemplo: Todas as demandas em que não temos respostas, ao menos no primeiro momento, são consideradas problemas, podendo haver soluções no momento ou no futuro.  Se os problemas se referem a como fazer, não é um problema, mas sim, uma dúvida.  O último item, na minha opinião é o mais simples. São as tarefas, que são operações sobre determinado ponto.   E quando falamos sobre urgência, classificamos em: blocante, urgente, alta, média e baixa.  Blocante é categoria na qual paralisa toda a operação e todos os usuários da organização. Sob a ótica da vida, a categoria blocante é algo que deve ser resolvido imediatamente.  A urgente se assemelha com a blocante, entretanto, não paralisa toda a operação. Pode ser resolvida com mais calma.  As categorias alta, média e baixa são problemas em que se devemos analisar quais serão os impactos no cotidiano.  As urgências ajudam a entender as demandas prioritárias. Até porque, quanto mais grave, maior o seu impacto.  Ticket de suporte ou da vida? Agora eu te pergunto: quem é o especialista por trás deste ticket da vida? Isso mesmo, sou eu, você, nós. Por isso, ser especialista nas suas próprias “demandas” (o que também podemos chamar de autoconhecimento) é um elemento essencial para compreender as questões que lhe afligem. E quanto mais você se organiza, classifica seus problemas e os prioriza, melhor você os resolverá, tornando sua vida mais tranquila. 

Softplan ajudou a desenvolver soluções para seis tribunais de Justiça estaduais e está presente em mais de 600 municípios.
Julho 24, 2023

Softplan ajudou a desenvolver soluções para seis tribunais de Justiça estaduais e está presente em mais de 600 municípios.

A transformação digital no setor público do Brasil traz mais economia, aumenta a arrecadação e também contribui para uma maior transparência, de acordo com a experiência da empresa Softplan, que se especializou em desenvolver soluções digitais para o setor público e registrou um aumento de 37% do seu faturamento em 2022. “A transformação digital é viável, possível e barata. Além disso, pode ser implantada de uma forma rápida, porque se baseia em tecnologias já dominadas. Nos especializamos nesta jornada que conduz desde o papel à automação”, diz o diretor da unidade de Setor Público da Softplan, Rodrigo Santos. Ele cita como exemplo o serviço 1Doc – desenvolvido pela empresa – e comprado pela prefeitura de Caruaru, no Agreste de Pernambuco. A 1Doc é uma plataforma de serviço de software que torna os processos digitais, conectando atendimento, comunicação e gestão documental em um único lugar. Na Prefeitura de Caruaru, a plataforma registrou 1,3 milhão de solicitações de usuários. Como resultado, uma economia de R$ 4,5 milhões e uma redução de 70% no tempo de resolução dos processos, segundo Rodrigo. E tudo isso aconteceu no período de 21 meses. A economia ocorre porque deixa de usar papel – que também tem um custo -, passam a ser contabilizadas menos horas de trabalho para concluir um processo, entre outras.   Leia aqui o artigo completo publicado no Portal Movimento Econômico