Skip to content

Repositorio com uma implementação de plataforma interna para desenvolvedores

License

Notifications You must be signed in to change notification settings

dbserver/internal-developer-platform

Repository files navigation

Tabela de conteúdos

Descrição do Projeto

Implementação do Backstage demonstrando a utilização das core features:

  • Backstage TechDocs
  • Backstage Software catalog
  • Backstage Kubernetes
  • Backstage Search
  • Backstage Software Templates

👍 Pré-requisitos

Como pré requisitos temos os seguintes itens:

  • Minikube
  • Docker
  • NodeJS
  • ArgoCD

Variáveis de ambiente que você irá precisar

Name Where to get?
GITHUB_TOKEN Gere um novo personal access token em GIthub Secure page
GITHUB_CLIENT_ID Obtenha em Github app ID
GITHUB_CLIENT_SECRET Abra um ticker com os owners da DbServer
SONARQUBE_TOKEN Crie um Sonarqube token usando isso documentation

Todos os ambientes acima de DEVEM ser exportados em seu contexto bash como abaixo:

# .bashrc or .zshrc
export GITHUB_TOKEN='YOUR-TOKEN-HERE'
export GITHUB_CLIENT_ID='YOUR-TOKEN-HERE'
export GITHUB_CLIENT_SECRET='YOUR-TOKEN-HERE'
export SONARQUBE_TOKEN='YOUR-TOKEN-HERE'

Configure seus hosts

Você precisará criar uma entrada em seu /etc/hosts para especificar backstage.local como abaixo:

# /etc/hosts

# ...
127.0.0.1 backstage.local
#...

🛠 Tecnologias

As seguintes ferramentas foram usadas na construção do projeto:

🎬 Iniciando o uso deste projeto

Clone este repositório

git clone [email protected]:dbserver/internal-developer-platform.git

Acesse a pasta do projeto no terminal/cmd

cd internal-developer-platform

Instale as dependências

make install-dependencies

Iniciando os recursos de infraestrutura

make run-infra

Execute a aplicação core features

make docker-techdocs

O servidor do backstage iniciará na porta:7007 - acesse http://localhost:7007

Acesso ao TechDocs

Para acessar a TechDocs acesse o link abaixo;

http://localhost:8000

📁 Arquitetura do projeto

A arquitetura do projeto é dividida em aplicações com responsabilidades distintas:

Camada de apresentação (Backstage)

A aplicação é apartada e de acordo com suas customizações deve-se buildar a imagem e alocar recursos conforme a demanda, seu frontend e backend são dividos em pastas no repositório src/backstage_io, incluindo seus plugins e tudo pertinente ao Projeto Backstage

Camada de GitOps (ArgoCD)

Visando orquestrar os serviços de maneira homogênea o ArgoCD nos dará flexibilidade necessária diminuindo esforço administrativo.

Camada de acesso a dados (Data)

A responsabilidade dessa camada é limitada às operações Criar, Recuperar, Atualizar e Excluir (CRUD) em uma fonte de dados, que geralmente é um banco de dados relacional ou não relacional. As classes de repositório geralmente são colocadas em um pacote de repositório.

System Design

image

🏬 Banco de dados

Instalando o banco de dados PostgreSQL

  • Visando abstrair o processo de infraestrutura foi criado no Makefile na raiz do projeto o processo de instalação e instanciação do banco da dados PostgreSQL
# Para sistemas unix
make docker-postgres

Executando o banco de dados com docker compose

docker-compose --env-file ./global-variables.env --file ./src/postgres/docker-compose.yml up -d --build -V

No comando dado acima,

  • postgres-idp é o nome do Docker Container.
  • --env-file Contém as variáveis necessárias para deployment
  • -p 5432:5432 é o parâmetro que estabelece uma conexão entre a porta do host e a porta do contêiner do Docker. Nesse caso, ambas as portas são fornecidas como 5432, o que indica que as solicitações enviadas às portas do host serão redirecionadas automaticamente para a porta do contêiner do Docker. Além disso, 5432 também é a mesma porta onde o PostgreSQL estará aceitando requisições do cliente.
  • --file é o parâmetro que invoca o arquivo yaml do docker compose para orquestrar seus containers.

Para validar se o banco de dados foi executado com sucesso execute o comando abaixo

 docker ps --filter "name=postgres-idp"

Deve ser exibido algo similar o abaixo

CONTAINER ID   IMAGE      COMMAND                  CREATED         STATUS         PORTS                    NAMES
f33be708db53   postgres   "docker-entrypoint.s…"   4 minutes ago   Up 4 minutes   0.0.0.0:5432->5432/tcp   postgres-idp

Cliente para gerenciamento do banco de dados PostgreSQL

Para gerenciar, executar scripts sugerimos a utilização do DBeaver

Sobre padrões no versionamento do código

É desejado que seja utilizado o padrão de Commits Semânticos. Pode entender melhor nesse link

About

Repositorio com uma implementação de plataforma interna para desenvolvedores

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published