Utilizar o Service Fabric para decompor aplicações monolíticasUsing Service Fabric to decompose monolithic applications

Neste cenário de exemplo, vamos percorrer usando uma abordagem Service Fabric como uma plataforma de decomposição de uma aplicação monolítica complicada.In this example scenario, we walk through an approach using Service Fabric as a platform for decomposing an unwieldy monolithic application. Aqui devemos considerar uma abordagem iterativa para decompor um certo web site num aplicativo composto por múltiplos microsserviços gerenciáveis.Here we consider an iterative approach to decomposing an IIS/ASP.NET web site into an application composed of multiple, manageable microservices.

Mover de uma arquitetura monolítica para uma arquitetura de microsserviços fornece as seguintes vantagens:Moving from a monolithic architecture to a microservice architecture provides the following benefits:

  • Pode alterar de código numa unidade pequena, compreensível e implementar apenas essa unidade.You can change one small, understandable unit of code and deploy only that unit.
  • Cada unidade de código requer apenas alguns minutos ou menos para implementar.Each code unit requires just a few minutes or less to deploy.
  • Se houver um erro nessa unidade pequena, apenas essa unidade deixa de funcionar, não toda a aplicação.If there is an error in that small unit, only that unit stops working, not the whole application.
  • Pequenas unidades de código podem ser distribuídas em separado e facilmente entre várias equipes de desenvolvimento.Small units of code can be distributed easily and discretely among multiple development teams.
  • Novos desenvolvedores podem rápida e facilmente compreender a funcionalidade discreta de cada unidade.New developers can quickly and easily grasp the discrete functionality of each unit.

Um aplicativo grande do IIS num farm de servidores é utilizado neste exemplo, mas os conceitos de decomposição iterativa e de alojamento podem ser utilizados para qualquer tipo de aplicações grandes.A large IIS application on a server farm is used in this example, but the concepts of iterative decomposition and hosting can be used for any type of large application. Embora esta solução utiliza o Windows, o Service Fabric também pode executar no Linux.While this solution uses Windows, Service Fabric can also run on Linux. Ele pode ser executado no local, no Azure ou em nós VM no fornecedor de cloud à sua escolha.It can be run on-premises, in Azure, or on VM nodes in the cloud provider of your choice.

Casos de utilização relevantesRelevant use cases

Este cenário é relevante para organizações com grandes aplicativos monolíticos Web que estão a ter:This scenario is relevant to organizations with large monolithic Web applications that are experiencing:

  • Erros no pequenas alterações de código que interromper todo o Web site.Errors in small code changes that break the entire website.
  • Versões de vários dias devido à necessidade de liberar a demorar atualizar todo o Web site.Releases taking multiple days due to the need to release update the entire website.
  • Ramp-up longo vezes quando integração novos desenvolvedores ou equipes devido ao código complexo base, que requerem uma única pessoa saber mais do que é viável.Long ramp-up times when onboarding new developers or teams due to the complex code base, requiring a single individual to know more than is feasible.

ArquiteturaArchitecture

Utilizar o Service Fabric como a plataforma de hospedagem, podemos converter um grande site do IIS numa coleção de microsserviços, conforme mostrado abaixo:Using Service Fabric as the hosting platform, we can convert a large IIS web site into a collection of microservices as shown below:

Diagrama da arquitetura

Na imagem acima, podemos decompostos todas as partes de um aplicativo IIS grandes em:In the picture above, we decomposed all the parts of a large IIS application into:

  • Um serviço de encaminhamento ou de gateway que aceita pedidos recebidos do navegador, analisa-las para determinar qual serviço deve lidar com elas e reencaminha o pedido para esse serviço.A routing or gateway service that accepts incoming browser requests, parses them to determine what service should handle them, and forwards the request to that service.
  • Aplicações ASP.NET Core quatro que foram diretórios formalmente virtuais sob o único site do IIS em execução como aplicativos ASP.NET.Four ASP.NET Core applications that were formally virtual directories under the single IIS site running as ASP.NET applications. Os aplicativos foram divididos em seus próprios microsserviços independentes.The applications were separated into their own independent microservices. O efeito é que elas possam ser alterados, com a versão e atualizado separadamente.The effect is that they can be changed, versioned, and upgraded separately. Neste exemplo, podemos rewrote cada aplicativo usando o .net Core e o ASP.NET Core.In this example, we rewrote each application using .Net Core and ASP.NET Core. Eles foram escritos como Reliable Services para que possam aceder nativamente os recursos de plataforma do Service Fabric e os benefícios (Serviços de comunicação, relatórios de estado de funcionamento, notificações, etc.) que se completa.These were written as Reliable Services so they can natively access the full Service Fabric platform capabilities and benefits (communication services, health reports, notifications, etc.).
  • Um serviço do Windows chamado serviço de indexação, colocá-la num Windows contentor, para que já não faz alterações diretas ao registo do servidor subjacente, mas pode executar independente e ser implementado com todas as suas dependências como uma única unidade.A Windows service called Indexing Service, placed in a Windows container so that it no longer makes direct changes to registry of the underlying server, but can run self-contained and be deployed with all its dependencies as a single unit.
  • Um serviço de arquivo, que é simplesmente um executável que é executada segundo uma agenda e executa algumas tarefas para os sites.An Archive service, which is just an executable that runs according to a schedule and performs some tasks for the sites. Está alojado diretamente como um executável autónomo porque, Determinámos que ele faz o que preciso fazer sem modificação e não vale a pena o investimento para alterar.It is hosted directly as a stand-alone executable because we determined it does what it needs to do without modification and it is not worth the investment to change.

