<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Franjola </title>
    <description>The latest articles on DEV Community by Franjola  (@fraanst).</description>
    <link>https://dev.to/fraanst</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4075343%2F5073acb7-4a89-4455-a9da-7e0fc785b936.jpg</url>
      <title>DEV Community: Franjola </title>
      <link>https://dev.to/fraanst</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fraanst"/>
    <language>en</language>
    <item>
      <title>Como documentar soluções para decidir melhor, prever falhas e evoluir sem se perder</title>
      <dc:creator>Franjola </dc:creator>
      <pubDate>Thu, 13 Aug 2026 23:40:15 +0000</pubDate>
      <link>https://dev.to/fraanst/como-documentar-solucoes-para-decidir-melhor-prever-falhas-e-evoluir-sem-se-perder-9ng</link>
      <guid>https://dev.to/fraanst/como-documentar-solucoes-para-decidir-melhor-prever-falhas-e-evoluir-sem-se-perder-9ng</guid>
      <description>&lt;p&gt;Com esse roteiro, pretendo ajudar pessoas como eu, que sempre se perdem ao criar uma documentação de arquitetura, e, dessa forma, demonstrar que arquitetura, na realidade, é muito mais que C4.&lt;/p&gt;

&lt;p&gt;Mas, pra falar a verdade, estou aprendendo muito mais tentando ensinar aqui pra vocês do que em qualquer pós que eu já fiz.&lt;/p&gt;

&lt;p&gt;Para auxiliar no entendimento, vou usar um caso (mais ou menos) real e atual pra mim, que é um SaaS para integração e inteligência sobre plataformas de vendas.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;E, assim, quero deixar bem claro: sou apenas um peixinho no oceano e estou aberta a qualquer crítica, sugestão ou correção!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Objetivo&lt;/p&gt;

&lt;p&gt;Aprender a sair de uma ideia de produto e chegar a uma solução arquitetural que:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;seja compreensível;&lt;/li&gt;
&lt;li&gt;tenha decisões justificadas;&lt;/li&gt;
&lt;li&gt;preveja falhas;&lt;/li&gt;
&lt;li&gt;seja segura;&lt;/li&gt;
&lt;li&gt;possa evoluir;&lt;/li&gt;
&lt;li&gt;ajude a escolher tecnologias;&lt;/li&gt;
&lt;li&gt;ajude a escolher infraestrutura/cloud;&lt;/li&gt;
&lt;li&gt;permita medir se a solução está funcionando bem;&lt;/li&gt;
&lt;li&gt;facilite manutenção, operação e evolução;&lt;/li&gt;
&lt;li&gt;possa ser defendida tecnicamente em uma entrevista ou reunião de arquitetura.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Parte 1 — Entender o problema antes de desenhar a solução&lt;/p&gt;

&lt;p&gt;Acho que essa parte é bem óbvia, mas, na realidade, não é tanto assim. É interessante entender exatamente qual problema vamos resolver com essa solução, quais dores ele causa no momento ou quais dores ela precisa sanar.&lt;/p&gt;

&lt;p&gt;Abaixo, vou sempre responder às nossas dúvidas usando como exemplo o nosso negócio atual.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Visão do produto&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Qual problema estamos resolvendo?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O cliente já possui sua operação de e-commerce na Nuvemshop, mas os dados gerados pela plataforma estão concentrados principalmente na operação da loja e nas vendas realizadas.&lt;/p&gt;

&lt;p&gt;O problema que queremos resolver inicialmente é a dificuldade de transformar esses dados em uma visão mais clara sobre o desempenho comercial da loja, seus produtos e o comportamento das vendas.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Para quem?&lt;br&gt;
Para lojistas com plataformas de vendas online que hoje estão “no escuro” em relação aos próprios dados e têm dificuldade de transformá-los em informações úteis para entender o desempenho do negócio e tomar decisões.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Qual valor o sistema entrega?&lt;br&gt;
Transformar os dados que o lojista já possui em informações mais claras e úteis para a tomada de decisão.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A ideia é permitir que ele consiga entender melhor o desempenho da loja, identificar quais produtos possuem maior relevância para o faturamento, acompanhar vendas, ticket médio, estoque e outros indicadores sem precisar analisar manualmente os dados da operação.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;O que é MVP?&lt;br&gt;
MVP (Minimum Viable Product ou Produto Mínimo Viável) é a primeira versão do produto que possui o mínimo necessário para resolver o problema principal e validar se a solução realmente gera valor para o cliente.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;O que explicitamente não faz parte do MVP?&lt;br&gt;
Tudo aquilo que pode gerar valor no futuro, mas que não é necessário para validar o problema inicial.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Por exemplo: integração com múltiplos canais de venda, redes sociais, marketplaces, previsões de demanda, recomendações personalizadas, segmentação automática de clientes e outras funcionalidades avançadas de ciência de dados.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;2. Stakeholders e usuários&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Antes de pensar na solução, precisamos entender quem são as pessoas, grupos ou sistemas que possuem algum interesse ou participação nela. Nem todo stakeholder necessariamente utiliza o sistema diretamente, mas pode afetá-lo ou ser afetado por ele.&lt;/p&gt;

