みなさんこんにちは、アプリ基盤チーム兼Necoプロジェクト所属の @ueokande です。
この夏もサイボウズではエンジニア向けのサマーインターンを東京・大阪・松山オフィスで開催しました。 今回はインターンのコースの1つである「インフラ刷新プロジェクト」コースの様子について紹介したいと思います。
インターンの概要
インフラ刷新プロジェクトコースでは、8月6日〜10日と20日〜24日の2回開催しました。 それぞれの日程では学生が3名ずつ、合計6名の学生が参加してくれました。
サイボウズでは「Neco」と呼ばれるインフラ刷新プロジェクトが進んでいます。 インフラ刷新プロジェクトコースでは、実際にNecoで開発しているアプリケーションを触ってもらい、Necoで開発してるアプリケーションやサイボウズのインフラについて学んでもらいました。 このコースではリアルなNecoプロジェクトの活動を肌で感じてもらうため、実際に社内やcybozu.comで利用するコードを触ってもらいました。
インフラ刷新プロジェクトコースでやったこと
コースでは、Necoの開発タスクから、取り組めそうなタスクをピックアップしました。 インターンでは実際に機能を追加するまでの設計・実装をしてもらいました。 開発の進め方は実際にNecoでやっているように、kintone上でコミュニケーションをとったり、開発メンバーによる本格的なレビューもしました。 そのうえで、アプリケーションのコードだけでなく、テストコードやドキュメントなども書いてもらいました。
学生さんが書いたコードはレポジトリにもマージされ、コントリビュータにも登場しています!
以下、いくつか取り組んでもらったタスクを抜粋します。
- 機材情報にラベルを付与する: Necoではデータセンター内の物理機材を管理すために、sabakanというアプリケーションを開発しています。 sabakanは各機材のシリアル番号や格納ラック、IPアドレスなどを保持します。 このタスクでは、機材情報にラベルを付与できるように、sabakanの機能追加をしてもらいました。
- ブートサーバーでカーネルパラメーターを設定: sabakanは機材データベースだけではなくネットワープブートする機能があります。 ブート時のカーネルパラメーターでは、QEMUのシリアルコンソールを有効にしたり、IOスケジューラーを設定をしており、これまではsabakanにハードコードしてました。 このタスクでは、sabakanのカーネルパラメーターをユーザーが自由に設定できるよう実装してもらいました。
- Kubernetsクラスタのブートストラップ: NecoではKubernetesを構築・管理するためにCKE (Cybozu Kuberenetes Engine) というアプリケーションを開発しています。 CKEは対象ノードに対して、Kubernetesコンポーネントをデプロイして、Kubernetsクラスタを構築・管理します。 インターンではKubernetsコンポーネントの1つであるkube-proxyをデプロイする機能を実装してもらいました。
勉強会
取り組んでもらっているタスクとは別に、インターンを通して勉強会をいくつか開催しました。 デザイングループの小林(@sukoyakarizumu)によるWebアクセシビリティの勉強会がありました。 インフラ刷新プロジェクトコースでも、KubernetesやetcdやGoの勉強会も開催しました。
最終発表&懇親会
最終発表は他のコースとの人たちも参加して、社員も含めて50人ちかくの人たちが参加しました。 テレビ会議システムを使って大阪・松山拠点とも接続し、合同で発表や質問を交わしました。 他のコースの発表もみんな興味津々で、活発な議論や意見交換が行われました。
成果報告会のあとは打ち上げです!
インターン生たちの感想
最後に、インターン生から感想を頂いたので、いくつか紹介します。
実際の業務で使用されるアプリケーションの開発にかかわることができたのがよかったです。 OSSだったので自分のGithubアカウントがContributorに入っていて感慨深い。 現場で働く雰囲気みたいなものを少しは知ることができたように思いました。 職場の雰囲気が明るく、過ごしやすい環境でインターンができて本当に良かったです。 実務に関わる機会はなかなか得られないので、今後の就職活動でも大いに参考にさせていただきたいと思います。ありがとうございました!
実際のプロダクト開発に携われると思っていなかったので驚きましたが、そのほうが自分も責任をもって開発ができたと感じました。 コンテナを使うような今どきのインフラ整備の初期段階に関わることができ、プログラムの実装や関連技術についての勉強会も適宜必要に応じてしていただき、ためになりました。 インフラ関連のインターンが少ない中、実際の実務を体験できる内容で良い経験でした。想像していたよりも内容が濃くて、良い意味で期待を裏切られた感じでした。
実際の業務で、難易度が低くもなかったので自分を燃やし尽くすことができました。 オンプレのサーバ運営を知ることができたのはありがたいです。 期間が短く、短期集中できるのはよかったです。 普段体験できない未知の領域に踏み込むことができ、かつ自分の力を総動員して立ち向かえる素晴らしいインターンでした。 一週間ありがとうございました。
まとめ
インフラ刷新プロジェクトコースの開催は今年が初めてとなります。 AWSなどのパブリッククラウドが全盛の時代、インフラの低レイヤな部分に触れる機会はすくなくなっています。 しかし、AWSを使っていてもトラブル発生時にはカーネル周りや低レイヤーの知識は必要になってきますし、サイボウズ規模のクラウドをオンプレミスで運営している会社もそう多くありません。 このインターンを通じて、少しでもインフラ技術の楽しさを伝えることができたのであれば、我々としては大成功のインターンだったと思います。
自分にとっても初めてのインターンシップ受け入れでしたが、たくさんの学生と交流できて楽しかったです。 またインターンで取り組んでもらった作業も、最終的にはマージして、サイボウズのコードに成果として取り込まれて、個人的にもよいインターンシップを開催できたと思います。 学生の皆さんの、今後の活躍も期待しています!