イベント中も何度か言ったと思うのですが、過去無いほどインターネット上で価値が交換されていて、その交換のフォーマットの多様性は増しています。10Xさんのように20点もの商品を組み合わせてインターネット上で生鮮食品/日用品を購入するという行いも、CAMPFIREさんのようにプロジェクトの成否によって決済が実行されるがそれまでは仮売上で保留するという形も、もしかしたらネット上のサブスクや、Pay Per Viewや、投げ銭や、一話購読だって、インターネットと決済の組み合わせで発生し始めた新しい価値交換のフォーマットだと考えています。そんな領域に対するソフトウェア的な工夫や、経験談はきっと、新しい領域をソフトウェアに落とし込む際の良い参考になるんじゃないかなぁと考えております。そんなわけでこういうイベントはまたやりたいです!
エンジニアの佐野です。今日はインフラの話です。主に物理インフラの話です。カンムがデータセンター(以下、DC)の選定や契約をした際の勘所について書きます。クラウドと DC の相互接続であったりネットワーク構成や機器のコンフィグレーションなどのテクニカルな話はまた別途書こうと思います。
カンムでは主に AWS や GCP 上にインフラを展開して開発を行っています。メインは AWS、機械学習やデータプロセッシングの一部は GCP です。そして先に書いたとおり DC 契約もしています。基本的にはクラウド中心のインフラ運用ですが DC はビジネスパートナーと専用線接続するための重要な拠点となっていて、シンガポール拠点の企業などと専用線で接続しています。DC と AWS 間は AWS Direct Connect で接続しています。
今や特にスタートアップは DC を自前契約することはほとんどないと思っています。大企業でも自社 DC を持っていてさらに強力なプラットフォームチームがなければクラウドを採択するケースの方が多いんじゃないかと思います。強力なプラットフォームチームがいたとしてもパブリッククラウドを選択した方が良いかもしれません。しかしながら歴史のある業種であったりシステム連携先が多い事業体の場合どうしても専用線接続が必要なケースがあります。早くクラウドに対応してくんねーかな〜、と手をこまねいていても何も始まりません。しかし「よしじゃあやるか」と腰を上げるにも筋力が必要かと思います。今まで物理インフラを触ったことがない、触ったことはあるけど DC の選定をやったことがないという人はどうしたらいいかわからないんじゃないかと思います。ニッチかもしれませんがそんな状況の参考になれば幸いです。
DC という事業体
DC 選定の勘所
契約書には適切な修正要求を出す
あたりについて書きます。
1. DC という事業体
まずDCとはなんなのか?契約するとはどういうことなのか?について整理しておきます。
まず DC とはなんなのか?について簡単に書くと、サーバやその他機器を稼働させるための通信回線、電力、機器の設置場所を提供する施設になります。その施設のスペックはピンキリで、世界各地とのコネクティビティを売りにしている事業体もあれば、強力な電力供給能力を売りにしている事業体もあります。サービスも様々で、機器や備品のレンタルや販売も行っている事業体、機器の設置代行や業務代行を行っている事業体もあります。契約する際にはいくつかの DC とコンタクトを取って話すことになるのですがけっこう面白いです。私は DC 作業や物理設計は過去に仕事でやったことがありますが DC 契約からするのはカンムが初めてだったのでなかなか新鮮でした。
続いてDCとの契約です。「データセンター」を検索すると、大手から小規模事業者までたくさん出てきます。これらの企業と契約して始めて DC を利用することができるようになります。これら DC 事業者が提供しているサービスを非常にざっくりいうと次の3つです。
カンムはクラウドにメインのインフラを置きつつ、特別な対応が必要な企業とは専用線接続する必要がありました。メインのAWS とは AWS Direct Connect で DC に繋いで、接続先企業に回線を伸ばすという要件です。よって AWS と接続先企業との中継をするネットワーク機器を置くためのラックが1つあれば十分でした。つまり上記3択とするとハウジングで小さなラックを1つ借りるのが適切です。以下、電源・通信設備およびラックをハウジング契約する前提として書きます。
タイトルの通り、2022年6月21日からバンドルカードと Pool のカードが 3D セキュアに対応しました。バンドルカードではアプリですぐに発行可能なバーチャルカードを含む全てのカードで対応しているので、気軽により多くの加盟店での決済にご利用いただけるようになりました。
いつもはバンドルカードのインフラやセキュリティといった領域を担当しているのですが、3D セキュアの対応では久しぶりにバックエンドエンジニアとして自分もプロダクト開発に関わったので、今回は 3D セキュアの仕組みとその開発に関する話を簡単に紹介したいと思います。
3D セキュアとは
3D セキュアは、オンラインなど非対面でクレジットカードを使用して決済をする際に、カードの所有者であることを事前に認証する仕組みです。3D セキュアを使用することで、カード情報の盗用によるオンライン上での不正利用を防止できます。ショッピングサイトなどでカード決済をする際に突然パスワードの入力を求められた、といった経験がある方も多いかもしれません。あれが 3D セキュアによる認証です。
3D というのは三次元のことではなく3つのドメイン (Domain) すなわち、加盟店/アクワイアラ、決済ネットワーク、イシュアの3つの立場を指しており、以下の図のようにそれぞれの立場にあるシステムが連携して本人認証をする仕組みになっています。カンムのようにカード発行をするイシュアの立場では Access Control Server (ACS) と呼ばれるシステムを用意することで 3D セキュアによる認証に対応できます。
3D セキュアの最新の仕様は「EMV 3-D Secure」と呼ばれており、EMVCo の公式サイトで参照できるので、興味がある方はぜひ参照してみてください。
VCAS では ACS としての機能が一通り提供されており、3D セキュアの認証フローの各種処理に必要となる情報を専用の API を介してイシュアから VCAS に提供することで、ACS を実装せずとも 3D セキュアに対応できる仕組みになっています。
VCAS の導入とその開発
VCAS の導入にあたっては、バンドルカードと Pool のそれぞれで VCAS と接続するための仕組みを開発する必要がありました。ここからは開発の流れなどを簡単にふりかえって気をつけた点などを紹介してみたいと思います。
前提の確認と方針決め
まず、今回の VCAS の導入では次のような前提や制約がありました。
Visa 様との共同プロジェクトによる開発
ローンチまでのスケジュールが比較的がっちりと決まっている
バンドルカードと Pool で同時に VCAS に対応する必要がある
可能な限り早くユーザーが 3D セキュアを利用できるようにしたい
これらの前提と制約を受け入れつつスムーズに開発を進めるために、ある程度細かい部分までの仕様は先に決めて関係者の間で合意をとりつつ、実装はバンドルカードと Pool で順番に細かく進め、得られた知見をそれぞれのプロダクトの実装に相互にフィードバックしながら品質を高めていく方針としました。
設計と社内レビュー
制約と方針に基づいて、まずは設計を固めることとしましたが、この段階では「バンドルカードと Pool で同時に VCAS に対応する」という制約が最初の課題になりました。これは単純に Pool が新しいプロダクトであり、今まで2つのプロダクトで同時に同じ対応をする、という動きがこれまでの社内では無かったためです。そこでまずはバンドルカードを社内のリファレンス実装として先に実装することに決め、そこで得られた知見をもとに Pool での実装を進めることにしました。
バンドルカードの実装がある程度の形になって VCAS と接続しての結合テストが可能な状態になった後は、並行して Pool 用 API の実装も同様の流れで進めました。
何かを新しく実装する時は何回か実装を繰り返すとより良いコードが見えてくる...といったことがよくあるかと思いますが、今回は幸いにも同じような API を2回実装する機会ができたので、Pool 用の API の実装時にはバンドルカード用の実装の課題をうまく改善する試みができました。また Pool 用の実装でうまくいった点は逆にバンドルカード用の実装にフィードバックする、といったことができたのもよかったなと感じています。
テストの実施
バンドルカードと Pool のそれぞれの実装が形になったあとは Visa 様の管理するシステムと接続しての結合テストを実施します。結合テストは以下の2つを観点でそれぞれ独立して実施されました。
VCAS とバンドルカードおよび Pool の API が連携して 3D セキュアの認証が正しく動作するか
決済ネットワークである VisaNet とバンドルカードおよび Pool の Processor が 3D セキュア認証後のオーソリを正しく処理できるか
今回は 3D セキュアの仕組みとその対応にあたっての開発の流れなどを簡単に紹介してみました。個人的には 3D セキュア対応により多くのユーザーの決済機会を増やすことができたのを嬉しいと思うと同時に、久々のプロダクト開発も楽しめてとてもよい経験になりました。
バンドルカードでは 3D セキュアへの対応をはじめとして、今後も自分の持っている価値をどこでも自由に交換出来るようにする「価値交換」、自分の持つ価値をより良く制御できるようサポートする「価値制御」、自分が持っている価値を未来まで拡張する「未来価値」の3つの領域にフォーカスしてプロダクトの改善を進めていく予定です。これらの3つの領域の詳細については、ぜひ COO である achiku が書いた以下のブログ記事もあわせて参照してみてください。また、先日新たに提供を開始した Pool でも資産形成を軸に様々な価値を提供していきます。