セキュリティは、DevOpsやアジャイル開発にブレーキをかけるのか――マネーフォワード流DevOps実践のポイントDevOps時代のテスト自動化カンファレンス(中編)(1/2 ページ)

2016年12月6日に開催されたセミナー「DevOps時代のテスト自動化カンファレンス〜はやく、いいものを届けよう〜」のレポート第2弾では、マネーフォワードの担当者を招いてのランチセッションの模様をはじめ、DevOpsとセキュリティ、テスト自動化の関係を解説していく。

» 2016年12月26日 05時00分 公開
[高橋睦美@IT]

 市場ニーズを素早く形にし、「ビジネスの成果を獲得するまでのリードタイムを短縮する」上で重要な手法となる「アジャイル開発」や「DevOps」だが、これらの取り組みにおいて「テスト」というプロセスをどう組み込むかが「いいもの」を作れるかどうかの大きな分かれ目となる。管理すべきコード、テストすべきコードが増加する中で必要十分なテストを実施し、開発サイクルを素早く回す鍵として注目されているのが自動化だ。2016年12月6日に東京で開催されたセミナー「DevOps時代のテスト自動化カンファレンス〜はやく、いいものを届けよう〜」の講演を基に、そのエッセンスを探っていこう。

 講演内容は、3回の連載で紹介していく。前回は、AbemaTV/サイバーエージェント、日本シノプシス、丸紅情報システムズの講演を紹介した。今回は、マネーフォワード、リックソフト、アシストの講演を紹介する。

マネーフォワード流DevOps実践のポイントは?

マネーフォワード 執行役員 CISO最高情報セキュリティ責任者 市川貴志氏

 家計簿アプリを皮切りにサービスを拡張し、FinTech領域で存在感を示すスタートアップ、マネーフォワードは、2013年のサービス開始の時点からDevOpsに取り組んできた。とはいえ、DevOpsというキーワードが先にあったのではなく、変化の激しい市場の中でいち早くサービスを形にすべく取り組んできた結果、気付いたらDevOpsスタイルにたどり着いていたという。

 2016年12月6日に開催されたセミナー「DevOps時代のテスト自動化カンファレンス〜はやく、いいものを届けよう〜」のランチセッションでは、マネーフォワードの執行役員 CISO最高情報セキュリティ責任者の市川貴志氏とCISO室 鈴木研吾氏を招き、@IT編集長の内野宏信による公開インタビューの形式で、DevOps実践のポイントを探った。

 マネーフォワードを含め新しいWebサービスは、市場に出し、ユーザーに触ってもらわなければ分からない部分が多い。従ってウォーターフォール型で開発していては手戻りが多過ぎる。同社では「自分たちで作り、メンテナンスし、不具合が起きたら調査と対応を行うといった具合に、開発者がアプリの開発からシステム運用まで一気通貫でできるようにしたいと考えている」(市川氏)という。

 そこで、開発にRuby on Railsを採用していることもあり、「テストをコードで表現し、自動化している。機械にできるものはできるだけやらせるようにしている」(市川氏)。また、組織によって向き不向きがあるとしながらも、「アウトソースすると、プロマネや管理系の業務が増えると思っている。小さなチームでクイックに動き、ユーザーに価値を届けるために、開発やシステム運用の壁を越え、自分たちで開発、運用し、気付いた点を改善するようにしている」という。

 もう1つ、一般の金融システムが実装するような複雑な業務要件を満たすために、時間をかけて構築するのではなく、「なるべくシンプルにして、運用しやすくミスしにくい仕組みにすることでバランスを取っている」のも、マネーフォワード流だという。

