Eu estou estudando um pouco mais alguns conceitos, como SOAP, REST etc… e cai nesse termo de Arquiteturas monolíticas, gostaria de saber de uma forma simples e clara, porém se possível um pouco profunda, o que seria isso.
Arquitetura monolítica nada mais é do que uma arquitetura onde tudo faz parte da mesma estrutura. Ou seja, se você alterar uma única label no sistema, precisa refazer todo o processo de implantação, desde testes, (se for linguagem compilada,compilar), até o build em produção.
Diferente de uma arquitetura de micro serviços, onde você consegue isolar a construção de partes do sistema (os tais micro serviços) e o front (ou os, pois pode ser mais que um, ex: web e mobile).
Desta maneira, se o problema é uma label errada, você só mexe no front. Se é um dado acentuado vindo do back, você só altera ele e pronto.
Hmmm, deixa eu ver se eu entendi, tudo bem?
Arquitetura monolítica seria mais ou menos um aplicação padrão antigo, como por exemplo, um Java EE no back e no front um JSP.
Arquitetura de micro serviços é basicamente 100% REST? Para que eu desacople todo meu back do meu front, com isso temos um sistema totalmente independe, ou seja, na web posso usar um Angular, React etc… para consumir minhas API’s REST do meu sistema (que no caso retorna um json, ou algo pelo endpoint certo?), e para mobile eu posso usar outra tecnologia de mobile que faz um ajax no mobile que eu não sei oq eles usam pra mobile kkkk
é isso?
Obrigado pelo retorno, valeu mesmo, consegui entender sim.
Então, cara.
SO é um tanto quanto complicado de desvincular da ideia do monolito.
Não, pode ser baseada em SOAP ou alguma maneira de disponibilizar informações segregadas de acordo com um padrão especifico, como um domínio (que é bem usado quando falamos de micro serviços).
Isso, exatamente.
As linguagens para desenvolvimento mobile já dispõe de ferramentas para comunicação com serviços REST e permitem a fácil manipulação de JSON.
Exatamente. Mesmo que modular (contabilidade, contas a pagar, receber, etc) você ainda compilava um milhão de coisas e aí subia pro server.
Quando vejo a palavra monolítico me vem na cabeça uma cena que presenciei!
Uma vez eu ouvi em uma palestra de um evento que participei, onde o palestrante disse a seguinte fala: “Para compreender melhor o que é uma arquitetura monolítica imaginem o seguinte cenário: arquiteturas monolíticas são nada mais nada menos que grandes cocôzões onde não existe separação de nada toda alteração ou nova implementação pode causar um impacto gigante” e acrescentou dizendo: “imaginem agora o cenário dos micro-serviços, imaginem os mesmos como pequenos cocozinhos todos desmembrados, onde podemos fazer alterações e novas implementações de forma isolada causando o mínimo de impacto possível”.
Perfeito, obrigado Darlan, me ajudou muito, é a segunda vez que uso Fóruns e é muito interessante a forma como se aprende muito aqui.
Vou colocar como a melhor resposta, obrigado mesmo.
Exemplo perfeito!
Cuidado pessoal. Não confundir monolítico com tudo em um só lugar e micro serviços com responsabilidade de camadas, são coisas BEM diferentes. Separar backend de frontend ainda pode fazer apenas separar sua arquitetura em 2 monolíticos separados.
Separar serviços apenas por separar também, pode você transformar um monolítico em vários monolíticos menores apenas.
Quando pensamos em arquitetura no nível de microservices é fundamental pensar nas partes do seu sistema que fazem todo o sentido viverem isoladas das outras, mesmo que ela leve junto 1 ou mais conceitos de negócios. Você separar o sistema apenas para dizer que está usando microservices e transformar, conforme a analogia do amigo aí em cima, o coczão em vários cocozinhos, pode te dar uma dor de cabeça difícil de gerenciar, pois um cocozão no meio da sala todo mundo vê e sabe a fonte do problema, já um monte de cocozinho embora menores, pode dificultar a sua vida de limpar, quando for necessário fazer, além de que o nível de controle quando os cocozinhos estão espalhados cresce de forma absurda e problmas ficam mais complicados de serem rastreados sem você colocar mais complexidade de ferramentas de monitoramento.
Microservices é muito bem vindo em negócios bem mapeados, que conhecem seus próximos passos, com equipes divididas cuidadno dos pedacinhos isolados das aplicações, mas são um terror, quando o processo da empresa ou o time não é focado em parte do negócio e todo mundo mete a mão em tudo.
Mais do que uma mudança de arquitetura para o uso de microservices, há de se ter uma mudança de cultura muitas vezes.
Há várias discussões na comunidade sobre começar seus sistemas utilizando microservices ou não e as opiniões são divididas. Pra mim, pessoalmente, faça funcionar, entenda o negócio e valide-o e depois avalie se ele precisa ser isolado, mas isso não é regra, é apenas a maneira como eu funciono e enxergo.
Se quiser aprender mais sobre microservices, seguem 2 materiais da casa que são verdadeiras aulas sobre o assunto:
1- https://hipsters.tech/microsservicos-na-caelum-hipsters-on-the-road-6/
2- https://hipsters.tech/tecnologias-na-netflix-hipsters-41/
O 2 é sensacional, pois explica bem como a Netflix está mudando (sim, ainda era na época do episódio um netflix.war) toda a sua estrutura monolítica Java para microservices e o que foi insumo para eles tomarem essa decisão.
É uma verdadeira aula prática de mercado.
Boa sorte nos estudos
Nossa, é muito interessante a sua resposta, é uma outra forma de enxergar o conceito, não é só separar e sair dizendo que é micro serviços, gostei muito da sua resposta.
Obrigado pela recomendação, eu sempre acompanhei o podast deles e esses eu já escutei, porém como aprendi mais coisas agora vou escutar de novo, assim posso entender outras coisas que eles estão discutindo.
Obrigado pela resposta.
Sim, faz muito sentido reescutar. Esse da Netflix eu já escutei 2 vezes e agora que lhe indiquei, vou escutar de novo…
Cada vez que voltamos em assuntos dados como prontos ou finalizados, sempre revisamos ou percebemos uma coisa que não vimos antes.
Sim, eu já fiz até aplicações com alguns conceitos, mas parece que as vezes você se pega naquela dúvida e volta para o conceito básico daquilo para abrir novamente sua visão daquilo.
Isso dura pra sempre cara. Estudei autoboxing para a certificação Java em 2010. Semana passada me peguei uma situação que eu apanhei pra isso e tive que revisar. Quem me ensinou? Um júnior que atualmente está estudando pra certificação…
E assim segue a vida, somos eternos aprendizes, mas conforme vamos ficando mais experiente, começamos a saber muito mais atalhos, apenas isso
Caramba, que daora rsrs
Sim, é realmente isso, legal mesmo. Estou ficando um pouco mais maduro agora.