Por que usar uma abordagem de microsserviços para criar aplicações?Why use a microservices approach to building applications?

Para desenvolvedores de software, cálculo de um aplicativo em partes de componente é nada de novo.For software developers, factoring an application into component parts is nothing new. Normalmente, uma abordagem em camadas é utilizada, com um armazenamento de back-end, a lógica de negócios de camada intermediária e uma interface de front-end de utilizador (IU).Typically, a tiered approach is used, with a back-end store, middle-tier business logic, and a front-end user interface (UI). O que tem alterado ao longo dos últimos anos é que os desenvolvedores Criando aplicativos distribuídos para a nuvem.What has changed over the last few years is that developers are building distributed applications for the cloud.

Aqui estão algumas das necessidades de negócio:Here are some changing business needs:

  • Um serviço que tenha criado e operado em escala para alcançar clientes em novas regiões geográficas.A service that's built and operated at scale to reach customers in new geographic regions.
  • Entrega mais rápida de funcionalidades e capacidades para responder às necessidades dos clientes de forma ágil.Faster delivery of features and capabilities to respond to customer demands in an agile way.
  • Utilização de recursos aperfeiçoado para reduzir os custos.Improved resource utilization to reduce costs.

Essas necessidades de negócios estão a afetar como criamos aplicativos.These business needs are affecting how we build applications.

Para obter mais informações sobre a abordagem do Azure para os microsserviços, veja Microsserviços: Uma revolução de aplicação com a tecnologia de cloud.For more information about the Azure approach to microservices, see Microservices: An application revolution powered by the cloud.

Monolíticos vs. a abordagem de design de microsserviçosMonolithic vs. microservices design approach

Aplicativos evoluam ao longo do tempo.Applications evolve over time. Aplicativos bem-sucedidos evoluem pelo facto de ser úteis para pessoas.Successful applications evolve by being useful to people. Aplicativos sem êxito não evoluam e, eventualmente, são preteridos.Unsuccessful applications don't evolve and are eventually deprecated. Eis a questão: quanto sabe sobre os requisitos de hoje e o que eles serão no futuro?Here's the question: how much do you know about your requirements today and what they'll be in the future? Por exemplo, digamos que estiver criando um aplicativo de geração de relatórios para um departamento na sua empresa.For example, let's say you're building a reporting application for a department in your company. Tem a certeza, a aplicação aplica-se apenas no âmbito da sua empresa e que os relatórios não seja mantidos longo.You're sure the application applies only within the scope of your company and that the reports won't be kept long. Sua abordagem deverá ser diferente de, digamos, criando um serviço que disponibiliza conteúdos de vídeo para dezenas de milhões de clientes.Your approach will be different from that of, say, building a service that delivers video content to tens of millions of customers.

Às vezes, a obter algo para trás como uma prova de conceito é o fator de condução.Sometimes, getting something out the door as a proof of concept is the driving factor. Sabe que o aplicativo pode ser projetado novamente mais tarde.You know the application can be redesigned later. Há muito sentido em excesso de engenharia algo que nunca é usado.There's little point in over-engineering something that never gets used. Por outro lado, quando criar empresas para a nuvem, a expectativa é de crescimento e utilização.On the other hand, when companies build for the cloud, the expectation is growth and usage. Crescimento e dimensionamento são imprevisíveis.Growth and scale are unpredictable. Queremos protótipo rapidamente também sabendo que estamos num caminho que possa lidar com sucesso no futuro.We want to prototype quickly while also knowing that we're on a path that can handle future success. Essa é a abordagem de "lean startup": compilar, medir, aprender e iterar.This is the lean startup approach: build, measure, learn, and iterate.

Durante a era do cliente/servidor, tendemos de se concentrar na criação de aplicativos em camadas através de tecnologias específicas em cada escalão.During the client/server era, we tended to focus on building tiered applications by using specific technologies in each tier. O termo monolítica aplicação surgiu para descrever essas abordagens.The term monolithic application has emerged to describe these approaches. As interfaces tendiam a ser entre as camadas e um design mais rigidamente acoplado foi utilizado entre os componentes em cada camada.The interfaces tended to be between the tiers, and a more tightly coupled design was used between components within each tier. Os desenvolvedores projetado e decomposto classes que foram compilados em bibliotecas e vinculados juntos em alguns arquivos executáveis e DLLs.Developers designed and factored classes that were compiled into libraries and linked together into a few executable files and DLLs.

