Bagaimana Tinkoff.ru mengotomatiskan analitik dengan Zeppelin

Tinkoff.ru mengembangkan banyak layanan di pasar layanan keuangan. Analis, pengembang, teknologi, dan manajer kami menyelesaikan tugas sehari-hari mereka. Setiap hari kami menghasilkan ide, menganalisis, mengembangkan, dan melakukan segalanya untuk menciptakan produk terbaik di pasar.

Saya bekerja sebagai programmer backend di departemen pengembangan internal. Kami membantu meluncurkan lini bisnis baru, mengotomatiskan alur kerja dan mencoba untuk menyimpan bank uang jika memungkinkan (misalnya, menolak untuk membeli lisensi untuk beberapa jenis perangkat lunak mahal). Alur kerja kami sangat standar: manajer datang dengan fitur bisnis, teknologi memformalkannya dan menetapkan tugas, analis menganalisis data, dan pengembang sudah menyelesaikan tugas yang ditugaskan kepada mereka. Segala sesuatu dalam hidup lebih rumit, tetapi Anda sudah tahu itu.

Salah satu pelanggan bisnis kami adalah departemen loyalitas pelanggan kami - Tinkoff Target. Sebelum saya berbicara tentang otomatisasi analitik, saya akan menjelaskan cara kerja program loyalitas kami.

Program loyalitas Tinkoff.ru atau bagaimana kami mendistribusikan uang kembali kepada orang-orang


Hampir semua bank modern mengeluarkan uang kembali: dalam rubel, mil, atau kakaktua (poin yang bisa Anda pakai untuk sesuatu yang spesifik).

Kami tidak terkecuali, kami mengeluarkan cashback standar 1% untuk semuanya dan 5% untuk 3 kategori yang dipilih (misalnya, "Transport", "Cinema", "Souvenirs" dan sebagainya). Anda tidak perlu memberikan banyak cashback seperti itu (tapi saya benar-benar ingin), dan oleh karena itu kami memiliki penawaran khusus dari mitra bank yang juga ingin memberikan cashback. Jadi, sebagai bagian dari lini bisnis program loyalitas, kami berusaha menemukan dan meyakinkan berbagai perusahaan untuk mengeluarkan uang kembali kepada pelanggan kami dengan kondisi yang saling menguntungkan. Perusahaan-perusahaan ini adalah mitra kami.

Bagaimana kita melakukan ini? Bayangkan bahwa ada perusahaan bersyarat Yabloko di pasar. Cara terbaik untuk menarik Yabloko ke program cashback kami adalah membantunya menjual produk atau layanannya. Di sini tugasnya adalah untuk menarik audiensi bagi pasangan. Misalnya, pelanggan yang dibeli dari pesaing atau pelanggan yang tidak mengetahui keberadaan Yabloko. Dan juga, dimungkinkan bagi Yabloko untuk memilih pelanggan yang paling cocok untuk profil mereka dan yang benar-benar menginginkan Yabloko, mereka belum tahu tentang hal itu - ini tentang kecerdasan buatan dan pembelajaran mesin.

Tugas memilih audiens target seperti itu ada pada analis. Kami memiliki dua dari mereka, dan ada banyak mitra - lebih dari 1000. Selain itu, analis masih memiliki banyak pekerjaan yang menarik, dan seiring bertambahnya jumlah mitra, memilih audiens yang tepat berubah menjadi rutinitas. Rutinitas seperti itu perlu diotomatisasi dan diubah menjadi satu klik pada tombol (atau lebih baik tanpa tombol sama sekali). Selain itu, proses multi-tahap melaksanakan tugas-tugas tersebut memerlukan kesalahan yang disebabkan oleh faktor manusia. Selanjutnya saya akan memberi tahu Anda bagaimana kami berhasil menyingkirkan pekerjaan rutin tersebut.

Bagaimana kami membangun analitik


