Penguji data besar dan kecil: tren, teori, cerita saya

Halo semuanya, nama saya Alexander, dan saya seorang insinyur Kualitas Data yang memeriksa kualitas data. Artikel ini akan membahas tentang bagaimana saya sampai pada hal ini dan mengapa pada tahun 2020 area pengujian ini berada di puncak gelombang.

Penguji data besar dan kecil: tren, teori, cerita saya

tren global

Dunia saat ini sedang mengalami revolusi teknologi lainnya, salah satu aspeknya adalah penggunaan data yang terakumulasi oleh semua jenis perusahaan untuk mempromosikan penjualan, keuntungan, dan PR mereka sendiri. Tampaknya kehadiran data yang baik (berkualitas), serta otak terampil yang dapat menghasilkan uang darinya (memproses, memvisualisasikan, membuat model pembelajaran mesin dengan benar, dll.), telah menjadi kunci kesuksesan banyak orang saat ini. Jika 15-20 tahun yang lalu perusahaan-perusahaan besar terutama terlibat dalam pekerjaan intensif dengan akumulasi data dan monetisasi, saat ini hal ini dilakukan oleh hampir semua orang waras.

Dalam hal ini, beberapa tahun yang lalu, semua portal yang didedikasikan untuk pencarian kerja di seluruh dunia mulai diisi dengan lowongan untuk Ilmuwan Data, karena semua orang yakin bahwa, dengan mempekerjakan spesialis seperti itu, akan mungkin untuk membangun supermodel pembelajaran mesin. , memprediksi masa depan dan melakukan “lompatan kuantum” bagi perusahaan. Seiring waktu, orang-orang menyadari bahwa pendekatan ini hampir tidak pernah berhasil di mana pun, karena tidak semua data yang ada di tangan spesialis tersebut cocok untuk model pelatihan.

Dan permintaan dari Data Scientist dimulai: “Mari kita membeli lebih banyak data dari ini dan itu…”, “Kita tidak mempunyai cukup data…”, “Kita memerlukan lebih banyak data, sebaiknya yang berkualitas tinggi…” . Berdasarkan permintaan ini, banyak interaksi mulai dibangun antara perusahaan yang memiliki kumpulan data tertentu. Tentu saja, hal ini memerlukan organisasi teknis dari proses ini - menghubungkan ke sumber data, mengunduhnya, memeriksa apakah sudah dimuat secara penuh, dll. Jumlah proses seperti itu mulai bertambah, dan saat ini kita memiliki kebutuhan yang sangat besar akan jenis proses lain. spesialis - Insinyur Kualitas Data - mereka yang akan memantau aliran data dalam sistem (jalur data), kualitas data pada masukan dan keluaran, dan menarik kesimpulan tentang kecukupan, integritas, dan karakteristik lainnya.

Tren para insinyur Kualitas Data berasal dari Amerika, di mana, di tengah maraknya era kapitalisme, tidak ada seorang pun yang siap kalah dalam pertarungan memperebutkan data. Di bawah ini saya telah memberikan tangkapan layar dari dua situs pencarian kerja terpopuler di AS: www.monster.com и www.dice.com — yang menampilkan data per 17 Maret 2020 tentang jumlah lowongan yang diterima dengan menggunakan kata kunci: Kualitas Data dan Ilmuwan Data.

www.monster.com

Ilmuwan Data – 21416 lowongan
Kualitas Data – 41104 lowongan

Penguji data besar dan kecil: tren, teori, cerita saya
Penguji data besar dan kecil: tren, teori, cerita saya

www.dice.com

Ilmuwan Data – 404 lowongan
Kualitas Data – lowongan tahun 2020

Penguji data besar dan kecil: tren, teori, cerita saya
Penguji data besar dan kecil: tren, teori, cerita saya

Jelas sekali, profesi-profesi ini sama sekali tidak bersaing satu sama lain. Dengan tangkapan layar, saya hanya ingin mengilustrasikan situasi terkini di pasar tenaga kerja dalam hal permintaan terhadap insinyur Kualitas Data, yang saat ini dibutuhkan jauh lebih banyak daripada Ilmuwan Data.