Há benefícios para uma abordagem monolítica de design.There are benefits to a monolithic design approach. Aplicativos monolíticos, muitas vezes, são mais simples de design e chamadas entre os componentes são mais rápidas do que uma vez que essas chamadas são, muitas vezes, ao longo do (IPC interprocess communication).Monolithic applications are often simpler to design, and calls between components are faster because these calls are often over interprocess communication (IPC). Além disso, todas as pessoas testa um único produto, o que tende a ser uma utilização mais eficiente de recursos humanos.Also, everyone tests a single product, which tends to be a more efficient use of human resources. A desvantagem é que há uma grande União entre camadas em camadas, e não é possível dimensionar a componentes individuais.The downside is that there's a tight coupling between tiered layers, and you can't scale individual components. Se precisar de fazer correções ou atualizações, terá de aguardar por outras pessoas ao fim dos testes.If you need to do fixes or upgrades, you have to wait for others to finish their testing. É mais difícil de ser ágil.It's harder to be agile.

Essas desvantagens de endereços de Microsserviços e muito mais alinham com os requisitos de negócios anterior.Microservices address these downsides and more closely align with the preceding business requirements. Mas também têm vantagens e passivos.But they also have both benefits and liabilities. As vantagens dos microsserviços são a que cada um deles encapsula, normalmente, a funcionalidade de negócios mais simples, que pode aumentar ou reduzir verticalmente, testar, implementar e gerir de forma independente.The benefits of microservices are that each one typically encapsulates simpler business functionality, which you can scale up or down, test, deploy, and manage independently. Uma vantagem importante de uma abordagem de microsserviços é que as equipes são mais ligadas a cenários de negócios que pela tecnologia.One important benefit of a microservices approach is that teams are driven more by business scenarios than by technology. Equipas mais pequenas desenvolver um microsserviço com base num cenário de cliente e utilizam qualquer tecnologia que pretende utilizar.Smaller teams develop a microservice based on a customer scenario and use any technologies that they want to use.

Em outras palavras, a organização não precisa de padronizar tech para manter as aplicações de microsserviços.In other words, the organization doesn’t need to standardize tech to maintain microservice applications. Equipas individuais que os próprios serviços podem fazer o que lhes faça sentido com base nos conhecimentos de equipe ou o que é mais adequado para resolver o problema.Individual teams that own services can do what makes sense for them based on team expertise or what’s most appropriate to solve the problem. Na prática, um conjunto de recomendado tecnologias, como um arquivo de NoSQL específico ou estrutura de aplicativo da web, é preferível.In practice, a set of recommended technologies, like a particular NoSQL store or web application framework, is preferable.

A desvantagem dos microsserviços é que tem de gerir entidades mais separadas e lidar com implementações mais complexas e de controlo de versões.The downside of microservices is that you have to manage more separate entities and deal with more complex deployments and versioning. Tráfego de rede entre os microsserviços aumenta, tal como as latências de rede correspondente.Network traffic between the microservices increases, as do the corresponding network latencies. Muitos serviços chatty e granulares podem causar um pesadelo de desempenho.Lots of chatty, granular services can cause a performance nightmare. Sem ferramentas que ajudam a visualizar estas dependências, é difícil ver todo o sistema.Without tools to help you view these dependencies, it's hard to see the whole system.

Padrões de tornam a abordagem de microsserviços profissional especificando como se comunicar e tolerating apenas as informações necessárias de um serviço, em vez de rígidas contratos.Standards make the microservices approach work by specifying how to communicate and tolerating only the things you need from a service, rather than rigid contracts. É importante definir esses contratos com antecedência no design, porque os serviços de atualização independentemente uns dos outros.It's important to define these contracts up front in the design because services update independently of each other. Descrição de outro inventada para desenvolver com uma abordagem de microsserviços é "refinado service-oriented architecture (SOA)."Another description coined for designing with a microservices approach is “fine-grained service-oriented architecture (SOA).”

Em sua forma mais simples, a abordagem de design de microsserviços trata de uma federação desacoplada de serviços, com alterações independentes para cada um e acordado padrões de comunicação.At its simplest, the microservices design approach is about a decoupled federation of services, with independent changes to each and agreed-upon standards for communication.

Que são produzidas de mais aplicações na cloud, as pessoas tenham detetados que este decomposição do aplicativo geral para os serviços independentes, voltada para o cenário é uma abordagem melhor a longo prazo.As more cloud applications are produced, people have discovered that this decomposition of the overall application into independent, scenario-focused services is a better long-term approach.

Comparação entre as abordagens de desenvolvimento de aplicativosComparison between application development approaches

