{"id":11564,"date":"2021-04-06T15:00:00","date_gmt":"2021-04-06T18:00:00","guid":{"rendered":"https:\/\/king.host\/blog\/?p=11564"},"modified":"2024-06-03T14:43:13","modified_gmt":"2024-06-03T17:43:13","slug":"microsservicos-quando-utilizar-este-metodo","status":"publish","type":"post","link":"https:\/\/king.host\/blog\/empreendedorismo\/microsservicos-quando-utilizar-este-metodo\/","title":{"rendered":"Microsservi\u00e7os: quando utilizar este m\u00e9todo"},"content":{"rendered":"\n<p>Descubra o que \u00e9 <strong>arquitetura de Microsservi\u00e7os<\/strong>, conhe\u00e7a seus benef\u00edcios e entenda quando vale a pena utilizar este tipo de arquitetura em seus projetos.<\/p>\n\n\n\n<p>Tradicionalmente, a ind\u00fastria sempre construiu softwares de forma monol\u00edtica, ou seja, como um grande e \u00fanico reposit\u00f3rio. <\/p>\n\n\n\n<p>Analisando de forma superficial, isso parece bastante interessante. Todos os desenvolvedores da empresa possu\u00edam todo o software em suas m\u00e1quinas e acesso a toda base de c\u00f3digo.<\/p>\n\n\n\n<p>O deploy normalmente se tornava algo simples uma vez que a aplica\u00e7\u00e3o era \u00fanica, assim como a manuten\u00e7\u00e3o de ambientes de desenvolvimento e homologa\u00e7\u00e3o.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/king.host\/blog\/2019\/10\/ferramentas-para-desenvolvedores-otimize-sua-rotina-hoje-mesmo\/\" target=\"_blank\" rel=\"noreferrer noopener\">Ferramentas para desenvolvedores: otimize sua rotina hoje mesmo<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/king.host\/blog\/2019\/10\/cultura-devops-integracao\/\" target=\"_blank\" rel=\"noreferrer noopener\">Cultura DevOps: integra\u00e7\u00e3o de times multi skills<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\">O que \u00e9 arquitetura de Microsservi\u00e7os?<\/h2>\n\n\n\n<p>Nos \u00faltimos anos entretanto, uma nova abordagem para constru\u00e7\u00e3o de software tem ganhado for\u00e7a: <strong>microsservi\u00e7os<\/strong>. <\/p>\n\n\n\n<p>Ela prop\u00f5e a constru\u00e7\u00e3o de uma aplica\u00e7\u00e3o n\u00e3o mais como uma \u00fanica unidade de c\u00f3digo e sim como uma <strong>su\u00edte de servi\u00e7os menores e com responsabilidades bem definida<\/strong>s. <\/p>\n\n\n\n<p><strong>Temos diversos reposit\u00f3rios que trabalham de forma independente e que juntos formam a aplica\u00e7\u00e3o que resolve o problema abordado.<\/strong><\/p>\n\n\n\n<p>Desde ent\u00e3o, esta tem sido a abordagem mais utilizada no desenvolvimento de novos projetos. N\u00e3o h\u00e1 um manual para aplica\u00e7\u00e3o de microsservi\u00e7os, nem uma receita de bolo para migra\u00e7\u00e3o de aplica\u00e7\u00f5es monol\u00edticas.<\/p>\n\n\n\n<p>Dessa forma, abordaremos pr\u00f3s e contras de sua utiliza\u00e7\u00e3o, na tentativa de auxiliar na escolha da abordagem mais adequada ao problema a ser solucionado.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\">Quando usar Microsservi\u00e7os?<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A utiliza\u00e7\u00e3o de microsservi\u00e7os facilita o desenvolvimento de m\u00faltiplos servi\u00e7os ao mesmo tempo. Enquanto uma equipe cuida da melhoria de um servi\u00e7o espec\u00edfico, outra pode, sem maiores percal\u00e7os, implementar um novo servi\u00e7o no ecossistema ou modificar um servi\u00e7o distinto. Documenta\u00e7\u00e3o e padroniza\u00e7\u00e3o s\u00e3o fatores decisivos para que tudo isso funcione de forma correta e como esperado.<\/li>\n\n\n\n<li>O deploy \u00e9 feito de forma individual, ou seja, somente aquele servi\u00e7o aprimorado precisa ser publicado, n\u00e3o a aplica\u00e7\u00e3o como um todo. Isso pode representar um ganho no tempo e na complexidade do deploy.<\/li>\n\n\n\n<li>Caso algum dos servi\u00e7os apresente gargalo por algum motivo, ele, e somente ele, pode ser escalado, n\u00e3o \u00e9 necess\u00e1rio escalar a aplica\u00e7\u00e3o inteira. Isso representa uma redu\u00e7\u00e3o no tempo para resolu\u00e7\u00e3o de problemas ligados a performance, devido a alto tr\u00e1fego. O custo tamb\u00e9m pode ser reduzido, levando em considera\u00e7\u00e3o que instanciar um servi\u00e7o tende a ser mais barato do que instanciar uma nova aplica\u00e7\u00e3o completa para solucionar o problema.<\/li>\n\n\n\n<li>Com cada servi\u00e7o possuindo uma \u00fanica responsabilidade, consegue-se controlar melhor a qualidade do software entregue. Os diversos servi\u00e7os do ecossistema podem ser testados de forma mais r\u00e1pida e assertiva.<\/li>\n\n\n\n<li>Existe uma redu\u00e7\u00e3o da complexidade do c\u00f3digo, o que facilita a integra\u00e7\u00e3o de novos desenvolvedores aos times respons\u00e1veis. Um novo membro do time pode se familiarizar de forma mais r\u00e1pida com os diversos servi\u00e7os do ecossistema, uma vez que eles tendem a ser mais simples.<\/li>\n\n\n\n<li>Com o uso de servi\u00e7os independentes e com baixo ou nenhum acoplamento, h\u00e1 a possibilidade de utiliza\u00e7\u00e3o das melhores linguagens e ferramentas para resolu\u00e7\u00e3o de cada problema. Esta abordagem permite que voc\u00ea utilize aquilo que melhor se adapta a necessidade da aplica\u00e7\u00e3o, isto inclui linguagem, ferramentas e frameworks.<\/li>\n\n\n\n<li>Caso algum dos servi\u00e7os do ecossistema falhe, os demais continuar\u00e3o funcionando. Isso garante que pelo menos parte da sua aplica\u00e7\u00e3o permane\u00e7a funcionando e realizando suas fun\u00e7\u00f5es.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-gallery aligncenter has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large wp-image-11567 size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"707\" height=\"443\" data-id=\"11567\" src=\"https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2017\/05\/microservicos1.png\" alt=\"Microsservicos e a diferen\u00e7a entre arquietura monoliticas.\" class=\"wp-image-11567\" title=\"\" srcset=\"https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2017\/05\/microservicos1.png 707w, https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2017\/05\/microservicos1-300x188.png 300w, https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2017\/05\/microservicos1-400x251.png 400w\" sizes=\"(max-width: 707px) 100vw, 707px\" \/><figcaption class=\"wp-element-caption\">Fonte: https:\/\/www.opus-software.com.br\/microservicos-diferenca-arquietura-monoliticas\/<\/figcaption><\/figure>\n<\/figure>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\">Quando n\u00e3o usar Microsservi\u00e7os?<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Com diversos servi\u00e7os, a manuten\u00e7\u00e3o dos ambientes torna-se mais complexa. \u00c9 necess\u00e1rio gerenciar as depend\u00eancias de cada servi\u00e7o e os instanciar de forma independente.<\/li>\n\n\n\n<li>A utiliza\u00e7\u00e3o de diversas tecnologias no ecossistema, pode resultar em custo maior de infraestrutura, se comparado a uma aplica\u00e7\u00e3o monol\u00edtica. A utiliza\u00e7\u00e3o de uma m\u00e1quina para cada servi\u00e7o pode tornar a opera\u00e7\u00e3o muito cara. Containers s\u00e3o uma solu\u00e7\u00e3o vi\u00e1vel e bastante utilizada.<\/li>\n\n\n\n<li>A utiliza\u00e7\u00e3o de microsservi\u00e7os adiciona um grau a mais de dificuldade no gerenciamento de inst\u00e2ncias de aplica\u00e7\u00f5es. Enquanto em uma aplica\u00e7\u00e3o monol\u00edtica lidamos basicamente com uma inst\u00e2ncia, que \u00e9 a aplica\u00e7\u00e3o completa, com microsservi\u00e7os, muitas vezes, precisamos gerenciar m\u00faltiplas inst\u00e2ncias de diversos servi\u00e7os. Essa complexidade na utiliza\u00e7\u00e3o, estrutura\u00e7\u00e3o e gerenciamento de sistemas distribu\u00eddos deve ser levada em considera\u00e7\u00e3o na escolha da abordagem.<\/li>\n\n\n\n<li>H\u00e1 a necessidade de definir, implantar e manter uma forma de comunica\u00e7\u00e3o entre os servi\u00e7os. Para isso, s\u00e3o utilizadas normalmente duas estrat\u00e9gias: REST e servi\u00e7os mensageiros como ActiveMQ e RabbitMQ.<\/li>\n\n\n\n<li>Com m\u00faltiplos pontos de falha, principalmente na comunica\u00e7\u00e3o entre os servi\u00e7os, \u00e9 necess\u00e1rio estar preparado para monitorar e recuperar inst\u00e2ncias, sempre que necess\u00e1rio. Este ponto \u00e9 crucial para um uso bem sucedido de microsservi\u00e7os.<\/li>\n\n\n\n<li>O maior custo de entrada tamb\u00e9m pode ser considerado um ponto contra. \u00c9 necess\u00e1rio um esfor\u00e7o extra para padroniza\u00e7\u00e3o, gerenciamento e manuten\u00e7\u00e3o tanto dos servi\u00e7os quanto dos times envolvidos. A adapta\u00e7\u00e3o dos times a nova realidade de desenvolvimento e pensamento leva algum tempo e isso deve ser considerado.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\">Conclus\u00e3o: n\u00e3o existe bala de prata<\/h2>\n\n\n\n<p>A abordagem de microsservi\u00e7os tem sido muito debatida e ganhado bastante destaque, entretanto, isso n\u00e3o significa que ela deva ser utilizada para resolver todos os problemas. Isso n\u00e3o se aplica somente a abordagens e arquitetura, mas a tecnologias e frameworks tamb\u00e9m.<\/p>\n\n\n\n<p>A resposta para a pergunta \u201cqual a melhor abordagem para desenvolvimento de software?\u201d \u00e9: depende. Cada um dos modelos citados possui suas particularidades, pr\u00f3s e contras.<\/p>\n\n\n\n<p>O modelo a ser adotado vai depender de fatores como o tipo de problema a ser resolvido, tempo para desenvolvimento, experi\u00eancia dos times envolvidos e demais recursos dispon\u00edveis.<\/p>\n\n\n\n<p>Percebemos, atrav\u00e9s dos pontos abordados, que a ado\u00e7\u00e3o de microsservi\u00e7os impacta a produtividade dos times envolvidos. A produtividade \u00e9 impactada negativamente quando tratamos de projetos com baixa complexidade. <\/p>\n\n\n\n<p>Neste caso, o custo extra para implanta\u00e7\u00e3o e manuten\u00e7\u00e3o dos servi\u00e7os acaba sendo mais prejudicial do que ben\u00e9fico. J\u00e1 quando tratamos de projetos com avan\u00e7ado grau de complexidade, o quadro se inverte, a produtividade tende a aumentar.<\/p>\n\n\n\n<figure class=\"wp-block-gallery aligncenter has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large wp-image-11566 size-full\"><img decoding=\"async\" width=\"717\" height=\"493\" data-id=\"11566\" src=\"https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2017\/05\/microservicos2.png\" alt=\"Microsservi\u00e7os e a rela\u00e7\u00e3o complexidade versus produtividade\" class=\"wp-image-11566\" title=\"\" srcset=\"https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2017\/05\/microservicos2.png 717w, https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2017\/05\/microservicos2-300x206.png 300w, https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2017\/05\/microservicos2-400x275.png 400w\" sizes=\"(max-width: 717px) 100vw, 717px\" \/><figcaption class=\"wp-element-caption\">Fonte: https:\/\/www.opus-software.com.br\/microservicos-diferenca-arquietura-monoliticas\/<\/figcaption><\/figure>\n<\/figure>\n\n\n\n<p>Sendo assim, \u00e9 de extrema import\u00e2ncia que o problema a ser atacado esteja muito bem definido. Com essa defini\u00e7\u00e3o, a escolha da abordagem ocorre de forma mais assertiva, uma vez que o projeto tem um objetivo claro. <\/p>\n\n\n\n<p>Com uma an\u00e1lise detalhada e levantamento de pr\u00f3s e contras do uso de uma ou de outra abordagem, a escolha se torna mais simples e tende a ser a ideal.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/king.host\/servidor-vps?utm_source=lab&amp;utm_medium=banner-artigo&amp;utm_campaign=banner-artigo-microsservicos-quando-utilizar-este-metodo\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"798\" height=\"250\" data-id=\"38012\" src=\"https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2024\/04\/banner-promo.webp\" alt=\"banner-promo-vps-e-cloud\" class=\"wp-image-38012\" title=\"\" srcset=\"https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2024\/04\/banner-promo.webp 798w, https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2024\/04\/banner-promo-300x94.webp 300w, https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2024\/04\/banner-promo-780x244.webp 780w, https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2024\/04\/banner-promo-768x241.webp 768w\" sizes=\"(max-width: 798px) 100vw, 798px\" \/><\/a><\/figure>\n<\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Descubra o que \u00e9 arquitetura de Microsservi\u00e7os, conhe\u00e7a seus benef\u00edcios e entenda quando vale a pena utilizar este tipo de arquitetura em seus projetos. Tradicionalmente, a ind\u00fastria sempre construiu softwares de forma monol\u00edtica, ou seja, como um grande e \u00fanico reposit\u00f3rio. Analisando de forma superficial, isso parece bastante interessante. Todos os desenvolvedores da empresa possu\u00edam [&hellip;]<\/p>\n","protected":false},"author":299,"featured_media":33598,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1307,1308],"tags":[1376],"class_list":["post-11564","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gestao-de-negocio","category-glossario","tag-desenvolvimento"],"_links":{"self":[{"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/posts\/11564","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/users\/299"}],"replies":[{"embeddable":true,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/comments?post=11564"}],"version-history":[{"count":9,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/posts\/11564\/revisions"}],"predecessor-version":[{"id":38031,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/posts\/11564\/revisions\/38031"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/media\/33598"}],"wp:attachment":[{"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/media?parent=11564"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/categories?post=11564"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/tags?post=11564"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}