Microsoft Azure Service Fabric

Jones Roberto Nuzzi
6 min readDec 1, 2019

--

O Azure Service Fabric é uma plataforma de computação distribuída que facilita a criação, implantação e operação de aplicativos de microsserviço de missão crítica sempre ativos (em contêiner e sem contêiner). Os desenvolvedores se concentram na construção de microsserviços, e a plataforma service fabric resolve problemas difíceis, como gerenciamento do ciclo de vida, orquestração, disponibilidade e escalabilidade dos aplicativos.

O Azure Service Fabric é de código aberto e é executado no Windows e Linux, e você pode usá-lo “On premisses” ou na nuvem — é uma ótima solução híbrida que pode oferecer suporte a aplicativos “nativos da nuvem” exigentes.

Aplicativos que usam Azure Service Fabric

Banco de Dados SQL do Azure, Azure DocumentDB, IoT do Azure, Cortana, Power BI, Microsoft Intune, Hubs de Eventos e Skype for Business são alguns dos produtos da Microsoft que utilizam o Service Fabric.

Principais Características

  • O Azure Service Fabric Mesh é um serviço totalmente gerenciado que permite criar, implantar e gerenciar aplicativos que consistem em serviços multi-linguagem em execução em contêineres usando uma abordagem “Serverless”.
  • O Service Fabric Mesh fornece roteamento inteligente de mensagens por meio de recursos de rede definida por software (SDN), criados usando o Envoy Proxy, que permitem a descoberta e o roteamento de serviços entre microsserviços.
  • O Azure Service Fabric tem três ofertas públicas: Service Fabric Azure Cluster, Service Fabric Standalone, e Azure Service Fabric Mesh service..
  • O Service Fabric Mesh concentra-se fortemente em ser uma plataforma de aplicativos, abstraindo a orquestração do desenvolvedor final e adicionando roteamento e armazenamento de mensagens inteligentes que você pode usar com seus aplicativos.
  • A plataforma de Service Fabric possui um armazenamento de estado persistente embutido, altamente disponível e com baixa latência na memória. Você pode usar este armazenamento por meio de estruturas de dados programáticas (Dicionário e Filas) ou como discos de volume anexados.

Conceitos básicos

Tipos de Serviços

Os tipos de serviços do Azure Service Fabric estão dividos em 3 grupos, são eles:

Reliable Service & Reliable Actor Services

  • Aproveite os próprios modelos de programação do Service Fabric
  • Suporte ao Networking Naming Service
  • Integre-se a atualizações de código, configuração e dados
  • Instâncias não são processo isolado para cada instância, mas são criadas como objetos (maior densidade no host).

Guest Executable Services

  • Executável arbitrário empacotado em um serviço do Service Fabric
  • Pode ser escrito em qualquer linguagem
  • O Service Fabric gerencia a orquestração e execução do executável
  • Possui integração limitada com as APIs do Service Fabric

Serviços de contêiner

  • Os contêineres podem ser Serviços Reliable ​​ou Guest.
  • Suporta contêineres Docker (Linux) e contêineres do Windows Server

Reliable Services

Os serviços confiáveis (reliable services), estão divididos em dois tipos:

Stateless Service

  • Normalmente usado para front-ends da API da Web ou como workers backgrounds que trabalham com filas externas.
  • Nenhum estado é mantido dentro do serviço, embora algum tipo de armazenamento externo de estado possa certamente ser usado (ex: redis).

Stateful Service

  • Usado quando o estado deve ser consistente e presente para o serviço funcionar

Aproveita as coleções confiáveis:

  • ReliableQueue, ReliableDictionary
  • O estado é mantido localmente, mas replicado para alta disponibilidade, com armazenamento em disco para maior durabilidade e transacional.

Particionando Serviços

Stateless Services

  • Em um ambiente stateless, escalabilidade e disponibilidade geralmente são obtidas adicionando instâncias.
  • Coloque uma instância do serviço em cada “node” do seu cluster.
  • Adicione novos “nodes” para expandir de forma horizontal.

