ENGINEER INTERVIEW 01

NAVITIME JAPAN ENGINEERS

サーバサイド開発エンジニア

マルチクラウドへの挑戦。

より良いクラウド環境へ簡単に移行できる。

それが当社のサーバ戦略です。

サーバサイド開発エンジニア

マルチクラウドへの挑戦。

より良いクラウド環境へ簡単に移行できる。

それが当社のサーバ戦略です。

  • Kenichiro

    2011年 中途入社
    理工学部基礎理工学専攻修了

  • 大学院修了後、シンクタンクに就職。数値解析の研究員として勤務した後、ナビタイムジャパンに転職。次世代エンジン開発、ルート開発、ガイダンスエンジン開発などのプロジェクトを歴任し、現在はサーバ開発プロジェクトで設計・開発を担当している。

アウトプットが自分の成果として
評価されない仕事はつまらなかった。

私は大学院修了後、シンクタンクに就職し、数値解析の研究を行っていました。お客様から依頼を受けたデータを解析するのがおもな仕事でしたが、自分が出したアウトプットが自分の成果として評価してもらえない環境に不満を感じ、転職先を探していました。当社に興味を持ったのは、学生時代に学んでいたアルゴリズムの知識を活かすことができそうな数少ない会社だったからです。入社後は次世代経路探索エンジンの開発プロジェクトをはじめ、アプリケーション系の設計・開発をいくつか経験しました。現在は、当社がサービスを提供するために使用するサーバプログラムの設計・開発・構築を担当しています。これまでで一番の大仕事だったのは、現在も継続中の、経路探索のエンジンサーバをリプレイスするプロジェクトです。このサーバは、当社の創業当時から使われ続けてきたレガシーと言えるものでした。長年にわたるチューンナップで最適化が進んでいたので、下手なサーバに移し替えたのではパフォーマンスが落ちてしまう可能性もあります。しかし、今後、サーバそのものをクラウド化していく重要性を考えると、いつまでも手を出さないわけにはいかない。そんな難しさを抱えたプロジェクトでした。

目標は、どこへでも持っていける
最速のシステムでした。

探索エンジンサーバのリプレイスに当たって私が強く主張していたのは、Dockerという新しい仮想化技術を採用することです。従来の仮想マシンがハードウェアの仮想化から行うのに対し、Dockerが仮想化するのはOSから上のレイヤー。そのため、圧倒的にパフォーマンスが高いのです。もちろん、現状で最も高いパフォーマンスが得られるのは、高速なマシンに最適化した環境を構築することですが、これではシステムがマシンに依存するので、クラウドへの移行が困難になってしまいます。言ってみればシステムのポータビリティーとパフォーマンスはトレードオフの関係なのです。

Dockerを採用しながらパフォーマンスを向上させるため、開発言語にはC++を採用。またDockerによるサンドボックス化で閉鎖空間を作ったことにより、ライブラリ関連のエラーを起こさずに構築を行うことができました。その結果、構築にかかる時間を大幅に短縮し、大きなトラブルもなく新しいエンジンサーバを完成させることに成功。現在は旧サーバから新サーバへ、少しずつ機能を移管しているところです。今のところ、旧サーバと比べてパフォーマンス面でも問題は出ていません。

探索エンジンサーバのリプレイスに当たって私が強く主張していたのは、Dockerという新しい仮想化技術を採用することです。従来の仮想マシンがハードウェアの仮想化から行うのに対し、Dockerが仮想化するのはOSから上のレイヤー。そのため、圧倒的にパフォーマンスが高いのです。もちろん、現状で最も高いパフォーマンスが得られるのは、高速なマシンに最適化した環境を構築することですが、これではシステムがマシンに依存するので、クラウドへの移行が困難になってしまいます。言ってみればシステムのポータビリティーとパフォーマンスはトレードオフの関係なのです。Dockerを採用しながらパフォーマンスを向上させるため、開発言語にはC++を採用。またDockerによるサンドボックス化で閉鎖空間を作ったことにより、ライブラリ関連のエラーを起こさずに構築を行うことができました。その結果、構築にかかる時間を大幅に短縮し、大きなトラブルもなく新しいエンジンサーバを完成させることに成功。現在は旧サーバから新サーバへ、少しずつ機能を移管しているところです。今のところ、旧サーバと比べてパフォーマンス面でも問題は出ていません。

C++からの脱却が、
エンジニアとしての野望です。

私たちのチームが最終的にやりたいと思っているのは、システムをどのクラウドへでも自由に移動できる環境を整えること。クラウドサーバ業界は、現状ではAWSが優勢ですが、この先どうなっていくかは分かりませんし、コスト面の折り合いもあります。当社のサービスに最適なクラウドが登場してきたら、いつでも迅速に移動できるようにしたいと考えています。もうひとつ、一エンジニアとしての野望は、構築に使用したC++をJavaやScalaなどの言語に置き換えることです。パフォーマンスだけを見ればC++のほうが良いのですが、構築の利便性ではJavaやScalaのほうが圧倒的に高いの

です。そのためシステムのフロントエンドを切り離せるようにしておくという小技がすでに仕込んであって、今は移行させるチャンスをこっそりと狙っています。私を含めて多くのエンジニアは新しい言語への関心が強いですが、そうした個人的な思い入れも認めてもらえる環境のもとで、バイタリティを持って仕事を進めているのがナビタイムジャパンという会社です。やりたいことをやらせてもらえるから、こちらも真剣になるし、こだわりも出てくる。だからこそ、エンジニアとして最高の仕事ができるのです。

私たちのチームが最終的にやりたいと思っているのは、システムをどのクラウドへでも自由に移動できる環境を整えること。クラウドサーバ業界は、現状ではAWSが優勢ですが、この先どうなっていくかは分かりませんし、コスト面の折り合いもあります。当社のサービスに最適なクラウドが登場してきたら、いつでも迅速に移動できるようにしたいと考えています。もうひとつ、一エンジニアとしての野望は、構築に使用したC++をJavaやScalaなどの言語に置き換えることです。パフォーマンスだけを見ればC++のほうが良いのですが、構築の利便性ではJavaやScalaのほうが圧倒的に高いのです。そのためシステムのフロントエンドを切り離せるようにしておくという小技がすでに仕込んであって、今は移行させるチャンスをこっそりと狙っています。私を含めて多くのエンジニアは新しい言語への関心が強いですが、そうした個人的な思い入れも認めてもらえる環境のもとで、バイタリティを持って仕事を進めているのがナビタイムジャパンという会社です。やりたいことをやらせてもらえるから、こちらも真剣になるし、こだわりも出てくる。だからこそ、エンジニアとして最高の仕事ができるのです。

  • CTOメッセージ

  • 技術紹介

  • 01 サーバサイド開発エンジニア
  • 02 アルゴリズム開発エンジニア
  • 03 地図フレームワーク開発エンジニア

pageTop