{"id":1755,"date":"2014-03-30T21:22:51","date_gmt":"2014-03-31T00:22:51","guid":{"rendered":"https:\/\/devkico.itexto.com.br\/?p=1755"},"modified":"2014-04-06T22:19:55","modified_gmt":"2014-04-07T01:19:55","slug":"e-arquitetura-baseada-em-micro-servicos","status":"publish","type":"post","link":"https:\/\/devkico.itexto.com.br\/?p=1755","title":{"rendered":"O que \u00e9 arquitetura baseada em micro servi\u00e7os?"},"content":{"rendered":"<figure id=\"attachment_1756\" aria-describedby=\"caption-attachment-1756\" style=\"width: 300px\" class=\"wp-caption alignright\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-1756\" alt=\"Aventuras de Gulliver - bom livro!\" src=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2014\/03\/microservico-300x184.jpg\" width=\"300\" height=\"184\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2014\/03\/microservico-300x184.jpg 300w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2014\/03\/microservico.jpg 350w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><figcaption id=\"caption-attachment-1756\" class=\"wp-caption-text\">Aventuras de Gulliver &#8211; bom livro!<\/figcaption><\/figure>\n<p>O termo\u00a0<em>micro servi\u00e7o<\/em>\u00a0tem me ocupado nos \u00faltimos meses. Vejo a Pivotal dando \u00eanfase a este estilo arquitetural no lan\u00e7amento do <a href=\"https:\/\/spring.io\/blog\/2013\/12\/12\/announcing-spring-framework-4-0-ga-release\">Spring 4<\/a>,\u00a0 uma <a href=\"http:\/\/www.infoq.com\/presentations\/Micro-Services\">apresenta\u00e7\u00e3o interessante de James Lewis a respeito<\/a>\u00a0e que mais tarde, junto com\u00a0\u00a0Martin Fowler ir\u00e1 escrever um <a href=\"http:\/\/martinfowler.com\/articles\/microservices.html\">maravilhoso <\/a>artigo\u00a0a respeito e at\u00e9 mesmo textos tolos <a href=\"http:\/\/yobriefca.se\/blog\/2013\/04\/29\/micro-service-architecture\/\">como este<\/a>. Ap\u00f3s ter lido tantas fontes h\u00e1 momentos em que me sinto como Santo Agostinho ao ser questionado sobre o tempo:<\/p>\n<blockquote><p>&#8220;O que \u00e9, por conseguinte, o tempo? Se ningu\u00e9m me perguntar, eu sei; se o quiser explicar a quem me fizer a pergunta, j\u00e1 n\u00e3o sei.&#8221; (Livro XI das Confiss\u00f5es de Santo Agostinho)<\/p><\/blockquote>\n<p>\u00c9 interessante como na maior parte das fontes que citei o texto se inicia com algo do tipo &#8220;ainda n\u00e3o h\u00e1 uma decis\u00e3o precisa do termo&#8221; (<a href=\"http:\/\/martinfowler.com\/articles\/microservices.html\">Fowler<\/a>). Como ver\u00e3o neste post minha d\u00favida prim\u00e1ria ainda se mant\u00e9m: \u00e9 de fato algo novo ou apenas um daqueles momentos nos quais a ind\u00fastria renomeia algo que j\u00e1 conhec\u00edamos e us\u00e1vamos h\u00e1 anos apenas para nos vender alguma coisa?<\/p>\n<h2>Meu entendimento sobre a coisa<\/h2>\n<p>Resumindo: <strong>mais uma solu\u00e7\u00e3o para o problema do alto acoplamento em aplica\u00e7\u00f5es corporativas. A diferen\u00e7a \u00e9 que desta vez estamos atacando aplica\u00e7\u00f5es monol\u00edticas<\/strong>. Bom: ent\u00e3o primeiro \u00e9 interessante pensarmos no que v\u00eam a ser uma &#8220;aplica\u00e7\u00e3o monol\u00edtica&#8221;.<\/p>\n<p>Uma aplica\u00e7\u00e3o monol\u00edtica \u00e9 aquela na qual todos os componentes de neg\u00f3cio encontram-se dentro de uma mesma unidade de implanta\u00e7\u00e3o. Se voc\u00ea \u00e9 programador Java j\u00e1 sabe do que estou falando: os arquivos WAR ou EAR. Reparou que usei o termo &#8220;componentes de neg\u00f3cio&#8221;?<\/p>\n<h3>O que \u00e9 um componente?<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1758 aligncenter\" alt=\"componente\" src=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2014\/03\/componente.png\" width=\"256\" height=\"197\" \/>Vou usar a defini\u00e7\u00e3o de <a href=\"http:\/\/martinfowler.com\/articles\/microservices.html#ComponentizationViaServices\">Fowler e Lewis<\/a> de componente: &#8220;\u00e9 aquela unidade de software que pode ser aprimorada e substituida de forma independente&#8221;. Vamos pensar num exemplo simples: a <strong>biblioteca<\/strong> que voc\u00ea usa para compactar dados. Esta poss\u00edvelmente foi feita por um terceiro. Caso este terceiro descubra uma maneira de compactar dados de forma mais eficiente, basta que voc\u00ea troque a biblioteca, se esta mantiver a mesma assinatura, seu sistema inteiro se beneficiar\u00e1 destas melhorias de forma transparente. E voc\u00ea apenas substituiu um peda\u00e7o do seu sistema.<\/p>\n<p>Bom: qual o problema ent\u00e3o com aplica\u00e7\u00f5es monol\u00edticas? O fato destas conterem\u00a0<strong>em si<\/strong> todos os componentes usados e todos serem executados dentro do\u00a0<strong>mesmo processo<\/strong>. Precisou trocar um componente? Voc\u00ea ir\u00e1 fazer o deploy da unidade inteira. J\u00e1 houve algumas solu\u00e7\u00f5es interessantes para este problema, como por exemplo o EJB e <a href=\"http:\/\/www.osgi.org\">OSGi <\/a>(OSGi na minha opini\u00e3o \u00e9 como o Java SEMPRE deveria ter sido, falo mais sobre ele no futuro).<\/p>\n<p>O ideal seria que voc\u00ea n\u00e3o precisasse parar seu sistema para substituir um componente. Como no caso do bundle OSGi ou da implementa\u00e7\u00e3o remota do EJB, mas nem sempre isto ocorre ou mesmo \u00e9 necess\u00e1rio. Ok: voc\u00ea sabe o que \u00e9 um componente. <strong>Um componente de neg\u00f3cio seria portanto aquele que encapsula um requisito funcional do seu sistema<\/strong>. O que \u00e9 ent\u00e3o um micro servi\u00e7o? Um servi\u00e7o pequeno?<\/p>\n<h3>O que \u00e9 um servi\u00e7o?<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1759\" alt=\"servicos\" src=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2014\/03\/servicos.jpg\" width=\"200\" height=\"116\" \/>Seguindo a defini\u00e7\u00e3o de <a href=\"http:\/\/martinfowler.com\/articles\/microservices.html#ComponentizationViaServices\">Fowler e Lewis<\/a>, um servi\u00e7o seria na realidade um tipo especial de componente. Aquele componente que descrevi alguns par\u00e1grafos acima \u00e9 o que chamar\u00edamos de\u00a0<strong>biblioteca<\/strong>. \u00c9 c\u00f3digo contra o qual <strong>ligamos<\/strong> aquele que escrevemos, e que consequentemente nos gera um sistema monol\u00edtico. O servi\u00e7o \u00e9 o\u00a0<strong>oposto da biblioteca<\/strong>, ou seja, n\u00f3s n\u00e3o ligamos nosso c\u00f3digo diretamente a este: apenas o executamos a partir de chamadas remotas.<strong><br \/>\n<\/strong><\/p>\n<p>Sendo assim, um servi\u00e7o seria um componente executado em um processo diferente do cliente que o usa. Esta \u00e9 uma id\u00e9ia bastante interessante: caso um servi\u00e7o apresente problemas, basta que,\u00a0<strong>em tempo de execu\u00e7\u00e3o<\/strong>, eu substitua apenas aquele peda\u00e7o do sistema, mantendo todo o resto em execu\u00e7\u00e3o como se &#8220;quase nada&#8221; houvesse ocorrido. Preciso de maior escalabilidade? Poderia pensar em diversas inst\u00e2ncias do mesmo servi\u00e7o. As possibilidades s\u00e3o pr\u00e1ticamente infinitas quando pensamos desta forma.<\/p>\n<h3><span style=\"font-family: Bitter, Georgia, serif; font-size: 22px; line-height: 1.3;\">E o que \u00e9 o tal do micro servi\u00e7o ent\u00e3o?<\/span><\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1760\" alt=\"microservicos\" src=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2014\/03\/microservicos.jpg\" width=\"205\" height=\"136\" \/><\/p>\n<p>O prefixo &#8220;micro&#8221; \u00e9 enganador. Em um primeiro momento podemos pensar que se trata de um programa bem pequeno, e na <a href=\"http:\/\/www.infoq.com\/presentations\/Micro-Services\">apresenta\u00e7\u00e3o de Lewis<\/a>\u00a0\u00e9 defendido que devem ser pequenos o suficiente para que sejam compreendidos por uma \u00fancia pessoa.<\/p>\n<p>Um micro servi\u00e7o compreende um requisito funcional do seu sistema. \u00c9 um componente de neg\u00f3cio executado em um processo externo portanto. Como requisitos funcionais podem ser complexos, nada impede que seu &#8220;micro&#8221; componente n\u00e3o seja t\u00e3o pequeno assim (mas isto vai depender mais da sua modelagem do que desta abordagem). \u00a0Sendo assim acredito que seja mais interessante pensar que o\u00a0<strong>ideal<\/strong>\u00a0seria serem micro servi\u00e7os pequenos, por\u00e9m o\u00a0<strong>essencial<\/strong> \u00e9 que determinem bem o que venha a ser os requisitos funcionais que implementam.<\/p>\n<p>Um sistema que siga a arquitetura baseada em micro servi\u00e7os portanto \u00e9 aquela que \u00e9 composta por micro servi\u00e7os, cada um destes respons\u00e1vel por um conjunto finito de requisitos funcionais do projeto.<\/p>\n<h2>Consequ\u00eancias do micro servi\u00e7o<\/h2>\n<p>A sa\u00edda do modo monol\u00edtico muda bastante coisa no nosso modo de pensar. Para come\u00e7ar podemos pensar em dividir melhor a equipe. Este \u00e9 inclusive um ponto apresentado por <a href=\"http:\/\/martinfowler.com\/articles\/microservices.html#ProductsNotProjects\">Fowler e Lewis<\/a>. Agora podemos ter equipes especializadas naquele conjunto de funcionalidades de neg\u00f3cio, que passar\u00e3o a tratar o servi\u00e7o n\u00e3o como um mero componente, mas sim um produto, com ciclo de vida independente. Isto tr\u00e1s implica\u00e7\u00f5es profundas do ponto de vista gerencial.<\/p>\n<p>Outro ponto importante: como estes micro servi\u00e7os se comunicam? Faz-se necess\u00e1rio adotar uma estrat\u00e9gia que facilite a integra\u00e7\u00e3o de todas estas pontas. Em todos os artigos s\u00e3o expostas duas estrat\u00e9gias fundamentais: REST (alguns mencionam HATEOAS) e mensageria atrav\u00e9s de algum broker como ActiveMQ, RabbitMQ, HornetQ ou tantos outros. \u00c9 obrigat\u00f3ria a presen\u00e7a de um protocolo aberto comum a todos os servi\u00e7os: imagine ter de usar protocolos propriet\u00e1rios neste tipo de arquitetura, sua vida se tornaria um inferno.<\/p>\n<p>Um ESB se aplica? No artigo de Fowler e Lewis ele \u00e9 mencionado por alto, mas n\u00e3o se mostra como algo obrigat\u00f3rio. Sinceramente tamb\u00e9m acho que seja desnecess\u00e1rio, apesar de que um servi\u00e7o similar ao <a href=\"http:\/\/pt.wikipedia.org\/wiki\/UDDI\">UDDI<\/a> quebre troncos nesta abordagem. UDDI \u00e9 a grosso modo um diret\u00f3rio de web services baseados em SOAP. Algo que me responda \u00e0 pergunta &#8220;qual o endere\u00e7o das implementa\u00e7\u00f5es do servi\u00e7o x?&#8221; tornaria tudo muito mais f\u00e1cil.<\/p>\n<p>Se todos os processos s\u00e3o isolados, tamb\u00e9m preciso que sejam monitorados, ou seja, todo servi\u00e7o deve apresentar m\u00e9tricas sobre sua qualidade de servi\u00e7o. \u00c9 fundamental que eu saiba quem est\u00e1 ou n\u00e3o online para que cada micro servi\u00e7o possa implementar sua pr\u00f3pria estrat\u00e9gia no caso de indisponibilidade de algum servi\u00e7o do qual dependa.<\/p>\n<p>E olha outro ponto importante: voc\u00ea tamb\u00e9m precisa de uma estrat\u00e9gia de versionamento que seja consistente. Se os micro servi\u00e7os s\u00e3o por defini\u00e7\u00e3o componentes, estes devem poder evoluir isoladamente tamb\u00e9m.<\/p>\n<p>Se a comunica\u00e7\u00e3o entre micro servi\u00e7os sempre requer a invoca\u00e7\u00e3o de c\u00f3digo externo \u00e9 necess\u00e1rio pensar em estrat\u00e9gias visando minimizar perda de performance. Uma coisa \u00e9 chamar c\u00f3digo diretamente ligado ao meu (bibliotecas), outra c\u00f3digo remoto.<\/p>\n<p>H\u00e1 tamb\u00e9m um outro ponto bastante delicado: <strong>como pensar a quest\u00e3o da\u00a0componentiza\u00e7\u00e3o?<\/strong> Se quero que meus micro servi\u00e7os sejam completamente independentes como organizo meu c\u00f3digo fonte? Na <a href=\"http:\/\/www.infoq.com\/presentations\/Micro-Services\">apresenta\u00e7\u00e3o de Lewis<\/a> \u00e9 proposto que cada equipe tenha seu pr\u00f3prio reposit\u00f3rio a fim de evitar a cria\u00e7\u00e3o de componentes compartilhados que causem depend\u00eancias profundas entre um ou mais micro servi\u00e7os. Faz muito sentido, especialmente se eu quiser que alguns componentes sejam escritos em linguagens distintas. Imagine dois micro servi\u00e7os dependentes de uma biblioteca compartilhada: alterando-a mudo o comportamento de dois componentes que deveriam ser em teoria completamente independentes.<\/p>\n<p>E estes s\u00e3o apenas alguns dos pontos gerais que observei nesta abordagem. Voc\u00eas com certeza me mostrar\u00e3o mais alguns nos coment\u00e1rios deste post, certo? :)<\/p>\n<h3>Consequ\u00eancias do lado Java<\/h3>\n<p>Pensando como desenvolvedor Java as coisas mudam de figura no modo como pensamos o deploy de nossos projetos. At\u00e9 ent\u00e3o pensamos em arquivos WAR e EAR que iremos instalar em nossos servidores de aplica\u00e7\u00e3o. No entanto os servi\u00e7os s\u00e3o executados isoladamente, certo?<\/p>\n<p>Logo devemos minimizar o uso de containers. Imagine que eu sobrecarregue um container com in\u00fameros micro servi\u00e7os. Se este cai, diversos v\u00e3o junto. A solu\u00e7\u00e3o \u00e9 embarcar o container e distribuir nossa aplica\u00e7\u00e3o como um jar \u00fanico. J\u00e1 h\u00e1 projetos que nos permitem fazer isto. Destes o que acho mais interessante atualmente (e que podemos usar HOJE) \u00e9 o <a href=\"https:\/\/spring.io\/blog\/2013\/08\/06\/spring-boot-simplifying-spring-for-everyone\">Spring B oot<\/a>. Grails ter\u00e1 algo similar em breve (afinal de contas, \u00e9 Pivotal n\u00e9?), <a href=\"http:\/\/vertx.io\">Vertx<\/a>\u00a0tamb\u00e9m nos permite fazer algo similar.<\/p>\n<p>E ei: se voc\u00ea olhar com aten\u00e7\u00e3o, ver\u00e1 que toda a hist\u00f3ria por tr\u00e1s do Node.js gira em torno deste conceito tamb\u00e9m. ;)<\/p>\n<h2>Mas cad\u00ea a novidade?<\/h2>\n<p>Este \u00e9 minha grande d\u00favida. Cad\u00ea a novidade? Decompor nossos projetos em micro servi\u00e7os \u00e9 algo que fazemos h\u00e1 muito tempo. Veja por exemplo EJB e seu modelo distribu\u00eddo. Um \u00fanico protocolo comum (RMI por baixo dos panos) e l\u00f3gica de neg\u00f3cios encapsulada no bean.<\/p>\n<p>Outro exemplo interessante: OSGi. Em que eu posso inclusive fazer o deploy de um servi\u00e7o (representado como um bundle) no container em tempo de execu\u00e7\u00e3o sem parar a aplica\u00e7\u00e3o. Neste caso n\u00e3o necess\u00e1riamente seria um micro servi\u00e7o pois o bundle \u00e9 executado na maior parte das vezes dentro de um mesmo processo, mas poderia ser externo tamb\u00e9m.<\/p>\n<p>E tem tamb\u00e9m o SOA, que nos fornece exatamente isto com o uso de ESBs, certo? Isto sem mencionar as diversas vezes em que desenvolvemos sistemas usando esta mesma abordagem no passado sem fugir muito destes princ\u00edpios que apresentei sem darmos este nome (<a href=\"http:\/\/www.rafaelromao.com\/2014\/03\/arquitetura-de-micro-servicos-e-ddd.html\">aqui<\/a> est\u00e1 um exemplo interessante no blog do Rafael Rom\u00e3o).<\/p>\n<p>A novidade talvez esteja no fato de finalmente estarmos dando um nome a este boi. Gosto disto, quanto melhor o vocabul\u00e1rio, melhor.<\/p>\n<h2>Concluindo<\/h2>\n<p>N\u00e3o acredito que a pergunta &#8220;ser\u00e1 uma arquitetura baseada em micro servi\u00e7os o futuro?&#8221; ser\u00e1 respondida somente em um futuro distante. Na realidade, ela j\u00e1 foi resolvida: ela \u00e9 o presente. A partir do momento em que isolamos os objetivos de neg\u00f3cio do nosso sistema em processos isolados que possuam as caracter\u00edsticas a seguir:<\/p>\n<ul>\n<li>Cada servi\u00e7o executado em um processo isolado.<\/li>\n<li>Padr\u00e3o de comunica\u00e7\u00e3o entre os servi\u00e7os.<\/li>\n<li>Pequenos o suficiente para que isolem bem requisitos funcionais do sistema.<\/li>\n<li>Cada servi\u00e7o apresente m\u00e9tricas sobre si mesmo.<\/li>\n<\/ul>\n<p>Ou pelo menos a maior parte destes pontos, j\u00e1 \u00e9 uma arquitetura baseada em micro servi\u00e7os (ou pr\u00f3xima).<\/p>\n<p>O que realmente gosto nesta hist\u00f3ria toda \u00e9 a quantidade de discuss\u00e3o que imagino surgir a partir destes conceitos. Que venha e que com isto tenhamos melhores termos para estes problemas!<\/p>\n<p><strong>PS: 31\/3\/2014 &#8211; 11:00 AM<\/strong><\/p>\n<p>Encontrei uma cr\u00edtica bem interessante ao texto de Lewis e Fowler que voc\u00ea pode ler neste<a href=\"http:\/\/service-architecture.blogspot.co.uk\/2014\/03\/microservices-money-for-old-rope-or-re.html\"> link<\/a>. O autor tem um ponto bastante interessante: para ele &#8220;micro servi\u00e7os&#8221; s\u00e3o na realidade um retrocesso pois ignoram os pontos aprendidos com SOA. Os coment\u00e1rios s\u00e3o particularmente interessantes. :)<\/p>\n<p><strong>PS: 6\/4\/2014<\/strong><\/p>\n<p>Uma semana depois postei algumas conclus\u00f5es a que cheguei sobre o assunto neste <a href=\"https:\/\/devkico.itexto.com.br\/?p=1768\">post<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>O que \u00e9 uma arquietura baseada em micro servi\u00e7os? O que ela nos tr\u00e1s de novidade (se \u00e9 que h\u00e1 novidades) e como muda o nosso modo de pensar o desenvolvimento de aplica\u00e7\u00f5es Java?<\/p>\n","protected":false},"author":1,"featured_media":1756,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[36,6],"tags":[],"class_list":["post-1755","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desenvolvimento-de-software","category-java"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>O que \u00e9 arquitetura baseada em micro servi\u00e7os? - \/dev\/Kico<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/devkico.itexto.com.br\/?p=1755\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"O que \u00e9 arquitetura baseada em micro servi\u00e7os? - \/dev\/Kico\" \/>\n<meta property=\"og:description\" content=\"O que \u00e9 uma arquietura baseada em micro servi\u00e7os? O que ela nos tr\u00e1s de novidade (se \u00e9 que h\u00e1 novidades) e como muda o nosso modo de pensar o desenvolvimento de aplica\u00e7\u00f5es Java?\" \/>\n<meta property=\"og:url\" content=\"https:\/\/devkico.itexto.com.br\/?p=1755\" \/>\n<meta property=\"og:site_name\" content=\"\/dev\/Kico\" \/>\n<meta property=\"article:published_time\" content=\"2014-03-31T00:22:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2014-04-07T01:19:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2014\/03\/microservico.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t<meta property=\"og:image:height\" content=\"215\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Kico (Henrique Lobo Weissmann)\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@loboweissmann\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kico (Henrique Lobo Weissmann)\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=1755\",\"url\":\"https:\/\/devkico.itexto.com.br\/?p=1755\",\"name\":\"O que \u00e9 arquitetura baseada em micro servi\u00e7os? - \/dev\/Kico\",\"isPartOf\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=1755#primaryimage\"},\"image\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=1755#primaryimage\"},\"thumbnailUrl\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2014\/03\/microservico.jpg\",\"datePublished\":\"2014-03-31T00:22:51+00:00\",\"dateModified\":\"2014-04-07T01:19:55+00:00\",\"author\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7\"},\"breadcrumb\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=1755#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/devkico.itexto.com.br\/?p=1755\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=1755#primaryimage\",\"url\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2014\/03\/microservico.jpg\",\"contentUrl\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2014\/03\/microservico.jpg\",\"width\":350,\"height\":215,\"caption\":\"Aventuras de Gulliver - bom livro!\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=1755#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/devkico.itexto.com.br\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"O que \u00e9 arquitetura baseada em micro servi\u00e7os?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#website\",\"url\":\"https:\/\/devkico.itexto.com.br\/\",\"name\":\"\/dev\/Kico\",\"description\":\"Desenvolvendo software\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/devkico.itexto.com.br\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7\",\"name\":\"Kico (Henrique Lobo Weissmann)\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g\",\"caption\":\"Kico (Henrique Lobo Weissmann)\"},\"sameAs\":[\"https:\/\/x.com\/loboweissmann\"],\"url\":\"https:\/\/devkico.itexto.com.br\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"O que \u00e9 arquitetura baseada em micro servi\u00e7os? - \/dev\/Kico","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/devkico.itexto.com.br\/?p=1755","og_locale":"pt_BR","og_type":"article","og_title":"O que \u00e9 arquitetura baseada em micro servi\u00e7os? - \/dev\/Kico","og_description":"O que \u00e9 uma arquietura baseada em micro servi\u00e7os? O que ela nos tr\u00e1s de novidade (se \u00e9 que h\u00e1 novidades) e como muda o nosso modo de pensar o desenvolvimento de aplica\u00e7\u00f5es Java?","og_url":"https:\/\/devkico.itexto.com.br\/?p=1755","og_site_name":"\/dev\/Kico","article_published_time":"2014-03-31T00:22:51+00:00","article_modified_time":"2014-04-07T01:19:55+00:00","og_image":[{"width":350,"height":215,"url":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2014\/03\/microservico.jpg","type":"image\/jpeg"}],"author":"Kico (Henrique Lobo Weissmann)","twitter_card":"summary_large_image","twitter_creator":"@loboweissmann","twitter_misc":{"Escrito por":"Kico (Henrique Lobo Weissmann)","Est. tempo de leitura":"10 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/devkico.itexto.com.br\/?p=1755","url":"https:\/\/devkico.itexto.com.br\/?p=1755","name":"O que \u00e9 arquitetura baseada em micro servi\u00e7os? - \/dev\/Kico","isPartOf":{"@id":"https:\/\/devkico.itexto.com.br\/#website"},"primaryImageOfPage":{"@id":"https:\/\/devkico.itexto.com.br\/?p=1755#primaryimage"},"image":{"@id":"https:\/\/devkico.itexto.com.br\/?p=1755#primaryimage"},"thumbnailUrl":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2014\/03\/microservico.jpg","datePublished":"2014-03-31T00:22:51+00:00","dateModified":"2014-04-07T01:19:55+00:00","author":{"@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7"},"breadcrumb":{"@id":"https:\/\/devkico.itexto.com.br\/?p=1755#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/devkico.itexto.com.br\/?p=1755"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/devkico.itexto.com.br\/?p=1755#primaryimage","url":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2014\/03\/microservico.jpg","contentUrl":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2014\/03\/microservico.jpg","width":350,"height":215,"caption":"Aventuras de Gulliver - bom livro!"},{"@type":"BreadcrumbList","@id":"https:\/\/devkico.itexto.com.br\/?p=1755#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/devkico.itexto.com.br\/"},{"@type":"ListItem","position":2,"name":"O que \u00e9 arquitetura baseada em micro servi\u00e7os?"}]},{"@type":"WebSite","@id":"https:\/\/devkico.itexto.com.br\/#website","url":"https:\/\/devkico.itexto.com.br\/","name":"\/dev\/Kico","description":"Desenvolvendo software","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/devkico.itexto.com.br\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7","name":"Kico (Henrique Lobo Weissmann)","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g","caption":"Kico (Henrique Lobo Weissmann)"},"sameAs":["https:\/\/x.com\/loboweissmann"],"url":"https:\/\/devkico.itexto.com.br\/?author=1"}]}},"jetpack_featured_media_url":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2014\/03\/microservico.jpg","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/1755"}],"collection":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1755"}],"version-history":[{"count":8,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/1755\/revisions"}],"predecessor-version":[{"id":1780,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/1755\/revisions\/1780"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/media\/1756"}],"wp:attachment":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1755"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1755"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1755"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}