2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
テックトーク②(全1記事)
提供:ウーブン・プラネット・ホールディングス 株式会社
リンクをコピー
記事をブックマーク
小野理絵(以下、小野):こんにちは、小野理絵です。ペイメントソリューションチームでエンジニアをしています。今日は、Woven Cityの決済システムについてお話しします。
まず、自己紹介をさせてください。私はこれまでエンジニアとしてキャリアを積んできました。このチームに参加したのは、2021年12月です。その前は、主に日本のウェブ検索会社や、Eコマース企業で働いていました。バックエンドサービスのテックリード、フロントエンド・バックエンド開発者、ネイティブアプリケーションのプロダクトマネージャーの経験があります。
小野:では、今日の本題に入りましょう。私たちのチームのミッションステートメントは、「決済システムの提供を通じて、街の価値を高める」です。このミッションの実現のために、私たちが取り組んでいることをお話しします。
まず、Woven Cityで使用する決済インフラを構築します。経済活動は街の根幹です。ですから、使いやすくて、安全で、持続可能な決済インフラが求められます。
次に、買い手と売り手とインベンターをつなぐインターフェイスが必要です。買い手と売り手は想像がつくと思いますが、インベンターとは誰でしょうか。将来、多くの人が「Woven City」に住み始めるでしょう。この街には、他の都市とのおもしろい違いがあります。その1つが、インベンターの存在です。インベンターには、科学者や研究者、スタートアップ、芸術家などが含まれます。彼らは、私たちの決済システムを使って、製品やサービスを簡単に販売できるようになります。
小野:システムアーキテクチャは、マイクロサービスのアーキテクチャを採用しています。マイクロサービスを選んだ理由はいくつかあります。決済システムは、お客様がいつでもどこでも利用できるものなので、可用性の高いシステムを構築する必要があります。
例えば、決済システムがダウンしても、アグリゲーションシステムが一緒にダウンしないようにしたいわけです。次に、スケーラブルな未来に対応すること。Woven Cityはまだ市場に出ていないので、ビジネスやシステムの要件は今後大きく変化していくことが見込まれます。マイクロサービスアーキテクチャを採用することで、変化に対応できるシステムにしたいと考えています。
小野:では、どのようにマイクロサービスやデータモデルを設計しているのでしょうか。まず、決済ノートを定義します。この図は、Woven Cityが各テナントに対して発行する架空の決済ノートです。このメモから、店舗ID、取引ID、取引日時、支払金額など、必要となるデータフィールドが想像できます。
次に、イベントストーミングを使って、マイクロサービスやデータモデルを設計します。まだ学習段階ですが、イベントストーミングを使って、基本的なアーキテクチャのデータモデルを構築できます。
イベントストーミングの活用ですが、長所と短所があります。長所は、業務の専門家を交えて業務フローを明確にできること。私以外のメンバーは、決済システムの開発経験が豊富です。業務フローを明確にすることで、初心者の私でも決済に関する業務フローを理解できました。複数の参加者と一度に知識を共有できるのも、イベントストーミングのメリットです。短所は、時間がかかることです。設計のタイミングごとにイベントストーミングを行うのは難しいかもしれません。今は在宅で仕事をしていますが、対面のほうが使いやすいと感じました。
小野:次に、私たちのチームが使っている技術を紹介します。使っている技術は、Kotlin、Ktor、Cassandraなどです。実は、どのデータストアを使うのかはまだ決まっていません。KotlinはAndroid開発によく使われる言語ですが、私たちはサーバーサイドのプログラミングに使っています。Kotlinを開発言語に選んだ理由はいくつかあります。
ひとつは、特にJavaエンジニアにとってKotlinは学習しやすい言語だからです。チームは全員Javaコーディングの経験者ですが、Kotlinを使うのは初めてでした。
私の場合、数年のJavaでの開発経験がありますが、Kotlinでの開発は4ヶ月前に始めました。それでも勉強しながらKotlinでの開発環境をセットアップし、プロダクトコードを書くことができています。
また、Woven Cityは新たなことに取り組む“挑戦の街”なので、開発メンバーにとって新しい技術にチャレンジしたいという思いもありました。
Kotlinの開発には、いくつかのメリットがあります。チームメンバーのほとんどが、開発にIntellijを使っていますが、IntellijもKotlinも、とても良い開発体験を提供してくれます。サーバーアプリケーションのフレームワークにも、それらと同じ会社で開発されているKtorを利用しているので親和性があります。また、Kotlin開発にはJavaのリソースと経験が活かせます。例えば、パッケージ管理にはGradle、ユニットテストとカバレッジの測定にはJUnit5とJaCoCoを使っています。データオブジェクトの作成には、OpenAPIジェネレータを使用しています。
小野:今後、直面する大きなタスクをいくつか紹介します。Woven Cityでテストするために、いくつかのPoC(概念実証)の機能を実装する予定です。技術面では、Kubernetes上でアプリケーションを動作させることを計画しています。私からは以上です。ご清聴ありがとうございました。
ハンター・チェン氏(以下、チェン):決済システムは、Felicaのように日本独自のハードウェアに依存しますか。それとも海外のスマートフォンにも対応する予定ですか。
亀井浩明氏(以下、亀井):特定のデバイスを使うと決めているわけではないので、どのデバイスでも大丈夫です。QRコードやFelica、NFCなど、私たちのシステムは、どんなデバイスでも使えるようにオープンです。Woven Cityの決済システムには、柔軟性があります。
チェン:すでに存在しているシステムを使うのではなく、自分で作ろうと思ったのは、現在の決済システムに欠点や限界を感じたからですか?
小野:Woven City内で行われる各サービスの実証に際し、決済に関わる機能の提供やそのデータの適切な管理を行うためです。
チェン:原則として、私たちが支払データを管理します。前回のテックミートアップでは、人間行動の理解と、人間行動をモデル化するための機械学習モデルについてプレゼンしました。これらは、そのパイプラインにも組み込まれます。
チェン:決済システムは、訪問者も利用できますか?
小野:はい。Woven Cityのゲストアカウントを作成することで、独自の決済システムを使えるようにする予定です。
チェン:今後、例えば暗号通貨などの決済サービスを考えていますか?
小野:今のところ、暗号通貨は考えていません。
参加者:JavaからKotlinへの移行時に苦労した点があれば教えてください。
チェン:私は、CI/CDパイプラインと、ビルドの開発とツーリングに携わっています。現在、ビルドシステムではJavaとKotlinをサポートしています。
MavenやGradleなどのビルドツールでは、依存関係を自動的に解決します。Javaは、そのシステムの成熟度をアノテーションや裏側で起こる動作に頼っています。ただ逆に、管理したりコントロールしたりするのは難しいですね。裏側でどのように管理されているのかには注意を払う必要があるでしょう。
小野:KotlinはAndroid開発によく使われるので、サーバーサイドのKotlinを学ぶための教材が少ないのも難点ですね。ドキュメントもぐんと少ないです。
チェン:決済はグローバルな利用を想定して設計していますか。その場合、国境を越えた税金や通貨のルールにはどのように対応する予定ですか?
小野:もちろん、グローバルでの活用も考えていますが、日本での導入が先決です。
チェン:先ほども言いましたが、エンジニアとしてスコープを大きくしすぎないことを心掛けています。最初のスコープは日本国内ですが、グローバルに展開できるような柔軟性を持たせています。
チェン:OpenAPI、RESTful APIはパフォーマンスが高くありませんが、GRPCのような高速な転送プロトコルは検討しないのですか?
小野:GRCPはまだ使っていませんが、内部接続に使う予定です。ただ、使い勝手を優先して、外部のWoven CityにはAPIを提供します。APIユーザーにとっては、GRCPよりもRESTfulAPIのほうが実装しやすいでしょう。
チェン:私の経験からお話しすると、業界の多くはすでにRestfulAPIやHDTPに精通しています。GRCPは、むしろボーナス的な位置づけです。GRCPを追加する計画はありますが、あくまで将来的な話です。
チェン:すべてのチームが、バックエンドにKotlinを使用しているのでしょうか?
チェン:すべてのチームではありません。各チームは基本的に得意なもの、慣れ親しんでいるものを使っています。状況に最も適したものを選んで使えます。KotlinでMLパイプラインを組まない理由は、言うまでもありません。
小野:ちなみに、Woven City内ではどの言語が人気なんでしょうか?
チェン:Woven Cityで今最も人気のある言語は、Golang、Java、Kotlinです。少数ですが、NodeとRustを使う人もいます。
チェン:採用についてお話しします。現在、100以上のポジションとその40%以上を占めるエンジニアリングのポジションを募集しています。シャム氏のチームの、ライフサービスプロダクトチームでは、思いつく限りのすべての職種を募集しています。フロントエンドエンジニア、機械学習エンジニア、データエンジニア、機械学習パイプラインエンジニア、バックエンドエンジニア、テスト/オートメーションエンジニア。決済チームは、決済サービスのバックエンド、ソフトウェアエンジニアを募集中です。
最後に、今回、初めてインターンシップを実施することになりました。今回のセッションの参加者に学生は少ないですが、インターンシップの情報は、Woven Careerのページに掲載する予定なので、興味のある方はぜひご覧ください。
ウーブン・プラネット・ホールディングス 株式会社
関連タグ:
2024.12.20
日本の約10倍がん患者が殺到し、病院はキャパオーバー ジャパンハートが描く医療の未来と、カンボジアに新病院を作る理由
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.17
面接で「後輩を指導できなさそう」と思われる人の伝え方 歳を重ねるほど重視される経験の「ノウハウ化」
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05