ネオス株式会社 - Neos corporation

社員インタビュー

クラウド開発部インタビュー

AWSのパートナーとして、Dockerなどの技術を積極的に取り入れたインフラ設計・構築を行っています。

栗山昌大(クラウド開発部 マネージャー・写真左)
前職を含めるとインフラ一筋20年弱。ネオスには2008年に入社し、ECサイトやメディアサービス向けのインフラなど多くの案件を担当。前職時代と異なり、オープンソースやベアボーン系ハードウェアを標準とする環境に悪戦苦闘するも、すべてのトラブルを自前で解決しなければいけない環境にて精神が鍛えられる。クラウドネイティブ世代に負けまいと日々精進中。
浦祐介(クラウド開発部・写真右)
前職は独立系企業に勤務。オンプレミスやクラウドなどをマルチに取り扱うインフラのエンジニアを経て、ネオスに入社。ネオスの提供するコンテンツや、受託案件などのさまざまなクラウドインフラの構築から運用まで携わるクラウド開発部にて業務に従事。日々目まぐるしく変わる技術をシンプルに取り入れたシステムを提供することを心がけています。

2013年からAWSの商用利用を開始。いまでは開発案件の約70%を占める

─ まずはじめに、クラウド開発部が立ち上がった経緯を教えてください。

栗山:「クラウド開発部」となる前は、「システム開発部」としてオンプレミスのサーバーの構築・運用などを行っていました。「クラウド開発部」となったのは、クラウドを積極的に利用し始めた2012年からですが、もちろんそれ以前もクラウドのサービスは利用していて……具体的には2009年に提供が開始された、IDCフロンティアさんのクラウドサービス「NOAH」が最初ですね。

そうして探り探りクラウドを使っていましたが、2011年にAWSの東京リージョンが開始され、「日本でも使いやすくなった」ということで、我々の部署で、使い勝手も含めた調査を始めたという経緯です。

─ 本格的に商業環境でAWSを使い始めたのはいつ頃からでしょうか?

栗山:2013年に自社サービスの「DEKOIT(現在はCodette)」でAWSを初めて使用しました。以降はAWSの利用が一気に増えていって、現在では開発案件の約70%がAWSという状況です。これまでネオスでAWSを使ったプロジェクトは100件以上にのぼっていますね。

─ 現在クラウド開発部はどのような体制で案件を遂行しているのでしょうか?

栗山:6名のスタッフから成っていますが、6名それぞれの役割が分かれているというわけではなく、基本的には全員が設計・構築から運用までを一気通貫して行うことができます。そのため、案件の規模によって担当する人数や役割を都度調整していく感じですね。例えば、大規模案件では2~3名の体制で役割を分担して設計・構築を行いますが、小さい案件でしたらひとりで設計・構築を行い、運用のフェーズになったら案件情報を共有し、複数人体制で進行していく、といったイメージです。

いまのネオスの案件数をオンプレミスで開発していくということであれば、6名では足りないと思いますが、クラウドはオンプレミスと違って物理的なトラブルでデータセンターに出向くといったことがないですよね。そういった意味でも工数がずっと減りますから、適正人数ではあるのかなと思います。

インフラの設計・構築からアプリ開発まで、ネオスであれば一気通貫が可能

─ ネオスのクラウド開発部の特徴・強みについて教えてください。

栗山:クラウド開発部単体というよりは、ネオス全体として見たときの強みだと思いますが……インフラだけでなく、アプリケーションのフロントエンドもバックエンドも自前で開発できるところがネオスの強みだと思います。

AWSのインフラ領域とバックエンドのアプリケーション開発領域には被っている部分が多いため、連携して設計していかないといけないんですね。そういう意味でも、開発本部(札幌オフィス)とはこれまで様々な案件で連携してきているので、お互いをよく知っていて、やりやすい体制になっているというのは大きいと思います。

浦:そうですね。つい最近、インフラ設計がネオス(クラウド開発部)、インフラ構築は別ベンダー、アプリケーション開発はネオス(札幌オフィス)という案件をやりましたが、「これって意外に大変だな」と実感したプロジェクトでした。もしこれがインフラ構築もネオスだったら、一気通貫になるのでやりやすかったと思うのですが…。

ただ、いま言ったように我々はアプリケーションの開発チームと普段からやり取りしているので、インフラ開発の部分だけを担当したとしても、アプリを開発される会社さんとのやり取りはスムーズに行えると思います。

─ 現在ネオスはAWSのコンサルティングパートナー(システムインテグレータ/MSP事業者向け)ということですが?

栗山:そうですね。パートナー条件として、「テクニカルプロフェッショナル認定またはインストラクター付きトレーニング修了を受けたスタッフ2名/ビジネスプロフェッショナル認定を受けたスタッフ2名/AWS資格(アソシエイトレベル)を取得したスタッフ2名」というものがあるので、もちろんそこはクリアをしています。ですから、すべてのAWS案件について、有資格者が対応しているといった状況ですね。

Dockerを使用した案件にも取り組む

─ AWS案件で代表的なものをいくつがご紹介いただけますか?

栗山:まずは、Docker(ドッカー)という仕組みを使ったメディアサービスが挙げられます。

─ Dockerとは?