Desenvolvimento de aplicativos de plataforma do Service Fabric

  1. Uma aplicação monolítica contém funcionalidades específicas do domínio e normalmente é dividida em camadas funcionais, como web, a empresa e dados.A monolithic application contains domain-specific functionality and is normally divided into functional layers like web, business, and data.

  2. Dimensionar uma aplicação monolítica através da clonagem-lo em várias máquinas virtuais/servidores/contentores.You scale a monolithic application by cloning it on multiple servers/virtual machines/containers.

  3. Uma aplicação de microsserviços separa a funcionalidade em serviços separados do menores.A microservice application separates functionality into separate smaller services.

  4. As escalas de abordagem de microsserviços ao implementar cada serviço de forma independente, criação de instâncias desses serviços em máquinas virtuais/servidores/contentores.The microservices approach scales out by deploying each service independently, creating instances of these services across servers/virtual machines/containers.

Conceber com um microsserviços abordagem não é adequada para todos os projetos, mas alinhar mais de perto com os objetivos de negócio descritos anteriormente.Designing with a microservices approach isn't appropriate for all projects, but it does align more closely with the business objectives described earlier. Começando com uma abordagem monolítica, poderá fazer sentido se sabe, que terá a oportunidade de Refazer o código mais tarde num design de microsserviços.Starting with a monolithic approach might make sense if you know you'll have the opportunity to rework the code later into a microservices design. Em geral, começar com uma aplicação monolítica e lentamente dividi-lo em fases, começando com as áreas funcionais que precisam ser mais escalonável ou ágil.More commonly, you begin with a monolithic application and slowly break it up in stages, starting with the functional areas that need to be more scalable or agile.

Quando utilizar uma abordagem de microsserviços, que é a compor a aplicação de vários serviços pequenos.When you use a microservices approach, you compose your application of many small services. Estes serviços são executados em contentores que são implementadas em clusters de máquinas.These services run in containers that are deployed across a cluster of machines. Equipas mais pequenas desenvolver um serviço que se concentra num cenário e testar a forma independente, versão, implementarem e dimensionar cada serviço, para que todo o aplicativo pode evoluir.Smaller teams develop a service that focuses on a scenario and independently test, version, deploy, and scale each service so the entire application can evolve.

O que é um microsserviço?What is a microservice?

Existem definições diferentes de microsserviços.There are different definitions of microservices. Mas a maioria dessas características dos microsserviços é amplamente aceitas:But most of these characteristics of microservices are widely accepted:

  • Encapsula um cenário de negócio ou do cliente.Encapsulate a customer or business scenario. Que problema estão resolvendo?What problem are you solving?
  • Desenvolvido por uma pequena equipa de engenharia.Developed by a small engineering team.
  • Escritas em qualquer linguagem de programação, através de qualquer arquitetura.Written in any programming language, using any framework.
  • Consistem em código, e, opcionalmente, estado, sendo que ambas são com versões independentes, implantados e dimensionada.Consist of code, and optionally state, both of which are independently versioned, deployed, and scaled.
  • Interagir com os outros microsserviços através de interfaces bem definidos e protocolos.Interact with other microservices over well-defined interfaces and protocols.
  • Têm nomes exclusivos (URLs) que são utilizados para resolver a respetiva localização.Have unique names (URLs) that are used to resolve their location.
  • Permanece consistente e disponíveis na presença de falhas.Remain consistent and available in the presence of failures.

Para concluir que:To sum that up:

Aplicações de Microsserviços são compostas de pequenos com versões independentes serviços e dimensionáveis com foco no cliente que se comunicam entre si através de protocolos padrão com interfaces bem definidos.Microservice applications are composed of small, independently versioned, and scalable customer-focused services that communicate with each other over standard protocols with well-defined interfaces.

Escritas em qualquer linguagem de programação, através de qualquer arquiteturaWritten in any programming language, using any framework

Como desenvolvedores, queremos ser livres para escolher uma linguagem ou estrutura, dependendo das nossas habilidades e as necessidades do serviço que estamos criando.As developers, we want to be free to choose a language or framework, depending on our skills and the needs of the service that we're creating. Para alguns serviços, poderá valorizar os benefícios de desempenho do C++ acima a qualquer outra coisa.For some services, you might value the performance benefits of C++ above anything else. Para outros, a facilidade de desenvolvimento gerenciado que a partir do C# ou Java pode ser mais importante.For others, the ease of managed development that you get from C# or Java might be more important. Em alguns casos, poderá ter de utilizar uma biblioteca de parceiros específicos, a tecnologia de armazenamento de dados ou o método para expor o serviço para clientes.In some cases, you might need to use a specific partner library, data storage technology, or method for exposing the service to clients.