@IT編集長 内野宏信

 では開発以外の部分、例えば社内の意思決定のスピードはどのように速めているのだろうか。市川氏は「僕も前職で『ハンコリレー』の辛さはよく知っている。決裁フローは可能な限り簡素化するに越したことはない。そのために、実務をあまり知らない承認者が形式的に行うのではなく、そのチームがしっかり責任を持って、最適だと思える判断を最短で下すのが、会社という組織を動かしていく上で大切だと思う」と述べた。会社が急成長し、仲間が増えれば増えるほど、総体的に意思決定のスピードが鈍ることは避けられない。しかし「可能な限り工夫し、以前のスピードに近づけるよう常に改善している」という。

 現在マネーフォワードでは、CI(継続的インテグレーション)ツールとして「Jenkins」を、インフラのデプロイには「Itamae」を、テストには「Serverspec」を活用している。ただ決してツールありきで選んだのはなく、Ruby on Railsで開発し、社内にRubyのコミッターもいるという環境を前提に、ソースコードの量やテストの規模、数といった自社のスタイルに合うものを適材適所で選んだ結果だ。同様にマイクロサービス化についても、密結合課題を単に「細分化すること」で解決しようとすると、オーバーヘッドが増える可能性があるので、細分化の粒度は慎重に検討したいと考えているという。「流行したからといって言葉に惑わされることはない。適切に設計することが大切だと思う」(市川氏)

DevとOpsが互いに手を伸ばし合う文化を

マネーフォワード CISO室 鈴木研吾氏

 セキュリティは、DevOpsやアジャイルな開発スタイルにブレーキをかける存在と見られがちだ。「DevOpsによる開発のスピードとセキュリティの担保をどのように両立させているのか」という質問に対し、鈴木氏は「当然ながらセキュリティは大切だが、セキュリティだけに時間をかけていてもいけない。スピードを速くして、かつセキュリティを確保することが大切だ。時間がかかるのは、従来のような人手で対応する部分なので、それを解決するため、今、積極的にセキュリティをCI側に寄せていこうとしている」と述べた。

 具体的にはCircleCIを活用し、Dockerのイメージをデプロイする際の設定ファイルを管理し、ステージング環境で自動的にテストを行い、問題がなければタグを付けてリリースする流れを構築している。ここでもまた「人手による運用をなくすようにしている」(鈴木氏)。並行して、定期的にWebアプリケーションのセキュリティ診断を実施しつつ、オープンソースソフトウェア(OSS)を活用してSIEM(Security Information and Event Management)を構築し、デプロイした環境で不審な挙動、異常がないかを監視しているという。

 OSSやクラウドはセキュリティが心配だから使いたくないという意見もあるのではないか。この問いに鈴木氏は、「そうした新しい技術を使ったシステムでどういったリスクがあるかをきちんと分解して考え、そのリスクに手を打ってコントロールすれば、後はスピードに任せていいのではないか」と答える。

 鈴木氏は、「DevOpsで一番大切なのは、Dev側とOps側の相互理解だ」と述べ、1つ失敗例を挙げてくれた。

 以前、Webアプリケーションの変更の際にSQLインジェクションをはじめとする脆弱(ぜいじゃく)性が入り込まないよう、デプロイ前にCIツールで自動的にテストを行う仕組みを入れたことがあったそうだ。「しかし、うまくいかなかった。日常的に画面構成を変えていたので、一度テストを作っても次の日には使えなくなってしまう。Ops側の人間が、毎日どのくらい画面構成を変更しているかというDev側の状況を把握していなかったため、いたずらにコストを増大させてしまった」(鈴木氏)

 この例にも見られるように、DevOpsを価値あるものとするためには「DevとOpsの距離を縮めること。今目指している目的に向け、理解しながらうまい具合に融和を図ることが大切」(鈴木氏)であり、「DevからOpsへ、OpsからDevへ、できるだけ手を伸ばし合いながら、2つが離れないよう近いところにいる文化を築くこと」(市川氏)も欠かせないと口をそろえる。

 ツールは、そうした文化の上で使うものであり、「自動化できるところはできるだけツールに任せ、人間は人間にしかできないところに注力すべき」(市川氏)。それがDevOpsを回し、デジタルビジネスを加速させるためのポイントになるだろう。

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。