Pada bulan Juni 2019, EPAM, sebagai respons terhadap kebutuhan pasar TI modern, memisahkan Kualitas Data menjadi praktik terpisah. Insinyur Kualitas Data, dalam pekerjaan sehari-hari mereka, mengelola data, memeriksa perilakunya dalam kondisi dan sistem baru, memantau relevansi data, kecukupan dan relevansinya. Dengan semua ini, dalam arti praktis, para insinyur Kualitas Data benar-benar mencurahkan sedikit waktu untuk pengujian fungsional klasik, TAPI ini sangat tergantung pada proyeknya (saya akan memberikan contoh di bawah).

Tanggung jawab insinyur Kualitas Data tidak terbatas hanya pada pemeriksaan manual/otomatis rutin untuk “nol, jumlah, dan jumlah” dalam tabel database, namun memerlukan pemahaman mendalam tentang kebutuhan bisnis pelanggan dan, oleh karena itu, kemampuan untuk mengubah data yang tersedia menjadi informasi bisnis yang berguna.

Teori Kualitas Data

Penguji data besar dan kecil: tren, teori, cerita saya

Untuk lebih memahami peran insinyur tersebut, mari kita cari tahu apa yang dimaksud dengan Kualitas Data secara teori.

Kualitas Data — salah satu tahapan Manajemen Data (seluruh dunia yang akan kami tinggalkan untuk Anda pelajari sendiri) dan bertanggung jawab untuk menganalisis data sesuai dengan kriteria berikut:

Penguji data besar dan kecil: tren, teori, cerita saya
Saya rasa tidak perlu menguraikan masing-masing poin (secara teori disebut “dimensi data”), semuanya sudah dijelaskan dengan cukup baik dalam gambar. Namun proses pengujian itu sendiri tidak berarti menyalin fitur-fitur ini secara ketat ke dalam kasus pengujian dan memeriksanya. Dalam Kualitas Data, seperti halnya jenis pengujian lainnya, pertama-tama perlu dibangun berdasarkan persyaratan kualitas data yang disepakati dengan peserta proyek yang membuat keputusan bisnis.

Bergantung pada proyek Kualitas Data, seorang insinyur dapat melakukan fungsi yang berbeda: dari penguji otomatisasi biasa dengan penilaian kualitas data yang dangkal, hingga orang yang melakukan pembuatan profil data secara mendalam sesuai dengan kriteria di atas.

Penjelasan yang sangat rinci tentang Manajemen Data, Kualitas Data, dan proses terkait dijelaskan dengan baik dalam buku berjudul "DAMA-DMBOK: Badan Pengetahuan Pengelolaan Data: Edisi ke-2". Saya sangat merekomendasikan buku ini sebagai pengantar topik ini (Anda akan menemukan tautan ke sana di akhir artikel).

Cerita saya

Di industri TI, saya mulai dari penguji Junior di perusahaan produk hingga Insinyur Kualitas Data Utama di EPAM. Setelah sekitar dua tahun bekerja sebagai penguji, saya memiliki keyakinan kuat bahwa saya telah melakukan semua jenis pengujian: regresi, fungsional, stres, stabilitas, keamanan, UI, dll. - dan mencoba sejumlah besar alat pengujian, memiliki bekerja secara bersamaan dalam tiga bahasa pemrograman: Java, Scala, Python.

Melihat ke belakang, saya memahami mengapa keahlian saya sangat beragam—saya terlibat dalam proyek berbasis data, besar dan kecil. Inilah yang membawa saya ke dunia dengan banyak alat dan peluang untuk berkembang.

Untuk mengapresiasi beragam alat dan peluang memperoleh pengetahuan dan keterampilan baru, lihat saja gambar di bawah ini, yang menunjukkan alat paling populer di dunia “Data & AI”.

Penguji data besar dan kecil: tren, teori, cerita saya
Ilustrasi semacam ini disusun setiap tahun oleh salah satu pemodal ventura terkenal Matt Turck, yang berasal dari pengembangan perangkat lunak. Di Sini link ke blognya dan Perusahaan modal ventura, di mana dia bekerja sebagai partner.