Depois de escolher uma tecnologia, precisa considerar o operacionais ou de ciclo de vida de gestão e dimensionamento do serviço.After you choose a technology, you need to consider the operational or life-cycle management and scaling of the service.

Permite que o código e o estado ser com versões independentes, implementados e dimensionadosAllows code and state to be independently versioned, deployed, and scaled

Não importa como escreve seus microsserviços, o código e, opcionalmente, o estado, deve independentemente implementar, atualizar e dimensionar.No matter how you write your microservices, the code, and optionally the state, should independently deploy, upgrade, and scale. Esse problema é difícil porque trata-se à sua escolha de tecnologias.This problem is hard to solve because it comes down to your choice of technologies. Para compreensão de dimensionamento, como partição (ou fragmentar) o código e o estado é um desafio.For scaling, understanding how to partition (or shard) both the code and the state is challenging. Quando o código e o estado de usam tecnologias diferentes, o que é comum hoje em dia, os scripts de implantação para os microsserviços tem de ser capaz de dimensionar ambos.When the code and state use different technologies, which is common today, the deployment scripts for your microservice need to be able to scale them both. Essa separação é também sobre agilidade e flexibilidade, que pode atualizar algumas dos microsserviços sem ter de atualizar todos eles ao mesmo tempo.This separation is also about agility and flexibility, so you can upgrade some of the microservices without having to upgrade all of them at once.

Vamos voltar ao nosso comparação das abordagens monolíticas e microsserviços por um momento.Let's return to our comparison of the monolithic and microservices approaches for a moment. Este diagrama mostra as diferenças de abordagens para armazenar o estado:This diagram shows the differences in the approaches to storing state:

Armazenamento de estado para as duas abordagensState storage for the two approaches

Armazenamento de estado de plataforma do Service Fabric

Uma abordagem monolítica, à esquerda, tem uma base de dados e camadas de tecnologias específicas.The monolithic approach, on the left, has a single database and tiers of specific technologies.

A abordagem de microsserviços, à direita, tem um gráfico de microsserviços interconectados em que estado normalmente tem um âmbito para os microsserviços e várias tecnologias são utilizadas.The microservices approach, on the right, has a graph of interconnected microservices where state is typically scoped to the microservice and various technologies are used.

Numa abordagem monolítica, o aplicativo usa normalmente uma base de dados.In a monolithic approach, the application typically uses a single database. A vantagem de utilizar uma base de dados é que está a ser um único local, o que torna mais fácil de implementar.The advantage to using one database is that it's in a single location, which makes it easy to deploy. Cada componente pode ter uma única tabela para armazenar seu estado.Each component can have a single table to store its state. As equipes precisam estritamente separar o estado, que é um desafio.Teams need to strictly separate state, which is a challenge. Inevitavelmente, alguém será tentado a adicionar uma coluna para uma tabela de cliente existente, realize uma associação entre as tabelas e criar dependências na camada de armazenamento.Inevitably, someone will be tempted to add a column to an existing customer table, do a join between tables, and create dependencies at the storage layer. Depois de tal acontecer, não é possível dimensionar componentes individuais.After this happens, you can't scale individual components.

Na abordagem de microsserviços, cada serviço gerencia e armazena seu próprio Estado.In the microservices approach, each service manages and stores its own state. Cada serviço é responsável por dimensionar o código e o estado em conjunto para satisfazer as necessidades do serviço.Each service is responsible for scaling both code and state together to meet the demands of the service. Uma desvantagem é que quando precisa para criar vistas ou consultas, de dados da sua aplicação, terá de consultar em vários armazenamentos de estado.A downside is that when you need to create views, or queries, of your application’s data, you need to query across multiple state stores. Esse problema é normalmente resolvido por um microsserviço separado que cria uma vista numa coleção de microsserviços.This problem is typically solved by a separate microservice that builds a view across a collection of microservices. Se tiver de executar várias consultas improvisadas nos dados, deve considerar a escrita de dados de cada microsserviço para um serviço de armazenamento de dados para análise offline.If you need to run multiple impromptu queries on the data, you should consider writing each microservice’s data to a data warehousing service for offline analytics.

