Arquitetura de Informação

20 dez, 2021

O que é um service template e como utilizá-los

Publicidade

Quantas vezes você já se pegou criando algo que não é novo? Indo além, quando criando novos projetos e buscando a estrutura e configurações de um projeto já existente como base (o velho CTRL+C e CTRL+V). Pois é, você não é o único e justamente pensando nisso que vem a ideia de criar um template de serviço.

O nome service template é muito específico para o contexto de serviços e consequentemente para o back-end, portanto, podemos ter um service template criando serviços para o back-end ou um application template (eu gosto de aplicações, mas, também poderíamos separar entre web e aplicativo de fato) criando aplicações para o front-end.

A ideia principal é que você tenha um template base com um conjunto de tecnologias, bibliotecas e frameworks já pré configurados. Dessa forma, conseguimos garantir que todos os projetos irão atender aos requisítos minimos, exemplos:

  • Service discovery (Descoberta de serviço)
  • Tracing
  • Logging
  • Monitoramento
  • Autenticação e Autorização
  • Comunicação remota
  • Catálogo de componentes
  • Rastreamento de erros
  • Telemetria
  • Pipeline
  • Análise estática de códigos

Repare que o template de serviço ou aplicação conhecem apenas detalhes de infraestrutura. O template possuí acoplamentos apropriados e sabemos disso, não tem nenhum problema. Isso porque não estamos focando na arquitetura técnica como: A estrutura e camadas do template (isso poderia mudar frequentemente tornando a manutenção do mesmo complexa) e sim em aspectos que realmente são essenciais do ponto de vista de requisitos (que quando precisarem mudar, não irão causar tantos impactos para quem os utilizam).

Use o template de serviço ou aplicação apenas para acoplar as partes de arquitetura apropriadas juntas, elementos de infraestrutura que permitem os times se beneficiarem de tal acoplamento.

Se você fez um bom uso do acoplamento apropriado ao trocar a tecnologia de tracing ou logging por exemplo, nenhum serviço iria quebrar após tal mudança.

Implementação

Mas, como implementar tal template? Isso pode ser feito de N formas diferentes, sendo algumas:

  1. Através de templates do GitHub (ou outro gerenciador de repositórios)
  2. Através de um repositório como base e utilizando uma ferramenta de scaffolding, por exemplo: Degit
  3. Criar uma CLI customizada que irá conter a regra de negócio para criar novos serviços ou aplicações.
    1. Aqui seria muito bom que o CLI fosse apenas uma interface se comunicando com um serviço externo onde o mesmo engloba as regras.
  4. Utilizar geradores de projetos como HygenPlop ou Yeoman
  5. Criar um produto que irá gerar os projetos, similar ao Spring initializr

As possibilidades são inúmeras, cabe a você decidir uma que faça sentido para seu contexto.

Conclusão

Nesse post descobrimos e entendemos o que é um service template ou application template. Também vimos quando, porque e como utilizá-los.

Abraços, até a próxima.