ENECHANGE株式会社において、全社的な技術基盤を支えている部署がCTO室です。各部署のインフラの計画・導入や情報セキュリティの教育、さらには全社的な技術戦略の策定など、多岐にわたるIT基盤の整備を担当しています。CTO室が存在することにより、各部署はプロダクト開発に専念でき、かつ組織横断で技術の最適化やナレッジの共有が進みます。縁の下の力持ちとして、会社全体の技術的な成長を後押しする役割を果たしています。
今回は、CTO室に所属するVPoT兼マネージャーの岩本隆史とエンジニアの深堀哲史、常盤匠に、これまでCTO室が担ってきたプロジェクトの事例について聞きました。
ハイスキルなエンジニアが集まり、全社的な技術基盤を支える
――みなさんの簡単な自己紹介からお願いします。
岩本:VPoTとCTO室のマネージャーをしています。2021年7月にENECHANGEに入社し、直後からCTO室のインフラエンジニア兼SREとして参画しました。その後、前任のVPoT兼CTO室のマネージャーだった方から、その役割を引き継ぎました。
私はこれまでのキャリアのなかで、社会貢献度が高いとか、自分が誇りに思えるような会社で働きたいと考えて企業選びをしてきました。前職のアマゾン ウェブ サービス ジャパンを退職することを決めてからもそうした軸で会社を探していたところ、ENECHANGEを見つけました。
ENECHANGEの取り組む事業というのは、エネルギーの課題という、人類の存続にも関わるくらい重要なテーマを扱っていますので、この領域で仕事をしたいと思いました。
深堀:私は入社したのが2019年で、かつてはエネルギークラウド事業部のバックエンドエンジニア兼プロジェクトマネージャーとして、顧客との要件調整・折衝やプロジェクトの管理、システムの設計・実装など幅広い業務を担っていました。
より技術にフォーカスした働き方をしたいと考え、2022年にCTO室へ異動し、いまはバックエンドやクラウドインフラを扱うエンジニアとして、さまざまなプロジェクトを担当しています。
私も岩本さんと同じように、ENECHANGEが解決しようとしている社会課題に魅力を感じました。それに加えて、他にも会社との縁を感じたエピソードがあります。新卒でSIerに勤めていた頃、転職活動でENECHANGEと一度やりとりをしたんですよね。その際には結局転職はしなかったんですが、久しぶりにまた同じ転職サービスでENECHANGEとやりとりをする機会があり、ENECHANGE側からも「3年ぶりですね」と返事をもらいました。これは何かの縁だと思い、採用面接を受けることにしました。
常盤:私は入社が2021年11月で、今年の10月からCTO室に異動しました。異動前はエネルギークラウド事業部に在籍し、バックエンドをメインとしたWebアプリケーションの開発や、顧客との折衝などを担当していました。
CTO室にはハイスキルなエンジニアが集まっており、担当するプロジェクトも技術的に難易度の高いものが多いです。この部署で働くことで、エンジニアとしてより高いスキルを身に付けられると思いました。異動してからまだ間もないので、今回のインタビューではCTO室で担当したプロジェクトではなく、エネルギークラウド事業部からCTO室がどう見えていたかなどをお話しできたらと思います。
Amazon ECSへの移行により運用負荷を軽減
――ENECHANGEのCTO室は、全社的な技術基盤を支える役割を担っているのですよね?
岩本:そうです。大きく分けると「各サービスのインフラ(サーバー、ネットワークなど)の計画・導入・運用・保守」「情報セキュリティの技術視点でのエンジニア教育」「全社的な技術戦略の策定と事業部の技術支援」「技術ブランディングおよび採用活動の補助」という4つの業務を担当しています。
今回のインタビューでは、CTO室が推進したプロジェクトの事例について、いくつかお話しします。まずは、深堀さんからAmazon ECS化対応について説明してもらいます。
深堀:かつてENECHANGEでは、Webサーバーを動かすためにAWS Elastic Beanstalkを使っていました。そして、それらのサーバーの新規構築やプログラミング言語・ライブラリのバージョンアップなどに伴う環境の再構築、不要になったサーバーのリタイヤメントなどの作業はすべてCTO室が行っていたんです。
ただ、この当時もCTO室は人数が少なく3~4人ほどだったため、限られたメンバーだけで全アプリケーションのProductionやStaging、Development環境をすべて管理するのはかなり大変でした。
また、AWS Elastic Beanstalkではデプロイの各フェーズでフックを使用できますが、フックの処理の内容はブラックボックス化されているため、障害などが起きた際にデバッグをすることが困難です。
こうした課題を解決するために、全アプリケーションをコンテナ化して、Amazon ECS上で動かすことを目指したのがこのプロジェクトになります。単にAWS Elastic BeanstalkをAmazon ECSにリプレイスするだけではなく、プロダクトチームがある程度インフラの領域も管轄できるようになることを目指しました。
このプロジェクトによって、使用するプログラミング言語・ライブラリのバージョンなどをDockerfileで管理できるようになったため、バージョンアップはDockerfileの修正で対応可能になります。
そして、あるプロダクトの環境をAmazon ECS化した後、それをもとにしてCTO室が環境構築のためのTerraformのモジュールを用意したことでプロダクトチームが環境の立ち上げを担えるようになりました。前述のようにデプロイの処理がブラックボックス化していたという課題も、Amazon ECS化によって解消されたため運用の負担が減りました。
他にも、アプリケーションのデプロイがより楽になるように各プロダクトのリポジトリにあるコードを修正していったり、コンテナやBlue/Greenデプロイメントについて学べる資料を作ってプロダクトチームに共有したりといった活動も推進しました。その結果として、CTO室の負担は大きく軽減できました。
――このプロジェクト推進時、常盤さんはエネルギークラウド事業部に所属していましたが、プロダクトチームからはどう見えていましたか? 常盤匠
常盤:Amazon ECS化する前は、プロダクトチームはインフラを触る機会がほとんどなく、インフラ関連の作業はCTO室に依頼をするしかない状態でした。ですが、Amazon ECSの導入に加えて丁寧に資料も作ってもらえたことで、インフラについて学ぶきっかけになりました。
また、プロダクトチームがよりAWSに触れられるようにIAMの権限も付与してもらいましたし、チームによってはCTO室に頼らずにTerraformのモジュールを活用すれば簡単にインフラを構築できる体制に変わりました。
こうした環境や体制の変更に伴い、プロダクトチームのメンバーたちはインフラのスキルを身に付けるモチベーションが向上しました。AWSの資格を取得するとか、インフラ関連のタスクに積極的に取り組む動きが見られるようになったんです。Amazon ECS化が運用の効率化につながっただけではなく、エンジニア個々人のスキルの幅を広げる転機にもなりました。
処理可能なユーザー数を30万→500万に増やすためのアーキテクチャ刷新
――他の事例についてもお話しください。
深堀:エネルギークラウド事業部のDRユニットが担当している、大手エネルギー事業者向けのプロダクトがあります。現在は約30万ユニークユーザーの規模なのですが、それが今後は約500万ユニークユーザーまで増えるという事業計画があります。
シンプルなWebアプリケーションであれば、単純にサーバーをスケールアウトすれば対応可能だと思います。ですが、このプロダクトでは処理のなかでデータ分析を活用しています。データ量が増えた場合でも問題なく処理できるかが不透明であったため、CTO室が検証やアーキテクチャ構築の支援に入ることにしました。現在進行形でアーキテクチャを改善しています。
――すでに改善できている箇所についてご説明いただけますか?
深堀:対応が済んでいる箇所として、メール送信処理のアーキテクチャが挙げられます。旧アーキテクチャでは、Redisに投入されたジョブキューをPythonの非同期ジョブ用のライブラリで受け取り、コンテナを数十個ほど並列で動かしています。そして、処理した結果をAmazon SQSに放り込み、Amazon SQSからAWS Lambdaを経由してAmazon SESを呼び出してメールを送っています。
しかし、このアーキテクチャでは並列度を上げるとAmazon SQSのスロットリングやRedisのOOMエラー、ネットワークのIP枯渇などの問題が発生していました。
これらのボトルネックを解消するためにPythonの非同期ジョブ用のライブラリを廃止し、AWS Batchを入れて横にスケールしやすい仕組みにするとか、AWS Step Functionsを導入してワークフロー管理できるようにするといった改善をしました。
これによりスループットが20倍ほどになり、データ量が増えても問題なく処理できるようになりました。
また、他にも電力使用量のデータ取り込みという、大量のファイルをインプットしたうえでフォーマット変換をかけ、大量のファイルをアウトプットする月次の処理がありました。この処理ではAmazon S3にインプット用のファイルを置き、ファイル設置されたというイベントをフックしてAmazon SQS経由でAWS Lambdaを呼び出していました。
AWS Lambdaはこの処理ではAmazon DynamoDBで排他制御を行っているのですが、Amazon S3のファイル転送量が膨大であるとか、排他制御のロック待ちに起因した処理の遅延が発生していました。
これを、大量ファイルの処理に適しているApache Sparkを導入することでパフォーマンス改善をしました。マネージドサービスであるAmazon EMRで動かしているため、運用の負担も軽減できています。アーキテクチャ改善によりデータ量を増やしても処理時間は140分から17分へと短縮でき、処理一回あたりのインフラコストも約150ドルから約7.5ドルに削減できました。
深堀哲史
チャットボットの有効活用のため、OSSにもコントリビューションする
――岩本さんからも事例をお願いします。
岩本:生成AIと会話できる、Slackbotを導入した話をします。昨今、生成AIがとても便利になっていますので、弊社でもそうした技術を積極的に導入しています。私たちは社内のコミュニケーションのためにSlackを使っていますが、たとえばChatGPTなどの生成AI Webサービスを利用する際にいちいちSlackとブラウザを切り替えるのがまどろっこしいと私は感じていました。そこで、生成AIと会話できるようなSlackbotを導入すれば、業務効率化につながるだろうと思ったんです。
そこで、ChatGPT-in-SlackというOSSを導入しましたが、不便な点もいくつかありました。このOSSではOpenAIが提供するPythonライブラリを利用しているため、他社製のAPIを呼べなかったんですね。そこで、Microsoftが提供しているAzure OpenAI ServiceのAPIエンドポイントも使えるように、私がPull Requestを出しました。
GPTの新しいバージョンも使えるようにコントリビュートを続けていったんですが、そうこうしているうちにGPT以外のモデルもどんどん優秀になってきました。OSSの作者に「さまざまなモデルを呼び出せるようにライブラリを修正しませんか」とIssueを起票して質問してみたんですが、対応する予定はないというお返事をいただいたんです。
ならば、自分でより使い勝手のいいライブラリに変えていこうと思い、ChatGPT-in-SlackをforkしてCollmboというOSSを作りました。ENECHANGE社内のSlackでは、私が作ったこのCollmboが動いています。
このSlackbotを導入したことで、開発職のメンバーはもちろん、ビジネス職のメンバーの業務効率化にもつながっているようです。それまでGoogle Apps Scriptを書いたことのない人が、Slackbotとやりとりをしながらプログラムを組むような事例も出てきています。
岩本隆史
会社への貢献と技術的な研鑽の両立ができる
――CTO室で働くことの魅力はどのような点にあるでしょうか?
深堀:新しい技術を取り入れたり、R&D(研究開発)をしたりというプロジェクトが多いことが非常にうれしいですね。会社への貢献と自分自身のスキルアップが同時にできるのが、CTO室の仕事の大きな魅力です。
常盤:あらゆる事業部から頼られることが多いので、特定の事業やプロダクトだけにとどまらず会社全体に価値を提供できることが魅力です。難易度の高い依頼が来ることも多いので、相応の技術力やコミュニケーションスキル、調整力などは必要になりますが、そうした仕事を通じてスキルアップできるのが楽しいです。
岩本:私たちは主にAWSを使用しているので、AWSの知識は間違いなく増えていきます。私は今年、AWS Community Builderに選出していただいたのですが、これはENECHANGEのCTO室で活動したからこそ実現できたことだと思います。さらに、AWS以外のパブリッククラウドも使っていますし、IaCやCI/CD系のツールなどにも触れることができ、それらを用いてシステムの改善提案ができるのは非常に面白いですね。
――それでは最後に、将来的にCTO室のメンバーとしてENECHANGEに参画する可能性のある方々に向けて、メッセージをお願いします。
岩本:私が個人的に考えている目標は、私の後任になる方を探すことです。もちろん社内のメンバーを育ててその方に任せる可能性もありますし、これからENECHANGEへの入社を考えているハイスキルな方がいればその人にお願いする可能性もあると思います。ぜひ、積極的にチャレンジしてください。
深堀:技術的なプロフェッショナルとしてトライ&エラーしながら成長していける環境です。技術力をさらに磨きたいとか、技術を活かして会社に貢献したいならばすごく向いている場所ですし、そういう方と一緒に働きたいです。
常盤:私はまだまだ若輩者なのですが、他のメンバーたちはみなすごくハイスキルです。難しい技術的課題に挑戦したいとか、技術の力で事業を支えていくことに楽しみを感じる人にぜひ参画していただきたいです。
ENECHANGEではCTO室はじめ各部門でエンジニアを募集しています。詳細はエンジニア採用サイトをご覧ください。