Em suas listas de tarefas mais enxadas mais rápidas, muitas empresas já marcaram práticas como ágil e 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.
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 do tamanho de mordidos prometem.
Microservices aren’t just for digital natives.
Microservices Coloque recursos e valor da frente e do centro
Microservices oferece 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. Os microsserviços podem funcionar com aplicativos e entre si, mas são construídos e atualizados como unidades independentes. Isso permite que os desenvolvedores criem e melhorem um microsserviço rapidamente. Uma equipe pode se concentrar em uma pequena peça de código independente - às vezes menos de uma dúzia de linhas de comprimento, às vezes mais que mil - e evita testes complexos (necessários na abordagem monolítica) para garantir que as mudanças não "quebrem" um aplicativo. Em uma arquitetura bem projetada, se um microsserviço falhar, outra versão desse microsserviço (ou talvez uma anterior que funcionou bem) surgirá em seu lugar, evitando o efeito dominó que pode travar um aplicativo monolítico. Com efeito, a arquitetura de microsserviços - que inclui um ecossistema de ferramentas de automação - funções como os compartimentos estanques em um navio, onde as inundações estão contidas e desastres evitados durante os reparos.
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.
Mesmo que um microsserviço caia, ele não derrubará todo o resto com isso.
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ções monolíticas-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.
Yet in some cases, a company might want to stick with its existing architecture. That’s because of the loosely coupled nature of microservices. Because they are self-contained, microservices rely on links—generally APIs—to communicate with applications or other microservices. This arrangement introduces a certain amount of latency, or delay, while the communications are in process (in effect, you’re hopping from one microservice to another, instead of having everything hardwired together). In most cases, the latency is inconsequential. But in certain scenarios—for example, high-volume, mission-critical transactions where speed is imperative—latency could cause real problems. Consider a high-frequency trading desk, where prices change quickly. A delay of even a fraction of a second could cause disarray (traders think they are buying or selling at a certain price, but in reality, another price applies).
Keep in mind, too, that moving to microservices means laying a fair amount of groundwork and contending with certain complexities. For example, companies need to create—and manage—the teams that will build and continually update the microservices. And there may be dozens of teams, each with a handful of engineers. Companies will also have to decide on the appropriate data architecture: will each microservice have its own repository for the data it uses or will it pull in data from a shared repository? Microservices might perform faster and more autonomously when data is “local” but be easier to design and deploy when data is shared. There are the APIs and pipeline automation tools to manage, as well.
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, ágil, DevOps e microsserviços formam uma espécie de tríplice de última 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 capacidades 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 em potenciais 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. For the microservices journey to succeed, 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. Neveen Awad
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.