Stateful Services

- Para serviços com estado:

  • Os serviços são distribuídos para maior escalabilidade
  • O estado do serviço é replicado para garantir mais disponibilidade

- Distribua réplicas primárias entre os nós no cluster e também coloque réplicas secundárias

- Adicione nós e reequilibre para expandir suas aplicações e garantir a entrega.

Reliable Actors

- Implementação do padrão virtual actor

  • Ideal quando o aplicativo envolve muitas (milhares) pequenas unidades isoladas de lógica e estado

- Construído sobre serviços confiáveis ​​com estado

- Os atores são instanciados por referência e coletados por inatividade

  • Gerenciamento de estado pode ser usado durante a referência para “restore” de um ator

- As ações de atores são baseadas em turnos (thread único) por instância.

  • Suporta timers e reminders
  • Também suporta eventos

Instalação

O SDK do Microsoft Azure Service Fabric está incluído na sessão “azure development” no instalador do Visual Studio 2017 e 2019.

Após instalar na solution o Service Fabric será necessário que seja instalado também seu SDK, onde é criado um ambiente local. mais detalhes nesse link

Criando novo projeto

  • Crie um novo projeto, selecionando o modelo “service fabric application”.
  • Escolha o modelo de tipo de serviço desejado

Estrutura da Solution

Projeto de Aplicação

  • Dentro do “sfproj” “ServiceFabricDemo” em “Services” é possível ver lista os projetos de serviço que compõem o Aplicativo
  • Inclui um “applicationmanifest” que descreve os serviços que compõem o aplicativo
  • Inclui “Publishprofiles” que contém os seus aplicativos e configurações de perfil.

Projeto de serviço

  • O projeto exemplo “DemoStatelessApi” Inclui um “Servicemanifest” que descreve as características do serviço
  • Inclui o código de serviço e configuração

Service Fabric Local Cluster

Após instalar o SDK conforme citado acima, ficará disponível o seu Cluster Local (em alguns casos é necessário dar start no cluster local), e o kit do local cluster contém:

  • Um ambiente local de depuração e teste
  • Pode provisionar um cluster de 1 ou 5 nós
  • Não é um emulador ou simulador é realmente um cluster.
  • Pode ser gerenciado pelo aplicativo de Bandeja do sistema Windows ou por scripts do PowerShell.
  • O Visual Studio fica pronto para funcionar com o seu Cluster Local.

O Service Fabric roda em x64 e depende do .Net Framework para ser executado, tenho feito aplicações Full Framework com template de .net core que deixa a aplicação pronta para ser portada para o docker.

Service Fabric Explorer

Após a instalação do SDK, na bandeja do windows(onde fica o relógio), conforme imagem abaixo. Clique com o botão direito do mouse sobre o ícone do service fabric:

Deverá aparecer o menu conforme imagem abaixo:

Selecionar Manage Local Cluster, e irá carregar o seu navegador padrão, conforme imagem a seguir:

A imagem a seguir mostra como ficam suas aplicações dentro do Service Fabric.

Os Nodes Service Fabric

“Nodes” em um cluster do Service Fabric são colocados em uma grade bidimensional de domínios de falha e domínios de atualização.Esse posicionamento garante que seus aplicativos permaneçam disponíveis na presença de falhas de hardware e atualizações de aplicativos. Você pode exibir o layout do cluster atual usando o mapa de clusters.

Bom pessoal vou ficando por aqui, na minha próxima postagem sobre Service Fabric vou estar falando em como migrar um serviço WCF para um ambiente escalável com Service Fabric. Abraço, e até a próxima.

Service Fabric no Github

--

--

Jones Roberto Nuzzi

Arquiteto de Sistemas na Riza Asset, Sempre focado em desenvolvimento de sistemas para o mercado financeiro, com mais de 15 anos de experiência!