はてなのサーバ・ネットワーク基盤技術を探究するインターンの紹介

f:id:hatenatech:20170519115557p:plain:w600

Webオペレーションエンジニアの中で唯一のはてなインターン出身者である id:y_uuki です。この記事では、応募締め切り間近のはてなインターン2017の大規模システムコースを紹介します。

大規模システムコースは、はてなのサービスを支えるサーバ・ネットワーク基盤技術の開発・研究にチャレンジするコースです。
大規模システムを抱えるはてなならではの生の技術的課題を体感していただき、それらの課題の解決を通して、現場で通用する技術を学び、ウェブシステムの基盤技術に興味を持っていただきたいという思いで、このコースを開催しています。

はてなは、はてなブックマークやはてなブログをはじめとした多数のサービスを開発・運用しており、日々増加するワークロードに耐えられるようなシステム開発・運用を求められます。
システム自体が落ちずに24時間365日動き続け、ユーザーの皆様に快適にサービスを利用していただくために、高速にシステムを動作させることはもちろん、多数のサービスを人手をかけずに効率よく運用することも重要です。
そのためには、オペレーティングシステムやRDBMSなどのシステムソフトウェア、分散システム、セキュリティ、ハードウェア、ネットワーク、ウェブアプリケーションアーキテクチャなど、求められるスキルは多岐にわたります。
さらに、多くのシステムを開発・運用してきたノウハウを集約し、Mackerelというエンジニア向けサービスを提供しているのは、はてなならではの特徴だと思います。

テーマ例の紹介

大規模システムコースでは、例えば以下のようなテーマについて取り組んでいただきます。基盤システムの開発、もしくはシステムソフトウェアの検証などが主なテーマとなります。

ログの収集と分析基盤の開発・検証

アクセスログやエラーログなどのシステムの情報を効率よく収集し解析することで、今システムに何が起きて、過去に何が起きたのかを知る手がかりにします。
現在もログの収集を当然やってはいるのですが、仕組みが古く、刷新したいと考えています。

キーワード: Fluentd、Kibana、Elasticsearch、Amazon Athena、TresureData、BigQuery、Kinesis Streams、Kafkaなど

コンテナによるサーバ仮想化基盤の開発・検証

はてなでは、Xen Hypervisorによるサーバ仮想化基盤を導入しています。
このXenの基盤に加えて、ベアメタルサーバに近い性能を発揮できるコンテナを併用し、サーバ台数を減らし、インフラコストを削減することを狙っています。

キーワード: Xen、コンテナ、LXC、systemd-nspwan、マルチテナントリソース制御、cgroups など

MySQL/PostgreSQLのクエリごとのパフォーマンス可視化システムの開発

MySQLまたはPostgreSQLのスロークエリログやテーブル情報を収集し、パフォーマンス改善の手がかりにします。
特にテーブルごとの行数の変化などは人手で調査していることがあり、よりアプリケーションのデータ構造に踏み込んだパフォーマンス可視化をやりたいと思っています。

キーワード: RDBMS、MySQL、PostgreSQL、Kibana

Mackerelを用いたネットワークモニタリング基盤の開発

ネットワーク機器のモニタリングは、サーバのレイヤと比較して、世の中的にもまだまだ古い仕組みに頼っている状態だと思います。
そこで、ネットワークモニタリングをMackerelで行うためのツールの開発をしたいと思っています。

キーワード: Mackerel、ネットワーク、モニタリング、SNMP、libpcap、sFlow/NetFlow など

これらのテーマはあくまで一例です。この他に、セキュリティや機械学習、ウェブフロントエンドパフォーマンスモニタリングなどに関するテーマもおもしろいと思います。
実際には、応募いただいた方々の興味とスキル、研究分野を考慮して、個別に相談した上でテーマを決定します。

FAQ

過去の大規模システムコースではどんなことをやっていたのか

2012年

intern.hatenastaff.com

「SQLクエリを基に実サービスの特性を考慮したDBの管理システム」

日々変化するWebサービスに対し、どのクエリをどのDBで処理するべきかをサジェストし、人手による運用工数を削減するというシステムの開発に取り組んでもらいました。

2013年

hatenacorp.jp

「HTTPリクエスト・レンダリング時間測定ツールを作りSPDYの効果を検証!」

モデルとなるWebアプリケーションを作成し、SPDYプロトコルを用いてブラウザと通信させ、パフォーマンス測定し、ユーザ体験向上に有効であることを検証してもらいました。