栗山:すごくざっくり言うと、AWSのEC2などIaaSがサーバハードウェアを仮想化しているのに対して、DockerはサーバーOS上のプロセスを仮想環境上で必要な機能のみパッケージ化して動かしているイメージですね。これによって、開発者のローカル上とAWS上で、基本的には同じ環境のもとアプリケーションを動かすことができる……正確には少し違うんですけど、詳しく説明すると膨大な時間がかかってしまうので(笑)。

なぜその仕組みにしたかというと、このメディアサービスは隔週でアプリケーション機能のリリースを行っているので、アプリケーション開発や動作検証、その後のリリースといったことをやりやすい環境が必要とされていたんです。ところが、もともとの環境では開発者のローカル環境の準備が難しかったり、AWS上の検証もミニマイズされた環境であったりと、環境ごとに差異がある状態でした。

そんななか、今回Dockerを利用したことで、検証環境と本番環境の統一が可能になったんです。リリースについても、CodePipelineやElasticBeanstalkなどを利用することで、サーバーを置き換えるブルーグリーンデプロイメントをすることが可能になりました。つまり、アプリケーションリリースのたびにサーバーをごそっと丸ごと置き換えることが可能になったんです。

─ 他にもメリットはあるのでしょうか?

栗山:サーバーを置き換える前に、まずサーバーを作る必要があるんですが、そのサーバーの設定情報というのがすべてGitHub上でソース管理されているんです。ですから、もしサーバーが無くなって消えてしまっても、インフラはコードからすぐにまた作り直すことができる。要するに、いま動いているサーバーのバックアップを取る必要がないんです。「Infrastructure as Code」とか「Immutable Infrastructure」と表現されるのですが、基本的には「インフラは使い捨てのもの」といったイメージですね。

浦:初めてDockerを導入したときは、なかなか複雑な構造をしているので正直なところ大変でした。Dockerを使わないAWS案件の場合、シンプルなものだと2~3個のAWSサービスが組み合わさっているくらいですが、Dockerを使った案件は10個以上のサービスが絡まっているので……これが動いたらこれが動いて、また違う動きでここも動いて、みたいな(笑)。自動化しているぶん、開発やサービス運用観点ではすごくラクな仕様になっているんですが、インフラ観点としては理解するのがかなりハードだった印象です。

栗山:本当に、サービス運用観点からみると優れていますね。このメディアサービスは外部メディアからの流入もあるのでアクセスが突然増大したりするんですが、Dockerを使った構成の場合、そういったバースト的なアクセスがあった際にサーバ数を増減させるオートスケールについても運用しやすい環境になっています。

「RenoBody」ではトラフィックの増大に対応するためAuroraを導入

─ ほかにもAWS案件で代表的なものはありますか?

浦:「RenoBody」でしょうか。最初は別のクラウドのMySQLで動いていましたが、歩数とWAONポイントを連携させることになって、一気にユーザーが増えるだろうと。「だったら、スケーラビリティに優れたフルマネージドなAWSのAurora with MySQL(以下「Aurora」)に移行したほうがいいんじゃないか」ということで導入しました。

栗山:Auroraはとても可用性の高いDBなので、「止まらないサービス」というものを考えたときに有用だと思いました。DBサーバーの冗長化の仕組みが、とてもよくできているんですよね。いまは落ち着いたようですが、やっぱりWAON連携をした当初はDB負荷がすごいことになっていて。Auroraを使えていなかったら、大変なことになっていたんじゃないかと思います。

同じようにトラフィックの観点から挙げると、「クレヨンしんちゃんお手伝い大作戦」のアプリケーション配信もAWSのインフラだからこそ、トラブルもなく100万ダウンロードといった負荷にも耐えられたかのなあと思います。

─ そうやってどんどん生まれる新しい技術を、どのように習得しているのでしょうか?

浦:少なくとも、AWSサミットなどのイベントには参加するようにしています。新しい技術やこれから力を入れていく分野、最近のトピックといったことが一度に吸収できるので……参加強制ではありませんが、ほぼ全員が参加していますね。

栗山:それにやっぱり、実際に使ってみるということですよね。使ってみないとわからないことがあるので、まずは自社系サービスで新しいことにチャレンジしてみて、そこでノウハウを吸収して、お客様の案件に反映していく。そういう意味でも、自社系サービスを持っているというのは大きいです。トライできる環境にあるという…。

浦:本当に、そのノウハウは活きるので助かっていますね。我々だけでなく、開発本部や営業のノウハウにもなっていきますから。

─ 今後、クラウド開発部として注力していきたい分野・技術などはありますか?

栗山:さきほど出たDockerとかコンテナというのは、今後かならず大きな波が来る……というか、もう来ているので、注力していく必要があると思っています。さらに、Dockerを統合管理する「Kubernetes」といったツールがAWSでも使えるようになってきているので、そのあたりも積極的に取り入れていきたいと思います。

浦:私はインフラの構築自動化に注力したいと思っています。「少人数でいかに効率的にインフラを構築していけるか」という施策に、まさにいま取り組んでいて。さきほど出てきた「Infrastructure as Code」のように、インフラもコード化できますから、そういったものを活用して、人の手が極力介在しない仕組みを作っていきたいと思います。