Avançar para o conteúdo principal
BlogVisão geral das nuvensA minha Viagem de Linode: De um Minecraft Server a um Estágio de Engenharia

A minha Viagem de Linode: De um Minecraft Server a um Estágio de Engenharia

A minha Viagem de Linode: De um Minecraft Server a um Estágio de Engenharia

Olá! O meu nome é Gurleen, e sou um estagiário de Engenharia de Software na Linode. Estudo Informática e Empreendedorismo na Universidade Drexel em Filadélfia, Pensilvânia. Durante os últimos cinco meses, tive a oportunidade de ser o primeiro estagiário na Linode, trabalhando ao lado da equipa de API .

A missão de Linode de tornar a computação em nuvem simples, acessível e acessível a todos está perto e é-me muito cara. Comecei com Linode no 8º ano para fazer girar um servidor Minecraft (que, a propósito, está agora disponível como uma aplicação One-Click fácil de usar), e hoje utilizo Linode para alojar grandes aplicações. Desde o início do meu estágio em Março, senti a importância de continuar essa missão e levar a nuvem a uma nova geração de tecnólogos.

Durante o meu tempo na Linode, tive a oportunidade de trabalhar tanto em projectos internos como em projectos voltados para o cliente:

Melhorar API Tempos de resposta

APIv4 é a espinha dorsal da nossa oferta de produtos. Ela alimenta o nosso Cloud Manager e permite aos nossos clientes ter acesso programático a todos os produtos e serviços da Linode. Este ano, concentrámo-nos muito em acelerar o API para melhor servir os nossos clientes, especialmente aqueles que se ligam do outro lado do mundo. 

Antes de assumirmos esta tarefa, o nosso tempo de resposta rondava os 150ms. Isso já é rápido, mas ainda assim queríamos espremer mais algum desempenho.

Como recém-chegado a este grande projecto, eu poderia mergulhar com um olhar mais crítico. Queríamos encontrar optimizações que nos permitissem poupar em todos os nossos pontos finais (dos quais são muitos). Comecei a pensar em que operações se realizam em todo o lado, e isso veio-me à cabeça: o abate de árvores!

No início parecia um pouco rebuscado, mas faz sentido quando o medimos. Escrever para stdout, bem como registar num ficheiro, é uma operação síncrona em Python, e pode demorar entre 10-20ms, dependendo da quantidade de texto escrito. Trata-se de uma grande parte do tempo gasto numa tarefa que pode ou não ser útil.

Explorei várias opções, tais como a exploração assíncrona, mas descobri que a redução do nível de exploração madeireira seria a que traria mais benefícios. O nosso ambiente de desenvolvimento espelha os recipientes que usamos na produção, por isso desenvolvi um teste de stress utilizando Locust e recolhi dados sobre o tempo de resposta. O maior ganho veio da alteração do nível de exploração madeireira de DEBUG, o nosso ambiente de produção anterior, para INFO. Este desenvolvimento só por si deu-nos uma redução média de 15 milissegundos na produção, mesmo com ~18k pedidos por minuto! 

Melhorar os tempos de resposta em API foi uma oportunidade espantosa de tornar a experiência do cliente melhor para todos, especialmente os da Europa e da Ásia.  

Reunião de Métricas GitHub para Gestores

Os gestores de engenharia de software na Linode têm a tarefa de recolher dados sobre a produtividade das suas equipas. Utilizam métricas GitHub, tais como PRs e commits, para algumas destas informações. No entanto, esta pode ser uma tarefa trabalhosa, uma vez que temos reposições tanto no nosso servidor empresarial GitHub como em projectos open-source em GitHub como o Linode Cloud Manager. O meu gestor, Samir, perguntou se eu poderia ajudar a acelerar esta recolha de dados.