Microsserviços têm versões.Microservices are versioned. É possível para as diferentes versões de um microsserviço para ser executado lado a lado.It's possible for different versions of a microservice to run side by side. Uma versão mais recente de um microsserviço pode falhar durante uma atualização e tem de ser revertido para uma versão anterior.A newer version of a microservice could fail during an upgrade and need to be rolled back to an earlier version. Controle de versão também é útil para A / B testes, em que diferentes usuários experiência versões diferentes do serviço.Versioning is also helpful for A/B testing, where different users experience different versions of the service. Por exemplo, é comum para atualizar um microsserviço de um conjunto específico de clientes para testar a nova funcionalidade antes de distribuí-lo mais amplamente.For example, it's common to upgrade a microservice for a specific set of customers to test new functionality before rolling it out more widely.

Interage com outros microsserviços através de interfaces bem definidos e protocolosInteracts with other microservices over well-defined interfaces and protocols

Nos últimos 10 anos, informações abrangentes foi publicadas que descreve padrões de comunicação em arquiteturas orientadas a serviços.Over the past 10 years, extensive information has been published describing communication patterns in service-oriented architectures. Em geral, comunicação de serviço utiliza uma abordagem REST com protocolos HTTP e TCP e XML ou JSON como formato de serialização.Generally, service communication uses a REST approach with HTTP and TCP protocols and XML or JSON as the serialization format. Da perspectiva de interface, trata-se usar uma abordagem de design da web.From an interface perspective, it's about taking a web design approach. Mas nada deve parar de utilizar protocolos binários ou de seus formatos de dados.But nothing should stop you from using binary protocols or your own data formats. Apenas Lembre-se de que as pessoas terão vez mais difícil usando os microsserviços se estes protocolos e formatos não estão abertos.Just be aware that people will have a harder time using your microservices if these protocols and formats aren't openly available.

Tem um nome exclusivo utilizado para resolver a localização (URL)Has a unique name (URL) used to resolve its location

Os microsserviços tem de ser endereçável onde quer que está a ser executado.Your microservice needs to be addressable wherever it's running. Se estiver pensando em máquinas e qual delas está em execução um microsserviço específico, pode correr ruim rapidamente.If you're thinking about machines and which one is running a particular microservice, things can go bad quickly.

Da mesma forma que o DNS resolve um URL específico a um determinado computador, os microsserviços tem um nome exclusivo para que a sua localização atual seja detectável.In the same way that DNS resolves a particular URL to a particular machine, your microservice needs a unique name so that its current location is discoverable. Microsserviços tem nomes endereçáveis que são independentes da infraestrutura que sejam executadas em.Microservices need addressable names that are independent of the infrastructure they're running on. Isso implica que existe uma interação entre a forma como o seu serviço é implementado e como é detetado, porque deve haver um registo de serviço.This implies that there's an interaction between how your service is deployed and how it's discovered, because there needs to be a service registry. Quando ocorre uma falha numa máquina, tem de informar a onde o serviço foi movido para o serviço de registo.When a machine fails, the registry service needs to tell you where the service was moved to.

Permanece consistente e disponível na presença de falhasRemains consistent and available in the presence of failures

Lidar com falhas inesperadas é um dos problemas mais difíceis de resolver, especialmente num sistema distribuído.Dealing with unexpected failures is one of the hardest problems to solve, especially in a distributed system. Grande parte do código que escrevemos como desenvolvedores é para a manipulação de exceções.Much of the code that we write as developers is for handling exceptions. Durante o teste, podemos também gastar mais tempo na manipulação de exceção.During testing, we also spend the most time on exception handling. O processo é mais envolvido que escrever código para lidar com falhas.The process is more involved than writing code to handle failures. O que acontece quando a máquina em que os microsserviços está em execução falha?What happens when the machine on which the microservice is running fails? Tem de detetar a falha, o que é um problema difícil por conta própria.You need to detect the failure, which is a hard problem on its own. Mas também tem de reiniciar seus microsserviços.But you also need to restart your microservice.

Para disponibilidade, um microsserviço deve ser resiliente a falhas e conseguir reiniciar em outra máquina.For availability, a microservice needs to be resilient to failures and able to restart on another machine. Além destes requisitos de resiliência, dados não devem ser perdidos e dados têm de permanecer consistente.In addition to these resiliency requirements, data shouldn't be lost, and data needs to remain consistent.

