AWS Amplify でレガシーシステムとモダンなシステムを共存させる方法を聞く
南島 康一 氏 (株式会社マーケットエンタープライズ システムデザイン部 テックリード)
向 宇 氏 (株式会社マーケットエンタープライズ システムデザイン部 フロントエンドエンジニア)
AWS Amplify は、セキュアでスケーラブルなモバイル・ウェブアプリケーションを高速かつ、効率的に構築できる開発プラットフォームです。今回インタビューするのは、2021 年 4 月 2 日、AWS Amplify に興味のあるエンジニアを対象としたコミュニティイベント『AWS Amplify Meetup #3』に登壇した、マーケットエンタープライズの南島康一氏と向宇氏のおふたり。おふたりには、Meetup 当日『レガシーな Web システムに Amplify を生やしてみた話』と題し、AWS Amplify を活用した新機能開発についてお話しいただきました。ここでは、Meetup に参加された経緯や開発の舞台裏、レガシーなシステムとモダンなシステムを共存させるポイントをうかがいます。
話題のポイント
課題
技術的負債を重ねず、かつフロントエンジニア中心の開発チームの負担にもならない形で迅速に新機能を開発。中古品買い取りサービス「おいくら」の取引流通量を拡大させたい。
解決策
新機能開発にあたり AWS Amplify を採用。フロントエンジニアを主体とする4名の開発チームで、運用中のシステムと新機能の疎結合化、マイクロサービス化を実現する。
成果
加盟リサイクルショップ約 1000 店舗からの感触は上々。今後は利用率向上に向け、機能改善を重ね正式リリースにつなげる一方、AWS Amplify の機動性、利便性を生かし、さらなる新機能開発にも挑む構え。
AWS Amplify の可能性をレガシーシステムに生かす試み
古いアーキテクチャーで開発されたシステムは、いずれ時間ともに淘汰されていく運命にあります。かといって、レガシーなシステムがすぐに目の前から消えてなくなるわけではありません。だとすると、エンジニアは、完全に新たなシステムに刷新される日が来るまで、モダンな開発スタイルを経験することはできないのでしょうか ?
それは必ずしも正しくないことを、実際のプロジェクトで証明してくださったのが、ネット型リユース事業を手掛けるマーケットエンタープライズでシステムの内製に携わっている南島氏と向氏のおふたりです。
まずは、AWS Amplify Meetup #3 の当日、メイン登壇者として LT を行った、テックリードの南島康一氏に振り返っていただきましょう。
南島氏 「先日の Meetup では、弊社がリユース事業の一環として運用しているウェブサービス「おいくら」という中古品買い取りサイトに実装した『全国査定』という新機能をAWS Amplify で実装した経緯や、開発のポイントについてお話ししました。簡単に言うと、10 年ほど前から稼働しているレガシーな既存システムに、サーバレス環境下で利用できる AWS Amplify を使い、新機能を最小限の手間とコストで「生やした」体験談です。古いシステムに携わっていたとしても、やりようによっては新しい試みにチャレンジできることを多くのエンジニアに知ってほしくて登壇させていただきました。」
南島氏と一緒に LT に参加したフロントエンジニアの向氏も、このチャレンジを多くの人に知ってほしかったと口を揃えます。
向氏 「インフラ構築やバックエンド開発に詳しくなくても、少しの学習コストをかけるだけで、システム開発ができるのが AWS Amplify の良さ。実際、エンジニアになってから日が浅く、フロントエンド開発しか経験がない私でも、すぐに全体像を理解でき、使いこなすことができました。私のようなフロントエンドエンジニアはもちろん、南島のように AWS を熟知しているエンジニアにも使いやすい開発プラットフォームがあることを多くエンジニアに知ってほしいという思いから、今回自分から手を挙げて LT に参加させてもらいました。」
実際「全国査定」はどのような機能なのでしょうか。南島氏は次のように解説します。
南島氏 「一般に、買い取りを希望するユーザーと商品を買い取るリサイクルショップは、なるべく近い方が好まれます。そのため従来のサービスでは、ユーザーから見積り依頼が入ると『一括見積り』という機能により、近隣の店舗に査定依頼が届く仕組みを取っていました。しかし、ユーザーとは地理的に離れていても、買い取りたいというニーズがあるのではないか。そんな仮説に基づいて開発したのが『全国査定』です。」
季節商品や希少な商材など、特定の商品の買い取りに注力している場合、近隣に住むユーザーが査定依頼を出すまで待つというのは、あまり得策とは言えません。しかし以前のシステムではこうしたニーズを想定しておらず、ショップは遠隔地からの査定依頼に応えることはできませんでした。
南島氏 「そこで実証実験を兼ねて、店舗の所在地に関係なくショップ側が能動的に査定依頼を検索できる機能を実装してみようと。それが『全国査定』を開発するきっかけになりました。これはショップ側から実装を要求された機能ではないものの、もしこの仮説が正しく潜在ニーズを掘り起こせたなら、サイト内での取引流通量を増やせるかも知れません。そこでチャレンジしてみることにしたわけです。」
3 つの選択肢の中から AWS Amplify を選択
そうは言っても、新機能開発には時間と予算、開発にあたるメンバーも揃える必要があります。もし仮説が外れたり、想定外の手間やコストを費やしたりしてしまえば、せっかくの準備が無になるばかりか、やり方によっては、新たな技術的負債を抱え込むことにもなりかねません。そこで浮上したのが、AWS Amplify を活用する案でした。
出典:AWS Amplify Meetup #3 登壇資料より
南島氏 「一番実装が早い選択肢は、PHP で構築した既存のシステムに機能を付け足すことでしょう。しかしそう遠くない将来、刷新するであろうレガシーなシステムに手を加えるのは、エンジニアとしてあまり気が進みません。かといって、スクラッチで新システムを立てるという選択肢もリリース後のメンテナンスや管理の手間を考えると不安が残ります。そこで浮上したのが、AWS Amplify の活用でした。」
AWS Amplify なら、アプリケーション開発と運用に必要な仕組みがフレームワークとしてすでに用意されており、バックエンドやインフラのセットアップも容易。かつサーバレス環境で運用できるので、リリース後も管理や維持の手間もほとんど増えません。フロントエンジニアが多いチーム事情や、仮に顧客ニーズにマッチしなければ、スクラップしやすいという点も AWS Amplify を選択したポイントになったと、南島氏は言います。
南島氏 「すでに実施していたインフラのコード管理や CI/CD プロセス、また今回のプロジェクトと、ほぼ同時に取り組みはじめたスクラム開発にも馴染むだろうという判断も、有力な決め手でした。活用するための敷居は限りなく低い一方、実際に触れてみることで、バックエンドやインフラを意識する機会が増えれば、結果的にフロントエンジニアの技術力の向上にもつながるだろうという読みも、AWS Amplify を採用する後押しになりました。」
向氏も、AWS Amplify と親しむことで、エンジニアとしてのモチベーションが大いに刺激されたと振り返ります。
向氏 「AWS Amplify なら、インフラやバックエンドエンジニアの手を煩わせることなく、アイデアをアプリケーションに実装できます。実際、今回のプロジェクトをきっかけに、バックエンドやインフラ、AWSの知識が深まりましたし、もっと深く知りたいとい意欲も湧いてきました。「全国査定」という新機能の開発に携われたことで、エンジニアとしての成長にもつながったと感じます。」
AWS Amplify をマイクロサービス化の起爆剤に
AWS Amplify に大きな可能性を感じたものの、いざ開発に入ると、既存システムと新システムを 1 回のログインで両サイトの認証を済ませるにはどうすべきか、また、距離検索機能を追加するにあたって、位置情報と従来のデータベーススキーマとの整合性をどのように取るべきかなど、細かい部分で悩みどころがあったとはいえ、それでも導入に後悔はなかったと南島氏は言い切ります。
出典:AWS Amplify Meetup #3 登壇資料より
南島氏 「ほかにも、GraphQL や DynamoDB、Elasticsearch の機能的な制約で、バックエンドリソースの更新が一度でうまく行かなかったことや、IP アドレスによる閲覧制限ができず、Basic 認証を選択せざるを得なかったことなど、思うに任せない場面もあるにはありました。それでも当初から想定していたことはすべて実現できましたし、想定外のメリットが多かったので、後悔はまったくありません。AWS Amplify は OSS です。ちょっと詰まったらソースを見ればなんとかなるだろうという安心感があったのは、導入して良かったことのひとつですね。独自技術でブラックボックス化した製品だったら、おそらくこうはいかなかったでしょう」
向氏も、豊富な技術情報には何度も助けられたと言います。
向氏 「何かわからないことに直面しても、ネット上で公開されているドキュメントを参照することで、すぐに解決策を見つけることができました。私が一番頼りにしているのは、AWS が公開している Amplify Framework Documentation です。読めばわかる情報が身近にあるというのは、私にとって大きな支えでした。」
「全国査定」は 2021 年 1 月 5 日に β 版として公開され、取材を行った 4 月 5 日現在、実証実験段階にあると言います。南島氏は「いまのところショップからの反応はまずまず」とした上で、「新機能の認知と利用頻度を高めるために何ができるか、2 週間に 1 回のサイクルで改善とリリースを重ねながら、さらに使いやすい機能へと改良を加えている段階」と話しますが、すでに南島氏と向氏の視野には、すでに次の目標が入っているようです。
南島氏 「『全国査定』と同じように、既存システムに依存しない形で新機能をリリースし続けていけば、サービス向上に向けたトライアンドエラーもしやすくなり、やがて古いシステムへの依存度も下げられるでしょう。既存システムのマイクロサービス化する起爆剤としても、 AWS Amplify の活用を進めていければと思います。」
向氏も、これを機に得たインフラやバックエンド開発の知識を生かして、エンジニアとしての経験値を高めたいと意気込みます。
向氏 「実は先日、内部向けのダッシュボードを AWS Amplify で開発してみたのですが、改めて扱いやすいフレームワークだと実感しました。初心者でもフルスタックな開発を体験できるのが、AWS Amplify を使う最大の魅力。これからもこうしたメリットを生かして、いろいろなシステム開発にチャレンジできればと思っています。」
最後に、担当しているシステムの老朽化が否めず、なかなかモダンな開発スタイルに挑戦できないと悩んでいるエンジニアにメッセージをいただきました。
南島氏 「レガシーなシステムがもたらす悪影響を周囲に証明することができれば、状況は必ず変えられます。とはいえ、ただ待っているだけでは状況はなかなか動きません。それなら、自分から積極的に働きかけてみてはいかがでしょうか。新しい技術に携わりながら、モチベーションを高く仕事をしたいのであれば、挑戦してみる価値は十分にあると思います。」
向氏 「最初、私にも習得できるか不安でしたが、そう思ったのは最初だけ。実際、AWS Amplify は非常に良く考えられたプラットフォームなので、全体像さえつかめれば、すぐに使いこなせるようになりました。まずは個人プロジェクトでもいいので、触れてみること、体験してみることをお勧めしたいですね。私もこれからいままで以上に幅広い開発プロジェクトに携わり、いつか Meetup でメイン登壇者として自分の経験を皆さんにシェアできるようになりたい。AWS Amplify と出会ったことで、そんな風に考えるようになったのは、想定外の収穫と言えそうです。」
プロフィール
南島 康一 氏
株式会社マーケットエンタープライズ
システムデザイン部 テックリード
インターネット黎明期から Web に親しみ独学で技術を習得。フロントからバックエンド、インフラ技術を網羅的にカバーするエンジニアに。Web 開発会社や、バイオインフォマティクスのスタートアップ企業、国立スポーツ科学センターなどを経て、2019 年 11 月、ネット型リユース事業を手掛けるマーケットエンタープライズに入社。現在、テックリードとして、中古品の買い取り、販売を仲介するネット型リユースサービスを支える自社サイトの開発にあたる。全 12 種の AWS 認定を保有するなど、同社のクラウド技術向上の中心的役割を果たしている。
向 宇(コウ・ウ)氏
株式会社マーケットエンタープライズ
システムデザイン部 フロントエンドエンジニア
中国広西チワン族自治区出身。交換留学プログラムに参加し来日。日本でシステム保守、テスターとしてキャリアをスタートさせる。2019 年、マーケットエンタープライズにフロントエンジニアとして入社。同社が提供するネット型リユースサービスを内製するシステムデザイン部の一員としてフロントエンド開発に従事。AWS Amplify との出会いをきっかけに、インフラやバックエンド開発にも関心を持つように。
AWS を無料でお試しいただけます