메인 콘텐츠로 건너뛰기
블로그 클라우드 개요 내 Linode 여행 : 마인 크래프트 서버에서 엔지니어링 인턴십에 이르기까지

나의 Linode 여정 : Minecraft 서버에서 엔지니어링 인턴쉽으로

나의 Linode 여정 : Minecraft 서버에서 엔지니어링 인턴쉽으로

안녕하세요! 제 이름은 Gurleen이고 Linode의 소프트웨어 엔지니어링 인턴입니다. 저는 펜실베이니아주 필라델피아에 있는 Drexel University에서 컴퓨터 과학과 기업가정신을 공부합니다. 지난 5 개월 동안 저는 Linode에서 API 팀과 함께 일하는 첫 인턴이 될 기회를 가졌습니다.

클라우드 컴퓨팅을 간단하고 저렴하며 모든 사람이 액세스 할 수 있도록 만드는 Linode의 사명은 소중합니다. 저는 8학년 때 Linode로 Minecraft 서버를 가동했습니다 (그런데 지금은 사용하기 쉬운 One-Click 앱 으로 제공됨). 이제는 Linode를 사용하여 대규모 애플리케이션을 호스팅합니다. 3월에 인턴십이 시작된 이래로 저는 그 임무를 계속하고 새로운 세대의 기술자에게 클라우드를 제공하는 것이 중요하다고 느꼈습니다.

Linode에서 근무하는 동안 내부 및 고객 대면 프로젝트에서 작업할 수 있는 기회가 있었습니다.

API 응답 시간 개선

APIv4 는 당사 제품 제공의 중추입니다. 클라우드 관리자를 지원하고 고객이 Linode의 모든 제품 및 서비스에 프로그래매틱 방식으로 액세스할 수 있도록 합니다. 올해 우리는 고객, 특히 세계 반대편에서 연결하는 고객에게 더 나은 서비스를 제공하기 위해 API 속도를 높이는 데 많은 초점을 두었습니다. 

이 작업을 수행하기 전에 응답 시간은 약 150ms였습니다. 그것은 이미 빠르지만, 우리는 여전히 더 많은 성능을 발휘시키고 싶었습니다.

이 대규모 프로젝트에 새로 온 사람으로서 저는 더 비판적인 눈으로 뛰어들 수 있었습니다. 우리는 모든 엔드 포인트 (그중 많은 엔드 포인트)에서 비용을 절감할 수 있는 최적화를 찾고 싶었습니다. 나는 어디서나 어떤 작업이 일어나는지에 대해 생각하기 시작했고, 드디어 아이디어가 생각났습니다: 로깅!

처음에는 조금 말이 안 되는 것 같았지만, 측정해보니 말이 됐습니다. 파일에 로깅하는 것뿐만 아니라 stdout에 쓰는 것은 Python의 동기 작업이며 작성되는 텍스트의 양에 따라 10-20ms가 걸릴 수 있습니다. 이는 유용하거나 유용하지 않을 수 있는 작업에 많은 시간을 소비합니다.

비동기 로깅과 같은 다양한 옵션을 탐색했지만 로깅 수준을 낮추면 가장 큰 이점을 얻을 수 있다는 것을 알았습니다. 개발 환경은 프로덕션에서 사용하는 컨테이너를 반영하므로 Locust를 사용하여 스트레스 테스트를 개발하고 응답 시간 데이터를 수집했습니다. 가장 큰 이득은 로깅 수준을 이전 프로덕션 설정인 DEBUG에서 INFO로 변경 한 것입니다. 이 개발만으로도 분당 약 1만 8천개의 요청이 있더라도 생산에서 평균 15밀리 초가 단축됩니다! 

API 응답 시간 개선은 모든 사람, 특히 유럽과 아시아의 고객 경험을 개선할 수 있는 놀라운 기회였습니다.  

관리자를 위한 GitHub 지표 수집

Linode의 소프트웨어 엔지니어링 관리자는 팀의 생산성에 대한 데이터를 수집해야 합니다. 이 정보 중 일부에 대해 PR 및 커밋과 같은 GitHub 메트릭을 사용합니다. 그러나 Linode Cloud Manager와 같은 GitHub의 GitHub 엔터프라이즈 서버 및 오픈 소스 프로젝트에 저장소가 있기 때문에 이것은 힘든 작업이 될 수 있습니다. 제 관리자인 Samir는 이 데이터 수집 속도를 높일 수 있는지 물었습니다.

