こんにちは!私の名前はGurleenです。Linode でソフトウェアエンジニアリングのインターンをしています。私はペンシルバニア州フィラデルフィアのドレクセル大学でコンピュータサイエンスと起業家精神を学んでいます。過去5ヶ月間、私はLinode の最初のインターンとして、APIチームと一緒に働く機会を得ました。
クラウドコンピューティングをシンプルに、手頃な価格で、誰もがアクセスできるようにするという Linode のミッションは、私の思いと近く、それは大切なものです。私がLinode を使って Minecraft のサーバーを立ち上げたのは 8年生の頃でした(ちなみに、今では簡単に使えるOne-Click Appになっています)。3月のインターン開始時から、ミッションを継続し、新しい世代のテクノロジストにクラウドを届けることが重要だと感じていました。
Linode に勤務している間、社内プロジェクトと顧客対応プロジェクトの両方で仕事をする機会がありました。
API 応答時間の改善
APIv4は、当社製品のバックボーンとなっています。これにより、当社のクラウドマネージャーの機能が強化され、お客様はLinode'のすべての製品およびサービスへのプログラムによるアクセスが可能になります。今年は、お客様、特に世界の反対側から接続しているお客様により良いサービスを提供するために、API の高速化に重点を置いています。
この課題に取り組む前は、レスポンスタイムは150ms程度でした。これはすでに速いのですが、もう少しパフォーマンスを上げたいと考えていました。
この大規模プロジェクトには新参者である私は、より客観的な視点でプロジェクトに飛び込むことができました。私たちはすべてのエンドポイント(多くのエンドポイントがあります)で節約をもたらす最適化を見つけたいと考えていました。私はあらゆる場所でどのような操作が行われているのかを考え始めました。そして思いました、Loggingです!
最初はちょっと遠回りな感じがしましたが、計測してみると理にかなっています。stdout への書き込みやファイルへのロギングは Python と同じ操作であり、書き込まれるテキストの量にもよりますが、10~20ms程度の時間がかかります。役に立つかどうかわからないタスクに費やされる時間の大部分を占めています。
非同期ロギングなど様々な選択肢を検討しましたが、ロギングレベルを下げることが最も効果があることがわかりました。私たちの開発環境は本番環境で使用しているコンテナを反映しているので、Locustを使用してストレステストを開発し、レスポンスタイムのデータを収集しました。最大の効果が得られたのは、ロギングレベルを以前の本番環境の設定であるDEBUGからINFOに変更したことです。この開発だけで、1分間に~18kのリクエストがあったとしても、本番では平均15ミリ秒の短縮になりました
APIの応答時間を改善することは、すべての人、特にヨーロッパやアジアの人にとって、顧客体験をより良いものにするための素晴らしい機会でした。
管理者のためのGitHubメトリクスの収集
Linode のソフトウェアエンジニアリングマネージャーは、チームの生産性に関するデータを収集する仕事をしています。彼らはPRやコミットなどのGitHubのメトリクスを利用して、この情報の一部を収集しています。しかし、Linode Cloud ManagerのようにGitHubのエンタープライズサーバーとGitHub上のオープンソースプロジェクトの両方にレポを持っているので、これは手間のかかる作業になります。私のマネージャーである Samir は、このデータ収集のスピードアップに協力できないかと尋ねてきました。
このプロセスは自動化のための準備ができていました。まずGitHubのAPIを調べてみたところ、公開されているGitHubとGitHub Enterpriseは同じAPIスキーマを共有しており、両方のケースでロジックを共有することが容易になりました。検索機能のおかげで、数回のAPIコールで必要な数字を得ることができました。
私は1週間以内に、コマンドラインツールとして使えるproof-of-conceptを構築しました。次のステップは、マネージャーが使用するためのWebインターフェースを提供することでした。このプロジェクトの規模に合わせて、私はVue.jsを使用しました。その結果、API キー、チームの名簿、日付範囲を取得し、それらを生の数字に変換してマネージャーが Google Sheets のようなツールに移動できる、小さなセルフホスト型のアプリができあがりました。
マネージャーはすでにこれらの指標を追跡する時間を何時間も節約しており、私のプログラムはインターンシップが終わった後も効果を提供し続けると確信しています。
自分の証明書を持参しましょう
多くのお客様は、静的なウェブサイトをホスティングするために当社のオブジェクトストレージサービスを使用しています。デフォルトでは、当社が所有する linodeobjects.com ドメインにあるSSL 証明書を提供しています。しかし、ユーザーが望む場合に自身の証明書を提供する仕組みはありませんでした。私の師匠の一人であるAdam Mohammed は、この機能を追加するアイデアを持って私のところに来ました。私自身 Object Storage のユーザーとして、この機能がお客様にもたらす価値を理解していたので、彼と一緒にこの機能を構築しました。
私の仕事は、この新機能をサポートするためのAPIインターフェースを構築することでした。新しい機能を構築することで、APIプロジェクトの隅々まで見て回ることができました。一枚岩の大規模なウェブアプリケーションであるため、理解しなければならない可動部分がたくさんあります。また私たちのシステムがどのように通信し、どのように連携するかについて、持っていた知識のギャップを埋めることができました。
このプロジェクトの大きな部分を占めていたのは、セキュリティに重点を置いたことでした。顧客の秘密を扱うことは簡単なことではなく、安全なサービスを提供していることを確認するために、計画を立て、議論し、チェーンのすべてのリンクをテストすることに何時間も費やしました。そのおかげでシステム設計の新しい視点を得ることができ、ユーザーの立場に立つことができました。お客様がこの機能を使い、楽しんでくれるのを見るのが楽しみです。
これでこの作業は完了です。証明書と秘密鍵のペアをアップロードすることができ、リクエストがバケットに来たときに Object Storage がそれを提供します。とても簡単です。この機能は、クラウドコンピューティングをシンプルにするという当社の使命を物語っています。私たちはプロジェクトやビジネスを構築するために必要なツールを提供します。
結論
私は3月にLinode に入社しましたが、会社初のエンジニアインターンとしてだけでなく、パンデミックの影響でリモートで入社した最初の社員でした。にもかかわらず、私は想像以上に多くのことを学びました。私のチームや部署は私を素直に歓迎してくれ、私が知らなかった質問にも答えてくれました。Linode の文化はお互いをサポートし合うことであり、これ以上に良い仲間はいませんでした。
ご覧の通り、私が引き受けた仕事は "インターン作業" ではありませんでした。私は会社のミッションを推進することを目標に、影響力のある、顧客を対象としたプロジェクトに携わっていました。技術的な知識だけでなく、この仕事は私に顧客を中心としたエンジニアリングの考え方を植え付けてくれました。これらのスキルは教室の外でしか身につかないものです。
この数ヶ月間は刺激的で、やりがいがあり、得るものが大きかったです。このような機会を与えてくれた Linode にとても感謝しています。
コメント