Serverless Operations, inc

>_cd /works/id_024

title

多様で柔軟な働き方を目指し、サーバーの運用脱却と高可用性を実現するAWSのフルサーバーレスで物流会計システムを構築!

og:image

client

株式会社LIXIL

2011年、国内の主要な建材・設備機器メーカー5社が統合して誕生しました。
以後、GROHE、American Standardといった世界的ブランドを傘下に収め、日本のものづくりの伝統を礎に、世界をリードする技術やイノベーションで、日々の暮らしの課題を解決する高品質な製品をグローバルで幅広く提供しています。

*(写真左から)株式会社necco 阿部 文人、株式会社LIXIL 和田 修一・猪俣 司、株式会社Serverless Operations 堀家 隆宏

はじめに

このたび、株式会社LIXILさんよりサーバー運用コスト削減と高可用性を狙いに「新規会計システムをサーバーレスで開発したい」というご相談をいただき、LIXILの担当者さんと一緒に開発を進めました。

株式会社LIXILは、住宅およびビル向けの建材・設備機器の製造、販売を行う業界最大手のグローバルメーカーです。
トステム、INAX、新日軽、サンウエーブ、TOEXの国内の主要な建材・設備機器メーカー5社が統合し、2011年に設立しました。
日本国内のテクノロジー事業はトイレ、浴室、キッチンなどを主力商品とする「LIXIL Water Technology Japan」、窓や玄関ドア、エクステリア、インテリアなどを主力商品とする「LIXIL Housing Technology Japan」となり、住まいに関するさまざまな商材を取り扱っています。
誰もが願う住まいの夢を実現するために、先進的な技術と製品を開発、提供している会社です。
LIXILでは組織のさらなる成長と変革に向けて「変わらないと、LIXIL」をスタートしていますが、IT部門では“誰でも、いつでも、どこでも” 多様で柔軟、効率的に業務が出来るインフラの提供を狙い、IT環境整備に努めています。

公式サイト:https://lixil.co.jp

LIXIL本社

今回は東京都江東区大島にあるLIXIL本社にお伺いし、プロジェクトを担当されたお二人に、サーバーレスでの開発の進め方や導入後の成果などをお聞きしました。

【お話をうかがった方々】
・猪俣 司 様(株式会社LIXIL)

物流領域で主に輸配送、貿易業務に関するシステム企画、構築のリーダーを担当。

・和田 修一 様(株式会社LIXIL)
主に物流系の各種システム開発を担当。

【インタビューには欠席でしたが文章で感想をくださった方々】
原田 篤 様(株式会社LIXIL)
クラウドアーキテクト。社内外向けのアプリケーション開発を担当。

H様(株式会社LIXIL)※派遣社員のため匿名
基本設計、開発を担当。

【ファシリテーター】
・阿部 文人(株式会社necco )
CEO・クリエイティブディレクター・デザインエンジニア

サーバーレス導入の概要

導入したサービス

物流規定管理システム
(基幹システムから日次で売上データを受け取り、本システムの設定内容に応じて仕分けを行い、月次で集計した後、さらにLIXILの基幹会計システムへ連携するシステム)

システムのポイント

一番のポイントは、AWSのフルマネージドサービスのみを使った構成であること。
今回、請求先ごとに仕訳の計算を実施しているが、これがデータ量に依存した処理となりLambda単体で行うとタイムアウトの危険性がある。
これをStepFunctionsのMAPステートとChoiceステートを使用し、Lambdaの処理の単位を分割することで可能とした。
あわせて日次売上データファイルの読み込みについてもS3 Selectを使うことで、ファイル全体をパースすることなく分散したLmabdaから必要なデータのみを取得することを実現。
DynamoDBの設計についても、ソートキーの前方一致検索で値がうまくフィルタリングして取得できる設計にすることで、各サービスから容易にデータにアクセスして仕訳処理が実施しやすいよう改善した。

システムの構成