Este processo estava maduro para a automatização. Comecei por explorar as ofertas da GitHub API e descobri que tanto a GitHub pública como a GitHub Enterprise partilham o mesmo esquema API , o que me facilita a partilha de lógica para ambos os casos. A funcionalidade de pesquisa permitiu-me obter os números de que precisava em apenas algumas chamadas API .

Construí uma prova de conceito no prazo de uma semana que era utilizável como ferramenta de linha de comando. O passo seguinte foi fornecer uma interface web para os nossos gestores utilizarem. Para a dimensão deste projecto, utilizei o Vue.js para fazer o trabalho. O resultado foi uma pequena aplicação, auto-hospedada, que pode pegar em chaves API , listas de equipas, e um intervalo de datas, e transformá-las em números brutos para os gestores se transformarem em ferramentas como Google Sheets. 

Os gestores já pouparam muitas horas a seguir estas métricas, e estou confiante de que o meu programa continuará a fornecer valor mesmo depois do meu estágio ter terminado.

Traga o seu próprio certificado

Muitos clientes utilizam o nosso serviço de Armazenamento de Objectos para alojar websites estáticos. Por defeito, servimos um certificado SSL no domínio linodeobjects.com que é propriedade nossa. No entanto, não existia qualquer mecanismo para os utilizadores servirem os seus próprios certificados, se assim o desejarem. Um dos meus mentores, Adam Mohammed, veio até mim com a ideia de acrescentar esta funcionalidade. Como utilizador de Object Storage, eu próprio compreendi o valor que isto traria aos nossos clientes, por isso trabalhei com ele para construir esta funcionalidade.

A minha tarefa era a de construir a interface API para suportar esta nova funcionalidade. A construção de uma nova funcionalidade deu-me uma visita guiada a cada canto do projecto API . Sendo uma aplicação web grande e monolítica, há muitas partes móveis para compreender. Também preencheu as lacunas de conhecimento que ainda tinha na forma como os nossos sistemas comunicam e trabalham em conjunto.

Uma grande parte deste projecto foi o foco na segurança. Lidar com os segredos dos clientes não é tarefa fácil, e passámos muitas horas a planear, discutir e testar cada elo da cadeia para nos certificarmos de que estamos a fornecer um serviço seguro. Isto deu-me uma nova perspectiva sobre a concepção de sistemas e permitiu-me colocar-me no lugar do utilizador. Estou entusiasmado por ver os clientes usar e desfrutar desta funcionalidade.

Este trabalho está agora completo. Pode agora carregar um certificado e um par de chaves privado, e o armazenamento de objectos irá servi-lo quando um pedido chegar ao seu balde. É muito fácil. Esta funcionalidade fala à nossa missão de tornar a computação em nuvem simples. Damos-lhe as ferramentas de que necessita para construir o seu projecto ou negócio, sem qualquer inchaço.

Conclusão

Comecei na Linode em Março, não só como o primeiro estagiário de engenharia da empresa, mas também como o primeiro empregado a embarcar remotamente devido à pandemia. Apesar disto, aprendi muito mais do que alguma vez imaginei que o faria. A minha equipa e departamento receberam-me de braços abertos e responderam a perguntas que eu nem sequer sabia que tinha. Conseguimos tirar o máximo partido de uma situação estranha porque a cultura de Linode consiste em apoiarmo-nos uns aos outros. Não poderia ter pedido pessoas melhores com quem trabalhar.

Como viram, o trabalho que assumi não foi "trabalho interno". Estava em projectos de alto impacto, orientados para o cliente, com o objectivo de fazer avançar a missão da empresa. Para além do conhecimento técnico, este trabalho incutiu-me uma mentalidade de engenharia centrada no cliente. Só posso obter estas competências fora da sala de aula.

Estes últimos meses têm sido emocionantes, desafiantes e gratificantes. Estou muito grato a Linode por me ter proporcionado esta oportunidade, e mal posso esperar para ver outros estudantes neste papel.


Comentários

Deixe uma resposta

O seu endereço de correio electrónico não será publicado. Os campos obrigatórios estão marcados com *