Executando verificação de segurança...
1

Sempre que tiver uma conversa com uma IA potencialmente estará prestes a tomar uma das piores decisões. Infelizmente algumas pessoas já não conseguem ter essa ideia e aceitam como verdade que a IA sabe alguma coisa corretamente. Ela é só baseada em estatísticas com uma dose de aleatoriedade para não parecer mecânico demais e por isso ela só falará o que é mais falado na internet, ou seja, se o erro for muito falso é ele que você obterá. A IA não achará nada que não está presente na internet ou que esteja relativamente "escondido". Por isso é um método investigativo falho. Não quer dizer que ela não dará algum resultado e pode prestar para alguma coisa, mas o fato de poder ser falho e as pessoas acreditarem que não é um enorme problema.

Concordo totalmente, acredito que método investigativo foi um termo até que bem falho, no caso deveria ser método socrático onde na teoria eu preciso que a LLM me retorna alguma coisa (qualquer coisa) baseada no tema de entrada para dar continuidade a linha de pensamento.

A tabela tem informações inventadas, algumas eu já falei como a ideia que monólito só escala tudo. Não é algo matemático que você só faz a média e tá tudo certo.

No caso, as tabelas também seriam uma exemplificação.

Mas, a ideia de o monólito escalar tudo é que a partir do momento em que o software não pode ser mais otimizado, talvez onde a arquitetura não ajude e você comece a ter que reparticionar a aplicação em serviços menores (indo para um monólito modular).

Em vez de adotar um serviço pequeno como um lambda ou coisa assim. Já separar um domínio para outro cluster de forma que tudo relacionado a esse domínio tenha latência menor do que fazendo várias requisições entre servidor principal e outros micro-serviços.

Como se, por exemplo, o servidor não tenha que dar get em UserService para ir para Payments para ir para finalizar a lista de comprar no servidor principal e simplesmente ter uma troca entre User e o Servidor principal já que o domínio de compras está relacionado ao usuário.

Também não é verdade o que se fala sobre monólitos, sabendo fazer ele escala do jeito que precisa e temos diversas provas disso. Não conheço e já procurei bastante, parece não haver nenhuma prova que qualquer aplicação precisa de microsserviços para escalar, embora alguma pode ser um pouco mais fácil (pagando o preço geral para ter algo tão complexo, também precisaria de uma prova que os problemas compensam os benefícios).

Agora essa aqui vai depender do nível da aplicação. Vou pegar o caso mais antigo e mais absurdo que tivemos, o Twitter. Não vai se repetir, mas é bom para exemplificar.

Eles começaram com o Ruby on Rails que tinha prototipação rápida e tava indo tudo bem, até que surgiu a necessidade de recomendar coisas, e o Ruby não tinha a escala massiva para isso.

A única opção na época era migrar para Scala com o framework Akka que já tinha a arquitetura pronta para lidar com processamento paralelo massivo. Mas, obviamente, eles não iriam reconstruir todo o sistema deles em escala, então inventaram o Thrift para comunicação em protocolo binário entre subsistemas.

É um caso massivo e certamente não replicável, mas foi esse um dos pontos que o formato monólito não deu conta "a mudança de contexto em produção".

A tentativa de fazer menos serviços conseguirá o pior dos dois mundos.

Nesse caso, vai depender do estudo do caso e/ou da implementação.

A principal fraqueza dos micro-serviços é que são super-dependentes da rede para fazer seu processamento.

O monólito escapa disso mantendo tudo em um único contexto.

Dependendo da implementação, o macro-serviço teria contexto o suficiente para fazer seu processamento mesmo se a rede cair, apesar de ainda ser dependente de rede para retornar o resultado.

E de alguma forma também teria menor latência em comparação com micro-serviços, já que não depende de outras chamadas para uma resposta em determinado contexto.

Só é difícil dividir equipe por responsabilidade por incompetência gerencial, o que vai dar na mesma ou pior quando separa de forma mais forte, inclusive porque passa ter que lidar com egos mais inflados pela independência que receberam. De qualquer forma cada caso é um caso. Pode ser sim ser a melhor solução, mas depende do caso concreto.

