LINEのチャットボットで行政サービスを実現した「福岡市粗大ごみ受付Bot」インフラ技術解説

こんにちは、さくらインターネットの大喜多です。

2018/9/19にLINEアカウント「福岡市粗大ごみ受付(@fukuokacity_sdg)」が福岡市、LINE株式会社、株式会社オルターブース、さくらインターネット株式会社の協業によりリリースされ、行政サービスでのチャットボット利用の実証実験が開始されました。本記事では、この日本初の対話型粗大ごみ申し込みサービスのインフラ部分の技術解説をいたします。

編集部注:本記事は、株式会社オルターブース協力のもと、さくらインターネットの大喜多が執筆しています。

また、先日10/3にLINE Fukuokaで開催されたイベント「【福岡】Bot開発技術を極めたいエンジニア大集合! 福岡市粗大ごみ受付Botを大解剖」のイベントレポートも公開しておりますので併せてごらんいただければ幸いです。

インフラ構成・技術解説

福岡市粗大ごみ受付Botのシステム構成図

全般

各サーバーのOSはCentOS7.5に統一しています。

ロードバランサー

Nginxを使用してリバースプロキシ兼ロードバランサーとして動作しています。Active-Standbyの2台構成です。さくらのクラウドにはロードバランサアプライアンスが用意されていますが、今回ロードバランサーを自作した経緯として、ロードバランサアプライアンスは負荷分散アルゴリズムがリーストコネクションのみであることと、セッション維持機能がないことが挙げられます。本システムでは、ユーザー判別のためにスティッキーセッションの保持が可能であることが条件としてありました。

※リーストコネクション:クライアントからのリクエストを現在のコネクション数が最も小さいサーバに転送する方式です。ロードバランサの仕組みについてはこちらの記事でもご説明しておりますので、併せてご覧ください。

※スティッキーセッション:ロードバランサーがサーバーにリクエスト振り分ける際、Cookieを確認することで、クライアントからのリクエストを特定のサーバに紐付けることが出来る機能です。

Web/App

node.jsでWebサーバとして動作しています。アプリケーションはJavaScriptで書かれています。2台のサーバが両アクティブで動作しており、ロードバランサーにより負荷分散をしています。Headless Chromeにより多くのメモリを消費するのはこのWeb/Appサーバで、他のサーバよりも多くのメモリを確保しています。

DB/Cache

Redisを使用しています。インメモリデータベースでありキャッシュ用途に使われるイメージの強いRedisですが、オプションでデータの永続化にも対応しており、本システムでは永続化データを保持するデータベースとしての側面と、キャッシュとしての側面の両方を持っています。また、ランニングコスト削減の観点から、通常だとサーバが3台以上必要になるRedisのクラスタを2台のサーバでActive-Standby構成で動かすために、切り替わりのスクリプトをオルターブースで自作しています。

ロードバランサー・Web/App・DB/Cacheのアーキテクチャー

監視

外形監視として、さくらのクラウドのシンプル監視を用いて、

  • httpsのサービス監視
  • SSL証明書の有効期限監視

をおこなっています。

また、Internalネットワーク内にZabbixサーバーがあり、

  • CPU/メモリ等の基本的なメトリクス監視
  • 各サーバのポートレベル監視
  • 各サーバのミドルウェアのプロセス監視

をおこなっています。

外形監視(シンプル監視)と内側からの監視(Zabbix)

聞いてみました「本システムの構築で苦労した点や感想などありましたら教えてください」

アプリケーション開発チームとインフラ構築チームが完全に分かれている中で、アプリケーション開発チームが求めているインフラのイメージと自分たちのイメージとを擦り合わせて構築していく過程が大変でした。また、普段はPaaSを使ったシステム構築が多い中、久々にIaaSを使って基盤からシステム構築していった点が自分たちのスキルアップにつながりました。(オルターブース 加藤さん)

オルターブースの新たな取り組み!「Alternative Architecture DOJO」とは?

クラウドの出現以降ソフトウェア開発の複雑さは増しています。

さらに新しいプラットフォームとしてのCloud Nativeは従来のInfrastructureだけではなくApplicationとの融合を可能にし、より難解な技術へと進化しました。

Alternative Architecture DOJOは複雑化するソフトウェアを、”Architecture”という切り口で深く掘り下げて、Alternativeという言葉が示すとおり、“あたり前”ではなくHardcoreなTech Mediaとして多様な技術情報を発信します。

ということで、株式会社オルターブースでは複雑化するソフトウェアをアーキテクチャという切り口で深く掘り下げていくクラウドネイティブ特化型Webメディア「Alternative Architecture DOJO」を開始しました。オフラインイベントも開催されています。

YouTubeでテーマソングも配信されていますのでこちらもぜひご覧ください。テックメディアとしては異色なテーマソングだと思います(率直な感想)。