Em tempos de modelos colaborativos de cooperação e agilidade generalizada em IT, o termo Site Reliability Engineering (abreviado: SRE) pode ser encontrado em muitos locais. Mas do que se trata esta abordagem para a operação dos sistemas de IT?
A ORIGEM DA SITE RELIABILITY ENGINEERING
Como costuma acontecer com modelos e métodos de processos modernos, a Site Reliability Engineering teve origem numa das grandes empresas de tecnologia americanas. No caso da SRE, com a Google em 2003. A essência dos modelos de negócios da Google e a chave para o sucesso da empresa, está intimamente ligado à IT interna.
A Google procurou sempre métodos e modelos de processos na sua organização de IT para lidar com o rápido crescimento. Embora fosse omnipresente uma separação estrita entre desenvolvimento de software e operações de IT na Google em 2003, as seguintes perguntas foram feitas na altura relativamente às operações de IT: O quão estreitamente as equipas de desenvolvimento e operações devem ser associadas e que processos são necessários para uma colaboração bem-sucedida?
A partir destas perguntas e das respostas obtidas, a Site Reliability Engineering surgiu como um novo modelo para a operação dos sistemas de IT na Google. Mas o que exatamente é a SRE?
O QUE É EXATAMENTE A SITE RELIABILITY ENGINEERING?
A Site Reliability Engineering integra vários métodos que também são utilizados no desenvolvimento de software ou DevOps. Em primeiro lugar, a SRE considera as operações de IT como uma tarefa a ser tratada com engenharia de software; em termos concretos, os sistemas são fornecidos e geridos através de código. Por outras palavras: A infraestrutura, os fluxos de trabalho e as tarefas manuais são automatizados através do uso de software e, portanto, mais fiáveis.
Além da automatização, a monitorização de sistemas na Site Reliability Engineering desempenha um papel vital. As métricas importantes do sistema são monitorizadas em todos os momentos e visualizadas através de dashboards. Os dados obtidos não são apenas visualizados de forma reativa, mas também são constantemente analisados na medida em que erros do sistema e vulnerabilidades são identificados e eliminados de forma proativa.
O Site Reliability Engineer ideal tem as suas raízes no desenvolvimento de software, tem uma vasta experiência em operações de IT e afinidade com a análise de dados do sistema. Com este conjunto de competências, foca-se na automatização das operações, no planeamento e projeto da infraestrutura necessária, monitoriza os sistemas em operação ativa e analisa o seu desempenho, sempre com o objetivo de identificar potenciais de melhoria.
Os Site Reliability Engineers dividem o seu tempo entre tarefas operacionais e desenvolvimento de software e ferramentas para otimização. No caso de uma falha, corrigem-na e, de seguida, geralmente discutem detalhadamente com os envolvidos para descobrir o que funcionou bem e o que precisa ser melhorado. Além disso, os Site Reliability Engineers recolhem conhecimento importante e não documentado. Através da sua compreensão em desenvolvimento e suporte, esse conhecimento pode ser utilizado em todos os setores.
Além dos elementos tecnológicos centrais da Site Reliability Engineering já descritos, a metodologia também se baseia em vários princípios metodológicos básicos, que serão discutidos mais detalhadamente de seguida.
A Site Reliability Engineering conta com um conjunto de métodos já estabelecidos no desenvolvimento de software. Além disso, a SRE tem muitos paralelos com os métodos usados para DevOps. Duas das diferenças mais óbvias para DevOps são que a Site Reliability Engineering coloca a fiabilidade (do sistema) como a principal prioridade no centro da ação e que as especificações devem ser seguidas de uma forma muito mais vinculativa. As maiores semelhanças com o DevOps são atividades centrais, como monitorização contínua e automatização consistente de processos e fluxos de trabalho.
Um método central que a SRE utiliza são os chamados circuitos positivos. Deste modo, são definidas metas e são determinadas medidas para as medir. Parte dos circuitos positivos também é lidar com erros. A seguir, é descrito o princípio dos circuitos positivos nos seus elementos individuais.
SLO E SLI
A Site Reliability Engineering define, para cada sistema, como deve ser um nível adequado de fiabilidade. O "Service Level Objective" (SLO) indica com que fiabilidade um sistema deve funcionar para atender às especificações internas ou aos requisitos do cliente. Isto pode significar, por exemplo, que um sistema deve produzir 90% de resultados bem-sucedidos num período de tempo definido.
O SRE utiliza o "Service Level Indicator" (SLI) para determinar se este objetivo e, também, a fiabilidade definida anteriormente são alcançados. Os SLI são indicadores que fornecem informações, por exemplo, sobre a quantidade de solicitações que foram bem-sucedidas e quantas dessas solicitações cumpriram o período especificado.
Utilizando os SLI, pode ser feita uma declaração qualificada sobre se o SLO será alcançado ou, se não, em que ponto há necessidade de otimização.
ORÇAMENTO DE ERROS
Atualizações e novos lançamentos fornecem novas funções, melhoram funções existentes e colmatam falhas de segurança. Um problema básico do desenvolvimento de software é que não é possível planear uma quantidade infinita de tempo para testar completamente todos os cenários possíveis antes de cada lançamento. Além disso, surge neste contexto a questão de saber se e quando a fiabilidade perfeita do sistema é adequada.
A Site Reliability Engineering funciona com base no princípio básico de que há um orçamento de erros em cada sistema. Este orçamento é calculado a partir da fiabilidade teoricamente possível de 100% menos a fiabilidade realmente aplicada e refere-se a um período de tempo definido, por exemplo, um mês. Portanto, utilizando o exemplo acima, o orçamento de erros seria de 10% (100% menos 90%). Assim, seria aceitável se a funcionalidade correspondente tivesse uma taxa de erro de até 10%.
Portanto, enquanto o SLO estiver no verde, não há necessidade de perder tempo e orçamento com este método à procura de uma situação ideal teórica de fiabilidade perfeita. Apenas quando o orçamento de erros tiver sido utilizado é que precisam de ser tomadas ações e feitas melhorias, por exemplo, um lançamento é retido para melhorar a fiabilidade.
APRENDER COM OS ERROS: SEM ATRIBUIÇÃO DE CULPA
No caso de erros graves do sistema ou falhas com consequências graves, faz sentido analisar minuciosamente as causas desses erros posteriormente. Esta é a única forma de aprender com estes erros e, idealmente, evitar casos semelhantes no futuro.
O que há de especial na Site Reliability Engineering é que estas análises de erros devem ocorrer de forma consciente num contexto favorável. Em vez de culpar pessoas ou equipas por um erro, a SRE foca-se no problema e nas respetivas causas. A questão não é "quem é o culpado por este erro?", mas "que circunstâncias levaram a que este erro ocorresse?".
Ao proceder deste modo, podem ser identificados motivos como informações em falta ou processos operacionais deficientes que podem ter contribuído para a ocorrência desse erro. A SRE prevê, incondicionalmente, que ninguém será sancionado por um erro ocorrido. Em vez disso, deve-se encontrar uma forma de evitar esse erro no futuro, tomando as medidas adequadas. Desta forma, toda a organização pode crescer com os erros e melhorar a fiabilidade dos sistemas a longo prazo.
AS VANTAGENS DA SITE RELIABILITY ENGINEERING
É claro que a Site Reliability Engineering baseia-se num conjunto de ferramentas técnicas e princípios claros. Mas quais são as vantagens da SRE em relação aos modelos operacionais semelhantes? Abaixo estão seis dos principais argumentos a favor da implementação da SRE:
- Relatórios melhorados: O SRE cria transparência, monitorizando de forma contínua parâmetros importantes como produtividade, estado de serviço e taxa de erros. Os elementos concretos (por exemplo, um tempo de inatividade médio) derivam de métricas, que são melhoradas especificamente com soluções;
- Solução proativa de problemas: muitas organizações de IT focam-se principalmente na implementação de novos recursos. No entanto, o desenvolvimento e a implementação cada vez mais rápidos comportam o risco de bugs e vulnerabilidades. A SRE neutraliza isto procurando proativamente erros e problemas e resolvendo-os antes de chegarem ao utilizador;
- Mais-valia: sistemas de IT fiáveis significam que deve ser investida menos capacidade de desenvolvimento na correção de erros. As equipas DEV têm automaticamente mais tempo para desenvolver novos recursos. A SRE deteta possíveis problemas antes da implementação;
- Mudança cultural: A Site Reliability Engineering traz uma nova perceção do estado dos sistemas nas organizações de IT. A busca contínua do potencial de otimização tem um efeito positivo em todas as equipas envolvidas e promove uma cooperação global. O sentido de responsabilidade coletivo que a SRE cria tem um papel muito na cooperação entre equipas;
- Elevado nível de automatização: Os Site Reliability Engineers tentam constantemente automatizar fluxos de trabalho relevantes. Também aplicam esta atitude ao seu próprio trabalho. Utilizando uma cadeia de ferramentas moderna, otimizam continuamente os seus processos de trabalho. Isto reduz gradualmente a suscetibilidade de erros causados pela componente "humana";
- Clientes satisfeitos: Em contraste com outros modelos operacionais, a SRE foca-se em melhorar a experiência do cliente, o "cliente" aqui pode ser o cliente ou utilizador interno e externo de um sistema. Usando SLO e SLI, a SRE define metas claras para a fiabilidade do sistema e, desta forma, a satisfação do cliente.
CONCLUSÃO
A Site Reliability Engineering é mais do que "mais um método". A abordagem representa um enriquecimento na cultura de IT moderna, pois preenche a lacuna entre o desenvolvimento e as operações de IT de forma muito pragmática. Onde outras abordagens permanecem mais teóricas ou, no máximo, fornecem uma estrutura para ação, a SRE torna-se muito concreta.
Ao monitorizar e analisar continuamente o desempenho do sistema, os problemas são identificados antecipadamente e contribuem para a otimização e fiabilidade.
A questão da adaptação individual da abordagem na empresa e na organização de IT continua interessante. Os princípios da Site Reliability Engineering escalam de Start-Ups modernas a potências mundiais de tecnologia como a Google ou Microsoft. O princípio de foco em artefactos SRE individuais é recomendado para a introdução (por exemplo, a implementação de uma solução de monitorização primeiro).
Pode-se dizer que a Site Reliability Engineering tem o potencial de valorizar significativamente as organizações de IT, pois a abordagem associa muito mais ao valor acrescentado à empresa.