A resiliência é difícil de materializar quando as falhas ocorrem durante uma atualização da aplicação.Resiliency is hard to achieve when failures happen during an application upgrade. Os microsserviços, trabalhar com o sistema de implementação, não precisam de recuperar.The microservice, working with the deployment system, doesn't need to recover. Ele precisa determinar se ele pode continuar a seguir em frente para a versão mais recente ou reverter para uma versão anterior para manter um estado consistente.It needs to determine whether it can continue to move forward to the newer version or roll back to a previous version to maintain a consistent state. É necessário considerar algumas questões, como se os computadores suficientes estão disponíveis para que seguir em frente e como recuperar versões anteriores dos microsserviços.You need to consider a few questions, like whether enough machines are available to keep moving forward and how to recover previous versions of the microservice. Para tomar essas decisões, terá de microsserviços para emitir as informações de estado de funcionamento.To make these decisions, you need the microservice to emit health information.

Estado de funcionamento de relatórios e diagnósticosReports health and diagnostics

Pode parecer óbvio e são muitas vezes ignorada, mas um microsserviço tem de comunicar o estado de funcionamento e diagnóstico.It might seem obvious, and it's often overlooked, but a microservice needs to report its health and diagnostics. Caso contrário, terá um pouco insight para seu estado de funcionamento de uma perspectiva de operações.Otherwise, you have little insight into its health from an operations perspective. Correlacionar eventos de diagnóstico num conjunto de serviços independentes e lidar com os desvios de relógio de máquina dar sentido a ordem dos eventos, é um desafio.Correlating diagnostic events across a set of independent services, and dealing with machine clock skews to make sense of the event order, is challenging. Da mesma forma que interage com um microsserviço sobre acordado protocolos e formatos de dados, terá de padronizar como iniciar o estado de funcionamento e eventos de diagnóstico que em última análise, acabará num arquivo de eventos para consultar e visualizar.In the same way that you interact with a microservice over agreed-upon protocols and data formats, you need to standardize how to log health and diagnostic events that will ultimately end up in an event store for querying and viewing. Com uma abordagem de microsserviços, equipas diferentes precisam chegarem a acordo num formato de registo único.With a microservices approach, different teams need to agree on a single logging format. Deve haver uma abordagem consistente para visualização de eventos de diagnóstico do aplicativo como um todo.There needs to be a consistent approach to viewing diagnostic events in the application as a whole.

Estado de funcionamento é diferente do diagnóstico.Health is different from diagnostics. Estado de funcionamento é sobre os microsserviços reporting seu estado atual para executar as ações apropriadas.Health is about the microservice reporting its current state to take appropriate actions. Um bom exemplo está trabalhando com mecanismos de atualização e implantação para manter a disponibilidade.A good example is working with upgrade and deployment mechanisms to maintain availability. Embora um serviço poderá ser danificado devido a uma falha de processo ou reinicialização do computador, o serviço poderá ainda estar operacional.Though a service might be currently unhealthy because of a process crash or machine reboot, the service might still be operational. A última coisa que precisa é piorar a situação ao iniciar uma atualização.The last thing you need is to make the situation worse by starting an upgrade. A melhor abordagem é investigar pela primeira vez ou aguarde algum tempo para os microsserviços recuperar.The best approach is to investigate first or allow time for the microservice to recover. Eventos de estado de funcionamento de um microsserviço ajudam-na tomar decisões informadas e, em vigor, ajudar a criar serviços de recuperação.Health events from a microservice help us make informed decisions and, in effect, help create self-healing services.

Documentação de orientação para estruturar microsserviços no AzureGuidance for designing microservices on Azure

Visite o Centro de arquitetura do Azure para obter orientações sobre estruturação e criação de microsserviços no Azure.Visit the Azure architecture center for guidance on designing and building microservices on Azure.

Recursos de infraestrutura do serviço como uma plataforma de microsserviçosService Fabric as a microservices platform

O Azure Service Fabric surgiu quando Microsoft transitou do fornecimento de produtos emoldurados, que eram normalmente monolíticos, ao fornecimento de serviços.Azure Service Fabric emerged when Microsoft transitioned from delivering boxed products, which were typically monolithic, to delivering services. A experiência de construção e serviços grandes, como o Azure SQL Database e o Azure Cosmos DB, operacionais em forma de Service Fabric.The experience of building and operating large services, like Azure SQL Database and Azure Cosmos DB, shaped Service Fabric. A plataforma se desenvolveram ao longo do tempo à medida que ADOTARAM mais serviços.The platform evolved over time as more services adopted it. Service Fabric tinha a execução não apenas no Azure, mas também nas implantações do Windows Server autónomo.Service Fabric had to run not only in Azure but also in standalone Windows Server deployments.

O objetivo do Service Fabric é para resolver os problemas difíceis de criar e executar um serviço e utilizar recursos de infraestrutura de forma eficiente, para que as equipes podem resolver problemas de negócio com uma abordagem de microsserviços.The aim of Service Fabric is to solve the hard problems of building and running a service and to use infrastructure resources efficiently, so teams can solve business problems by using a microservices approach.