Saya berkembang secara profesional terutama dengan cepat ketika saya menjadi satu-satunya penguji di proyek tersebut, atau setidaknya di awal proyek. Pada saat inilah Anda harus bertanggung jawab atas seluruh proses pengujian, dan Anda tidak memiliki kesempatan untuk mundur, hanya maju. Awalnya menakutkan, tetapi sekarang semua keuntungan dari tes semacam itu jelas bagi saya:

  • Anda mulai berkomunikasi dengan seluruh tim dengan cara yang belum pernah ada sebelumnya, karena tidak ada proxy untuk komunikasi: baik manajer pengujian maupun sesama penguji.
  • Perendaman dalam proyek menjadi sangat mendalam, dan Anda memiliki informasi tentang semua komponen, baik secara umum maupun detail.
  • Pengembang tidak melihat Anda sebagai “orang dari pengujian yang tidak tahu apa yang dia lakukan,” melainkan sebagai orang setara yang menghasilkan manfaat luar biasa bagi tim dengan pengujian otomatisnya dan antisipasi bug yang muncul di komponen tertentu dari sistem. produk.
  • Hasilnya, Anda menjadi lebih efektif, lebih berkualitas, dan lebih banyak diminati.

Seiring berkembangnya proyek, dalam 100% kasus saya menjadi mentor bagi penguji baru, mengajar mereka dan meneruskan pengetahuan yang telah saya pelajari sendiri. Pada saat yang sama, tergantung pada proyeknya, saya tidak selalu menerima spesialis pengujian otomatis tingkat tertinggi dari manajemen dan ada kebutuhan untuk melatih mereka dalam otomatisasi (bagi mereka yang tertarik) atau membuat alat untuk digunakan dalam aktivitas sehari-hari (alat untuk menghasilkan data dan memuatnya ke dalam sistem, alat untuk melakukan pengujian beban/pengujian stabilitas “dengan cepat”, dll.).

Contoh proyek tertentu

Sayangnya, karena kewajiban kerahasiaan, saya tidak dapat berbicara secara detail tentang proyek yang saya kerjakan, namun saya akan memberikan contoh tugas khas Data Quality Engineer di salah satu proyek.

Inti dari proyek ini adalah mengimplementasikan platform untuk menyiapkan data untuk melatih model pembelajaran mesin berdasarkan data tersebut. Pelanggannya adalah perusahaan farmasi besar dari Amerika. Secara teknis itu adalah sebuah cluster Kubernetes, naik ke AWS EC2 contoh, dengan beberapa layanan mikro dan proyek Open Source yang mendasari EPAM - Legiun, disesuaikan dengan kebutuhan pelanggan tertentu (sekarang proyek tersebut telah terlahir kembali odahu). Proses ETL diatur menggunakan Aliran Udara Apache dan memindahkan data dari Tenaga penjualan sistem pelanggan di AWS S3 ember. Selanjutnya, gambar Docker dari model pembelajaran mesin diterapkan ke platform, yang dilatih berdasarkan data baru dan, menggunakan antarmuka REST API, menghasilkan prediksi yang menarik bagi bisnis dan memecahkan masalah tertentu.

Secara visual, semuanya tampak seperti ini:

Penguji data besar dan kecil: tren, teori, cerita saya
Ada banyak pengujian fungsional pada proyek ini, dan mengingat kecepatan pengembangan fitur dan kebutuhan untuk mempertahankan kecepatan siklus rilis (sprint dua minggu), maka perlu segera memikirkan untuk mengotomatiskan pengujian komponen paling penting dari proyek ini. sistem. Sebagian besar platform berbasis Kubernetes itu sendiri tercakup dalam pengujian otomatis yang diterapkan Kerangka Robot + Python, tetapi juga perlu untuk mendukung dan mengembangkannya. Selain itu, demi kenyamanan pelanggan, GUI dibuat untuk mengelola model pembelajaran mesin yang diterapkan ke cluster, serta kemampuan untuk menentukan di mana dan di mana data perlu ditransfer untuk melatih model. Penambahan ekstensif ini memerlukan perluasan pengujian fungsional otomatis, yang sebagian besar dilakukan melalui panggilan REST API dan sejumlah kecil pengujian UI end-2-end. Di sekitar ekuator dari semua pergerakan ini, kami bergabung dengan penguji manual yang melakukan pekerjaan sangat baik dengan pengujian penerimaan versi produk dan berkomunikasi dengan pelanggan mengenai penerimaan rilis berikutnya. Selain itu, karena kedatangan spesialis baru, kami dapat mendokumentasikan pekerjaan kami dan menambahkan beberapa pemeriksaan manual yang sangat penting yang sulit untuk segera diotomatisasi.

