PT | EN
Publicado dia 2 de junho de 2020

Desenvolvimento ou Consultoria em Arquitetura de Software? Como escolher?

| Tempo de leitura 7 minutos Tempo de leitura 7 minutos
Desenvolvimento ou Consultoria em Arquitetura de Software? Como escolher?

Nesses 23 anos de experiência no mercado de tecnologia, percebemos que muitos dos clientes que chegam até a SoftDesign em busca de Desenvolvimento de Software, na verdade estão precisando de uma Consultoria em Arquitetura de Software. A diferença entre um serviço e o outro tem relação com fatores como o estágio do produto ou serviço digital em questão, a demanda efetiva do negócio, e a existência de problemas prévios.

Iremos então, neste artigo, esclarecer quais são as ocasiões em que o necessário é um Desenvolvimento de Software e quais aquelas que pedem por uma Consultoria em Arquitetura de Software. Para começar, vamos entender quem são os profissionais envolvidos nesses serviços.

Qual a diferença entre um desenvolvedor sênior e um arquiteto de software?

Muita gente acredita que arquiteto de software é sinônimo de desenvolvedor de software sênior. O arquiteto é, de fato, um desenvolvedor, mas sua visão se tornou mais ampla por meio da experiência adquirida e, por isso, ele tem uma noção completa de como as soluções funcionam em diversos níveis.

Isso quer dizer que tanto o desenvolvedor quanto o arquiteto dominam determinadas linguagens de programação (de acordo com a especialidade de cada um), mas o arquiteto entende de forma mais profunda, por exemplo, como aquela linguagem interage com a memória do computador ou como ela vai se comportar quando for necessário utilizar múltiplas instâncias de servidor, entre outros. Ou seja, o desenvolvedor é um usuário da tecnologia enquanto o arquiteto, além disso, entende o mecanismo e o seu funcionamento interno.

Vale salientar que os arquitetos de software não são todos iguais. Assim como os desenvolvedores, eles traçam trajetórias próprias que lhe fornecem conhecimentos sobre determinadas tecnologias ou áreas, o que os torna especialistas. Dessas áreas, eles entendem os critérios profundos de funcionamento, por exemplo: alguns arquitetos são especializados em cloud e microsserviços, outros têm mais conhecimento em bases de dados, e há ainda aqueles especializados em segurança.

O que são requisitos funcionais e requisitos não funcionais?

Uma forma de distinguir os serviços de Desenvolvimento de Software e de Consultoria em Arquitetura de Software é aproximá-los dos requisitos que lhes competem. Requisitos são descrições do que determinado sistema deve executar – eles refletem a necessidade do cliente sobre aquele produto digital. Existem requisitos funcionais e requisitos não funcionais.

– Requisitos funcionais: dizem respeito às funções que o software deve possuir, a como ele deve reagir a entradas específicas, como ele irá se comportar em determinadas situações, e até mesmo declarar o que o sistema não deve fazer. Um exemplo seria dizer que o software deve ser capaz de emitir boletos, ou que deve permitir ao usuário fazer a assinatura de um serviço. A construção dos requisitos funcionais é responsabilidade dos desenvolvedores de software e, por isso são atendidos pelo serviço de Desenvolvimento.

– Requisitos não funcionais: estão relacionados a qualidades específicas e restrições que o software deve atender. Existem os requisitos de produto, como confiabilidade, eficiência, portabilidade, usabilidade e desempenho; os requisitos organizacionais, como de entrega, implementação e padrões; e os requisitos externos, como interoperabilidade, éticos, de segurança, privacidade e legislativos. Um exemplo de requisito não funcional é quando falamos que o software deve ter um Up Time (tempo disponível) de 99%, ou que ele deve ser capaz de suportar até 10 mil usuários simultâneos, ou ainda que deve garantir que os dados sensíveis sejam criptografados para impedir sua divulgação. Quando há um requisito não funcional desafiador, que precisa de planejamento para ser realizado, então, precisamos da Consultoria em Arquitetura.

Startups e empresas consolidadas podem precisar dos dois serviços?

As diferenças entre os profissionais destes serviços e os requisitos com os quais eles trabalham nos mostram que o Desenvolvimento de Software é indicado para novos produtos ou serviços digitais de empresas e startups, e também para ampliação de softwares já existentes (que precisam desenvolver novas funções) em ambientes controlados. Esse serviço possui métodos específicos para ajudar a refinar os requisitos funcionais, defini-los sobre uma perspectiva de experiência do usuário e entregar com velocidade as novas funções desejadas.