日次売上仕訳サービス

  1. 売上計算システムから日次で仕訳対象事業所分の売上データファイルがS3にアップロードされる
  2. 日次でStepFunctionsを動作させて売上データファイルを読み込む
  3. 請求先ごとに仕訳を行い日次仕訳用のDynamoDBテーブルに保存する

月次売上仕訳サービス

  1. 蓄積された先月分の仕訳データをDynamoDBテーブルから取得
  2. 日毎に蓄積された請求先ごとのデータを合算して月次仕訳用のDynamoDBテーブルに保存する
  3. 仕訳済みのデータをファイルにして、連携用のS3に保存

ダッシュボード

Vue.jsを使用したSPA。バックエンドのAPIサービスと連携し、請求先ごとの仕訳処理のための設定情報の管理を行う。

導入前の課題

本物流システムの課題は、システムのサーバー運用、老朽化による障害対応など無駄な作業工数が多いことだった。
LIXILでは、新しく構築するシステムは可用性 及び 開発生産性、運用効率を高くしたいという強い思いがあった。
そこで今回クラウドサービスを使った開発にチャレンジし、サーバーレス開発の進め方を修得するため、Serverless Operationsへ依頼。

Serverless Operationsが行なったこと

・要件の概要を出してもらって一緒に仕様を考えた
・フロントエンドのUI設計・バックエンドのAWSアーキテクチャ設計
・API開発のレクチャー、ソースレビューなどの開発サポート(フロントエンドと会計処理部分をServerless Operationsが実装し、フロントとDBを繋ぐAPIの開発をLIXILが実施)
・フロントエンド開発・会計処理システム開発・CI/CDパイプラインの設計、設定

システムUIデザイン担当

株式会社necco

オンプレミスからクラウドへと社内の流れが変化するなか、「サーバーレスって何?」からのスタートだった

はじめに、お二人が普段どんな仕事を担当されているか教えていただけますか。

猪俣(以下、敬称略):私は物流領域のなかでも輸送配送、貿易業務に関するシステム企画・構築のリーダーをしています。旧トステムの時代に入社し、勤続28年になります。業務とIT両方が分かる人材育成の第一期生でした。

和田(以下、敬称略):主に物流系のシステム開発を担当しています。猪俣と同じ物流のシステムを担当している部署ではありますが、猪俣は物流のなかでも輸送(トラック)などのシステム企画がメインで、私は物流倉庫内のシステムを主に担当しています。
今回のプロジェクトでは私たちのほかに、クラウド系のシステムを開発している原田という者と、原田と同じ開発チームの数名、また、猪俣チームのHというメンバーが携わりました。

Serverless Operationsさんに開発をお願いしたきっかけ、経緯を教えてください。

猪俣:前段でも話しましたが、多様で柔軟、効率的に業務ができるインフラ、可用性、開発生産性、運用効率が高いシステムの構築を行いたかったのでサーバーレスのクラウドサービスでのシステム構築を採用し、開発作法やツールの使い方をしっかり学ぶために実績豊富なServerless Operationsさんにたどり着き、声をかけさせていただきました。

和田:まず弊社の役割分担を説明しますと、私は先ほど言った通り物流系のシステム開発を担当する「開発部隊」に所属しており、原田のようにサーバー・ネットワークの環境構築や運用を行う「インフラ部隊」とは別部署になります。
私はこれまでサーバーレスについては無知でした。
今回もいままで通りオンプレミスでの開発をするつもりでインフラ部隊に相談したのですが、会社でも「これからはクラウドサービスをメインに使っていこう」という大きな流れがありました。

猪俣:弊社には自社サーバーが約4,600台あるのですが、数が多すぎて、これ以上作るとメンテナンスや運用できなくなってしまうため本流になりつつあるクラウドサービスで開発できないかという話になりました。

和田:はじめは、それがどういう意味なのか分からなくて。
社内にはサーバーレスで開発できる体制がなかったんですよね。引き受けてくれそうな会社を何社かあたった中で、原田のお付き合いのあるIT会社さんからServerless Operationsの堀家さんを紹介してもらいました。