Dan terakhir, setelah kami mencapai stabilitas dari platform dan add-on GUI di atasnya, kami mulai membangun pipeline ETL menggunakan Apache Airflow DAG. Pengecekan kualitas data secara otomatis dilakukan dengan menulis DAG Airflow khusus yang memeriksa data berdasarkan hasil proses ETL. Sebagai bagian dari proyek ini, kami beruntung dan pelanggan memberi kami akses ke kumpulan data anonim yang kami uji. Kami memeriksa data baris demi baris untuk kesesuaian jenis, keberadaan data yang rusak, jumlah total catatan sebelum dan sesudah, perbandingan transformasi yang dilakukan oleh proses ETL untuk agregasi, perubahan nama kolom, dan hal-hal lainnya. Selain itu, pemeriksaan ini diperluas ke sumber data yang berbeda, misalnya, selain SalesForce, juga ke MySQL.

Pemeriksaan kualitas data akhir sudah dilakukan di tingkat S3, tempat data tersebut disimpan dan siap digunakan untuk melatih model pembelajaran mesin. Untuk mendapatkan data dari file CSV akhir yang terletak di S3 Bucket dan memvalidasinya, kode ditulis menggunakan klien boto3.

Ada juga persyaratan dari pelanggan untuk menyimpan sebagian data di satu Bucket S3 dan sebagian lagi di Bucket lain. Hal ini juga memerlukan penulisan pemeriksaan tambahan untuk memeriksa keandalan penyortiran tersebut.

Pengalaman umum dari proyek lain

Contoh daftar aktivitas paling umum dari teknisi Kualitas Data:

  • Menyiapkan data uji (valid, besar, kecil) melalui alat otomatis.
  • Unggah kumpulan data yang telah disiapkan ke sumber aslinya dan periksa apakah siap digunakan.
  • Luncurkan proses ETL untuk memproses sekumpulan data dari penyimpanan sumber ke penyimpanan akhir atau perantara menggunakan serangkaian pengaturan tertentu (jika memungkinkan, tetapkan parameter yang dapat dikonfigurasi untuk tugas ETL).
  • Verifikasi data yang diproses oleh proses ETL untuk kualitas dan kepatuhannya terhadap persyaratan bisnis.

Pada saat yang sama, fokus utama pemeriksaan tidak hanya pada fakta bahwa aliran data dalam sistem, pada prinsipnya, telah berfungsi dan mencapai penyelesaian (yang merupakan bagian dari pengujian fungsional), namun sebagian besar pada pemeriksaan dan validasi data untuk kepatuhan dengan persyaratan yang diharapkan, mengidentifikasi anomali dan hal-hal lain.

Alat

Salah satu teknik pengendalian data tersebut dapat berupa pengorganisasian pemeriksaan berantai pada setiap tahap pemrosesan data, yang dalam literatur disebut “rantai data” - pengendalian data dari sumber hingga titik penggunaan akhir. Jenis pemeriksaan ini paling sering diterapkan dengan menulis pemeriksaan kueri SQL. Jelas bahwa kueri tersebut harus seringan mungkin dan memeriksa setiap bagian kualitas data (metadata tabel, baris kosong, NULL, Kesalahan dalam sintaksis - atribut lain yang diperlukan untuk pemeriksaan).

Dalam kasus pengujian regresi, yang menggunakan kumpulan data yang sudah jadi (tidak dapat diubah, sedikit dapat diubah), kode pengujian otomatis dapat menyimpan templat yang sudah jadi untuk memeriksa kesesuaian data dengan kualitas (deskripsi metadata tabel yang diharapkan; objek sampel baris yang dapat dipilih secara acak selama tes, dll.).

Selain itu, selama pengujian, Anda harus menulis proses pengujian ETL menggunakan kerangka kerja seperti Apache Airflow, Apache Spark atau bahkan alat tipe cloud kotak hitam Persiapan Data GCP, Aliran Data GCP Dan seterusnya. Keadaan ini memaksa teknisi penguji untuk membenamkan dirinya dalam prinsip pengoperasian alat di atas dan bahkan lebih efektif lagi melakukan pengujian fungsional (misalnya, proses ETL yang ada pada suatu proyek) dan menggunakannya untuk memeriksa data. Secara khusus, Apache Airflow memiliki operator siap pakai untuk bekerja dengan database analitik populer, misalnya BigQuery GCP. Contoh paling mendasar dari penggunaannya telah diuraikan di sini, jadi saya tidak akan mengulanginya lagi.