&lt;p&gt;No nosso exemplo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Usuário final&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;É quem efetivamente utilizará a solução no dia a dia. Neste momento, podemos considerar como usuário final o lojista ou funcionário da loja que utilizará o dashboard para acompanhar vendas, produtos, estoque e indicadores.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cliente&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;É a empresa ou lojista que contrata o DressCode e possui sua operação de vendas em alguma plataforma de e-commerce.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Administradores&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;São usuários do cliente com permissões administrativas dentro da solução. Podem, por exemplo, gerenciar outros usuários da loja, realizar configurações e exportar dados.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sistemas externos&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No exemplo, o principal sistema externo é a Nuvemshop, que continua sendo a fonte operacional de produtos, categorias, estoque, pedidos e pagamentos.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;3. Jornadas e fluxos principais&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Aqui começamos a entender como o negócio funciona na prática, ainda sem pensar em tecnologia ou em como vamos implementar a solução.&lt;br&gt;
A ideia é mapear o caminho esperado, o que pode acontecer de diferente, quais fluxos não podem falhar sem causar impacto relevante e de quais sistemas externos dependemos.&lt;/p&gt;

&lt;p&gt;Na prática vamos mapear o caminho perfeito e prever quais pedras podemos encontrar no caminho.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Happy path
Considerando nossa plataforma de exemplo
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cliente possui sua loja na Nuvemshop/provedor
        ↓
A loja realiza vendas normalmente
        ↓
Os dados da operação são disponibilizados
        ↓
Nossa plataforma obtém esses dados
        ↓
Os dados são organizados e analisados
        ↓
O lojista acessa o dashboard
        ↓
Visualiza indicadores sobre seu negócio
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Fluxos alternativos
É como se você tivesse traçado uma rota antes de sair de casa para o estabelecimento x, porém o WAZE resolveu te jogar em outra rota.
Em palavras menos neurodivergentes, o seu objetivo continua podendo ser alcançado, mas o caminho não acontece como no cenário principal.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Não existem vendas no período selecionado
→ dashboard precisa representar corretamente a ausência de dados

Produto não possui vendas
→ ainda pode ser relevante apresentar informações sobre estoque

Cliente acabou de conectar sua loja
→ ainda não temos histórico suficiente para determinadas análises

Dados ainda não foram completamente atualizados
→ algumas informações podem estar temporariamente defasadas
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Perceba que não estamos analisando nesse momento como vamos resolver, estamos só analisando quais situações podem ocorrer.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fluxos críticos&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;São as situações que vão fazer a gente virar a madrugada com vontade de chorar, são fluxos cujo funcionamento incorreto pode comprometer diretamente o valor que estamos entregando.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;A loja vende R$ 10.000 na Nuvemshop
              ↓
A aplicação obtém essas vendas
              ↓
As vendas são armazenadas corretamente
              ↓
Os indicadores são calculados
              ↓
O dashboard apresenta:
Faturamento de hoje = R$ 10.000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse é um fluxo crítico porque uma falha em qualquer uma dessas etapas pode fazer com que o SaaS entregue uma informação incorreta.&lt;/p&gt;

&lt;p&gt;Um exemplo ainda mais grave seria, no futuro, quando tivermos mais de uma loja, entregarmos indicadores da Loja A para a Loja B. Essa seria uma falha gravíssima, pois, além de apresentarmos informações incorretas, estaríamos expondo os dados de um cliente para outro.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dependências externas
Aqui identificamos tudo aquilo de que nossa solução depende, mas que não controlamos.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No cenário atual, a principal dependência externa é a Nuvemshop. Ela é a fonte operacional de produtos, categorias, estoque, pedidos e pagamentos no desenho atual.&lt;/p&gt;