Service Fabric ajuda a criar aplicativos que usam uma abordagem de microsserviços, fornecendo:Service Fabric helps you build applications that use a microservices approach by providing:

  • Uma plataforma que fornece serviços do sistema para implementar, atualizar, detetar e reinicie os serviços com falha, descobrir serviços, encaminhar mensagens, gerir o estado e monitorizar o estado de funcionamento.A platform that provides system services to deploy, upgrade, detect, and restart failed services, discover services, route messages, manage state, and monitor health.
  • A capacidade de implementar aplicações de qualquer execução nos contentores ou processos.The ability to deploy applications either running in containers or as processes. O Service Fabric é um contentor e um orquestrador de processo.Service Fabric is a container and process orchestrator.
  • APIs de programação produtivas para o ajudar a criar aplicações como microsserviços: ASP.NET Core, dos Reliable Actors e serviços fiáveis.Productive programming APIs to help you build applications as microservices: ASP.NET Core, Reliable Actors, and Reliable Services. Por exemplo, pode obter informações de estado de funcionamento e diagnóstico, ou pode tirar partido da elevada disponibilidade incorporada.For example, you can get health and diagnostics information, or you can take advantage of built-in high availability.

O Service Fabric é agnóstico sobre como criar o seu serviço, e pode usar qualquer tecnologia. Mas ela fornece APIs de programação internas que facilitam a criação de microsserviços.Service Fabric is agnostic about how you build your service, and you can use any technology. But it does provide built-in programming APIs that make it easier to build microservices.

Migrando aplicativos existentes para o Service FabricMigrating existing applications to Service Fabric

Service Fabric permite-lhe reutilizar o código existente e modernizá-lo com os microsserviços de novo.Service Fabric allows you to reuse existing code and modernize it with new microservices. Existem cinco fases para a modernização de aplicações, e pode iniciar e parar em qualquer fase.There are five stages to application modernization, and you can start and stop at any stage. As fases são:The stages are:

  1. Começar com uma aplicação monolítica tradicional.Start with a traditional monolithic application.
  2. Migre.Migrate. Utilize contentores ou executáveis de convidado para alojar o código existente no Service Fabric.Use containers or guest executables to host existing code in Service Fabric.
  3. Modernize.Modernize. Adicione novos microsserviços em conjunto com o código em contentores existente.Add new microservices alongside existing containerized code.
  4. Inove.Innovate. Quebra a aplicação monolítica em microsserviços com base na necessidade.Break the monolithic application into microservices based on need.
  5. Transforme os aplicativos em microsserviços.Transform applications into microservices. Transformar aplicativos monolíticos existentes ou criar novas aplicações de ambiente intacto.Transform existing monolithic applications or build new greenfield applications.

Migração para os microsserviços

Lembre-se de que pode iniciar e parar qualquer um desses estágios.Remember, you can start and stop at any of these stages. Não é necessário para o curso para o próximo estágio.You don't have to progress to the next stage.

Vejamos exemplos para cada uma destas fases.Let's look at examples for each of these stages.

MigrarMigrate
Por dois motivos, muitas empresas estão a migrar aplicativos monolíticos existentes em contentores:For two reasons, many companies are migrating existing monolithic applications into containers:

  • Redução de custos, devido a consolidação e a remoção de hardware existente ou devido a execução de aplicações em densidade superior.Cost reduction, either due to consolidation and removal of existing hardware or due to running applications at higher density.
  • Um contrato de implementação consistente entre o desenvolvimento e operações.A consistent deployment contract between development and operations.

Reduções de custos são simples.Cost reductions are straightforward. Na Microsoft, muitos aplicativos existentes estão a ser em contentor, que leva a milhões de dólares em economia.At Microsoft, many existing applications are being containerized, leading to millions of dollars in savings. Implantação consistente é mais difícil avaliar mas igualmente importante.Consistent deployment is harder to evaluate but equally important. Isso significa que os desenvolvedores podem escolher as tecnologias que se adequam às-los, mas operações aceitará apenas um único método para implementar e gerir as aplicações.It means that developers can choose the technologies that suit them, but operations will accept only a single method for deploying and managing the applications. Ele atenua operações da necessidade de lidar com a complexidade do suporte a diferentes tecnologias sem forçar aos desenvolvedores escolher apenas determinados que são.It alleviates operations from having to deal with the complexity of supporting different technologies without forcing developers to choose only certain ones. Essencialmente, cada aplicativo estiver em contentor nas imagens de implantação autônomo.Essentially, every application is containerized into self-contained deployment images.