ConsideraçõesConsiderations

O primeiro desafio é começar a identificar mais pequenas partes do código que pode ser fatoradas da solução em microsserviços que a solução pode chamar.The first challenge is to begin to identify smaller bits of code that can be factored out from the monolith into microservices that the monolith can call. Iterativamente ao longo do tempo, a solução é dividida numa coleção destes microsserviços que os desenvolvedores podem facilmente compreender, alterar e implementar rapidamente em risco baixo.Iteratively over time, the monolith is broken up into a collection of these microservices that developers can easily understand, change, and quickly deploy at low risk.

Service Fabric foi escolhido por ser capaz de suportar a execução de todos os microsserviços são de suas várias formas.Service Fabric was chosen because it is capable of supporting running all the microservices in their various forms. Por exemplo pode ter uma mistura de executáveis autónomo, pequeno o web sites novos, novas APIs pequeno e serviços em contentores, etc. Service Fabric pode combinar todos esses tipos de serviço para um único cluster.For example you may have a mix of stand-alone executables, new small web sites, new small APIs, and containerized services, etc. Service Fabric can combine all these service types onto a single cluster.

Para aceder a esta aplicação final, decomposta, nós usamos uma abordagem iterativa.To get to this final, decomposed application, we used an iterative approach. Nós começamos com um grande site da web certo num farm de servidores.We started with a large IIS/ASP.NET web site on a server farm. Um único nó de farm de servidores é ilustrado abaixo.A single node of the server farm is pictured below. Contém o web site original com vários diretórios virtuais, as chamadas de site e um executável que faz alguma manutenção do arquivo de site periódica de serviço de um Windows adicionais.It contains the original web site with several virtual directories, an additional Windows Service the site calls, and an executable that does some periodic site archive maintenance.

Diagrama da arquitetura monolíticos

Na primeira iteração de desenvolvimento, o site do IIS e seus diretórios virtuais colocadas num contentor Windows.On the first development iteration, the IIS site and its virtual directories placed in a Windows Container. Isso permite que o site para permanecer operacional, mas não muito vinculado ao nó de servidor sistema operacional subjacente.Doing this allows the site to remain operational, but not tightly bound to the underlying server node OS. O contentor é executado e orquestrado pelo nó de recursos de infraestrutura do serviço subjacente, mas o nó não tem de ter qualquer Estado que o site está dependente de (entradas do Registro, arquivos, etc.).The container is run and orchestrated by the underlying Service Fabric node, but the node does not have to have any state that the site is dependent on (registry entries, files, etc.). Todos esses itens estão no contentor.All of those items are in the container. Também podemos ter colocado o serviço de indexação num contentor do Windows pelas mesmas razões.We have also placed the Indexing service in a Windows Container for the same reasons. Os contentores podem ser implementados, com a versão e dimensionados de forma independente.The containers can be deployed, versioned, and scaled independently. Por fim, podemos alojado o serviço de arquivo simples arquivo executável independente , uma vez que é um .exe independente sem qualquer requisito especial.Finally, we hosted the Archive Service a simple stand-alone executable file since it is a self-contained .exe with no special requirements.

A figura a seguir mostra como nosso site grande é agora parcialmente decomposto em unidades independentes e pronto para ser decompostos mais conforme o tempo permitir.The picture below shows how our large web site is now partially decomposed into independent units and ready to be decomposed more as time allows.

Decomposição parcial de apresentação do diagrama de arquitetura

O desenvolvimento ainda maior se concentra em separar o contentor de site predefinido Web grandes único ilustrado acima.Further development focuses on separating the single large Default Web site container pictured above. Cada uma das aplicações ASP.NET do diretório virtual é removida do contêiner um por vez e portada para ASP.NET Core dos reliable services.Each of the virtual directory ASP.NET apps is removed from the container one at a time and ported to ASP.NET Core reliable services.

Depois de cada um dos diretórios virtuais foi decomposta horizontalmente, o site padrão é escrito como um serviço fiável de ASP.NET Core, que aceita pedidos de navegador de entrada e encaminha-os para a aplicação de ASP.NET correta.Once each of the virtual directories has been factored out, the Default Web site is written as an ASP.NET Core reliable service, which accepts incoming browser requests and routes them to the correct ASP.NET application.