&lt;p&gt;Isso imediatamente levanta perguntas importantes:&lt;/p&gt;

&lt;p&gt;E se a Nuvemshop ficar indisponível?&lt;br&gt;
E se responder lentamente?&lt;br&gt;
E se limitar a quantidade de consultas?&lt;br&gt;
E se alterar sua API?&lt;br&gt;
E se nossa autorização for revogada?&lt;br&gt;
E se recebermos dados atrasados?&lt;br&gt;
E se deixarmos de receber alguma atualização?&lt;/p&gt;

&lt;p&gt;Entenda que não precisamos responder tudo agora, mas precisamos identificar quais erros podemos sofrer.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Nesse momento precisamos entender como entregar valor e posteriormente vamos responder como nossa arquitetura fará isso acontecer.&lt;/em&gt;&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;4. AS IS&lt;/strong&gt;&lt;br&gt;
A expressão "as is" significa literalmente "como está" em inglês, o que deixa bem claro o que é necessário mapear, como o negócio funciona agora, sem nossa solução.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Como o processo funciona hoje?
A loja utiliza a Nuvemshop para sua operação de e-commerce. Produtos, estoque, pedidos e pagamentos são gerenciados pela plataforma.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Para acompanhar o desempenho do negócio, o lojista depende das informações disponibilizadas pelo provedor de dados coletados manualmente, como estoque e métricas de acesso às redes sociais. Essas informações ficam dispersas em diferentes fontes, dificultando uma visão consolidada e clara de como a loja está performando.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Quais sistemas já existem?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No cenário atual que conhecemos, temos principalmente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Loja
  ↓
Nuvemshop
  ├── Produtos
  ├── Estoque
  ├── Pedidos
  └── Pagamentos
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Quais limitações existem?&lt;br&gt;
Atualmente, o cliente possui acesso a poucos dados disponibilizados pelo provedor e também coleta manualmente algumas informações de suas redes sociais. Com isso, esses dados ficam dispersos em diferentes fontes, sem a possibilidade de unificá-los para gerar informações mais produtivas e relevantes para a tomada de decisão.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Onde estão os gargalos?&lt;br&gt;
Para identificar gargalos, precisamos observar onde o processo atual gera esforço, demora, dependência, retrabalho ou dificuldade para alcançar o resultado esperado.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Algumas perguntas ajudam nessa identificação:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Quais atividades ainda são realizadas manualmente?&lt;br&gt;
Onde o cliente gasta mais tempo?&lt;br&gt;
Quais informações precisam ser buscadas em diferentes lugares?&lt;br&gt;
Existem dados que não conseguimos relacionar entre si?&lt;br&gt;
O cliente depende das limitações de alguma plataforma?&lt;br&gt;
Existe retrabalho para obter ou analisar informações?&lt;br&gt;
Quais informações seriam importantes para uma decisão, mas hoje são difíceis de obter?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No nosso exemplo, identificamos como principais gargalos:&lt;/p&gt;

&lt;p&gt;coleta manual de parte das informações;&lt;br&gt;
dados dispersos entre a plataforma de vendas e redes sociais;&lt;br&gt;
dificuldade para unificar e cruzar esses dados;&lt;br&gt;
ausência de uma visão centralizada do negócio;&lt;br&gt;
maior esforço para transformar os dados existentes em informações úteis para tomada de decisão.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;5. TO BE&lt;/strong&gt;&lt;br&gt;
Essa é a parte bacana, como a aplicação será no futuro, o que estamos propondo como solução.&lt;br&gt;
Se no AS IS entendemos onde estamos e quais são os gargalos atuais, aqui começamos a definir onde queremos chegar, ainda sem precisar decidir todos os detalhes técnicos da solução.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Qual é a visão futura?
No nosso exemplo, queremos que o lojista consiga ter uma visão mais completa da sua operação, reunindo dados de vendas, produtos, estoque e, futuramente, outros canais, permitindo cruzar essas informações e transformá-las em indicadores úteis para a tomada de decisão.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;De forma simplificada:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HOJE
Nuvemshop ───────→ dados
Instagram ───────→ dados       → análises separadas
Outras fontes ───→ dados