Porém, quando o problema envolve um gargalo ou ponto de falha em um software já existente, ou ainda um grande desafio técnico no início de um novo produto, antes de desenvolver é preciso analisar e pensar estrategicamente no conjunto de tecnologias e ferramentas ideais para essa situação. Nesse caso, a Consultoria em Arquitetura de Software é a responsável por fornecer essa resposta. Isso significa que raramente esse serviço será ofertado para uma startup em estágio inicial, pois nesses casos a inovação geralmente não é em tecnologia, mas sim em modelo de negócio. Agora, quando a startup começou a crescer e não estava preparada para isso – o que às vezes acontece exponencialmente e rapidamente – pode ser que ela precise da Consultoria para evoluir sua tecnologia, aumentar a capacidade de novos usuários, de novas transações, de absorver momentos de pico de uso ou mesmo para reduzir os custos causados pela escala vertical.

Exemplos de casos reais

Portanto, o cliente de Consultoria em Arquitetura de Software, na maioria das vezes, já tem um produto digital em funcionamento, mas ele precisa mais do que evoluir as funções desse produto, necessita corrigir falhas e gargalos que já existem ou que irão existir.

Falhas que já existem podem estar relacionadas, por exemplo, à defasagem tecnológica. Em um dos nossos clientes recentes, fomos chamados para ajudar a entender por que o sistema web de gestão interna caia com frequência, parando a operação e gerando prejuízos. O problema estava no banco de dados que, com as atualizações do sistema operacional, se tornou incompatível com o mesmo, ocasionando a queda do pool de conexões e, consequente, a queda do sistema. A incompatibilidade era de baixo nível e difícil de diagnosticar: tinha relação com a maneira como a base de dados utilizava o processador do servidor. Para solucionar o problema, nossa equipe de arquitetos apresentou algumas opções e orientou o time do cliente na execução da correção.

Já os gargalos que irão existir, normalmente, estão ligados à previsão de crescimento do negócio. Atendemos um cliente de uma instituição financeira que sabia que o seu número de transações digitais iria aumentar e o software que ele possuía não iria suportar. Nossos arquitetos sugeriram uma nova stack (conjunto de tecnologias), incluindo não somente a troca da linguagem de programação, mas também de toda a arquitetura – migrando de monólito para microsserviço, e com um roadmap faseado para a inclusão de soluções de API Gateway, Load Balancing, Tracing, Logging e Queues. Cada uma dessas soluções se torna necessária ao passo que a empresa continua crescendo e, nesse caso, nossa equipe de desenvolvimento foi acionada para aplicar tais mudanças.

Equipes específicas para cada serviço

Vale ainda deixar claro como são diferentes as equipe destes dois serviços. Na SoftDesign, o time de Desenvolvimento de Software é composto por desenvolvedores, designers, testers, product owners e scrum masters, que constroem softwares e melhoram produtos e serviços digitais utilizando métodos ágeis. Já na Consultoria em Arquitetura de Software, o cliente tem um arquiteto dedicado ao projeto que executa um cronograma de diagnóstico, identificando soluções e planejando a execução. Essa pode ficar a cargo da equipe da SoftDesign ou do time do próprio cliente.

Além disso, o arquiteto que está atuando em Consultoria faz reuniões frequentes com os nossos demais arquitetos para explorar o problema e trocar conhecimentos. Ou seja, o cliente tem acesso a todo o nosso pool de arquitetos, cada um com suas experiências específicas, que pode contribuir de maneira diferente para a solução do problema.

quadro_resumo_arquitetura_de_software


Agora que você já sabe qual o melhor serviço para a sua necessidade, basta preencher o formulário para solicitar o contato de um consultor.

Vamos conversar?

Entre em contato e vamos conversar sobre seus desafios de TI.

Foto do autor

Karina Hartmann

Karina trabalha na concepção de produtos digitais para startups e grandes empresas. Também já foi Gerente de Projetos, Analista de sistemas, Programadora Java, e já trabalhou com melhoria de processo. É Mestre em administração pela UFRGS, onde estudou métodos de desenvolvimento de produtos digitais inovadores. É Bacharel em Matemática aplicada e Pós-graduada em Governança de TI. Tem as certificações CSM, PMP, CFPS e CPRE-FL.

Quer saber mais sobre
Design, Estratégia e Tecnologia?