On their leaner-faster-better to-do lists, many companies have already checked off practices like agile and DevOps , que promove a colaboração e a capacidade de resposta ao atender às necessidades dos clientes. Mas eles ainda não devem colocar suas canetas. Os microsserviços também ajudam as empresas a criar recursos e valor - em velocidade digital. Eles são comprovados e potentes. Eles também tendem a ser pouco compreendidos. Em vez de escrever um aplicativo como um grande bloco de código "monolítico", os desenvolvedores vinculam peças pequenas, independentes e facilmente reutilizáveis. Cada peça - um microsserviço - contém todo o código, interfaces e dados (ou links para os dados) necessários para executar um serviço específico ou um pequeno conjunto de serviços, como atualizar o endereço de um cliente ou excluir informações do cliente. Apreciado e pronto para uso, os microsserviços podem ser conectados a uma ampla variedade de aplicativos. Eles podem ser compartilhados - e alavancados - por uma organização.
Yet the idea behind microservices is actually simple. Instead of writing an application as one large “monolithic” block of code, developers link small, independent, easily reusable pieces. Each piece—a microservice—contains all of the code, interfaces, and data (or links to the data) necessary to perform a particular service or small set of services, such as updating a customer’s address or deleting customer information. Self-contained and ready to go, microservices can be plugged into a wide array of applications. They can be shared—and leveraged—throughout an organization.
Os microsserviços não são um segredo. Empresas como Netflix e Uber as usam há anos, criando catálogos extensos que facilitam o desenvolvimento de software em ritmo acelerado. Mas o paradigma não é apenas para nativos digitais. Ao entender como os microsserviços funcionam, seus requisitos e uma advertência ou duas, empresas de todas as origens podem se beneficiar da flexibilidade e eficiência que esses programas de tamanho morto prometem.
Os microsserviços não são apenas para nativos digitais.
Microservices Coloque os recursos e o valor da frente e do centro
Microsserviços oferecem muitos motivos para gostar deles. Por um lado, eles jogam bem com os outros. As equipes que desejam usar um microsserviço não precisam saber como funciona - o que a linguagem de programação é construída, onde seus dados são armazenados ou como é a lógica de software interna. Eles só precisam "conversar" com esse microsserviço, enviando uma solicitação - normalmente por meio de uma interface de programação de aplicativos (API) - e recebendo uma resposta. Isso significa que os desenvolvedores podem explorar de maneira fácil e rápida o que os microsserviços atendem às suas necessidades. Uma companhia de seguros de vida, por exemplo, pode construir um microsserviço "sugerir a próxima melhor ação" (levando a um agente ou consultor a fazer uma sugestão para um cliente) para seus negócios de avaliação fixa e, em seguida, reutilizá-lo em seus negócios de vida útil.
While microservices can be used to write or rewrite an application, their real value becomes apparent when they work as reusable components in multiple applications. A life insurance company, for example, might build a “suggest next best action” microservice (prompting an agent or advisor to make a suggestion to a customer) for its fixed-annuities business, and then reuse it in its term-life business.
Meanwhile, the decoupled nature of microservices allows teams to create and improve them without worrying about complex integrations. Microservices may work with applications, and with each other, yet they are built and updated as independent units. This lets developers create and improve a microservice quickly. A team can focus on one small standalone piece of code—sometimes less than a dozen lines long, sometimes more than a thousand—and avoid complex testing (necessary under the monolithic approach) to ensure that the changes don’t “break” an application.
Indeed, even if a microservice does go down, it won’t take everything else down with it. In a well-designed architecture, if a microservice fails, another version of that microservice (or perhaps an earlier one that worked well) will come up in its place, avoiding the domino effect that can crash a monolithic application. In effect, the microservices architecture—which includes an ecosystem of automation tools—functions like the watertight compartments on a ship, where flooding is contained and disaster averted while repairs are made.
Even if a microservice goes down, it won’t take everything else down with it.
Além disso, a equipe responsável por um microsserviço tem grande flexibilidade em como ele funciona. Como os microsserviços são independentes, os desenvolvedores são livres para usar qualquer linguagem de programação, ferramentas e bancos de dados melhor adequados ao seu objetivo. E eles podem alterar esses idiomas, ferramentas e bancos de dados ao longo do tempo. Enquanto as APIs continuarem trabalhando, as pessoas fora da equipe nunca precisam se preocupar com o pedigree do microsserviço. As ferramentas de automação integrantes da arquitetura de microsserviços permitem o que é conhecido como um pipeline de implantação contínua. De fato, todas as atividades tediosas e intensivas em mão-de-obra associadas a um mundo de aplicação monolítica-como testes, integração e compilação de código e provisionamento de infraestrutura-são automatizados. Com os aplicativos monolíticos, os desenvolvedores geralmente ficam tão atolados em suas listas de verificação que o ponto crucial de sua missão - identificando a melhor forma de atender e satisfazer os clientes - geralmente acaba com uma consideração secundária. Os microsserviços deslizam que dinâmico, empurrando os problemas "laterais" para o lado de onde eles pertencem. (Consulte a exposição.)
It gets better still. The automation tools integral to the microservices architecture enable what’s known as a continuous deployment pipeline. In effect, all of the tedious, labor-intensive activities associated with a monolithic application world—such as testing, code integration and compiling, and infrastructure provisioning—are automated.
The upshot is that software teams can focus more on creating and rapidly delivering business value. With monolithic applications, developers often get so bogged down in their checklists that the crux of their mission—identifying how best to serve and satisfy customers—often winds up a secondary consideration. Microservices flip that dynamic, pushing the “side” issues to the sidelines where they belong. (See the exhibit.)
When—and When Not—to Use Microservices
Given all the benefits of microservices, why not use them for everything? To be sure, the companies at the forefront of the architecture tend to be prolific microservice coders. Uber, for instance, uses thousands of microservices to support its mobile apps, internal and infrastructure services, and products.
No entanto, em alguns casos, uma empresa pode querer manter sua arquitetura existente. Isso é por causa da natureza pouco acoplada dos microsserviços. Por serem independentes, os microsserviços dependem de links-generalmente APIs-para se comunicar com aplicativos ou outros microsserviços. Esse arranjo introduz uma certa quantidade de latência ou atraso, enquanto as comunicações estão em processo (na verdade, você está saindo de um microsserviço para outro, em vez de ter tudo juntos). Na maioria dos casos, a latência é irrelevante. Mas em certos cenários-por exemplo, transações de alto volume e missão, onde a velocidade é imperativa-a latência pode causar problemas reais. Considere uma mesa de negociação de alta frequência, onde os preços mudam rapidamente. Um atraso de até uma fração de segundo pode causar desordem (os comerciantes pensam que estão comprando ou vendendo a um determinado preço, mas, na realidade, outro preço se aplica).
Lembre -se também de que a mudança para os microsserviços significa estabelecer uma quantidade razoável de bases e lutar com certas complexidades. Por exemplo, as empresas precisam criar - e gerenciar - as equipes que criarão e atualizam continuamente os microsserviços. E pode haver dezenas de equipes, cada uma com um punhado de engenheiros. As empresas também terão que decidir sobre a arquitetura de dados apropriada: cada microsserviço terá seu próprio repositório para os dados que usa ou ele puxará dados de um repositório compartilhado? Os microsserviços podem ter um desempenho mais rápido e mais autonomamente quando os dados são "locais", mas são mais fáceis de projetar e implantar quando os dados são compartilhados. Existem também as ferramentas de automação de APIs e pipeline a serem gerenciadas.
Perhaps the biggest challenge is determining which existing applications are best suited for a microservices makeover.
Mas talvez a maior tarefa - e desafio - esteja determinando quais aplicativos existentes são mais adequados para uma reforma de microsserviços. De fato, as empresas precisam triagem de seu portfólio, priorizando os aplicativos em que uma transição para os microsserviços trará o maior ROI. Para esse fim, recomendamos uma abordagem multifacetada:
- Avalie. As empresas devem avaliar os aplicativos existentes de acordo com três critérios: seu alinhamento estratégico com as prioridades de negócios; o grau de mudança que eles exigem; e requisitos de desempenho em tempo real. Os melhores candidatos a microsserviços serão aplicativos altamente estratégicos que provavelmente precisarão de muitos recursos novos e atualizados e que podem tolerar alguma latência. Esse processo de avaliação também traz outro benefício: ajuda as empresas a consolidar o portfólio, identificando aplicativos redundantes ou não necessários para conduzir metas estratégicas ou manter as luzes acesas.
- mapa. Em seguida, as empresas devem mapear os aplicativos em um dos quatro baldes: substituir, deixar como está, terceirizar ou se aposentar. Aplicações com alto alinhamento estratégico, um alto grau de mudança e tolerância para alguma latência normalmente vão no grupo "substituir", marcado para uma transição para microsserviços. As aplicações com menor alinhamento estratégico podem ser deixadas como está - ou, se exigirem alterações mínimas ou nenhuma, podem ser terceirizadas para reduzir custos e concentrar as equipes de desenvolvimento interno em áreas de valor e mudança de negócios importantes. Finalmente, os aplicativos que não são mais necessários podem ser aposentados.
- Priorize. Para os baldes de substituição e terceirização (e, menos crucialmente, o balde de aposentador), as empresas devem determinar quais aplicativos devem ter precedência. Embora a priorização seja um pouco de arte, a estratégia geral é considerar o esforço necessário (para identificar algumas vitórias rápidas) e o impacto nos negócios. Primeiro, é uma boa prática reavaliar os pedidos regularmente. Condições comerciais - e metas estratégicas - mudam, portanto, os aplicativos podem precisar ser reclassificados ao longo do tempo. O balde "aposentado" é particularmente provável de ver admissões. Segundo, é importante olhar holisticamente para aplicativos. Uma característica chave dos microsserviços é que eles se prestam a reutilizar. Portanto, em vez de analisar cada aplicativo no vácuo e decidir como ele pode ser migrado para a arquitetura de microsserviços, as empresas devem estar olhando em seu portfólio, identificando oportunidades para reutilizar microsserviços e evitar a duplicação de esforços.
Savvy companies will add a couple of footnotes to these steps. First, it’s good practice to re-evaluate applications on a regular basis. Business conditions—and strategic goals—change, so applications may need to be reclassified over time. The “retire” bucket is particularly likely to see rolling admissions. Second, it’s important to look holistically at applications. A key characteristic of microservices is that they lend themselves to reuse. So instead of looking at each application in a vacuum and deciding how it can be migrated to microservices architecture, companies should be looking across their portfolio, identifying opportunities to reuse microservices and avoid duplication of efforts.
Companies should be looking across their portfolio, identifying opportunities to reuse microservices and avoid duplication of efforts.
Criando uma organização pronta para microsserviços
A natureza distribuída e rápida dos microsserviços exige que as empresas façam mudanças organizacionais, técnicas e culturais. A boa notícia é que muitas empresas já estão bem naquela estrada, graças ao abraço de metodologias e DevOps ágeis. De fato, o ágil, o DevOps e os microsserviços formam uma espécie de trifecta de próxima geração na maneira como as empresas desenvolvem, implantam e atualizam aplicativos. Muitas empresas que desenvolvem microsserviços o fazem com equipes multifuncionais. Descobriu -se dos lados de negócios e tecnologia da empresa, essas equipes são responsáveis por resolver problemas de negócios específicos. Esta estrutura multifuncional é um núcleo
We’ve found that organizations that succeed in creating—and prospering from—microservices embrace certain core principles and practices:
- Agile Methodologies. Many companies that develop microservices do so with cross-functional teams. Culled from both the business and technology sides of the company, these teams are responsible for solving specific business problems. This cross-functional structure is a core princípio do Agile . De fato, o ágil e os microsserviços podem ir particularmente bem juntos. Tensões ágeis desenvolvendo e testando pequenos incrementos de código e incorporando feedback em iterações rápidas. Pequenos e independentes, os microsserviços são bastante passíveis de ciclos de desenvolvimento frequentes e rápidos. Como os microsserviços podem ser atualizados e testados de forma independente, os desenvolvedores podem e devem fazer melhorias contínuas. DevOps - que enfatiza a automação no ciclo de vida do software - pode muito
- Continuous Improvement and Deployment. Since microservices can be updated and tested independently, developers can, and should, make continuous improvements. DevOps—which emphasizes automation in the software lifecycle—can greatly acelerar testes e implantação . Isso permite que as equipes adaptem continuamente seus microsserviços às mudanças de requisitos e entreguem essas atualizações rapidamente.
- Pensando como um engenheiro de desempenho. Com os microsserviços, a latência - e seu impacto no resultado comercial - é uma consideração importante. Portanto, os desenvolvedores precisam pensar mais como engenheiros de desempenho. Por exemplo, talvez um atraso potencialmente prejudicial possa ser evitado ou reduzido empregando técnicas como pré -computação, renderização instantânea ou cache.
- novas ferramentas. As empresas podem recorrer a uma variedade de ferramentas para ajudá -las a criar e gerenciar microsserviços. Plataformas baseadas em nuvem, de código aberto, como Cloud Foundry e WSO2, permitem que os desenvolvedores construam e implantem microsserviços em contêineres. Cada contêiner detém todos os componentes necessários para executar o microsserviço: código, bibliotecas, configurações e assim por diante. As empresas devem ter em mente, porém, que os contêineres não são a única maneira de implantar microsserviços. Também uma opção: virtualização. Enquanto muitos desenvolvedores veem os contêineres como a abordagem mais "moderna" (perdendo a camada adicional de virtualização e tornando os microsserviços mais idiomas de programação e a tecnologia agnóstica), algumas empresas se sentem mais confortáveis dando uma etapa intermediária. Para eles, a virtualização se encaixa na conta. Outra ferramenta útil é uma malha de serviço. Este é um componente de software - definindo acima dos microsserviços - que facilita as comunicações entre os serviços. De fato, os desenvolvedores podem descarregar muitas funções de rede para a malha de serviço - e se concentrar mais nos recursos e recursos de negócios.
- novo talento. Obviamente, nenhuma dessas mudanças e ferramentas significará muito se as empresas não tiverem o talento certo. Os microsserviços exigem equipes com Habilidades fortes em áreas como DevOps , Arquitetura de dados, segurança, automação de teste e engenharia de desempenho. No início, é provável que poucas empresas tenham um banco profundo desse talento. Mas existem maneiras de preencher a lista. Uma abordagem é a incubação interna, por meio de treinamento e experiência prática. Outro está olhando para fora da empresa, terceirizando o trabalho para terceiros ou recrutando novos talentos internos (ou mesmo adquirindo novas empresas). As empresas mais experientes também sabem que a notícia está desenvolvendo e implantando microsserviços - o que informa os futuros funcionários e parceiros que há trabalho inovador em andamento e mais por vir.
Microservices require teams with strong skills in areas like DevOps, data architecture, security, testing automation, and performance engineering.
- Liderando de cima. para a viagem de microsserviços para ter sucesso, A gerência precisa apoiar i T a cada passo do caminho. Não basta criar equipes multifuncionais e adotar uma abordagem de falha e aprendizado do desenvolvimento. Esses conceitos precisam ser arraigados no DNA da empresa. Isso acontece apenas quando os executivos seniores colocam suas palavras - e seu peso - as observam. Ao se concentrar em bits independentes de código e dados-em vez de integrações complexas-os desenvolvedores podem fornecer recursos digitais na demanda e crescimento dos clientes do ritmo exigem. Prontamente reutilizável, os microsserviços podem ser conectados onde forem necessários. Como salsichas, você não precisa saber como elas são feitas. Mas, em vez de azia, você obtém eficiência e velocidade.
Microservices help companies get right to the point. By focusing on self-contained bits of code and data—instead of intricate integrations—developers can deliver digital capabilities at the pace customers demand and growth requires. Readily reusable, microservices can be plugged in wherever they’re needed. Like sausages, you don’t need to know how they’re made. But instead of heartburn, you get efficiency and speed.