Airframe

Por que o Airframe

Autosserviço por merge request

Um produto existe porque um arquivo do catálogo diz que existe. Uma equipe o cria com um merge request e o aposenta com outro, e cada passo fica registrado.

Como um arquivo do catálogo se torna um produto

  1. Um arquivo descreve o produto

    A equipe adiciona products/shop.store.ordering.orders.yaml ao catálogo: a equipe responsável, a pilha tecnológica, a criticidade, os objetivos de recuperação e o orçamento mensal. O esquema e o lint do catálogo verificam o arquivo no pipeline do merge request.

  2. Os responsáveis aprovam

    O catálogo nomeia os líderes de cada jornada, domínio e contexto, e a equipe de cada produto. O controle de aprovação aprova o pedido somente quando os responsáveis atuais o tiverem aprovado, e vincula sua própria aprovação ao commit que verificou; não contam nem a aprovação do autor nem a de quem fez um commit.

  3. A plataforma deriva o resto

    Depois do merge, o pipeline do catálogo inicia uma cadeia de raízes do Terraform que o leem. A fábrica de projetos do domínio cria os dois projetos do Google Cloud do produto e suas identidades, operations cria seus painéis e a raiz do GitLab do domínio cria o repositório a partir do golden path. O nome de host chega ao edge compartilhado assim que o primeiro pipeline do produto o implanta.

  4. O merge request acompanha o trabalho

    Uma nota no merge request mesclado acompanha a cadeia enquanto ela roda: cada passagem com seu horário e seu link, o primeiro pipeline do novo repositório e o momento em que o produto responde no seu nome de host, atrás do login único. Uma falha nomeia seu job e o próximo passo. Um produto novo só roda quando seus projetos são faturados, o que é outro merge request no landing-zone, dentro da cota de projetos da conta de faturamento.

  5. Aposentar é o mesmo arquivo

    Mudar o status do produto para retiring tira seus serviços do edge e os deixa com zero instâncias, e mantém seus dados. Depois da data de aposentadoria da entrada, removed destrói o que o produto executa e exclui seus projetos e seu repositório. Cada mudança de status precisa de dois aprovadores além do autor, e um nome removido fica no catálogo como lápide, então nunca é reutilizado no seu domínio.

Experimente

Escreva uma entrada do catálogo. Isto é o que a plataforma deriva dela, com os nomes que as fábricas dão na versão da plataforma que este site descreve.

Rótulo de criticidade
criticality: 2
Projetos
lk-store-returns-xxxx
lk-store-returns-np-xxxx
Identidades de pipeline
returns-apply@lk-store-returns-xxxx.iam.gserviceaccount.com
returns-plan@lk-store-returns-xxxx.iam.gserviceaccount.com
returns-np-apply@lk-store-returns-np-xxxx.iam.gserviceaccount.com
returns-plan@lk-store-returns-np-xxxx.iam.gserviceaccount.com
Repositório
projectairframe/shop/store/ordering/returns
Grupos
lk-shop-store-ordering-returns-users@projectairframe.dev
lk-team-store-core@projectairframe.dev
Nomes de host
returns.store.shop.projectairframe.dev
returns-np.store.shop.projectairframe.dev
returns-sandbox.store.shop.projectairframe.dev
returns-eph-<iid>.store.shop.projectairframe.dev
Pastas e painéis do Grafana
shop › store › ordering › returns
returns service
returns SLO
Prefixos de estado
shop/store/ordering/returns/prod/
shop/store/ordering/returns/grafana/
shop/store/ordering/returns/np/
shop/store/ordering/returns/sandbox/
shop/store/ordering/returns/eph/
Orçamentos
USD 7 / USD 3, alertas em 80% e 100%

O que torna isso verdade

Um produto é criado sem que ninguém execute um comando.
O pipeline do catálogo inicia a cadeia de raízes do Terraform depois do merge, e cada raiz aplica com uma identidade de pipeline que só um job do seu próprio repositório, em uma ref protegida e no seu ambiente, pode obter.
Só os responsáveis atuais podem aprovar.
O controle de aprovação lê o modelo de responsáveis do main protegido do catálogo, nunca da mudança que avalia, e vincula sua própria aprovação ao commit que verificou; uma política de aprovação torna essa aprovação uma condição para o merge.
O merge request mostra até onde o produto chegou.
Depois do merge, o job de progresso do catálogo acompanha a cadeia, e o controle de aprovação mantém uma nota no merge request mesclado até o produto responder no seu nome de host, um job falhar ou passarem três horas.
Aposentar um produto exige duas aprovações além da do autor.
A regra de ciclo de vida do controle de aprovação pede dois aprovadores distintos, nenhum deles o autor: um da equipe do produto e outro dos líderes do domínio ou da equipe de plataforma. O job de ciclo de vida do catálogo exige o rótulo lifecycle e os estados em ordem.
Um nome removido nunca é reutilizado.
O catálogo guarda uma lápide na sua lista de nomes aposentados, e seu lint recusa qualquer outro produto com esse nome no domínio.