o mongodb atlas é um banco gerenciado (um serviço de banco de dado), assim como um aws rds é um banco de dados as a service, vc acessa um painel, cria o banco da as permissoes, e ele te da uma url pra vc acessar criar suas tabelas... dessa forma vc nao precisa se preocupar se o banco ta offline, segurança... agora uma ec2 é uma maquina virtual, vc pode escolher uma com sistema ubuntu por exemplo, e instalar o que vc quiser lá como se fosse um computador.
usar um banco e uma aplicaçao separados (uma ec2 e um rds/atlas) por exemplo
- vantagem: escalabilidade independente, alta disponibilidade, segurança, backup automatico
- desvantagem: custo, latencia,
usar um banco e uma aplicaçao juntos na mesma ec2 (instalar um mongo ou um postgres por exemplo na mesma ec2 que esta rodando sua aplicaçao)
- vantagem: custo inicial menor, simplicidade, menor latencia (ja que sua aplicaçao ao consultar o banco vai ser uma url local e nao precisa sair da ec2)
- desvantagem: escalabilidade limitada, ponto unico de falha (se sua ec2 travar seu banco e sua aplicaçao ficam indisponiveis), manutencao e backup (voce que vai gerenciar isso de forma manual
nao existe forma errada, tudo depende do seu orçamento e o que vc esta disposto a arriscar. minha recomendaçao pra estudo uma ec2 com tudo la resolve seu problema até pra projetos pessoais.
agora pra um sistema maior em produçao com volume maior de usuários, ja é inviavel ou mais trabalhoso vc ter e manter uma mesma ec2 a aplicaçao e um banco de dados.