堀家:はい、そんな経緯でLIXILさんに打ち合わせに行きました。
和田さんと初めて話したとき、サーバーレスの話を聞いてポカンとしてましたね(笑)

和田:全く分かりませんでしたね。サーバーのない意味が理解できませんでした。
弊社でもAWSを使ったシステムはいくつかありますが、どれも仮想サーバーを立てていますから。ただ、私はユーザーさんが使いやすければいいと思っているので、中身はどっちでもいいかなという考えでした。

なるほど。では、LIXILさんのシステムでサーバーレスを導入したのは初めてですか?

猪俣:以前簡単なシステムをひとつ作ったくらいなので、私のところでは今回で2度目です。
今後は確実にサーバーレスが増えてきそうですね。オンプレミスで開発する場合、環境準備だけでも人手も時間もかかってしまいますし、IT全体のコストを下げられるため、「オンプレミスではなくクラウド」という流れになっているんです。

LIXILとServerless Operationsが一緒につくり上げていく「共創型開発」で、技術力不足をカバー

LIXILさんとしては、クラウドにしないとサーバーの負荷が大きく、リソース不足がネックだったということですね。Serverless Operationsさんに相談されたとき、システムの具体的な内容はすでに決まっていましたか?

和田:はい。ざっくりとしたイメージがあり、猪俣が描いた構成図を用意していました。最初の打ち合わせでは、その資料を堀家さんに見せながら説明しました。

堀家:それをサーバーレスの構成に置き変えていきましたね。

今回のプロジェクトは、Serverless Operationsさんの開発のテーマである「共創型開発」という方法で進めていったそうですが、実際に一緒にやってみて感じたことを教えてください。

猪俣:堀家さんのやり方がいいなと思ったのは、フランクなコミュニケーションで、われわれLIXILの目線に合わせてやりとりしてくれたところです。
短期間の依頼で無茶を言ったかもしれませんが、私たちの要望にも前向きに迅速に応じてくださり、真摯に取り組んでくれました。技術力も非常に高く、大変助かりました。

和田:主に担当していた弊社側のメンバーは初心者でしたので、まずは作業の基本からレクチャーをいただき半分教育もしてもらったので助かりました。
ここで、他のメンバーからの感想をご紹介しますね。

  • 原田:普段サーバーレスに特化した形でシステムを考える機会がないメンバーも、同じ課題に取り組むことでその特徴をつかみながら開発を進めることができました。自分ごととして開発が進められたのも今後につながるのではないかと思います。
  • H:フットワーク軽く来社いただけて対面で作業する時間があったところ。初心者がいることをご理解いただいたうえで、スケジュールの厳しい中で必要なものをレクチャーくださったところです。

堀家さんはどんな風にレクチャーしたんですか。

堀家:はじめは「AWSとは」「サーバーレスとは」という話から入りました。
LIXILさんメンバーは各々のスキルセットがバラバラだったので、一人ひとりに合わせてレクチャーしました。
週に1、2回くらいLIXILさんにお邪魔して、手を動かしながら進めました。食堂でも作業しましたね。

和田:話を聞いているだけでは覚えないので、実際に触らせてもらいました。
それはよかったのですが、どの作業にどのくらい時間がかかるかが分からなくて。
ひとつひとつの作業に対して、当初の見込みよりも時間がかかってしまいました。
あふれた分はServerless Operationsさんのチームに作業してもらいましたね。

堀家:そのあたりはバランスをとりながら進めていきました。納期がありますから。

堀家さんがレクチャーしながら、開発はLIXILさんが担当したんですか?

和田:分担ですね。もともとできるメンバーもいたので、分担した作業のなかからバラして進めていきました。

今まで同じような方法で開発されたことはありますか?

