導入する代わりに
すべての興味深い物語のように、これはかなり前に、そして予想外に始まりました。 私たちのパートナー銀行が私たちのところに来て言ったとき、「みんな、私たちはシステムで1分で採点をすることを学びました。 力を合わせてプロジェクトを統合してみませんか? 私たちと一緒に-あなたと決断と信用-車。」 私たちはインスピレーションを受けたと言うために-何も言わないために! 私たちは、1分間で中古車のオンラインローンを提供できる、世界で最初になる可能性がありました(1分間、CARL)! 以下で、その由来を説明しますが、最初に、実際に私たちが誰であるかを説明します。
私たちは「ホイール| 屋根| 市場」は、カザフスタンに拠点を置く最大のIT企業です。 当社の製品は、毎日600万人のカザフスタン人が車、アパート、ベビーベッドなどの何千ものものを売買するのを助けています。 Kolesa.kzは最大の自動車リソースおよびアプリケーションであり、数年にわたってカザフスタンのモバイル評価で1位を獲得しています。
プロジェクト「自動車ローン」とは何ですか?
現在、中古車のベースは103,400台で、そのうち60%以上がクレジットで利用可能です!
1.クレジットを取得したい車を選択します
図1.クレジットで利用可能な車の検索結果
2.発表ページに、ローンを申請するためのフォームがあります
図2.広告ページ画面
3.期間と頭金を選択し、クリックして承認を取得します
図3.発表のクレジット計算機
4.連絡先の詳細を入力する必要があるフォームに移動します
図4.ローン申請の初期化フォーム
ここでは、携帯電話番号の名前とIINを入力します(ロシアではTINになります)
5.次に、指定した番号に来るSMSコードを入力する必要があります
図5. SMSを入力して電話番号の確認フォーム
6.その後、採点プロセス自体が開始され、1分以内に終了します
図6.アプリケーションのスコアリングプロセスの画面
7.結果のスコアリングにはいくつかのオプションがあります。
- ローンを承認します
- ローンを拒否されました
- 代替条件が提供されます
- 追加情報を求められた後、前のオプション(a、b、c)のいずれかを受け取ります
図7.自動ローン承認画面の例
人が申請の承認を受け取った後、銀行のマネージャーは10分以内に彼に電話をかけ、ローンを取得するために次に実行する必要があるアクションを通知します。 便利ですね。 それがすべて実装された方法を見てみましょう。
それがすべて始まった方法を覚えていますか...
すべてが初めてでした! 以前にクレジットフォームとしてフィードバックフォームがあった場合、新しいアイデアはまったく新しいものであり、わかりにくいものでした。 なぜなら 類似点はなく、計画、設計、配布、実装という非常に刺激的なレッスンがありました。 まず、ジョイント統合のプロセス全体を、並行して実行される2つのブロックに分割しました。
- インフラ統合
ソフトウェア統合
最初に、パートナーバンクと提携して、彼(パートナーバンク)が何らかのAPIを提供し、そこにデータを送信して回答を受け取ることに同意しました。 それが彼らが決めたものです。 銀行からのAPIドキュメントを待ち始め、私たちと彼らのネットワークエンジニアを集めました! ソフトウェア統合に関しては、かなり単純なスキームが登場し、銀行にデータを送信し、銀行がシステム内でそれらをスクロールして返送します。これはすべて保証された60秒間です。 タイムアウトが発生した場合(これがない場合)、緊急アンケートを表示することに同意しました。このアンケートでは、銀行がさらに必要とするデータを取得します。
ネットワーク
当時、開発者は実装ツールを選択していたが、システムを設計し、パートナーシステムに関するドキュメントを待っていましたが、インフラストラクチャ部門での作業はすでに本格的でした! パートナーバンクと私は2つありました:1つのDCで2つの隣り合った2つのTsiska、すべての色とサイズのTsiska、VPNトンネル、セキュリティ証明書、およびそれらを操作するためのPribludyを接続するケーブル...サーバー、およびサービス間の直接統合を構築します。 概略的には、これは次のように表すことができます。
コードについて話しましょう
以下では、当社のサービスによってどのように、どのように配置されるかについて説明します。 そのため、統合の準備ができているパートナーのサービスを説明するドキュメントを受け取った後、私たちとは異なり、銀行はSOAPリクエストのみで動作し、RESTfulサービスについては聞きたくないことを学びました。 また、サービスではこれまでにないほど頻繁にSOAPを使用するため、新しい製品でSOAPを準備する方法を学ぶ方法について多くの素晴らしい発見がありました。 したがって、SOAPリクエストを解析し、レスポンスをSOAPに戻すようにサービスを教える必要がありました。
フレームワークの選択
まず第一に、少なくとも実装言語を選択する必要がありました。CとC#からgolangとerlangで終わる多くのアイデアがありました。 私たちは単純な道に従うことにしました。 システムをサポートする必要があり、市場の専門家が不足しているバス要因に陥らないようにするために、会社で最も一般的なテクノロジーであるPHPに焦点を合わせることにしました。 窓の外は2001年ではなく2017年であり、非常に洗練されたエンジニアのニーズも満たせるほど多くのphpフレームワークがあることを神に感謝します。 ひとまとまりを整理した後、最もシンプルで同時にサポートされているものの1つ、Yii 2を選択しました。
この決定は:
- マスターするのは簡単、文学の束;
- フォームとバリデーターを作成するのは簡単です。
- Active Recordと、あらゆる種類のツールを使用できる車があります。
- 彼は本当に速いです。
- それに基づいて、APIは単純に構築され、コンソールコマンドを書くのに便利です。
それに対して:
- フレームワークは静的メソッド上に構築されます-これはテストを書くときを含めて非常に不便です
- 起動後、近い将来にどの追加ツールが必要になるかは明確ではなく、その結果、必要なライブラリが見つからないというリスクがありました...
ストレージの選択
フレームワークが選択されたので、今度はアプリケーションのリポジトリを選択します。 MySQL、mongoDB、postgreSQLなど、いくつかのオプションがありました...一方、アプリケーションはドキュメントであり、その構造は時々変更され、新しいフィールドで補足され、無関係なものを取り除きます。 一方、非リレーショナルデータベースの使用には制限があります。 長所と短所を比較検討した後、2つの椅子に座ってMySQLを使用して起動し、起動後にmongoDB + ElasticSearchに移行することにしました。 その結果、2つのMySQLレプリカがストレージとして作成され、ActiveRecordを使用してアプリケーションにネジ止めされました。 mongoDBへの移行を開始するまでに、データ量は非常に大きくなり、アプリケーションを条件付きリポジトリに分割する必要性が生じるほど増加しました。 ほぼリアルタイムのドキュメントインデックス作成のツールとして、ElasticSearchはGolang-monstacheで記述されたサービスを使用することを決定しました。
インフラストラクチャの構築
次のインフラストラクチャを実行することにしました。アプリケーションプロセッサによるアプリケーションを備えた10のバックエンド、2つのバランサー、2つのMySQLレプリカ、3つのelasticsearchシャード、3つのmongoDBレプリカ、2つのmonstacheサービスレプリカ。
プロセス
一般に、自動車ローンのプロセスは2つの部分に分けることができます。
- 開始するには、クレジットで利用可能な適切な車を見つける必要があります。 ほとんどの場合、その条件とローンの条件によってガイドされます。
- 車を選択した後、ローンの承認を取得する必要があります。そのためには、申請書に記入する必要があります
2番目の部分の実装については、上記で多少説明しましたが、1番目の部分の実装について話しましょう。 最初の部分の実装は、いくつかのサブパートで構成されています。
- 自動車を検索する場合、技術的なパラメーターに加えて、クレジットで購入できる自動車の有無と月額支払いの最小額に集中できる必要があります。 これを行うには、発表時に車がクレジットで利用可能であることと、その最低支払額を知る必要があります。
- 人が車を選んだ後、私たちは彼にローン計算機を提供する必要があります。そこで彼は頭金のサイズとローン期間を選ぶことができ、それによって最も快適な月払い額を選ぶことができます。
この目的のために、go言語の特別なマイクロサービスが開発されました。 その本質は次のとおりです。広告がマイクロサービスに送信されると、自動車に関するすべてのデータを含むオブジェクトが送信され、マイクロサービスは個別に記述されたルールに基づいて、検索でのインデックス作成のための最小月額支払いを返し、また最小頭金と許容期限を返します貸出。これは、ローン計算機を構築するための基礎です。
標準的な頭金および月払いの値については、誤算オプションを事前にキャッシュします。 これは、利用可能なクレジット期間ごとに行われます。 人が最初の支払いを(許容範囲内で)変更すると、マイクロサービスは再びすべてのデータを計算します。 最初の支払いが許容額よりも少ない場合、計算機は検証エラーを表示します。
サービスの負荷が高いため、ローン計算機には2度のキャッシングがあります。最初はバックエンドで行われ、クライアントは最初に計算機に行き、2番目はマイクロサービス自体に行きます。
それで、一番下の行は何ですか?
2017年9月11日にプロジェクトを開始しました。 その瞬間から現在まで(2018年4月12日)2,973,868件の申請が提出されました。 私たちはサービスを改善し、ユーザーの旅を簡素化する継続的なプロセスにいます。 より速く簡単に、より安定させます! ローンチ以降の全期間のプロジェクト稼働時間は99.99%でした。
その結果、次の結果が得られます。
- ユーザーパスの大幅な削減
- 貸し出し可能な車の量をベース全体の60%に拡大しました
- 現在までに、アプリケーションの数は7倍以上増加しています!
結論の代わりに
3か月で、私たちは本当に驚くべきユニークなプロジェクトを構築することができました。 その主な目標は、当社のプラットフォームを離れることなく、お客様に中古車を購入する機会を提供することでした。 わずか1分で、ユーザーは自分の申請について決定を下し、売り手に電話して、同じ日に必要な書類をすべて作成することができます。
1年と2か月の申し込み数から判断すると、サービスを本当に便利で需要のあるものにできると結論付けることができます。