- Profi.ru
Profi.ru adalah layanan yang membantu klien dan spesialis dari berbagai bidang bertemu. Database layanan berisi lebih dari 900 ribu spesialis dalam 700 jenis layanan: tutor, tukang reparasi, pelatih, ahli kecantikan, artis, dan lain-lain. Lebih dari 10 ribu pesanan baru terdaftar setiap hari - semua ini memberikan sekitar 100 juta acara per hari. Menjaga jumlah data ini agar tidak mungkin tanpa insinyur data profesional.
Idealnya, Data Engineer mengembangkan budaya data yang memungkinkan perusahaan menghasilkan pendapatan tambahan atau mengurangi biaya. Ini membawa nilai bagi bisnis dengan bekerja dalam tim dan bertindak sebagai penghubung penting antara berbagai peserta - dari pengembang hingga konsumen bisnis pelaporan. Tetapi di setiap perusahaan, tugasnya mungkin berbeda, jadi kami akan mempertimbangkannya menggunakan contoh Profi.ru.
— -, -,
Data harus jelas untuk pengambilan keputusan dan mudah digunakan. Anda tidak perlu berusaha mencari deskripsi atau menulis kueri SQL kompleks yang memperhitungkan banyak faktor berbeda. Gambar ideal - pengguna melihat ke dasbor dan puas dengan semuanya. Dan jika tidak ada cukup data dalam beberapa aspek, maka itu masuk ke database dan dengan bantuan kueri SQL sederhana mendapatkan apa yang dibutuhkannya.
Tempat proses Kualitas Data dalam struktur umum gudang data
Penjelasan dokumentasi tentang bekerja dengan data sangat penting. Ini menyederhanakan pekerjaan insinyur data (tidak terganggu oleh pertanyaan) dan pengguna data (dia dapat menemukan jawaban atas pertanyaannya sendiri). Di Profi.ru dokumen semacam itu dikumpulkan di forum internal.
Kenyamanan termasuk kecepatan pengambilan data. Kecepatan = ketersediaan dalam satu langkah, klik - dasbor. Namun dalam praktiknya, semuanya menjadi lebih rumit.
Dari sudut pandang pengguna akhir dasbor, Tableau yang sama tidak memungkinkan menampilkan semua dimensi yang mungkin. Pengguna puas dengan filter yang dibuat oleh pengembang dasbor. Ini menciptakan dua skenario:
- Pengembang membuat banyak pemotongan untuk dasbor ⟶ jumlah halaman meningkat pesat. Ini mengurangi ketersediaan data: menjadi sulit untuk memahami di mana letak apa.
- Pengembang hanya membuat pemotongan kunci. Lebih mudah untuk mencari informasi, tetapi untuk potongan yang sedikit kurang standar, Anda masih harus pergi ke database atau ke analis. Yang juga buruk untuk aksesibilitas.
Aksesibilitas adalah konsep yang luas. Ini adalah ketersediaan data dalam bentuk yang tepat, dan kemampuan untuk mendapatkan informasi di dashboard, serta pemotongan data yang diperlukan.
Kumpulkan data dari semua sumber di satu tempat
Sumber data bisa internal atau eksternal. Misalnya, bisnis seseorang bergantung pada laporan cuaca yang akan dikumpulkan dan disimpan - dari sumber eksternal.
Informasi perlu disimpan dengan indikasi sumbernya, dan juga agar data dapat ditemukan dengan mudah. Profi.ru memecahkan masalah ini dengan bantuan dokumentasi otomatis. File YML digunakan sebagai dokumentasi tentang sumber data internal.
Buat dasbor
Visualisasi data paling baik dilakukan dengan alat profesional seperti Tableau.
Kebanyakan membuat keputusan secara emosional - visibilitas dan estetika itu penting. Omong-omong, Excel yang sama untuk visualisasi tidak terlalu cocok: tidak mencakup semua kebutuhan pengguna data. Misalnya, manajer produk suka menggali angka, tetapi dengan cara yang nyaman untuk dilakukan. Hal ini memungkinkan dia untuk menyelesaikan masalahnya, dan tidak memikirkan tentang bagaimana mendapatkan informasi dan mengumpulkan metrik.
Visualisasi data berkualitas tinggi membuat keputusan lebih mudah dan lebih cepat.
Semakin tinggi posisi seseorang, semakin mendesak kebutuhan untuk memiliki data agregat di tangan, di telepon. Manajer puncak tidak memerlukan detail - penting untuk mengendalikan situasi secara keseluruhan, dan BI adalah alat yang baik untuk ini.
Contoh dasbor produk Profi.ru (salah satu lembar). Untuk kerahasiaan informasi, nama metrik dan sumbu disembunyikan
Contoh tugas nyata
Tugas 1 - mentransfer data dari sistem sumber (operasi) ke gudang data atau ETL
Salah satu tugas rutin seorang insinyur data.
Untuk ini bisa digunakan:
- skrip yang ditulis sendiri dijalankan oleh cron atau menggunakan orkestrator khusus seperti Airflow atau Prefect;
- Solusi ETL sumber terbuka: Pentaho Data Integration, Talend Data Studio, dan lainnya;
- solusi berpemilik: Informatica PowerCenter, SSIS dan lainnya;
- solusi cloud: Matillion, Panoply, dan lainnya.
Dalam versi sederhana, tugas diselesaikan dengan menulis file YML sebanyak 20 baris. Diperlukan waktu sekitar 5 menit.
Dalam kasus tersulit, saat Anda perlu menambahkan sumber baru - misalnya, database baru - proses ini dapat memakan waktu hingga beberapa hari.
Di Profi, tugas sederhana ini - dengan proses yang efisien - terdiri dari langkah-langkah berikut:
- Cari tahu dari pelanggan data apa yang dibutuhkan dan di mana lokasinya.
- Pahami jika ada akses ke data ini.
- Jika tidak ada akses, tanyakan pada admin.
- Tambahkan cabang baru ke Git dengan kode masalah Jira.
- Buat migrasi untuk menambahkan data ke model jangkar melalui skrip Python interaktif.
- Tambahkan file unduhan (file YML dengan deskripsi dari mana data diambil dan di tabel mana data itu ditulis).
- Uji di stand.
- Unggah data ke repositori.
- Buat permintaan tarik.
- Pergi melalui peninjauan kode.
- Setelah melewati tinjauan kode, data diunggah ke cabang master dan secara otomatis dimasukkan ke dalam produksi (CI / CD).
Tugas 2 - menempatkan data yang diunduh dengan nyaman
Tugas umum lainnya adalah menempatkan data yang diunduh sehingga pengguna akhir (atau alat BI) merasa nyaman bekerja dengannya dan tidak perlu melakukan gerakan yang tidak perlu untuk menyelesaikan sebagian besar tugas. Yaitu, buat atau perbarui Penyimpanan Data Dimensi (DDS).
Untuk ini, solusi dari tugas pertama dapat diterapkan, karena ini juga merupakan proses ETL. Dalam bentuknya yang paling sederhana, DDS diperbarui menggunakan skrip SQL.
Tugas 3 - dari kategori tugas atipikal
Analisis streaming lahir di Profi. Sejumlah besar acara dari tim produk dibuat - kami merekamnya di ClickHouse. Tapi Anda tidak bisa menyisipkan rekaman di sana satu per satu dalam jumlah besar, jadi Anda harus menggabungkan rekaman ke dalam batch. Artinya, Anda tidak dapat menulis secara langsung - Anda memerlukan penangan perantara.
Kami menggunakan mesin berbasis Apache Flink. Sejauh ini, prosedurnya adalah sebagai berikut: mesin memproses aliran peristiwa yang masuk ⟶ menambahkannya dalam batch di ClickHouse ⟶ dengan cepat menghitung jumlah peristiwa dalam 15 menit ⟶ mengirimkannya ke layanan, yang menentukan apakah ada anomali - membandingkan dengan nilai untuk 15 menit yang sama dengan kedalaman 3 bulan ⟶ jika ada, kirim notifikasi ke Slack.
Skema analisis front-end (bagian unduhan)
Framework Apache Flink menjamin pengiriman setidaknya sekali. Namun, ada kemungkinan duplikat. Dalam kasus RabbitMQ, ini dapat diselesaikan dengan menggunakan Correlation ID. Kemudian integritas data pengiriman tunggal dijamin.
Kami menghitung jumlah kejadian lagi menggunakan Apache Flink, menampilkannya melalui dasbor yang ditulis sendiri yang ditulis dalam NodeJS, + depan di ReactJS. Pencarian cepat tidak menghasilkan solusi serupa. Dan kodenya sendiri ternyata sederhana - tidak butuh waktu lama untuk menulis.
Pemantauannya agak teknis. Kami melihat anomali untuk mencegah masalah pada tahap awal. Beberapa metrik global perusahaan yang signifikan belum termasuk dalam pemantauan, karena arah analitik streaming berada pada tahap pembentukan.
Alat Engineer Data Penting
Dengan tugas insinyur data, lebih atau kurang jelas, sekarang sedikit tentang alat yang digunakan untuk menyelesaikannya. Tentu saja, alat-alat di perusahaan yang berbeda dapat (dan seharusnya) berbeda - semuanya tergantung pada volume data, kecepatan penerimaan dan heterogenitasnya. Ini juga dapat bergantung pada bias spesialis terhadap satu instrumen tertentu hanya karena dia bekerja dengannya dan memahaminya dengan baik. Profi.ru menetapkan opsi seperti itu →
Untuk visualisasi data - Tableau, Metabase
Tableau dipilih sejak lama. Sistem ini memungkinkan Anda menganalisis data dalam jumlah besar dengan cepat, namun tidak memerlukan implementasi yang mahal. Bagi kami, ini nyaman, indah dan akrab - kami sering bekerja di dalamnya.
Hanya sedikit orang yang tahu tentang Metabase, sementara itu sangat bagus untuk pembuatan prototipe.
Dari alat visualisasi, Anda juga bisa mengatakan tentang Superset Airbnb. Fitur khususnya adalah banyak koneksi database dan kemampuan visualisasi. Namun, untuk pengguna biasa, ini kurang nyaman daripada Metabase - Anda tidak dapat menggabungkan tabel di dalamnya, untuk ini Anda perlu membuat tampilan terpisah.
Dalam Metabase yang sama, Anda dapat menggabungkan tabel, terlebih lagi, layanan melakukannya sendiri, dengan mempertimbangkan skema database. Dan antarmuka Metabase lebih sederhana dan lebih bagus.
Ada banyak alat - temukan saja milik Anda.
Untuk penyimpanan data - ClickHouse, Vertica
ClickHouse adalah alat cepat gratis untuk menyimpan acara belanjaan. Di atasnya, analis sendiri membuat analitik terpisah (jika mereka memiliki cukup data) atau teknisi data mengambil agregat dan mengunggahnya kembali ke Vertica untuk membangun etalase.
Vertica adalah produk ramah pengguna yang keren untuk tampilan toko akhir.
Untuk kontrol dan perhitungan aliran data - Aliran udara
Kami memuat data melalui alat konsol. Misalnya, melalui klien yang datang dengan MySQL, ternyata lebih cepat.
Keuntungan alat konsol adalah kecepatan. Data tidak dipompa melalui memori dari proses Python yang sama. Dari minusnya, ada sedikit kontrol atas data yang berpindah dari satu database ke database lainnya.
Bahasa pemrograman utama adalah Python
Python memiliki ambang masuk yang jauh lebih rendah + perusahaan memiliki kompetensi dalam bahasa ini. Alasan lain adalah bahwa di bawah Airflow DAGs ditulis dengan Python. Skrip ini hanyalah pembungkus unduhan, sebagian besar pekerjaan dilakukan melalui skrip konsol.
Kami menggunakan Java untuk pengembangan analitik waktu nyata.
Pendekatan untuk memilih alat data - apa yang harus dilakukan agar tidak membiakkan kebun binatang teknologi
Ada banyak alat di pasar untuk bekerja dengan data di setiap tahap: dari penampilan hingga keluaran hingga dasbor untuk dewan direksi. Tidak mengherankan, beberapa perusahaan mungkin memiliki sejumlah solusi yang tidak terkait - yang disebut kebun binatang teknologi.
Kebun binatang teknologi adalah alat yang melakukan hal yang sama. Misalnya, Kafka dan RabbitMQ untuk olahpesan atau Grafana dan Zeppelin untuk visualisasi.
Peta teknologi dan perusahaan di bidang data dan AI - Anda dapat melihat berapa banyak solusi duplikat
Selain itu, banyak untuk keperluan pribadi dapat menggunakan alat ETL yang berbeda. Di Profi, persis seperti inilah situasinya. ETL utama ada di Airflow, tetapi seseorang menggunakan Pentaho untuk unggahan pribadi. Mereka menguji hipotesis, dan mereka tidak perlu menjalankan data ini melalui teknisi. Pada dasarnya, alat swalayan digunakan oleh spesialis yang cukup berpengalaman yang terlibat dalam kegiatan penelitian - mengeksplorasi cara baru pengembangan produk. Kumpulan data mereka untuk analisis sangat menarik bagi mereka, terlebih lagi, terus berubah. Karenanya, tidak masuk akal untuk menambahkan beban ini ke platform utama.
Kembali ke kebun binatang. Seringkali penggunaan teknologi duplikat dikaitkan dengan faktor manusia. Tim internal yang terpisah digunakan untuk bekerja dengan satu atau alat lain yang mungkin tidak digunakan oleh tim lain. Dan terkadang otonomi adalah satu-satunya cara untuk menyelesaikan masalah khusus. Misalnya, tim R&D perlu menguji sesuatu dengan alat tertentu - hanya nyaman, seseorang di tim sudah menggunakannya, atau ada alasan lain. Menunggu sumber daya dari administrator sistem untuk menginstal dan mengkonfigurasi alat ini merupakan waktu yang lama. Pada saat yang sama, administrator yang bijaksana dan teliti masih perlu membuktikan bahwa ini benar-benar diperlukan. Jadi, tim menginstal alat tersebut di mesin virtual mereka dan menyelesaikan tugas khusus mereka.
, . , .
Alasan umum lain munculnya alat baru adalah keinginan untuk mencoba produk yang tidak dikenal di area yang cukup baru, di mana standar belum dibentuk atau tidak ada pedoman yang terbukti. Seorang insinyur data, seperti pengembang, harus selalu meneliti alat baru dengan harapan menemukan solusi yang lebih baik untuk masalah saat ini atau untuk mengikuti apa yang ditawarkan pasar.
Godaan untuk mencoba alat baru sangat besar. Tetapi untuk membuat pilihan yang tepat, pertama-tama Anda perlu disiplin diri. Ini akan membantu Anda untuk tidak memberikan diri Anda sepenuhnya pada dorongan penelitian, tetapi untuk memperhitungkan kemampuan perusahaan dalam mendukung infrastruktur untuk alat baru.
Jangan gunakan teknologi demi teknologi. Cara terbaik adalah mendekati pertanyaan secara pragmatis: tugas adalah seperangkat alat yang dapat menyelesaikan tugas ini.Dan kemudian evaluasi masing-masing dan pilih yang terbaik. Misalnya, alat ini dapat menyelesaikan masalah dengan lebih efisien, tetapi tidak ada kompetensi untuk itu, dan alat ini sedikit kurang efektif, tetapi perusahaan memiliki orang-orang yang tahu cara mengatasinya. Alat ini berbayar, tetapi mudah dirawat dan digunakan, dan ini adalah sumber terbuka yang modis, tetapi membutuhkan staf admin untuk mendukungnya. Dikotomi semacam itu muncul yang membutuhkan kepala dingin untuk menyelesaikannya.
Memilih alat musik adalah setengah lompatan iman, setengah pengalaman pribadi. Tidak ada kepastian yang lengkap bahwa alat tersebut akan cocok.Sebagai contoh, di Profi mereka memulai dengan Pentaho, karena mereka memiliki keahlian dalam instrumen ini, tetapi pada akhirnya keputusan itu salah. Repositori internal Pentaho menjadi sangat lambat seiring dengan pertumbuhan proyek. Ngomong-ngomong, butuh satu menit untuk menyimpan data, dan jika ada kebiasaan terus-menerus menghemat pekerjaan, maka waktu berlalu begitu saja. Untuk ini ditambahkan peluncuran yang kompleks, tugas terjadwal - komputer digantung.
Penderitaan berakhir setelah beralih ke Airflow, alat populer dengan komunitas besar.
Kehadiran layanan masyarakat, alat penting untuk memecahkan masalah yang kompleks - Anda dapat meminta nasihat rekan kerja.Jika perusahaan sudah matang dan memiliki sumber daya, masuk akal untuk mempertimbangkan membeli dukungan teknis. Ini akan membantu Anda memecahkan masalah dengan cepat dan menerima rekomendasi untuk menggunakan produk.
Jika kita berbicara tentang pendekatan pilihan, maka Profi berpegang pada prinsip-prinsip berikut:
- Jangan membuat keputusan sendirian . Ketika seseorang memilih sesuatu, dia otomatis yakin bahwa dia benar. Ini masalah lain untuk meyakinkan orang lain ketika ada pertahanan yang kuat yang harus dibuat. Ini juga membantu untuk melihat kelemahan instrumen.
- Mintalah saran dari Chief Data Officer (dialog vertikal) . Ini bisa menjadi Kepala Data Engineer, kepala tim BI. Atasan melihat situasi secara lebih luas.
- Berkomunikasi dengan tim lain (dialog horizontal) . Alat apa yang mereka gunakan dan seberapa baik. Mungkin alat kolega dapat memecahkan masalah Anda dan Anda tidak perlu mengatur kebun binatang solusi.
Kompetensi internal sebagai pengganti yang efektif untuk penyedia layanan eksternal
Pendekatan pemilihan alat juga dapat dipertimbangkan dengan menggunakan kompetensi internal perusahaan.
Cukup sering ada situasi ketika bisnis memiliki tugas yang sulit, tetapi tidak ada uang untuk melaksanakannya. Tugasnya besar dan penting, dan dengan cara yang baik, yang terbaik adalah melibatkan penyedia layanan eksternal yang memiliki pengalaman relevan. Tapi karena tidak ada kesempatan (uang), tim internal ditugaskan untuk menyelesaikan masalah. Selain itu, biasanya bisnis lebih mempercayai karyawannya jika mereka sudah membuktikan keefektifannya.
Contoh dari tugas tersebut, ketika arah baru sedang dikembangkan oleh karyawan, adalah melakukan pengujian beban dan membuat gudang data. Terutama gudang data, karena ini adalah cerita unik untuk setiap bisnis. Penyimpanan tidak dapat dibeli, Anda hanya dapat menyewa spesialis eksternal yang akan membangunnya dengan dukungan tim internal.
Ngomong-ngomong, seiring dengan perkembangan arah baru, tim mungkin menyadari bahwa kebutuhan akan penyedia layanan eksternal telah menghilang.
Di Profi, penerapan BI dilakukan secara in-house. Kesulitan utama adalah bisnis itu ingin meluncurkan BI dengan cepat. Tetapi butuh waktu untuk membangun proyek seperti itu: membangun kompetensi, mengisi data, membangun skema penyimpanan yang nyaman, memilih alat dan menguasainya.
Fase panas utama, ketika semuanya dibangun dan dikristalisasi, berlangsung selama sekitar satu tahun. Dan proyek tersebut masih terus berkembang.
Saat membangun gudang data perusahaan, penting untuk mematuhi standar yang tinggi, mempertahankan posisi Anda, dan tidak melakukannya untuk menyenangkan bisnis.Tetapi terkadang pendekatan cepat disarankan. Jadi, dalam pengembangan produk, mungkin itu satu-satunya yang benar. Anda perlu bergerak maju dengan cepat, menguji hipotesis produk, dan banyak lagi. Tetapi penyimpanan harus didasarkan pada arsitektur yang kokoh, jika tidak maka tidak akan dapat dengan cepat beradaptasi dengan bisnis yang berkembang dan proyek akan mati.
Dengan rasa sakit yang luar biasa kami memperbaiki sebagian besar proyek, yang harus diselesaikan secepatnya.
Dalam proyek yang sulit ini, pemimpin kami banyak membantu, yang membela kemajuan pekerjaan, menjelaskan kepada manajemen apa yang kami lakukan, mengeluarkan sumber daya dan hanya membela kami. Tanpa dukungan seperti itu, saya tidak yakin kami dapat meluncurkan proyek tersebut.
Dalam cerita seperti itu, peran penting dimainkan oleh apa yang disebut pengadopsi awal - mereka yang siap mencoba hal baru - di antara manajer puncak, analis, manajer produk. Untuk mengangkat topik kasar, dibutuhkan perintis yang akan memastikan bahwa semuanya berfungsi dan nyaman digunakan.
Jika ada yang ingin berbagi solusi untuk masalah ketiga yang dijelaskan di atas - selamat datang :-)