Talvez, mas ainda sim ao nível de governança pode até ter um sentido mais interessante já que o servidor central onde as coisas mais importantes ficam fica por conta da mão de obra "permitida" a acessar.

Enquanto outras pessoas trabalham em Macro-Serviços separados. Com o nível de encapsulamento correto.


Independentemente, essa é uma ideia de arquitetura que somente com experiência e estudo possa ser usada ou não.

Não é exatamente nosso trabalho julgar qual a melhor ou qual a pior ferramenta em caso global, apenas fazer as escolhas mais sensatas com base no contexto, experiência e conhecimento que temos.

Carregando publicação patrocinada...
1

Mas, a ideia de o monólito escalar tudo é que a partir do momento em que o software não pode ser mais otimizado, talvez onde a arquitetura não ajude e você comece a ter que particionar a aplicação em serviços menores (indo para um monólito modular).

Isso é crença, tá cheio de sistemas que escalam muito (entre os mais usados do mundo) e não precisam particionar nada.

O Twitter não tinha aquela como única opção, eles usaram aquela e divulgaram, tinham diversas outras, até continuar com o que tinham com alguma alteração. De qualquer forma o que eles mudaram nada tem a ver com o que está sendo falado aqui. Isso é uma divagação que não contribui já falei mais do que deveria sobre isso. A Wikipedia é feito com um PHP porco sem arquitetura pensada, é monólito e está entre os sites mais acessados do mundo, e escala.

Toda essa conversa sobre o meio termo eu já falei antes, mas parece que foi ignorado, não posso fazer nada além disso. Reforço a frase que terá o pior dos dois mundos, não é uma média matemática.

A falta de conhecimento é o que leva as pessoas a tomar decisões erradas.

1

Isso é crença, tá cheio de sistemas que escalam muito (entre os mais usados do mundo) e não precisam particionar nada.

Concordo. Qualquer sistema baseado em leitura majoritariamente estática como a própria Wikipedia tende a escalar com facilidade, principalmente quando há camadas pesadas de cache e uso intensivo de HTML pré-renderizado.

Mas usar isso como contraexemplo ao caso do Twitter é ignorar completamente o tipo de carga que eles passaram a enfrentar.

A reestruturação da plataforma não foi uma decisão por hype ou modinha, foi uma imposição técnica brutal, causada pela transição de timeline sequencial para um sistema de recomendação em tempo real com milhões de conexões simultâneas.

Ruby não estava nem perto de dar conta disso, nem com mágica.

Citando a ti, vale a pena entender um pouco mais:

Toda essa conversa sobre o meio termo eu já falei antes, mas parece que foi ignorado, não posso fazer nada além disso. Reforço a frase que terá o pior dos dois mundos, não é uma média matemática.

Nada é média matemática, o que tentei passar foi e repito Se e somente se o estudo de caso apontar a necessidade clara de desacoplamento, e as abordagens mais simples forem insuficientes, aí sim faz sentido particionar — mas não em microserviços prematuros..

A falta de conhecimento é o que leva as pessoas a tomar decisões erradas.

Erro não é falta de conhecimento, é o processo de obtê-lo. Quem nunca iterou errado, nunca operou fora da zona de conforto


No limiar dos ânimos não estou aqui para competir experiência contigo, só mostrar que ao invés de tentar fazer isso dessa forma, pode - se tentar dessa outra em uma POC, se der certo adota, se não volte ao convencional.

No mínimo vai agregar para positivo ou negativo só o tempo dirá

1

Eu usei a WP pra mostrar que uma linguagem lenta só é um problema por gerar mais gastos, não porque não escala, a linguagem nunca impede nada de escalar, isso é crença. Se vai refazer toda a arquitetura até faz sentido usar uma tecnologia melhor, e não precisaria ser Scala, na verdade acho que já se arrependeram de ter escolhido ela, apesar de não ter sido um norme problema. https://www.reddit.com/r/facepalm/comments/yvhjzj/elon_musk_turned_off_microservices_on_twitter/

O Instagram deve ser a mesma coisa, né? Eles não precisaram reescrever nada, continuaram com o monólito em Java, Python e JS.