Disponibilidade, escalabilidade e segurançaAvailability, Scalability, and Security

O Service Fabric está capaz de suportar várias formas de microsserviços mantendo chamadas entre-los no mesmo cluster rápido e simples.Service Fabric is capable of supporting various forms of microservices while keeping calls between them on the same cluster fast and simple. O Service Fabric é uma tolerante a falhas, cluster de reparação automática que pode executar contentores, executáveis e até mesmo tem uma API nativa para a criação de microsserviços diretamente a ele (o ' Reliable Services' referido acima).Service Fabric is a fault tolerant, self-healing cluster that can run containers, executables, and even has a native API for writing microservices directly to it (the 'Reliable Services' referred to above). A plataforma facilita atualizações sem interrupção e de controlo de versões de cada microsserviço.The platform facilitates rolling upgrades and versioning of each microservice. Pode informar a plataforma para executar mais ou menos qualquer determinado microsserviços distribuídos em cluster do Service Fabric para dimensionamento in ou out apenas os microsserviços que precisa.You can tell the platform to run more or fewer of any given microservice distributed across the Service Fabric cluster in order to scale in or out only the microservices you need.

O Service Fabric é um cluster criado numa infra-estrutura de nós (físicas ou virtuais), que têm redes, armazenamento e um sistema operativo.Service Fabric is a cluster built on an infrastructure of virtual (or physical) nodes, which have networking, storage, and an operating system. Como tal, tem um conjunto de administrativos, manutenção e tarefas de monitoramento.As such, it has a set of administrative, maintenance, and monitoring tasks.

Também desejará considerar governação e de controlo do cluster.You'll also want to consider governance and control of the cluster. Tal como faria não pretende que as pessoas arbitrariamente implementar bases de dados ao seu servidor de base de dados de produção, não quereria as pessoas a implantação de aplicativos para o cluster do Service Fabric sem alguns supervisão.Just as you would not want people arbitrarily deploying databases to your production database server, neither would you want people deploying applications to the Service Fabric cluster without some oversight.

O Service Fabric é capaz de alojar muito diferentes cenários de aplicativos, demorar algum tempo para ver quais os que se aplicam ao seu cenário.Service Fabric is capable of hosting many different application scenarios, take some time to see which ones apply to your scenario.

PreçosPricing

Para um cluster do Service Fabric alojado no Azure, a maior parte do custo é o número e tamanho de nós do cluster.For a Service Fabric cluster hosted in Azure, the largest part of the cost is the number and size of the nodes in your cluster. Azure permite a criação rápida e simples de um cluster composto de tamanho de nó subjacente especificado, mas os custos de computação baseiam-se no tamanho de nó multiplicado pelo número de nós.Azure allows quick and simple creation of a cluster composed of the underlying node size you specify, but the compute charges are based on the node size multiplied by the number of nodes.

Outros componentes menos dispendiosos de custo são os custos de armazenamento para discos virtuais de cada nó e custos de saída de e/s de rede do Azure (por exemplo tráfego de rede do Azure para o navegador de um usuário).Other less costly components of cost are the storage charges for each node's virtual disks and network IO egress charges from Azure (for example network traffic out of Azure to a user's browser).

Para obter uma idéia de custo, criamos um exemplo de uso de alguns valores predefinidos para o tamanho do cluster, rede e armazenamento: Consulte a Calculadora de preços.To get an idea of cost, we have created an example using some default values for cluster size, networking, and storage: Take a look at the pricing calculator. Pode atualizar os valores da Calculadora padrão para relevantes à sua situação.Feel free to update the values in this default calculator to those relevant to your situation.

Próximos PassosNext Steps

Demorar algum tempo para se familiarizar com a plataforma através de documentação e rever muitos diferentes cenários de aplicativos para o Service Fabric.Take some time to familiarize yourself with the platform by going through the documentation and reviewing the many different application scenarios for Service Fabric. A documentação informará que consiste em que um cluster, o que ele pode ser executado em, arquitetura de software e manutenção para o mesmo.The documentation will tell you what a cluster consists of, what it can run on, software architecture, and maintenance for it.

Para ver uma demonstração do Service Fabric para uma aplicação .NET existente, implementar o Service Fabric guia de introdução.To see a demonstration of Service Fabric for an existing .NET application, deploy the Service Fabric quickstart.

Do ponto de vista da sua aplicação atual, começam a pensar sobre suas funções diferentes.From the standpoint of your current application, begin to think about its different functions. Escolha um deles e considerar como pode separar apenas essa função do todo.Choose one of them and think through how you can separate only that function from the whole. Tire uma parte discreta, compreensível, ao mesmo tempo.Take it one discrete, understandable, piece at a time.