Di Tinkoff.ru, sebagian besar analis menggunakan Apache Zeppelin dalam tugas sehari-hari mereka. Kami telah lama mengambil alat ini ke dalam layanan dan secara aktif mengembangkannya (bahkan berkomitmen untuk open source). Semua karyawan memiliki akses ke penyimpanan data dan pelaporan global, yaitu, ke semua sumber daya analitik Tinkoff.ru dengan kemungkinan menggunakan bahasa analitik yang nyaman.

Zeppelin ditulis dalam bahasa Jawa dan mencakup banyak penafsir bahasa dan teknologi modern, termasuk Python, Hive, Spark, Groovy, R dan banyak lainnya. Naskah tertulis disimpan dalam laptop, yang terdiri dari paragraf, secara eksternal, UI lingkungan kerja sangat mirip dengan Jupyter . Dan layar utama aplikasi adalah sebagai berikut:

gambar

Setiap lini bisnis di sini memiliki direktori kerja sendiri dengan diferensiasi hak baca dan pengeditan.

Nilai tambah besar bagi kami (pengembang) adalah tersedianya API yang sangat nyaman dan interaktif. Dengan API, hidup menjadi lebih mudah. Melalui API dengan alat ini, Anda dapat melakukan apa pun yang Anda inginkan, melewati UI web. Maka muncul ide untuk mengintegrasikan hasil kerja analis dalam proyek kami.

Secara singkat tentang proyek kami


Backend kami ditulis di Jawa, Frontend di Angular 5 (karena proyek ini tidak muda, bagian dari UI ditulis dalam Vaadin, yang kami singkirkan perlahan-lahan). Sebagian besar proyek adalah aplikasi web untuk bekerja dengan manajer, di mana mereka melakukan hubungan dengan mitra, membuat penawaran khusus baru, memantau implementasi KPI mereka, dll. Kami memiliki akun pribadi mitra di mana setiap mitra bank dapat mengamati statistik penawaran khusus yang diluncurkan (akrual, aktivasi, dll.), Mengunduh dan menandatangani perjanjian, akun, dan mendokumentasikan hubungan secara umum.

gambar

Kami mengirim data ke bank seluler dan portal web ke bagian "Bonus" melalui layanan web SOAP. Ada Landing yang ditulis dalam React, di mana siapa pun dapat meninggalkan permintaan untuk berpartisipasi dalam program loyalitas. Kami telah menerapkan berbagai mekanisme untuk menghitung cashback dan angsuran khusus, integrasi dengan berbagai layanan perbankan.

Integrasi dengan Apache Zeppelin


Secara tradisional, untuk menarik mitra baru, manajer mengirim analis surat dengan seperangkat harapan mitra untuk menghasilkan audiens target. Analis menggunakan skrip yang ditulis sebelumnya di kebun binatang bahasa dan copy-paste ajaib.

Jelas, dengan formalisasi persyaratan yang tepat, Anda dapat menulis skrip universal, yang kami lakukan. Dan untuk memasukkan data resmi mereka menulis UI yang nyaman. Tetap hanya untuk mengimplementasikan pekerjaan dengan Apache Zeppelin di aplikasi web kami. Skema kerja integrasi tersebut adalah sebagai berikut:

gambar

Manajer dalam proses komunikasi dengan mitra menciptakan tugas dalam aplikasi, mengisi parameter pada formulir untuk membentuk audiens target. Contoh dari parameter tersebut adalah sebagai berikut:

  • Kategori BCC dan / atau kode MCC di mana klien bertransaksi atau ditransaksikan dalam periode waktu tertentu untuk jumlah tertentu dengan cek rata-rata tertentu.
  • Perusahaan kompetitif di mana klien mengangkut atau mengangkut dalam periode waktu tertentu.

dan lainnya.

