[AJUDA] Como criar uma plataforma escalável?
E aí pessoal, tudo bem?
Preciso muito de uma orientação de vocês na escolhas de algumas ferramentas e tecnologias, mas antes deixa eu contextualizar... (se preferir pode pular essa parte e ir direto pro final do texto).
Meu background é só isso
Me chamo Antonio e esse é meu primeiro post aqui no tabnews. No passado já fiz uns sitezinhos básicos em html e csss com algumas funções em php e mexi com wordpress, tudo coisa básica, nada mais do que isso.
Nunca me aprofundei em nada e mesmo assim estive afastado muito tempo dessa área desde a última vez que escrevi algum código e mais recentemente tive a ideia de um projeto que me motivou a voltar a aprender do começo tudo que preciso para concretizar esse sonho.
Meu conhecimento atual
De cara percebi o quanto as coisas mudaram nas tecnologias e maneira como se estrutura um site, antes eu só precisava jogar uns arquivos no servidor via ftp, só pra vocês terem ideia, por isso peço que sejam um pouco compreensivos com a minha noobice pois pra mim muitos termos e conceitos ainda são novidade e posso falar muita coisa que não tem nada a ver ou mesmo não entender algumas coisas que para vocês já é básico.
A idéia principal do projeto
Penso em criar uma plataforma essencialmente para assinantes mas com algum acesso gratuito, com as seguintes características.
- comunidade: uma espécie de rede social interna, exclusiva dos assinantes, com uma timeline estilo meio twitter ou instagram personalizada para cada assinante (cada um verá na sua timeline os recursos que comprou e/ou selecionou na plaforma mais as atualizações gerais da plataforma.
- cursos online: terá um razoável consumo de áudio e vídeo on demand.
- jogos: que funcionem diretamente no navegador, inicialmente jogos simples e casuais, futuramente alguns mais sofisticados.
- e-books: muito material para leitura online
- galeria de fotos/imagens: assinantes poderão criar seus álbuns
- web e mobile: os usuários podem escolher se conectar de ambas as formas, como num instagram ou twitter da vida, sem perder recursos da versão web quando estiverem usando a versão mobile e vice versa.
A dúvida:
Que linguagem e ou conjunto de tecnologias devo considerar para fazer esse projeto pensando principalmente em escalabilidade, ou seja, a intenção é que a plataforma cresça em quantidade de assinantes, recursos disponíveis e novas funcionalidades adicionadas sempre que necessário.
Entre as linguagem, não tenho uma do coração até porque não domino nenhuma. Abaixo listo algumas e o motivo porque as menciono aqui.
- python (por já ter comprado uns dois cursos no impulso)
- php (pela pequena familiaridade que tenho com a sintaxe)
- java (por já ter comprado uns dois cursos no impulso)
- javascript ("parece" que hoje só se fala nele — sim, já sei que no front ele é obrigatório)
- flutter (pela facilidade de um só código - procede?)
Que mais preciso estudar/aprender para tornar essa ideia real?
Preciso fazer um curso de Engenharia de Software e outro de Devops?
E a tal nuvem? O que vou precisar aprender?
AWS, Google, Vercel? Ou qualquer uma serve? Haveria alternativas melhores para este caso?
E minha segunda maior preocupação (depois da escalabilidade) como posso manter esse projeto o mais independente possível de recursos nativos/proprietários dessas plataformas clouds, pro caso de um dia eu decidir mudar a hospedagem? Ou isso não tem nada a ver e só falei besteira???
Peço aos mais experiente, por favor me ajudem a visualizar um caminho a trilhar, estou meio perdido sem saber por onde recomeçar depois de tanto tempo afastado dessa área.
A coisa mais normal do mundo são as pessoas acharem que vão escalar antes de terem o primeiro usuário.
O melhor problema do mundo é ter usuários para precisar escalar!
Vejo que sua ideia é bastante enorme cheia de coisas! O que eu faria:
- Saber se tem cliente pra isso(pesquisa e anuncios nas rede sociais falando de poucas vagas e pedindo email das pessoas para receberem primeiro)
- Tendo um bom número de gente interessada(que deram email e permitiram receber newsletter de novidades)
- começaria o projeto o mais simples possivel famoso MVP num VPS barato.
- Dando certo conseguindo resolver os problemas e tendo aos poucos novos usuários
- Quase qualquer VPS mais caro vai suportar um bom número de usuários(se a programação for bem ajustada)
- Depois que já tiver entrando grana e tiver bom número de clientes ai se começa a pensar em escala.
Se voce começa a pensar antes de ter 1 cliente em escala esta pensando errado.
A linguagem no começo tanto faz. Pyhton, js/node, ruby tanto faz. Grandes projetos começaram com um monolito em ruby( github por exemplo entre outros) Só depois entrou a escala.
E uma coisa que percebe - cada forma de escalar é unica. Mesmo se eu tivesse o mesmo projeto que o seu provavelmente teria que escalar de forma diferente.