Abordaremos as principais responsabilidades de um Arquiteto de Soluções dentro das organizações.
A responsabilidade fundamental do Arquiteto de Soluções é converter a visão de negócio em uma solução técnica e funcionar como uma ligação entre os stakeholders de negócio e os stakeholders técnicos.
As principais responsabilidades de um Arquiteto de Soluções são:
- Analisar requisitos funcionais.
- Definir requisitos não-funcionais.
- Engajar e trabalhar com os stakeholders.
- Contornar restrições de arquitetura.
- Selecionar tecnologia.
- Desenvolver PoCs (provas de conceito).
- Desenhar a solução e entregas.
Analisar requisitos funcionais (requisitos de usuários)
O Arquiteto de soluções desenha a aplicação e isto pode impactar a solução para o negócio como um todo. É de extrema importância que o Arquiteto de soluções tenha a habilidade de analisar os requisitos de negócio. Ele precisa ter os skills de um analista de negócios e a habilidade para trabalhar com diversos stakeholders. Ele não é só um expert técnico, mas também tem um bom entendimento do domínio de negócio. Este profissional trabalha perto do Product Manager e outros stakeholders para entender todos os aspectos dos requisitos. Um bom Arquiteto de soluções ajuda o time de produto a descobrir requisitos escondidos, que outros stakeholders não técnicos tem dificuldade de explorar sob uma perspectiva de solução com um todo.
Definir requisitos não-funcionais
Requisitos não-funcionais podem não estar visíveis para os usuários, mas podem impactar negativamente sua experiência.
A seguir está uma lista dos principais requisitos não-funcionais e as questões que deveriam ser tratadas pelo Arquiteto de Soluções.
Performance
- Qual será o tempo de carregamento para o usuário?
- Como a latência de rede pode ser tratada?
Segurança e compliance
- Como se pode manter a aplicação segura contra acessos não autorizados?
- Como se pode proteger a aplicação de ataques maliciosos?
- Como se pode adequar a aplicação às leis e requisitos de auditoria?
Recuperação
- Como a aplicação se recupera de uma indisponibilidade?
- Como se pode reduzir o tempo de recuperação?
- Como se pode recuperar de uma perda de dados?
Sustentação
- Como se pode assegurar o monitoramento e alertas da aplicação?
- Como se pode assegurar o suporte?
Confiabilidade
- Como se pode garantir que uma performance consistente?
- Como se pode inspecionar e corrigir falhas?
Disponibilidade
- Como se pode assegurar a alta disponibilidade da aplicação?
- Como se pode fazer a aplicação tolerante a falhas?
Escalabilidade
- Como se pode tratar o incremento da demanda?
- Como se pode ter uma boa escala para picos de utilização repentinos?
Usabilidade
- Como se pode simplificar o uso da aplicação?
- Como se pode alcançar uma experiência do usuário transparente?
Engajar e trabalhar com os stakeholders
Diferentes stakeholders têm visões diferentes de um mesmo requisito. O Arquiteto de Soluções precisa trabalhar com stakeholders técnicos e não técnicos. Ele deve possuir alta capacidade de comunicação e negociação para ajudar a construir o melhor caminho para uma solução. O Arquiteto de Soluções funciona como uma ligação entre os times técnicos e não técnicos e preenche o gap na comunicação. Ele também garante que todos os times estão na mesma página e usa uma linguagem simples para garantir que todos entendam.
Contornar restrições de arquitetura
A seguir está uma lista das questões relacionadas as restrições de um projeto e que devem ser tratadas pelo Arquiteto de Soluções.
Custos
- Qual o orçamento disponível para a implementação da solução?
- Qual o ROI esperado?
Qualidade
- O quanto as entregas estão de acordo com os requisitos funcionais e não funcionais?
- Como se pode assegurar a qualidade de uma solução?
- Como tratar os débitos técnicos?
Tempo
- Qual a entrega da solução deveria ser feita?
- Existe alguma flexibilidade em relação ao tempo?
Escopo
- Qual a expectativa exata?
- Como os gaps de requisitos devem ser tratados?
Tecnologia
- Qual tecnologia pode ser utilizada?
- Qual a flexibilidade em relação ao uso de ambientes legados e novas tecnologias?
- A solução deveria ser construída in-house ou adquirida de terceiros?
Risco
- O que pode dar errado e como fazer para mitigar?
- Qual a tolerância de risco dos stakeholders?
Recursos
- O que se precisa para completar a entrega?
- Quem irá trabalhar a implementação da solução?
Compliance
- Quais são as leis que impactam a solução?
- Quais são os requisitos de auditoria e certificação?
Selecionar tecnologia
Para o Arquiteto de Soluções é um papel chave e de alta complexidade. A decisão correta do Arquiteto de Soluções deve ter foco na stack que melhor atende aos requisitos funcionais e não funcionais. Deve ser considerado qual o objetivo principal da solução, por exemplo, integrar com outros frameworks, integrar com APIs, ter alta performance ou atender a todos os requisitos de segurança.
O Arquiteto de Soluções deve escolher a tecnologia que atenda aos requisitos atuais e possa escalar para futuras necessidades.
Desenvolver PoCs (provas de conceito)
Uma Poc tem o objetivo de analisar várias stacks tecnológicas e como elas se adequam aos requisitos funcionais e não funcionais. O Arquiteto de Soluções deve selecionar um subconjunto de funções que se quer avaliar. A PoC tem um ciclo de vida pequeno e limitado aos experts de um time. Depois da PoC o Arquiteto de Soluções pode evoluir para uma prototipação em uma stack tecnológica que tem o propósito de demonstrar uma tecnologia e garantir a aprovação de orçamento.
Desenhar a solução e entregas
Um Arquiteto de Soluções cria o desenho da solução depois de analisar os requisitos funcionais, definir os requisitos não funcionais, tratar as restrições e fazer a seleção de tecnologia. Em uma abordagem ágil este é um processo iterativo onde os requisitos podem mudar ao longo do projeto e o desenho da solução deve acomodar as mudanças. O Arquiteto de Soluções deve participar de todas as etapas do ciclo de vida da entrega de uma solução
A seguir estão listadas as etapas do ciclo de vida do desenho da solução e suas entregas.
Requisitos de negócio e Visões
O Arquiteto de Soluções trabalha os stakeholders de negócio para entender a visão que eles têm da solução
Análise de requisitos e visão técnica
O Arquiteto de Soluções analisa os requisitos funcionais e define a visão técnica que irá executar a estratégia de negócio
Prototipação e recomendação
Um Arquiteto de Soluções faz a seleção de tecnologia fazendo PoCs e protótipos
Desenho da solução
Um Arquiteto de Soluções cria o desenho da solução junto com outros stakeholders
Desenvolvimento da solução
O Arquiteto de Soluções trabalha junto com o time de desenvolvimento e funciona como uma ponte entre o time de negócios e o time técnico
Integração e testes
O Arquiteto de Soluções garante que a solução final está funcionando como esperado para todos os requisitos funcionais e não funcionais
Implementação
O Arquiteto de Soluções trabalha junto com o time de desenvolvimento e com o time de deploy de forma a tornar o deploy mais suave possível
Operação e sustentação
O Arquiteto de Soluções garante que os logs e monitoração da solução estão funcionando e orienta os times sobre escalonamento e DR da solução
O Arquiteto de Soluções não é somente responsável pelo projeto/desenho da solução, ele auxilia o gerente de projetos nas seguintes tarefas:
- Alocação de recursos
- Timeline e milestones do projeto
- Estimativa de custos
- Releases do projeto
- Plano de sustentação
O Arquiteto de Soluções também trabalha com o time de desenvolvimento e com o time de operações no deploy, monitoramento e sustentação da solução.
Bom, tentei passar aqui as responsabilidades de um Arquiteto de Soluções e os principais aspectos que este profissional deve considerar quando fizer o desenvolvimento de uma solução.
Imagem de Josue Isai Ramos Figueroa no Unsplash.