이 프로세스는 자동화에 적합했습니다. 저는 GitHub의 API 오퍼링을 탐색하는 것으로 시작했고, 공개 GitHub와 GitHub Enterprise가 동일한 API 스키마를 공유하므로 두 경우 모두에 대한 로직을 더 쉽게 공유할 수 있음을 발견했습니다. 검색 기능을 통해 몇 번의 API 호출만으로 필요한 수치를 얻을 수 있었습니다.

나는 명령 줄 도구로 사용할 수 있는 개념 증명을 일주일 만에 구축했습니다. 다음 단계는 관리자가 사용할 웹 인터페이스를 제공하는 것이었습니다. 이 정도 규모의 프로젝트에는 Vue.js 를 사용하여 작업을 완료했습니다. 그 결과 API 키, 팀 명단 및 날짜 범위를 가져와 관리자가 Google 스프레드시트와 같은 도구로 이동할 수 있도록 로우 넘버로 변환할 수 있는 작은 자체 호스팅 앱이 탄생했습니다. 

관리자는 이미 이러한 지표를 추적하는 데 많은 시간을 절약했으며 인턴십이 끝난 후에도 프로그램이 계속해서 가치를 제공할 것이라고 확신합니다.

자신의 인증서 가져오기

많은 고객이 스태틱 웹 사이트를 호스팅하기 위해 Object Storage 서비스를 사용합니다. 기본적으로 당사는 당사가 소유 한 linodeobjects.com 도메인에서 SSL 인증서를 제공합니다. 그러나 사용자가 원하는 경우, 자체 인증서를 제공할 수 있는 메커니즘이 없었습니다. 제 멘토 중 한 명인 Adam Mohammed가이 기능을 추가할 생각을 가지고 왔습니다. 저는 Object Storage 사용자로서 이것이 고객에게 가져다줄 가치를 이해했기 때문에 그와 함께 이 기능을 구축했습니다.

내 임무는 이 새로운 기능을 지원하는 API 인터페이스를 구축하는 것이었습니다. 새로운 기능을 구축하면서 API 프로젝트의 모든 부분을 둘러볼 수 있었습니다. 모놀리식 웹 애플리케이션에는 이해해야 할 작동 부분이 많습니다. 또한 우리 시스템이 통신하고 함께 작동하는 방식에 대해 갖고 있던 지식의 틈새를 채웠습니다.

이 프로젝트의 큰 부분은 보안에 중점을 둔 것입니다. 고객 비밀을 다루는 것은 쉬운 일이 아니기에, 안전한 서비스를 제공하고 있는지 확인하기 위해 체인의 모든 링크를 계획, 논의 및 테스트하는 데 많은 시간을 보냈습니다. 시스템 설계에 대한 새로운 시각을 갖게 되었고 사용자 입장에 서게 되었습니다. 고객이 이 기능을 사용하고 즐기는 것을 보게 되어 기쁩니다.

이 작업은 이제 완료되었습니다. 이제 인증서와 개인 키 페어를 업로드 할 수 있으며, 버킷에 요청이 올 때 Object Storage가 이를 제공합니다. 아주 간단하죠. 이 기능은 클라우드 컴퓨팅을 단순화하려는 우리의 사명을 나타냅니다. 우리는 부풀리지 않고 프로젝트 또는 비즈니스를 구축하는 데 필요한 도구를 제공합니다.

결론

저는 3월에 Linode에서 회사 최초의 엔지니어링 인턴뿐만 아니라 판데믹으로 인해 원격으로 채용된 최초의 직원으로 시작했습니다. 그럼에도 불구하고 저는 제가 상상했던 것보다 훨씬 많은 것을 배웠습니다. 우리 팀과 부서는 두 팔을 벌려 나를 환영하고 내가 가진지도 몰랐던 질문에 대답했습니다. Linode의 문화는 서로를 지원하는 것이기 때문에 우리는 판데믹 속 업무 환경을 최대한 활용할 수 있었습니다. 이보다 더 나은 사람들과 함께 일할 수는 없었습니다.

보시다시피 제가 맡은 일은“인턴 일”이 아니 었습니다. 나는 회사의 사명을 발전시키기 위해 영향력이 큰 고객 대면 프로젝트에 참여했습니다. 이 작업은 기술 지식 외에도 고객 중심의 엔지니어링 사고 방식을 심어주었습니다. 이 기술은 사회에서만 얻을 수 있습니다.

지난 몇 달 동안은 흥미롭고 도전적이며 보람이 있었습니다. 저에게 이 기회를 제공해준 Linode에게 너무 감사하고 다른 학생들이 이 역할을 맡는 것을 보고 싶습니다.


내용

댓글 남기기

이메일 주소는 게시되지 않습니다. 필수 필드가 표시됩니다 *