Pular para o conteúdo principal
BlogVisão geral das nuvensMinha Viagem Linode: De um Minecraft Server a um Estágio de Engenharia

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

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

Olá! Meu nome é Gurleen e sou estagiário de Engenharia de Software na Linode. Eu estudo Ciência da Computação e Empreendedorismo na Drexel University na Filadélfia, Pensilvânia. Nos últimos cinco meses, tive a oportunidade de ser o primeiro estagiário na Linode, trabalhando ao lado da equipe de API.

A missão da Linode de tornar a computação em nuvem simples, acessível e acessível a todos é próxima e querida do meu coração. Eu comecei com o Linode na 8ª série para criar um servidor Minecraft (que, por sinal, agora está disponível como um aplicativo fácil de usar com um clique), e hoje uso o Linode para hospedar grandes aplicativos. Desde o início do meu estágio, em março, senti que era importante continuar essa missão e levar a nuvem para uma nova geração de tecnólogos.

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

Melhorando os tempos de resposta da API

APIv4 é a espinha dorsal de nossas ofertas de produtos. Ele capacita nosso Cloud Manager e permite que nossos clientes tenham acesso programático a todos os produtos e serviços da Linode. Este ano, colocamos muito foco em acelerar a API para melhor atender nossos clientes, especialmente aqueles que se conectam do outro lado do mundo. 

Antes de assumirmos esta tarefa, nosso tempo de resposta girava em torno de 150ms. Isso já é rápido, mas ainda assim queríamos obter um pouco mais de desempenho.

Como recém-chegado a este grande projeto, eu poderia mergulhar com um olhar mais crítico. Queríamos encontrar otimizações que nos permitissem economizar em todos os nossos pontos finais (dos quais são muitos). Comecei a pensar em quais operações acontecem em todos os lugares, e isso veio até mim: a extração de madeira!

No início, parecia um pouco rebuscado, mas faz sentido quando você o mede. Escrever para stdout, assim como fazer logon em um arquivo, é uma operação síncrona em Python, e pode levar de 10 a 20ms, dependendo da quantidade de texto escrito. É uma grande parte do tempo gasto em uma tarefa que pode ou não ser útil.

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

Melhorar os tempos de resposta da API foi uma oportunidade incrível para tornar a experiência do cliente melhor para todos, especialmente aqueles na Europa e na Ásia.  

Reunindo Métricas GitHub para Gestores

Os Gerentes de Engenharia de Software da Linode têm a tarefa de coletar dados sobre a produtividade de suas equipes. Eles usam métricas GitHub, tais como PRs e compromissos, para algumas dessas informações. No entanto, esta pode ser uma tarefa trabalhosa, pois temos reposições tanto em nosso servidor empresarial GitHub quanto em projetos open-source no GitHub como o Linode Cloud Manager. Meu gerente, Samir, perguntou se eu poderia ajudar a agilizar esta coleta de dados.

Esse processo estava maduro para a automação. Comecei explorando as ofertas de API do GitHub e descobri que tanto o GitHub público quanto o GitHub Enterprise compartilham o mesmo esquema de API, facilitando o compartilhamento de lógica para ambos os casos. A funcionalidade de pesquisa me permitiu obter os números de que precisava em apenas algumas chamadas de API.

Eu construí uma prova de conceito em uma semana que era utilizável como uma ferramenta de linha de comando. O próximo passo foi fornecer uma interface web para nossos gerentes usarem. Para o tamanho deste projeto, usei Vue.js para fazer o trabalho. O resultado foi um aplicativo pequeno e auto-hospedado que pode pegar chaves de API, listas de equipes e um intervalo de datas e transformá-las em números brutos para os gerentes migrarem para ferramentas como o Planilhas Google. 

Os gerentes já economizaram muitas horas rastreando essas métricas, e estou confiante de que meu programa continuará a fornecer valor mesmo após o término de meu estágio.

Traga seu próprio certificado

Muitos clientes usam o nosso Object Storage serviço para hospedagem de sites estáticos. Por padrão, servimos um certificado SSL no domínio linodeobjects.com que é de nossa propriedade. No entanto, não havia nenhum mecanismo para que os usuários servissem seus próprios certificados se quisessem. Um dos meus mentores, Adam Mohammed, me procurou com a ideia de adicionar essa funcionalidade. Como usuário de Object Storage Eu mesmo entendi o valor que isso traria para nossos clientes, então trabalhei com ele para desenvolver esse recurso.

Minha tarefa era construir a interface da API para suportar essa nova funcionalidade. A criação de um novo recurso me deu um tour por cada canto do projeto de API. Como um aplicativo Web grande e monolítico, há muitas partes móveis para compreender. Também preencheu as lacunas de conhecimento que eu ainda tinha sobre como nossos sistemas se comunicam e trabalham juntos.

Uma grande parte deste projeto foi o foco na segurança. Lidar com os segredos dos clientes não é tarefa fácil, e passamos muitas horas planejando, discutindo e testando cada elo da cadeia para ter certeza de que estamos prestando um serviço seguro. Isso me deu uma nova perspectiva no projeto de sistemas e me permitiu colocar-me no lugar do usuário. Estou entusiasmado em ver os clientes usando e desfrutando deste recurso.

Este trabalho está agora concluído. Agora você pode carregar um certificado e um par de chaves privadas, e Object Storage irá atendê-lo quando um pedido chegar ao seu balde. É fácil assim. Esse recurso fala da nossa missão de tornar a computação em nuvem simples. Nós lhe damos as ferramentas que você precisa para construir seu projeto ou negócio sem qualquer inchaço.

Conclusão

Comecei na Linode em março, não apenas como o primeiro estagiário de engenharia da empresa, mas também como o primeiro funcionário a ser embarcado remotamente devido à pandemia. Apesar disso, aprendi muito mais do que jamais imaginei que iria aprender. Minha equipe e meu departamento me receberam de braços abertos e responderam perguntas que eu nem sabia que tinha. Conseguimos aproveitar ao máximo uma situação estranha porque a cultura de Linode tem a ver com apoiar uns aos outros. Eu não poderia ter pedido pessoas melhores com quem trabalhar.

Como você viu, o trabalho que assumi não foi "trabalho interno". Eu estava em projetos de alto impacto, voltados para o cliente, com o objetivo de fazer avançar a missão da empresa. Além do conhecimento técnico, este trabalho incutiu em mim uma mentalidade de engenharia focada no cliente. Eu só posso obter estas habilidades fora da sala de aula.

Estes últimos meses têm sido emocionantes, desafiadores e gratificantes. Sou muito grato a Linode por me proporcionar esta oportunidade e mal posso esperar para ver outros estudantes nesta função.


Comentários

Deixe uma resposta

Seu endereço de e-mail não será publicado. Os campos obrigatórios estão marcados com *