Arquitetura de um Saas

Venho pesquisando sobre desenvolvimento de Saas e como sempre são muitas as opções de arquiteturas e tecnologias.

Tem muita gente com experiência nessa área que poderiam nos ajudar.

Quais seriam as camadas da arquitetura de um Saas, levando em conta segurança, integrações com plataformas de pagamentos, controle de pagamentos, integração com apps de mensagens, opções de hospedagem (simples, VPS, ...), recursos estáticos...

Talvez algumas sugestões de frameworks e bibliotecas... Tecnologias já bem estabelecidas para cada parte.

Seria de grande ajuda. Desde já obrigado!

Meu conselho: monólito primeiro.

Se você vai desenvolver um SaaS, seu maior desafio provavelmente será encontrar alguém para pagar pelo seu produto; seu cliente estará mais preocupado com o valor gerado por ele do que com a arquitetura. Outro ponto é que o produto pode não dar certo e você não vai querer gastar tempo, esforço e dinheiro à toa.

Portanto, a ideia de fazer o mais simples possível primeiro é a melhor escolha.

No ano passado, ocorreu uma discussão na empresa onde trabalhava sobre o tema do modelo arquitetônico: monolítico ou microserviço. Reconheço que o microserviço foi uma tendência marcante, dotada de incrível poder. No entanto, para a maioria dos projetos, esse nível de potência não era necessário. Tratavam-se de pequenas aplicações, muitas vezes com não mais do que 10 usuários simultâneos. O modelo de microserviço é mais adequado para empresas como Netflix e Magazine Luiza. Além disso, o custo do microserviço é quase cinco vezes maior do que o do monolítico, e sua manutenção é consideravelmente mais simples.
Tem sensatez nisso e bom falar no custo alto que muitos ignoram, você foram além. Só vou te dar um parâmetro para não parece que passou muito de 10 usuário já começa ficar bom. O Stack Oveflow era um dos 30 sites mais acessados do mundo e pode e rodou algumas vezes com 1 servidor. A Wikipedia, entre os 5, tirando *search* é mídia, e se mudar de PHP para algo mais efiecente poderia rodar no talo em 1 serviudor (não estou chutando fiz a análise com os dados que eles divulgam). Instagram não preciaa, Shopify, e muitos outros mega sites/apps. Escalar não torna microsserviços essencial. Quem adotou já está voltando atrás, o site que popularizou o uso dele está cheio de problemas e passaram ser extremamente improdutivos. Qiase 100% das emrpesas que adotam estão só na modinha. Eu tenho amigos que atndem algumas das maiors empresas do país e recomendam o monólito seempre. Se o cliente que paga diz que quee a modinha, eles fazem e o resultado nunca foi melhor, eles gostam de faturar mais sem entregar nada a mais. Ajudei? Era o meu desejo. --- Farei algo que muitos pedem para aprender a programar corretamente, **gratuitamente** (não vendo nada, é retribuição na minha aposentadoria) ([links aqui](https://github.com/maniero/SOpt) no perfil também).
Chamo isso de **programação orientada a hype**. Sempre a arquitetura da moda, o framework da moda que na sua grande maioria reinventam e só adicionam complexidade onde não é necessário. Sobre o uso de MicroServiços, creio que vale a pena apenas quando tu tem ele da forma correta. Um serviço separado independente do outro. Onde de a liberdade de subir uma feature pra ele sem afetar outras partes do sistema. Traz a liberdade de usar mais de uma LP pra alguns serviços, caso o time seja de programadores com um background em mais de uma linguagem. No fim das contas quanto mais o tempo passa, essa frase tem feito muito mais sentido: > "A simplicidade é o mais alto grau de sofisticação" Leonardo da Vinci >
Tudo dá para fazer sem microsserviços também. É muito raro ter justificativa plausível para adotá-lo. Quando tem, no fim é só uma, se conformar com a lei de Conway (que por sinal não é sobre o sistema ser artificialamente organizado e depois a empresa é montade em volta dele).
Olá maniero. Tudo bem? A um tempo atrás a gente acabou debatendo um pouco sobre um post que tinha escrito justamente falando sobre arquitetura monolítica. E seus comentários me levaram a voltar ao bom senso. Por isso quero de agradecer. E contribuindo para a discussão. Na dúvida também há o modelo de monólitos modulares que foi o que eu implementei no projeto que tinha citado antes. Que atendem casos onde uma aplicação dispõe de serviços muito destintos. Esses são mais fáceis de migrar a medida que um monólito simples (que hoje acho que deveria ser o início de todo projeto) cresce.
Ah, mas monnólitos modulares, se não for algo muito simples que está trabalhando, é fundamental. Parabéns.

te falar da minha experiência pessoal fazendo um SaaS por conta própria. única coisa que vc precisa se focar em seguir a risca é criar uma documentação do seu projeto. porque futuramente vai te ajudar a dar manutenção caso cresça e vire algo rentável.

meu projeto de SaaS é pra criação de bots pra WhatsApp. estou desenvolvendo a 2 anos e só nos últimos 6 meses que comecei a receber algo kkkk mas está longe de ser lucrativo. média de ganhos está na casa dos 200 reais mensal.

mas já fiz e refiz várias vezes algumas partes.

a minha dica é: se aproveite ao máximo de soluções gratuitas, vai evitar que você tenha um custo mensal fixo te incomodando enquanto não dá lucro. meu SaaS tem atualmente 1000 usuários criados, mas menos de 150 ativos kkkk desses <150, 25 são pagantes (tenho um plano free de teste).

mas estou desenvolvendo na calma, sem pressão.

escolhi usar next.js pro front end e node.js pro backend por ser mais simples de desenvolver.

Única coisa que estou tendo dor de cabeça ultimamente é com envio de email, estava usando uma conta free da Brevo mas o limite diário de e-mails impede que eu faça qualquer marketing sobre meu SaaS, pois teria um fluxo de cadastros intenso que ultrapassaria o envio de e-mails diário permitido.

mas faz parte do desenvolvimento sem custo.

felizmente meu projeto não tem custo nenhum pra eu manter (uso só serviços free que garimpo pela Internet kkkk) então o lucro consigo guardar pra possíveis gastos

(como a compra que fiz ontem de um domínio, estava usando um free que infelizmente caiu kkkk)

mas vai na tentativa e erro, uma hora da certo.

Vi que esta tendo dor de cabeça com o envio de email, altuamente eu utilizo o [resend](https://resend.com/pricing) no SaaS que tenho. No plano free deles voce tem ate 100 email por dia, e 3.000/mês. Na Brevo voce paga 20USD por 20.000/mês, ja na Resend o mesmo valor voce consegue 50.000/mês. Pode ser interresante para voce conseguir divulgar o seu SaaS.
na brevo tem 300 e-mails diários. mas eu tava querendo mesmo é algo sem limite, inclusive tava dando uma olhada sobre hospedar o próprio servidor de e-mail, mas esbarrei no bloqueio da porta 25 na vps que uso. eu teria que contratar uma vps em outra hospedagem só pra ter a porta 25 liberada. por enquanto tô me virando com a brevo + yandex + Microsoft 365 (esses 2 últimos tem planos free pra devs)
> escolhi usar next.js pro front end e node.js pro backend por ser mais simples de desenvolver. Está usando o lado servidor do Next ou separou em outra aplicação que está rodando em NodeJS?
estou usando o next só pro front mesmo. pois estou utilizando a vercel como hospedagem free, e a conta free tem limitações de oq pode ser executado no backend. meu backend roda numa vps free que consegui na Oracle 😂
Recentemente soube dessa VPS free da Oracle, bem interessante. Imagino que também seria possível hospedar toda a aplicação Next (back e front) nessa VPS da Oracle e manter tudo num lugar só.
sim, seria possível, mas optei por usar o plano free da vercel, achei mais seguro do que hospedar na vps junto com o back (tipo, se a vps cair, pelo menos o front continua funcionando 😅)

As camadas de arquitetura de um SaaS devem está alinhadas para lançar o mais rápido possível. De modo que, tenha feedback e melhorias. Um passo a passo e algumas sugestões para um MVP:

  • Interface: telas e elementos cruciais.
  • Banco de dados: tabelas e colunas necessárias.
  • Key function: desenvolver a função principal do SaaS.
  • Authentication: autentificação dos usuarios. Cadastre-se, logar e deslogar.
  • Segurança de dados: adicionar camada de segurança no bando de dados.
  • Ajuda e feedback: lugar onde os usuarios podem pedir ajuda e dar feedbacks.
  • Publicar

Sugestões de tecnologias:

  • Next 13
  • React
  • Stripe
  • Prisma
  • MySQL
  • Tailwind

Tecnologias no code ou low code:

  • Bubble io
  • Flutter flow
  • WeWeb

Para o sucesso de um SaaS sempre foque na dor do usuario. A pessoa que contrata um software quer apenas resolver o problema dela. Seu papel como desenvolvedor é criar o software que faz isso.

Espero ter ajudado.

Em breve pretendo construir um produt hunter brasileiro open souce com a comunidade...

Trabalho com Saas, já vi e já fiz muita coisa, eu começaria com a técnologia que você já conhece, se é java, vá com Java, se é NodeJS vá com NodeJS. Num primeiro momento o importante é saber se alguem vai usar esse produto. No começo use o máximo de recurso gerenciado que puder, utilizo mto AWS, login com AWS Cognito, armazenamento com AWS S3, envio de e-mail com AWS SNS, e outros, atualmente uso bastante o EC2, mas comecei com VPS mesmo, sem erro. Esses produtos te poupam muito tempo e esforço e não são absurdamente caros, o preço aumenta conforme o uso. Fuja de microserviços, comece com monólitos. Pode acreditar, você vai sentir a necessidade de começar a separar as coisas.

Gosto bastante também dessa stack AWS, mas será que o custo não cresce muito rápido? Tem uma base +/- dos custos de um projeto começado do zero, por exemplo, sem usuários ou com poucos usuários?
Cara, na verdade os maiores custos logicamente são de computação. O EC2 pode ficar bastante caro se não tomar cuidado, principalmente quando começa a colocar Load Balancers, se colocar RDS então custa 1 rim por mês. Atualmente possuo 3 instancias Ec2 com Load Balancer então é um pouco mais elevado, mas se for considerar os demais serviços não fica caro não. O Cognito senão me engano passa a cobrar após 1 milhao de solicitações no mês, o que é muito. No S3 possuímos atualmente em torno de 130 mil documentos, totalizando 9Gb, no mês passado isso nos custou 0,25 No serviço de e-mail eu não tenho numeros exatos, mas ontem foram enviados 84 e-mails, se considerar essa média em todos os dias do mês dá 2.520 emails no mês e o custo ficou em 0,03 Usamos outros serviços tbm, mas pode ver que não fica caro, mas mais do que isso, é a praticidade de utilizar serviços gerenciados. Mas como eu disse acima, quando vc começa a utilizar EC2, RDS, ELB, ai a brincadeira começa a ficar salgada. Lembrando que todos esses valores são em dólar, o valor em real você descobre quando fecha a conta do mês, que o seu csrtão vai considerar o câmbio no momento do fechamento.
Caramba, realmente bem mais barato do que eu imaginei! Mas as partes de banco de dados e load balancers, você fez com NGINX e um SGBD dentro de um EC2 mesmo? E o Cognito integra com login social e essas coisas tipo Gmail, Github e tals?
Possuo 3 instancias ec2, 1 é só para banco. As outras duas instancias são 2 monolitos em java conectados em loadbalancer, cada instancia possui os dois monolitos, entendeu? Não fazemos uso do NGINX, utilizamos o proprio API Gateway da AWS msm, que é um pouco mais caro do que os outros serviços e cobra por requisição se não me engano, mas no ultimo mês ficou em torno de 8 doletas. Não tenho certeza se o Cognito faz login social, mas acho que sim, não usamos, mas acho que faz.
Entendi, tinha um pouco de receio dos custos envolvendo AWS, mas obrigado por esclarecer :pray:
que interessante! eu tenho um "boilerplate" para meus SaaS costumo usar para: banco: back4app (podendo escolher mongo ou postgress) monolito: OCI free tier para a vida toda, é pequena a instancia mas funcinoa muito bem microserviços : render.com, o proprio back4app vc consegue subir um container autenticação : mojoauth, tem social login e o plano free é bem grande cache: redis free tier DNS + WAF + DDOS : cloudflare simplemente sempre alem de que se vc tem um projeto estruturado eu recomendo todos pedirem o aws activate, gerelmante vai uns 300 USD e se der sorte 1000 USD, caso vc de ainda muito mais sorte são 10k de USD em serviços AWS, mas geralmente uns 300 para sair do power point ja ajuda demais. sobre o ELB tem um segredo para economizar, eu crio apenas um ELB e separo meus microserviços ou serviços em grupos de destino, no unico ELB eu consigo separa as requisições por dominio, path entre outros, ou seja, apenas um ELB eu consigo rotear para diferentes serviços.

Use um serviço de autenticação externo, como o Keycloak. Existem outras opções.

Integração com gateway de pagamentos não são simples. O ambiente de produção é sempre diferente!! Não deixe isso para depois.

Sobre a arquiterura da aplicação em si, a solução com o melhor "track record" é o ror. Mas veja bem o rails não é exatamente o framework ruby on rails, mas a arquiterura e padrões que ele impõe! Não tenho dados agora, mas posso garantir muito dos sass mais bem sucedidos foram feitos usando rails. Conheço vários. Tambem conheco um framework rails like para as principais linguagens!

Um abraço e bons estudos!

Usa algum framework de PHP recomendo fortemente o LARAVEL, começa com o básico bom e velho monolito!

Quando for surgindo mais necessidade de crescer e melhorar isso vai acontecendo aos poucos, apenas execute e faça funcionar!!

Sucesso meu caro!

pega um next, nuxt e dale