和田:あまりないですね。よくあるのは、開発を一括でお願いして、できあがったら説明だけしてもらうという形です。
まるまる新規で、かつ技術的に未知のシステムを一緒に開発したケースは珍しいです。
難しく苦労もありましたが、これから作っていくシステムのことを考えると無駄ではないと思っています。新しいシステムに生かしていきたいですね。

誰が・いつ・どこで使うかを考慮し、ユーザーが悩むことなく直感的に使えるデザインに

デザインもだいぶ変わったと思いますが、提案されたデザインを見てどう思いましたか?

猪俣:今回提案していただいたデザインは弊社の社内システムにはあまりないモダンさと直感的な操作性で、とても使いやすいと思いました。

和田:シンプルですが、大変見やすいデザインで満足です。またLIXILの企業カラーにもマッチしている点もいいですね。

  • 原田:SPA(シングルページアプリケーション)のUIとして説明がなくても使える形でよかったと思います。
  • H:ユーザーさんからは「今どきっぽくてイイ」とお言葉いただいたのを聞きました。

実装されたものは触りましたか?

和田:はい。テストで触っていて、いいデザインだなと実感しています。
一度デザイナーさんにお聞きしたかったのですが、提案してくれたデザインは何か元になるフォーマットやテンプレートなどがあったんですか?

ーいえ、テンプレは使っておらず、情報設計をしてあちらのデザインをおこしました。
デザインの際は「この画面は本当に必要かな?」からスタートして、「この操作はどのくらい繰り返すかな?」などを考えます。色や装飾は最後につけていきますね。

和田:なるほど。Serverless Operationsさんには今回、エクセルで描いたラフのようなもので説明をしました。元の図からそのまま作っているわけではなく、まず使い勝手を考えてから機能的なデザインをしてくれているってことですよね。

ーそうです!今回のような画面デザインでは、一画面でいつでもどこでもいきたいところに行けるというのが重要です。あとはグルーピングですね。「こことこの入力欄を寄せてみよう」とか「ここは関係ないから離そう」といったことを考えて、ユーザーが悩まずに使えるデザインが良いデザインだと思っています。
最近UXという言葉がよく使われていますが、そもそもデザインするときにUXを考えないことはないんです。ユーザーがどう使うか、どう遷移するかを考えます。
堀家さんには、誰がどのように使うかをしっかりヒアリングさせていただきました。

品質を保ちながら素早く本番へコードを調達するための仕組みを、サーバーレスで実現

これからどんなスケジュールで運用などを進めていく予定ですか?

和田:今はまだテストをしている段階で、これから本番で運用できる体制を整えていき、4月から本番運用となります。
このシステムでユーザーさんが入力するのは、主にマスタの登録です。本番に向けて、まず最初に数千件の登録を行います。ひとつひとつ画面に入れていたら大変なので、データをもらって一括で登録する予定です。
4月以降は追加や変更、修正が出てきそうなのでそれに対応します。
とにかくマスタが肝ですね。今はメインユーザーが1名、全国の営業を取りまとめてくれることになっています。

サーバーレス アーキテクチャにして良かったことは何ですか?

猪俣:サーバーを立てるための時間が短縮されたことはかなり大きいですね。今までは着手までに3ヶ月待ち状態でしたから。
また運用・保守の省力化、システム開発生産性向上によりコスト削減につながることを今後 期待します。

和田:これまでは仮想サーバーを立てて、オラクルをインストールする作業などがありました。それも必要なくなり、さらに手間が減りましたね。今回はLambdaを使ったサーバーレスという形で実現しているので、一番手間のかからない作り方になっています。

堀家:そうですね。特に今回ダッシュボードのバックエンドとして作ったAPI GatewayとLambdaの仕組みは、それをウェブのフロントにあてはめればウェブサイトになるし、iPhoneアプリのようなものを別に作れば、すでにAPIがあるのでバックエンドの開発が最小限になります。ひとつのバックエンドをサービスとして切り出し、あとはフロントインターフェースが変わったとしても対応しやすくなります。

和田:それはAWSの研修でも先生が話していました。そういう話は聞いても、まだ触ってないので実感がなくて。

