Microserviços REDUZEM complexidade?

preview_player
Показать описание

Рекомендации по теме
Комментарии
Автор

cara eu concordo em partes, eu não trabalho numa fang, mas tenho propriedade pra dizer que um sistema monolítico com mais de 50 devs clama por micro services, é muito difícil manter uma rotina de trabalho com muitas pessoas mexendo no mesmo repo e fazendo deploy o tempo todo, separar os domínios em múltiplos serviços é essencial, isso não está sempre diretamente ligado a quantas requests sua empresa recebe e sim mais como sua empresa trabalha, na minha visão. Outra coisa que faltou mencionar é que numa empresa mediana já é possível com facilidade comunicar múltiplas máquinas diferentes dentro de um cluster, não é necessário quebrar um monólito e fazer os componentes se comunicarem com grpc dentro da mesma máquina.

guths
Автор

Microserviços dificilmente fazem sentido para a maioria das empresas de software. Como você disse.

O pessoal da área de software tem que aprender uma lição muito básica: só resolva problemas que você realmente possui.

Quem passou por hypes delirantes como GraphQL já deveria notar que a massa DEV é delirante.

Não é só microserviços, é um problema meio generalizado da área. O pessoal usa fila, nosql, cache (cache é um terrorista em termos de complexidade)
e outras coisas de forma indiscriminada. Resultado: explosão de complexidade e custo de manutenção. Junte isso a sistemas em cloud e veja provedores
dessas mesmas clouds ficando zilhonários, e empresas pagando 50.000 USD para manter um sistema que poderia ser um servidor de 300, 00 USD.

Estou a 20 anos na área e nunca vi tão pouca coisa sendo entregue em produção a um custo tão alto.

SymonLopes
Автор

Isso é algo que vejo acontecendo em muitos artigos sobre microsserviços: assumir que os times serão divididos, sem deixar claro que isso é crucial. Se não dividir times e não fornecer a estrutura para o trabalho (para o dev não ter que levantar o mundo na própria máquina antes de conseguir codar), acho extremamente difícil dar certo.

vsalbuq
Автор

Salve galego, beleza? Cara, faz um favor pra nós separa uma playlist tua só para resolução de leetcode, please!!

osilasdev
Автор

Muito bom esses vídeos sobre Sys Dsign, ganhou um inscrito.

eMotionAllDamAge_
Автор

Um problema que vejo dessas: Nosso app não vai escalar muito, vamos manter inicialmente um monolitão. Eu nunca vi isso dar certo direito, o que acontece na realidade é que a empresa acaba não querendo investir em evolução tech, o monolito fica cada vez maior e mais difícil de dividir e vira uma bola de neve.

Na minha humilde opinião, arquitetura deveria ser definida não necessariamente em escalabilidade mas em diferentes contextos delimitados. Não digo necessariamente micro serviços, mas talvez serviços separados por domínio.

Sobre a latência entre serviços, eu acredito que seria fácil resolver colocando todos eles dentro de uma rede privada, interagindo entre si através de eventos (ou através de uma requisição direta do front end) e expondo apenas uma API Gateway para controle de segurança e direcionamento. Eu vejo muito mais vantagens do que desvantagens em ter sistemas distribuídos.

Ah e claro, monolito não seria grande problema se ele for um sistema especificamente pequeno.

andreymonteirohl
Автор

Discussão muito boa sobre complexidade, concordo que microsserviço não é Silver Bullet, ou seja, não resolver todos os problemas e que nem todo negócio deva utilizar MS. Porém a crítica sobre o Overhead de comunicação entre MS com request inter-serviços me pareceu mais um Distributed Monolith do que um Event-Driven Microsservice, apesar disso a discussão sobre latência foi cirúrgica.

Akhbash
Автор

Galego muito bom seus vídeos! Ao ouvir você falar sobre a comunicação entre micro serviços me lembrou sobre o teorema CAP, fica como sugestão de vídeo!

lucasfontesgaspareto
Автор

Eu concordo com a abordagem, talvez só pensar em uma arquitetura onde os domínios se comuniquem via interface, pois entendo que se um dia quiser começar a separar, não ser um caos ou mto arriscado. Talvez poderia ter 3 bancos até configurados para lidar por domínio em uma instância RDS por exemplo, ou se for usar um banco só talvez trabalhar com os relacionamento entre domínios por meio de ids públicos, talvez já vale em alguns casos não fazer um left join entre domínios por exemplo e sim fazer duas chamadas ao banco se necessário mesmo que isso de deixe mais lento.

