Olá! Meu nome é Gurleen, e sou estagiário de Engenharia de Software na Linode. Estudo Ciência da Computação e Empreendedorismo na Universidade Drexel na Filadélfia, Pensilvânia. Nos últimos cinco meses, tive a oportunidade de ser o primeiro estagiário da Linode, trabalhando ao lado da equipe API .
A missão da Linode de tornar a computação em nuvem simples, acessível e de baixo custo para todos está próxima e me é muito cara. Comecei com a Linode na 8ª série para rodar um servidor Minecraft (que, a propósito, agora está disponível como um aplicativo One-Click fácil de usar), e hoje uso a Linode para hospedar 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 meu tempo na Linode, tive a oportunidade de trabalhar tanto em projetos internos quanto em projetos voltados para o cliente:
Melhorando API Tempos de resposta
APIv4 é a espinha dorsal de nossas ofertas de produtos. Ela 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 na aceleração do 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!
A melhoria dos tempos de resposta API foi uma oportunidade incrível de tornar a experiência do cliente melhor para todos, especialmente os da Europa e da Á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.
Este processo estava maduro para a automação. Comecei explorando as ofertas da GitHub API e descobri que tanto a GitHub pública quanto a GitHub Enterprise compartilham o mesmo esquema API , tornando mais fácil para mim compartilhar a lógica para ambos os casos. A funcionalidade de busca me permitiu obter os números que eu precisava em apenas algumas chamadas API .
Eu construí uma prova de conceito dentro de uma semana que era utilizável como uma ferramenta de linha de comando. O passo seguinte foi fornecer uma interface web para nossos gerentes utilizarem. Para o tamanho deste projeto, usei o Vue.js para fazer o trabalho. O resultado foi um aplicativo pequeno, auto-hospedado que pode pegar as chaves API , as listas de equipes e um intervalo de datas, e transformá-las em números brutos para que os gerentes se transformem em ferramentas como o Google Sheets.
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 utilizam nosso serviço de armazenamento de objetos para hospedar websites estáticos. Por padrão, nós servimos um certificado SSL no domínio linodeobjects.com que é de nossa propriedade. Entretanto, não havia nenhum mecanismo para os usuários servirem seus próprios certificados, se assim o desejarem. Um de meus mentores, Adam Mohammed, veio até mim com a idéia de acrescentar esta funcionalidade. Como usuário do Object Storage, eu mesmo entendi o valor que isso traria para nossos clientes, por isso trabalhei com ele para construir esta funcionalidade.
Minha tarefa era construir a interface API para suportar esta nova funcionalidade. A construção de uma nova funcionalidade me deu um tour por cada canto do projeto API . Como uma aplicação web grande e monolítica, há muitas peças 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 agora está completo. Agora você pode carregar um certificado e um par de chaves privado, e o armazenamento de objetos o servirá quando uma solicitação chegar ao seu balde. É muito fácil. Este recurso fala à nossa missão de tornar a computação em nuvem simples. Nós lhe fornecemos as ferramentas necessárias para construir seu projeto ou negócio sem qualquer tipo de 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