2014年

hatenacorp.jp

「ChatOpsによるデプロイとオートスケールの制御と自動化」

Docker、Serf、Hubotを用いて、Slackにデプロイまたはスケールのコマンドを書くと、ChatBotがかわりにオペレーションしてくれる仕組みを開発してもらいました。

2015年

hatenacorp.jp

この年は2名でした。

「Xen Hypervisor仮想化基盤の性能評価」

当時、仮想化基盤がときどき不安定になる問題を抱えており、本番環境に近いワークロードになるように、MySQLやElasticsearchを模したワークロードを発生させる簡易ベンチマークツールを開発し、vcpuの割当個数やpinningを変化させ、性能を評価してもらいました。

この成果の続きを当時アルバイトだった id:taketo957 が引き継ぎ、仮想化基盤Xenの性能評価 / Performance evaluation of virtualization platform Xen // Speaker Deck のように成果をまとめています。

「PostgreSQLのクエリログの可視化と、オペレーションツールの開発」

PostgreSQLのクエリログをFluentdで収集し、Kibanaで可視化する仕組みの整備をやってもらいました。さらに、PostgreSQLのオペレーションツールとして、Pgtoolsというものを開発してもらいました。
前者は、実際の本番運用で、問題となったクエリの特定に一役買ってくれました。

大規模システムコースはどんな人を求めているか

はてなのバリューズの一つに「技術が好き」というものがあります。
大規模システムコースは、技術そのものに取り組んでいただくコースなので、技術そのものに強い興味のある方に来てほしいと考えています。
例えば、大学の研究室で、オペレーティングシステムやネットワーク、分散システム、データベース、ハイパフォーマンス・コンピューティングなどを研究している方々は、大規模システムコースの課題はイメージしやすいものだと思います。
必ずしも、研究分野と大規模システムコースで取り組む分野が一致している必要はなく、興味とスキルに応じて、柔軟に対応します。

わたしたちが考えている以上に、学生の皆様には選考通過のハードルが高いと思われているようです。
しかし、ものすごく高度なスキルを持った方のみに参加していただいているわけではありません。
昨年入社した新卒のエンジニアに、はてなインターンに応募しようと思ったが選考に通らないと思って応募しなかったと聞きました。
実際に社員として入社し、今ではバリバリ活躍しているぐらいなので、もし応募していれば、選考通過した可能性が高かったと思います。

わたしが2011年にはてなインターンに参加したときも、まず選考通過しないだろうと思いながら、応募書類でどうにかアピールして、奇跡的に参加できたようなものでした。当時の技術スキルを考えると、よくも選ばれたものだと思います。しかし、今では、もしそこで挑戦しなかったら、わたしの人生は大きく変わっていただろうと考えています。はてなインターンは、それくらいの成長の可能性を秘めたインターンだと思っています。

そういう意味では、少し上の目線をもってチャレンジする気概のある方に来ていただけるとうれしいですね。

はてなでは、普段どんなことをやっているのか

2016年はてなWebオペレーションエンジニアのアウトプット - Hatena Developer Blog に昨年のWebオペレーションエンジニアのアウトプットをまとめています。こちらが、大規模システムコースに関わる技術はどのようなものかを把握するための参考資料になります。
運用しているシステムがどのようなシステムなのかについては、はてなで大規模サービスのインフラを学んだ - ゆううきブログ に概要をまとめています。

わたしの場合、学生のころに、大学で技術的課題を体感するということがありませんでした。周囲の友人を見渡しても、どうやら世の中ではこういった課題があるらしいと教えられて、なんとなく研究するといったような状態にみえました。
前述のエントリにあるように、企業にはとにかくたくさんの技術的課題があります。ただし、解決のアイデアがない、もしくはアイデアを実装する暇がないというのはよくあることです。そこで、学生の皆さんには、生の技術的課題を体感し、技術や研究に対するモチベーションに繋げていただきたいと考えています。

応募

はてなインターン2017は、来週月曜日正午(2017年6月26日(月))に応募締め切りとなっています。
大規模システムコースは、毎年必ず開催されるわけではありません。2012~2015年まで開催されましたが、昨年は都合により開催しておりません。来年開催される保証はありませんので、興味をもっていただいた方はぜひ今年応募していただければと思います。
技術が好きな学生の皆さんをはてな京都オフィスでお待ちしています。