Muitas organizações parar por aqui.Many organizations stop here. Que já têm os benefícios de contentores, e o Service Fabric fornece a experiência de gestão completa, incluindo a implementação, atualizações, controle de versão, reversões e monitorização de estado de funcionamento.They already have the benefits of containers, and Service Fabric provides the complete management experience, including deployment, upgrades, versioning, rollbacks, and health monitoring.

ModernizeModernize
Modernização é a adição de novos serviços em conjunto com o código em contentores existente.Modernization is the addition of new services alongside existing containerized code. Se vai escrever código novo, é melhor dê passos pequenos o caminho de microsserviços.If you're going to write new code, it's best to take small steps down the microservices path. Isso pode significar a adição de um novo ponto final de REST API ou a nova lógica de negócios.This could mean adding a new REST API endpoint or new business logic. Dessa forma, inicia o processo de criar novos microsserviços e prática de desenvolvimento e implantá-los.In this way, you start the process of building new microservices and practice developing and deploying them.

InoveInnovate
Uma abordagem de microsserviços permite a necessidades empresariais em evolução.A microservices approach accommodates changing business needs. Nesta fase, precisa decidir se pretende iniciar dividir o aplicativo monolítico em serviços ou a inovar.At this stage, you need to decide whether to start splitting the monolithic application into services, or innovating. Aqui um exemplo clássico é quando uma base de dados que está a utilizar como uma fila de fluxo de trabalho se tornar um afunilamento de processamento.A classic example here is when a database that you're using as a workflow queue becomes a processing bottleneck. Como o número de fluxo de trabalho solicitações aumenta, o trabalho tem de ser distribuídos para dimensionamento.As the number of workflow requests increases, the work needs to be distributed for scale. Tire esse componente específico do aplicativo que não é escalonável, ou que precisam de ser atualizada com mais frequência e dividi-lo como um microsserviço e inovar.Take that particular piece of the application that's not scaling, or that needs to be updated more frequently, and split it out as a microservice and innovate.

Transformar os aplicativos em microsserviçosTransform applications into microservices
Nesta fase, a aplicação é totalmente composto (ou dividir em) microsserviços.At this stage, your application is fully composed of (or split into) microservices. Para aceder este ponto, fez a jornada de microsserviços.To reach this point, you've made the microservices journey. Pode começar aqui, mas fazer isso sem um microsserviços plataforma para o ajudar a requer um investimento significativo.You can start here, but to do so without a microservices platform to help you requires a significant investment.

São os microsserviços diretamente para a minha aplicação?Are microservices right for my application?

Talvez.Maybe. Na Microsoft, à medida que mais equipas começaram a criar para a cloud por razões de negócio, muitos deles perceberam as vantagens de usar uma abordagem de microsserviços semelhantes.At Microsoft, as more teams began to build for the cloud for business reasons, many of them realized the benefits of taking a microservice-like approach. Bing, por exemplo, utiliza o microsserviços há anos.Bing, for example, has been using microservices for years. Para outras equipes, a abordagem de microsserviços era nova.For other teams, the microservices approach was new. As equipes que lá localizadas eram problemas difíceis de resolver fora suas áreas de núcleo de força.Teams found that there were hard problems to solve outside of their core areas of strength. Este é o motivo pelo qual o Service Fabric obtidas força como a tecnologia para a criação de serviços.This is why Service Fabric gained traction as the technology for building services.

O objetivo do Service Fabric é reduzir as complexidades de criar aplicações de microsserviços, para que não precisa passar por tantos reformulações dispendiosas.The objective of Service Fabric is to reduce the complexities of building microservice applications so that you don't have to go through as many costly redesigns. Comece por algo pequeno, dimensione quando necessário, preterir serviços, adicionar novos e evoluem com a utilização do cliente.Start small, scale when needed, deprecate services, add new ones, and evolve with customer usage. Também Sabemos que existem muitos outros problemas de ser resolvidos para que os microsserviços mais acessível para a maioria dos desenvolvedores.We also know that there are many other problems yet to be solved to make microservices more approachable for most developers. Contentores e o modelo de programação de ator são exemplos de pequenas etapas nessa direção.Containers and the actor programming model are examples of small steps in that direction. Temos a certeza de que as inovações mais surgirão para facilitar a abordagem de microsserviços.We're sure more innovations will emerge to make a microservices approach easier.

Passos SeguintesNext steps