Aplicação Monolítica (A Arquitetura de Software Mais "Tradicional") // Dicionário do Programador

23.19k views1847 WordsCopy TextShare
Código Fonte TV
🤝 𝗘𝗦𝗧𝗨𝗗𝗘 𝗡𝗔 𝗔𝗟𝗨𝗥𝗔 → https://codft.me/alura Todo tipo de arquitetura de software encon...
Video Transcript:
contextualizando uma aplicação monolítica é aquela que foi desenvolvida utilizando uma arquitetura onde as camadas do software são dependentes uma das outras formando um único bloco que podem inclusive rodar em um único processo da interfa do usuário até o banco de dados tudo é criado de uma forma vertical onde se uma camada falha a aplicação toda falha mas se engana quem acredita que a arquitetura monolítica é antiga ou tradicional ou não vale mais a pena usar todo tipo de arquitetura encontra espaço dependendo do nível que o projeto de software precisa ter na sua vida útil por
isso te convido a ficar nesse vídeo até o fim para entender melhor o que está por trás desse tipo de aplicação e como ele se difere das outras arquiteturas como a de microsserviços então vem que vai dar [Música] bom se você quer entender mais sobre esse maravilhoso mundo da programação então você veio ao lugar certo esse aqui é o dicionário do programador do código fonte TV e como eu sei que você gosta de estar sempre aprendendo nós trouxemos a melhor plataforma de todas aqui nesse vídeo estamos falando da alura são mais de 1300 cursos para
você poder estudar por todas as áreas de ti e se aprofundar na que mais te interessar se manter atualizado nesse mundão atual é essencial Ainda mais se for com a lura que conta com uma comunidade incrível que te ajuda a evoluir agora se você está atrás de um desconto dos cdfs aqui na alura Você também está no lugar certo basta acessar o nosso link especial que tá aqui na descrição do vídeo O que é essa tal de aplicação monolítica ou arquitetura monolítica ou também conhecido simplesmente Como monolito podemos começar definindo que uma aplicação monolítica é
aquela onde toda a base de código está contida em um só lugar ou seja toda a lógica de negócio conectividade com banco de dados e também a interface é um só bloco com códigos quando se trata de monolitos estamos falando basicamente de arquitetura ou seja em como as camadas do software foram pensadas e desenvolvidas quer um exemplo Então olha só isso vamos imaginar uma aplicação web tradicional onde o cliente obviamente é o navegador nessa aplicação temos uma arquitetura em três camadas inclusive por muitos anos essa foi a maneira mais moderna para desenvolvimento de aplicações para
diversas plataformas temos no topo a camada de apresentação que é onde tudo será mostrado pro cliente em uma aplicação desktop é a janela do software no caso de uma aplicação web elas são as páginas HTML CSS e JS que serão renderizadas no navegador do cliente Resumindo o frontend já na camada de negócio temos toda a lógica da aplicação é nessa camada que toda a base de código utilização de bibliotecas chamadas a api criação de rotas ficam armazenadas podemos ver também em alguns lugares chamando ela de camada de aplicação e por último temos a camada de
acesso a dados que é um conjunto de códigos responsável pela abstração do banco de dados utilizado no sistema em muitas aplicações com essa arquitetura é ali que muitas vezes se utiliza o Caixe momento dos dados então nessa camada era feito uma espécie de réplica da estrutura dos dados em classes para poder serem manipuladas pela camada de negócio então na camara de dados a conexão com o banco de dados é realizada independentemente se é MySQL postgre skl skl server Oracle mongo DB assim como a montagem dos Comandos pra comunicação com o banco podendo inclusive utilizar um
ORM ou não se você já é um desenvolvedor experiente ou ainda tá engatinhando na programação tenho certeza que a arquitetura monolítica faz parte da sua vida mesmo nos dias atuais a melhor forma de entender essas camadas e como a programação Se integra com elas é através de um monolito essa abordagem de estrutura é baseada no princípio de que todos os processos dentro de uma mesma solução são altamente acoplados são dependentes compartilham de uma única base de dados e executam todos os processos como se fosse um único serviço depois que vamos avançando nos estudos de arquitetura
de software a gente começa a perceber que essa abordagem é muito útil porém apresenta aí as suas desvantagens como um único ponto de falha problema no sistema de newsletters não conseguimos fazer o pagamento dos funcionários porque o sistema da folha não funciona escalabilidade temos que copiar toda a stc para escalar horizontalmente quanto maior sistema maior é a base de código já que tudo fica no mesmo lugar ainda temos a agregação de tecnologia utilizar uma única tecnologia faz com que o problemas que seriam resolvidos mais facilmente com outras tecnologias sejam ignorados o clássico quando você tem
um martelo todos os problemas se tornam pregos por exemplo se o desenvolvimento de uma nova funcionalidade ex outra linguagem de programação existem duas possibilidades ou todo o código é refatorado ou a arquitetura do sistema deverá ser trocada desperdício de esforço imagina que você tenha que mudar o texto de uma das telas de uma aplicação monolítica de 50.000 linhas quando você for publicar isso ela vai ter que ser completamente recompilar tudo isso por causa de um texto e aí será que vale a pena Ainda temos a demora de aculturamento um novo funcionário vai demorar bastante para
entender end como tudo funciona só coisa ruim né então por que se usa tanto monolítico ele é utilizado justamente por ter muitas vantagens bem interessantes a simplicidade da arquitetura ou seja não existem muitas camadas com que se preocupar durante o desenvolvimento da aplicação é mais fácil e até rápido começar um projeto e colocar ele para rodar agregação de tecnologia toda aplicação é desenvolvida em uma mesma tecnologia facilitando a coesão da equipe ou seja em um primeiro momento Essa agregação é benéfica para colocar aplicação em produção fluxo de publicação simples o deployment É de vera simplificado
alterou compilou publica e corre pra galera e finalmente desenvolvimento rápido por ser uma arquitetura mais simples o desenvolvimento tende a ser mais rápido Principalmente quando levamos em conta outros aspectos como padronização de código e boas práticas a partir do momento que a base de código aumenta a complexidade também aumenta então a rapidez que se tem no primeiro momento só é sustentável seguindo determinados padrões antes da Computação em nuven o desenvolvimento de software utilizando arquitetura monolítica era a principal solução encontrada para projetos pequenos e também gigantes obviamente o problema de escalabilidade era contornado de outras formas
como aumentando a capacidade e número de servidores utilizando estratégia de cacheamento e várias instâncias de banco de dado por isso que jogar pedra e afirmar que para funcionar tem que ser tudo em nuvem não é muito legal né em V os cenários o uso do monolito é muito importante o que fizemos a grosso modo foi expandir a estrutura de dados e serviços que tínhamos em um banco de dados único para vários separados por poucas responsabilidades mas altamente disponíveis Mas vamos deixar de lado os microsserviços até porque já temos um vídeo sobre essa abordagem aqui nesse
Card vamos olhar mais uma vez um exemplo de arquitetura monolítica de uma aplicação web criada para ser um blog porém com um modelo mais escalável nesse diagrama temos as três camadas com um pouco mais de detalhes como já dissemos no outro exemplo a camada de apresentação pode ser proveniente de um navegador de um software desktop ou de um aplicativo mobile vamos supor que estejamos lidando com uma aplicação node.js na camada de aplicação e por isso as requisições com a camada de aplicação são feitas através de requisições http ou https de preferência uma vez que as
requisições são feitas podemos ter um load balanc o responsável por tratar as chamadas e redirecionar aos servidor com menos processos ativos o balanceamento de carga pode ser feito através de software ou usando um hardware específico só aí teremos a aplicação efetivamente sendo executada utilizando da sua estrutura para um blog como usuários threads e posts nesse caso a aplicação utiliza na camada de dados dois tipos de bancos de dados o MySQL responsável pelos posts e o mongo DB que serve as threads e as informações dos usuários obviamente nada impede também de termos um monolito de duas
camadas onde a camada da aplicação também pode servir como a camada de dados obviamente quanto mais compacta for a arquitetura mais serão os desafios para manutenção e a escala lá na frente como a base de código é inteiramente estruturada em um bloco o desenvolvimento acaba sendo mais ágil por isso o uso de monolitos acaba sendo a primeira opção quando precisamos criar uma poc que é uma prova de conceito ou até a primeira versão de um produto paraa validação de uma ideia que conhecemos como minimum viable product ou MVP Além disso isso usando a arquitetura monolítica
o desenvolvimento e compreensão acabam sendo simplificados permitindo Inclusive a execução por uma equipe menor e até com menos qualificação a melhor forma de pensar em um monolito é usar esse cubo sólido onde todas as partes do sistema estão aqui dentro não tem como não pensar no sistema como um todo eles são todos acoplados já na arquitetura de microsserviço nós temos esse cubo mágico onde cada pedaço do sistema tem uma estrutura de dados e lógica de negócios própria podendo inclusive ser desenvolvidas com tecnologias e linguagens diferentes porém que se comunicam entre si a ligação entre eles
é feita através da comunicação na rede é como se fosse isso aqui ó cada quadradinho é um microsserviço eles juntos formam aí um cubo Mas eles estão interligados Olha só ó ou seja tanto no desenvolvimento de software quanto na vida a máxima não use uma bazuca para matar uma formiga é válida Então os microsserviços não vieram para substituir os monolitos e sim para mostrar que para cada tipo e momento do projeto se escolhe o que atende melhor por isso vemos o tempo todo monolitos que precisam escalar sendo adaptados ou migrados para outra arquitetura aliás isso
representa mais trabalho para nós e mais cases pro mercado de desenvolvimento de software se curtiu deixa um like mas se esse vídeo Clareou a sua mente Nós aceitamos um Valeu aqui nesse vídeo Um beijo no coração de vocês e até a próxima recomendação que vem depois da vinheta tchau tchau Se vocês souberem resolver isso deixem nos comentários também por favor instrução passo a passo tchau Nada mais justo que indicar para você a solução de arquitetura que veio para curar as dores dos monolitos sim os microsserviços Então vai aqui do lado e toque nesse vídeo nós
explicamos justamente o porquê deles serem tão populares e adotados pela maioria das empresas no mundo garanto que unindo esse conhecimento que você adquiriu nesse vídeo com o próximo que você vai ver você vai ficar muito melhor aí e vai saber como escalar as suas aplicações
Copyright © 2024. Made with ♥ in London by YTScribe.com