gabrielmedeiros
Автор

Cara concordo, trabalhar com módulos e o que eu chamo de micro-monolitos vem resolvendo muito bem os problemas da minha empresa. 🎉

johnnymoreira
Автор

Muito obrigado pela dica do livro! Excelente!

AndreCarneiro
Автор

Muito bom!

É interessante ter o entendimento se quando "quebrando" o monolito em microserviços, essas chamadas entre eles podem ser síncronas ou asíncronas. O exemplo que vc passou com sincronía e tal, realmente isso só gerou overhead desnecessário e existe um coupling eminente - melhor juntar esses microserviços de volta e ter um monolito modularizado haha

self.flavio
Автор

Microsserviços é sobre physical boundaries e ponto. Tu só precisará de ter um realmente em cenários de escalas. Ou seja, equipe aumenta, volume de dados para processar aumenta, quantidade de usuários aumenta drasticamente e afins.
Quando se trata de logical boundries, que é dividir seu domínio em serviços/módulos/subdmonios bem responsáveis e baseado nas intenções e funcionalidades coesas do negócio tu consegue fazer em qualquer estilo arquitetural.

haraheiquedossantos
Автор

É bem isso, a ideia de criar microservices e talz, é ótima, mas muita empresa, pelo hype, adotou essa medida e acabou por adicionar muita complexidade no gerencimanetk de todos esses microservices.

Também acho que a grande maioria das empresas sobrevive de boa com um monolito, bem estruturado, se preocupando mais no padrão de código, respeitando boas práticas do que propriamente migrar pra microservice.

joaopedrorubiracrulhas
Автор

Cada microserviço precisa de seu usuário e sua autorizações, como é tratado isso entre os diversos microserviços de forma que fique transparente para o usuário?

luizneri
Автор

Iai galego, algo que foi cobrado para mim recentemente numa entrevista de estágio foi além de um desafio técnico desenvolver um crud, front e back foi um desafio em SQL onde eu tinha que fazer queries com melhor desempenho, essa eu falhei acho que seria um tema interessante.

arlindoneto
Автор

Vídeo muito bom, e complementando, eu jamais diria que microservices reduzem complexidade, muito pelo contrário, a partir do momento que você quebra um único sistema em várias partes menores, você aumenta a complexidade... é o que diz a lei da conservação da complexidade do Michael Feathers: "Quando dividimos coisas grandes em pedaços pequenos, aumentamos a complexidade de sua interação."

artu_almeida
Автор

Microserviços aumentam a complexidade mas melhoram o gerenciamento, tanto do software quanto do time de desenvolvimento.

heraldo
Автор

Muito bom o vídeo, explodiu minha mente

mkriiger
Автор

Fala Augusto, tudo blz? Gosto bastante do teu canal e do teu conteudo. Principalmente por trazer mais conteúdo do que polêmica! Mas vou discordar de ti nesse ponto.
Trabalhei em uma startup que provia um checkout para grandes industrias no brasil com vários meios de pagamento alternativos e também tinhamos um projeto para expandir nossa funcionalidade para um portal que integrasse outras várias que fizessem sentido para os clientes. Utilizar uma arquitetura de microsserviços desde o início tem seus desafios, mas, você também tem outras vantagens. Você pode criar novas features com uma infraestrutura bem reduzida, o que é excelente para custos e fazer PoC. Uma vez que aquilo escala, você pode simplesmente escalar somente aquele componente.

Mas porque microsserviços se tornaram polêmicos nos dias atuais? Houve uma febre, todo mundo quis fazer em seus trabalhos. O famoso Carrer Driven Development. No entanto, não houve uma preocupação em fazer da forma adequada, simplesmente se criou vários sistemas separados e extremamente acoplados. Estes desenvolvedores não fariam um monolito módular, só um monolito. Nós precisamos deixar a mentalidade de amadores remunerados e fazer as coisas da forma correta! Reduzir as interfaces de interação entre os sistemas para somente o essencial e ter estabilidade nessas interfaces. Isso já facilita bastante e traz benefícios enormes!

Hoje já não trabalho lá, mas sei que a arquitetura de microsserviços se mantem, e que o tamanho das instâncias que rodam em produção é muito reduzido em comparação com serviços que atendem a demanda que eles atendem.

jjackbauer
visit shbcf.ru