FUTURO
Nuvemshop ──────┐
Redes sociais ──┼──→ plataforma ──→ dados consolidados
Outros canais ──┘                       ↓
                                  indicadores
                                       ↓
                                    insights
                                       ↓
                                    decisões
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;O que queremos permitir depois?
Aqui entram funcionalidades que fazem sentido para a evolução do produto, mas não são necessárias para validar o MVP.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No nosso exemplo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;integração com redes sociais;&lt;/li&gt;
&lt;li&gt;integração com marketplaces;&lt;/li&gt;
&lt;li&gt;novos canais de venda;&lt;/li&gt;
&lt;li&gt;comparação e correlação entre dados de diferentes fontes;&lt;/li&gt;
&lt;li&gt;segmentação de clientes;&lt;/li&gt;
&lt;li&gt;recomendações;&lt;/li&gt;
&lt;li&gt;previsão de demanda;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;análises e recursos de ciência de dados.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;O que deve estar preparado desde o início?&lt;br&gt;
Essa pergunta é muito importante porque “estar preparado” não significa “construir agora”.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Precisamos identificar decisões que, se forem tomadas de maneira errada hoje, podem tornar a evolução futura muito cara.&lt;/p&gt;

&lt;p&gt;No nosso exemplo, sabemos que começaremos com uma loja e um provedor, mas queremos que futuramente existam várias lojas e diferentes fontes de dados.&lt;/p&gt;

&lt;p&gt;Por isso, faz sentido preparar desde o início conceitos como:&lt;/p&gt;

&lt;p&gt;tenant&lt;br&gt;
→ quem é o cliente/loja?&lt;br&gt;
provider&lt;br&gt;
→ de onde o dado veio?&lt;br&gt;
channel&lt;br&gt;
→ por qual canal aquela informação/venda aconteceu?&lt;/p&gt;

&lt;p&gt;Arquitetura preparada para:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cliente A
 ├── Nuvemshop
 ├── Instagram
 └── Marketplace

Cliente B
 ├── Nuvemshop
 ├── Instagram
 └── Marketplace
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;O que não devemos antecipar?
Tudo aquilo que pertence à visão futura, mas ainda não resolve um problema necessário para o MVP.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Por exemplo, não precisamos construir agora:&lt;/p&gt;

&lt;p&gt;integração completa com vários provedores que ainda não temos;&lt;br&gt;
infraestrutura para milhões de usuários sem existir essa demanda;&lt;br&gt;
microsserviços apenas porque futuramente o sistema pode crescer;&lt;br&gt;
modelos avançados de Machine Learning sem volume de dados suficiente;&lt;br&gt;
mecanismos complexos de escalabilidade antes de conhecer a carga real;&lt;br&gt;
abstrações genéricas para todos os possíveis cenários futuros.&lt;/p&gt;

&lt;p&gt;Uma boa pergunta para decidir se algo precisa ser antecipado é:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Se eu não fizer isso agora, será muito caro mudar depois?&lt;br&gt;
Se sim, talvez seja necessário preparar a arquitetura.&lt;br&gt;
Se não, provavelmente podemos esperar.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A ideia do TO BE não é construir o futuro hoje. É saber para onde queremos ir para evitar decisões no presente que bloqueiem esse futuro.&lt;/p&gt;




&lt;p&gt;Nos próximos posts vamos falar sobre:&lt;/p&gt;

&lt;p&gt;Parte 2 — Requisitos&lt;br&gt;
Parte 3 — Modelagem do domínio&lt;br&gt;
Parte 4 — Arquitetura lógica&lt;br&gt;
Parte 5 — Decisões arquiteturais&lt;br&gt;
Parte 6 — Autenticação, autorização e isolamento&lt;br&gt;
Parte 7 — Integrações externas&lt;br&gt;
Parte 8 — Resiliência e falhas&lt;br&gt;
Parte 9 — Observabilidade&lt;br&gt;
Parte 10 — Segurança&lt;br&gt;
Parte 11 — Infraestrutura&lt;br&gt;
Parte 12 — Escolha de ferramentas&lt;br&gt;
Parte 13 — DevOps e entrega&lt;br&gt;
Parte 14 — Dados e recuperação&lt;br&gt;
Parte 15 — Performance e capacidade&lt;br&gt;
Parte 16 — Custos&lt;br&gt;
Parte 17 — Operação&lt;br&gt;
Parte 18 — Evolução da arquitetura&lt;br&gt;
Parte 19 — Pacote final de arquitetura&lt;br&gt;
Parte 20 — A pergunta que deve acompanhar toda decisão&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>learning</category>
      <category>softwareengineering</category>
      <category>braziliandevs</category>
    </item>
  </channel>
</rss>