Selain solusi yang sudah jadi, tidak ada yang melarang Anda menerapkan teknik dan alat Anda sendiri. Hal ini tidak hanya bermanfaat bagi proyek, tetapi juga bagi Insinyur Kualitas Data itu sendiri, yang dengan demikian akan meningkatkan wawasan teknis dan keterampilan pengkodeannya.

Cara kerjanya pada proyek nyata

Ilustrasi yang bagus dari paragraf terakhir tentang “rantai data”, ETL, dan pemeriksaan di mana-mana adalah proses berikut dari salah satu proyek sebenarnya:

Penguji data besar dan kecil: tren, teori, cerita saya

Di sini, berbagai data (tentu saja, disiapkan oleh kami) masuk ke “corong” masukan sistem kami: valid, tidak valid, campuran, dll., kemudian disaring dan berakhir di penyimpanan perantara, kemudian mengalami serangkaian transformasi lagi. dan ditempatkan di penyimpanan akhir, yang pada gilirannya akan melakukan analisis, membangun data mart, dan mencari wawasan bisnis. Dalam sistem seperti itu, tanpa memeriksa pengoperasian proses ETL secara fungsional, kami fokus pada kualitas data sebelum dan sesudah transformasi, serta keluaran ke analitik.

Untuk meringkas hal di atas, di mana pun saya bekerja, di mana pun saya terlibat dalam proyek Data yang memiliki fitur-fitur berikut:

  • Hanya melalui otomatisasi Anda dapat menguji beberapa kasus dan mencapai siklus rilis yang dapat diterima oleh bisnis.
  • Penguji pada proyek semacam itu adalah salah satu anggota tim yang paling dihormati, karena memberikan manfaat besar bagi setiap peserta (percepatan pengujian, data bagus dari Data Scientist, identifikasi cacat pada tahap awal).
  • Tidak masalah apakah Anda bekerja pada perangkat keras Anda sendiri atau di cloud - semua sumber daya diabstraksi ke dalam sebuah cluster seperti Hortonworks, Cloudera, Mesos, Kubernetes, dll.
  • Proyek dibangun dengan pendekatan layanan mikro, komputasi terdistribusi dan paralel mendominasi.

Saya ingin mencatat bahwa ketika melakukan pengujian di bidang Kualitas Data, spesialis pengujian mengalihkan fokus profesionalnya ke kode produk dan alat yang digunakan.

Fitur khas pengujian Kualitas Data

Selain itu, bagi saya sendiri, saya telah mengidentifikasi hal-hal berikut (saya akan segera membuat reservasi bahwa itu SANGAT umum dan sangat subjektif) ciri khas pengujian dalam proyek (sistem) Data (Big Data) dan area lainnya:

Penguji data besar dan kecil: tren, teori, cerita saya

Berguna Link

  1. Teori: DAMA-DMBOK: Badan Pengetahuan Manajemen Data: Edisi ke-2.
  2. Pusat Pelatihan EPAM 
  3. Materi yang direkomendasikan untuk insinyur Kualitas Data pemula:
    1. Kursus gratis di Stepik: Pengantar database
    2. Kursus Pembelajaran LinkedIn: Yayasan Ilmu Data: Rekayasa Data.
    3. artikel:
    4. Video:

Kesimpulan

Kualitas Data adalah arah yang sangat muda dan menjanjikan, menjadi bagian berarti menjadi bagian dari sebuah startup. Setelah berada di Kualitas Data, Anda akan tenggelam dalam sejumlah besar teknologi modern yang banyak diminati, namun yang terpenting, peluang besar akan terbuka bagi Anda untuk menghasilkan dan menerapkan ide-ide Anda. Anda akan dapat menggunakan pendekatan perbaikan berkelanjutan tidak hanya pada proyek, tetapi juga pada diri Anda sendiri, terus berkembang sebagai seorang spesialis.

Sumber: www.habr.com

Tambah komentar