Ada banyak parameter seperti itu dan semuanya diformalkan pada UI. Setelah memasukkan parameter awal, manajer memulai operasi pembangkitan dan algoritma memulai kerjanya:

  1. Karena semua skrip kami ditulis dalam satu buku catatan dan kami tidak ingin mengubahnya, kami mengkloningnya ke direktori yang terpisah. Zeppelin dalam menanggapi permintaan kami mengembalikan kami ID klon, dimana kami akan menghubungi laptop baru. Mengkloning skrip yang berfungsi juga mudah untuk administrasi, karena kita selalu dapat melihat skrip yang dieksekusi untuk tugas tertentu dan menemukan masalahnya.
  2. Dimulai dengan versi Zeppelin API 0.8, setelah membuat laptop baru, Anda perlu membubuhkan akses CRUD untuk administrasi berikutnya.
  3. Dalam salah satu paragraf pertama dari laptop yang berfungsi, sebagai aturan, variabel dideklarasikan dan nilai default awalnya ditetapkan, yang harus diganti. Pada tahap ini, kami memasukkan paragraf kami ke laptop (dengan inisialisasi variabel dan data yang diformalkan), yang kami bentuk sebelum mengirim.
  4. Selanjutnya, dengan permintaan ringan untuk metode POST, kami meluncurkan laptop kami untuk dieksekusi. Atau lebih tepatnya, kami menjalankan paragraf kami satu per satu, untuk memantau pelaksanaan semua skrip dan menampilkan status generasi audiens target dalam aplikasi.
  5. Pada akhir operasi, manajer menerima pemberitahuan (jika dia tidak memantau status kemajuan). Hasil skrip adalah file CSV yang dihasilkan dengan audiens, disimpan dalam direktori bersama. Saat meluncurkan penawaran khusus, kami dapat menghasilkan beberapa audiens dan menambahkannya dengan tipe yang berbeda saat menambahkan penawaran. Dan untuk pemirsa dengan berbagai jenis, kita dapat dengan fleksibel mengatur kondisi dan ukuran akrual cashback.

Sedikit analitik yang kasar


Menurut perkiraan kasar, otomatisasi mengumpulkan audiens target telah menyebabkan pelepasan lebih dari 30% waktu kerja analis (tidak termasuk waktu yang dihabiskan untuk komunikasi antara analis dan manajer).

Dari Juni 2018 hingga Januari 2019, jumlah tugas generasi yang diselesaikan melebihi 400. Menurut manajer komunikasi dan mendapatkan hasil yang diperlukan, mereka menghabiskan 0,5 hingga 4 jam, mengambil waktu rata-rata untuk membentuk target audiens ~ 2 jam, lebih dari 800 jam kerja diselamatkan. (lebih dari 100 hari kerja).

Kesimpulannya


Hal terpenting yang berhasil dicapai integrasi dengan Zeppelin adalah meminimalkan faktor manusia di semua tahap proses generasi audiens target. Kesalahan dalam pembentukan audiens yang cocok untuk mitra, sebagai suatu peraturan, diidentifikasi setelah akrual. Mengeluarkan uang kembali kepada semua orang secara berturut-turut, setelah peluncuran penawaran khusus, sangat sulit untuk meminimalkan biaya keuangan yang dikeluarkan, dan untuk kesalahan membuat Anda harus membayar mahal.

Nilai tambah besar lainnya adalah pergeseran tanggung jawab terhadap sumber utama proses, seperti "Bottleneck" faktor manusia sekarang berada di zona pembentukan data awal oleh manajer. Dan ini berarti bahwa orang yang menciptakan tugas generasi dan mengisi parameter awal melakukan ini dengan perhatian yang meningkat.

Saat ini, kami terus mengembangkan integrasi dan mengotomatiskan tugas analitis. Jadi, menggunakan peluncuran skrip jarak jauh yang ditulis dalam Zeppelin, dari aplikasi kami menghasilkan berbagai jenis laporan analitik untuk manajer yang sebelumnya disiapkan secara individual berdasarkan permintaan.

Source: https://habr.com/ru/post/id441644/


All Articles