堀家:今回作ったInfrastructure as Codeでは、Lambdaの構成はこうするとか、API Gatewayの構成はこうする、というのをServerless Frameworkで定義しています。
本番にあげる際、今回のような構成にしておくと、毎回確実に同じ構成になることが保証されているんです。
APIもそうですし、バッチや料金計算も同様です。
今回はCircle CIを使ってCI/CDパイプラインを構成しています。料金計算は細かくユニットテストを書いています。バグが出た際はそれを再現するテストを書いて修正していくことで、将来的な同じバグの再発のリスクを防いでいます。このように運用していくことで計画的に不具合を潰していくことができます。
テストコードで品質を改善しつつ、冪等性を保ちながら素早いサイクルで本番にコードを調達する。そういう仕組みは、サーバーレスだと非常にやりやすいですね。
今回のプロジェクトでサーバーレスを取り入れた大きなメリットの一つだと思います。

Serverless Operationsの協力のもと、さらに自走力をつけて今後のシステムづくりに生かしていきたい

これからも堀家さんと一緒に開発をされることがあると思いますが、「今後こうしたらもっとよくなる」という所はありますか?

猪俣:Serverless Operationsさんには情報交換会などを実施していただき、社内のスキルアップを図っていければありがたいですね。
弊社だけで進めていると、新しい知識や技術はなかなか入ってきません。
特にクラウドサービスは日進月歩で、新しいサービスがどんどん出てきますし主流も変わってきます。
情報交換会やワークショップなどを開催したら、もちろん弊社も情報を提供しますし、相乗効果が生まれてお互いスキルアップにつなげられるはずです。

和田:今後もシステム構築が必要になるはずです。まだまだ勉強が必要なので、堀家さんには引き続きご支援いただきたいですね。

堀家:はい、もちろんです。サーバーレスでシステムを開発するときに考えているのは、「クライアントさんには知識や技術を習得してもらい、内製できるようになってほしい」ということ。僕たちが開発を一括で行ってクライアントさんがシステムを使うだけでは、お互い成長できません。それが共創型開発のメリットの一番大きな部分ですね。そのために一緒に作るということにこだわっているので。

和田:個人的には時間が取れておらず、まったく吸収しきれていません(笑)。原田や他のメンバーは吸収できているので、私はその人たちから少しずつ吸収したいと思っています。
最近AWSの研修を3日間受けてきたのですが、去年の夏の段階で受けていればよかったです。そうすれば当時堀家さんが言っていた内容が理解できたかもしれません。

ー研修のおかげで今はだいぶ理解されているようなので、次が楽しみですね。

和田:そうですね。先ほど猪俣が言いましたが、今後、新規システムはサーバーを立てずにできるだけクラウド環境で実装したい。しかし、私含め開発部隊が追いついていないんです。
「これ以上サーバーを増やしたくない」というインフラ部隊と、一方で「AWSって何ですか?」状態の開発部隊。開発部隊には、去年の自分のようなスタッフがたくさんいるんですよね。だから、今後新規システムを作るときにインフラ側から「これからはサーバーはいりません」と言われたら、開発側は「え、どういうこと?」と困ってしまう。「堀家さん助けて〜」ですよね。

ーLIXILさんにとって大転換期がやってきそうですね。

和田:自分はたった3日間の研修を受けただけで、モヤモヤしていたものが晴れました。今後新規のシステムを作る人がAWSを使うなら、みんな研修を受けたほうがいいですね。

猪俣:Serverless Operationsさんと一緒に仕事をさせていいただき、ノウハウが身につき自走していけるようになりました。
LIXILでは、今回のように新しい技術や知見を積極的に取り入れ、自分たちで考え最適な環境に発展させていく、そういったクリエイティブな人材を増やし最強のプロ集団を作っていきたいと考えています。

ーそのときはまたお話を聞かせてください。楽しみにしています!このたびはありがとうございました。

Back
to list
<-