電通総研 テックブログ

電通総研が運営する技術ブログ

インフラの自動構築から属人性を排除するアプリケーションを開発しました

こんにちは。電通総研Xイノベーション本部プロダクトイノベーションセンターの中山です。好きなものは自動化、嫌いなものは属人化です。
この記事では、私の所属するチームがとある課題を解決するために開発したアプリケーションについて、課題の発見からアプリケーションの内容、開発にあたって重要視した価値観について掲載します。


背景(IaCの素晴らしさについて)

電通総研では様々なパッケージ製品を展開し、それらを様々な業界のお客様にお使い頂いています。
特に大企業のお客様にご利用頂く場合、パッケージ製品の標準機能にお客様専用のアドオンを付与し、インフラについても専用の環境を求められるケースが多くあります。
有難いことに数多くのお客様に製品をご利用頂いている電通総研としては、お客様ごとに専用となるインフラ環境を構築し、管理する必要が生じるわけです。

インフラを構築する方法として、最も原始的なのは、手順書を作成し、それに倣って構築を実施する方法です。
この方法は特別なスキルを必要とせず、チームへの導入が容易で、比較的属人化が発生しにくいという利点があります。一方で、人間が手順書を見ながら慎重に作業を行う必要がありますので、時間や工数などのコスト効率に課題があります。また、人間は必ずミスを犯してしまうという前提に立つと、作業ミスのリスクもあり、作業品質面にも課題があります。

この問題を解決するために、インフラをコード化して管理するInfrastructure as code(IaC)が近年広く使われるようになっています。代表的な技術として、Terraform等があります。
IaCは個人的にとても大好きな技術です。従来の手順書を用いてインフラを構築していた時代には、どのような作業を実施し、どのようなインフラを構築したか、といった作業履歴を残すのは大変な作業でした。ドキュメントの記述の粒度やルールを統一することには限界があり、作業者の性質にドキュメントの品質が左右され、運用が長期化するほどに、ドキュメントの信憑性が低下してしまうことは避けられない課題でした。
IaCの登場により、その状況は一変します。コードに厳密に定義した内容を入力として、インフラを出力するIaCにおいては、最新のコードの内容が、最新の環境を表す証拠そのものになります。コードはGit等のバージョン管理ツールを用いて管理することが可能なので、コードの変更履歴、すなわち、インフラの変更履歴を正確に管理できます。人間と違って、コードは嘘をつけません。このドキュメントは本当にちゃんと正確に更新され続けているのだろうか...等と悩む必要はなくなったのです。


属人化という課題

電通総研でも、様々なプロジェクトにIaCが導入されています。その中で、一つの課題が見えてきました。
IaCは非常に強力なツールですが、うまく標準化できないと、その資産が構築した技術者に依存してしまうということが発生します。例えば、「新規にインフラ環境を追加する」、「既存のインフラ環境の設定を少し更新する」、といった様々な作業が、下手をすると一人の技術者に依存し、その人でなければ作業が実施できない、といった状況へと陥ります。

世はまさに、超人手不足時代。業績を伸ばし続けている電通総研にとってもそれは例外ではなく、増え続ける案件の数に対して、IaCに対応できる技術者の数は限られています。そのようなある意味貴重な技術者に、運用で発生するあらゆる作業が依存されることは、本人にとっても周囲にとっても不幸なことです。プロジェクトにとってもリスクとなり得る、避けるべき事態です。


解決に向けて

そこで我々は、「新規にインフラ環境を追加する」、「既存のインフラ環境の設定を更新する」といった運用で頻繁に発生し得る作業を、シンプルなアプリケーション操作で実行可能となるよう標準化することで、この問題の解決へと乗り出しました。

頻発する運用作業がシンプルなGUI操作で実行可能になることで、属人化の問題を防止することに加え、このアプリケーションを導入することで、抽象化されて用意されている手順に従うだけで、高効率・高品質な作業プロセスが実現可能となるというところに、大きな価値があります。
加えて、これまでは別で管理していた管理運用に関わる情報を、こちらのアプリケーションに集約することも可能になります。


開発方針

このアプリケーションの開発に際して最も重視したのは、「まずはPMF(Product Market Fit)を確かめることに注力する」ということです。時間をかけて機能を作り込んでも、それらがユーザーにとって価値がなく、まったく使ってもらえないものとなってしまったら意味がありません。そこで我々は、「低コストかつ短期間で必要最低限の機能を備えた製品を開発し、実際にユーザーに使ってもらい検証し、学びを得ながら製品を磨いていく」というリーンスタートアップの考え方を取り入れてプロダクトを開発しています。ユーザーの反応を的確に取得して、より満足されるサービスに仕立てていくということが、何よりも重要なことです。


まとめ

非常に簡単にではありますが、我々のアプリケーション開発についてご紹介しました。
開発方針としてもご紹介した通り、我々の製品はユーザーの声を大切にしながら、日々進化を続けています。完成するアプリケーションも、それを支えるプロセスも、日々変化していくことを楽しみながら、これからも開発を継続していきたいと思います。

私たちは一緒に働いてくれる仲間を募集しています!

フルサイクルエンジニア

執筆:@nakayama.seiya2、レビュー:@nakamura.toshihiro
Shodoで執筆されました