10 Skill Penting Yang Dapat Membantu Menjadi Data Engineer
Tulisan ini dapat membantu sebagai gambaran umum tentang 10 skill utama yang dibutuhkan ketika ingin menjadi seorang Data Engineer. Banyak dari kita yang ingin menjadi seorang Data Engineer namun tidak tahu untuk memulainya, tidak tahu apa yang harus dipelajari. Oleh karena itu dalam tulisan ini kita akan mengulasnya.
1. LINUX
Sebagian besar aplikasi dibangun di atas sistem operasi linux sehingga sangat penting untuk memahami cara bekerja dengannya. Konsep kunci yang perlu diketahui adalah
- perintah dalam management file system seperti ls, cd, pwd, mkdir, rmdir
- perintah untuk mendapatkan metadata ( informasi terkait penjelasan tentang data data tersebut seperti kolom payment = data transaksi penjualan ) seperti head, tail, wc, grep, ls -lh
- Perintah dalam pemrosesan data seperti awk, sed
- Konsep Bash scripting , contohnya aliran kontrol ( control flow ), perulangan (looping ), parameter input ( passing input parameter )
2. SQL
SQL menjadi sangat penting ketika kita akan mengakses data terutama data yang disimpan di dalam basis data. SQL tidak hanya digunakan untuk keperluan dalam melakukan analisis data saja, SQL juga digunakan untuk keperluan dari aplikasi kita. misalnya kita ingin menampilkan top rangking user di aplikasi mobile atau web, tentu untuk bisa mendapatkan data tersebut yang ada di basis data perlu SQL untuk melakukan querynya yang kemudian bisa diakses menggunakan API yang telah dibuat sebelumnya. Konsep kunci yang biasanya perlu diketahui adalah
- Basic CRUD ( Create,Read,Update dan Delete ) seperti
select, where, join
(seluruh jenis joins),group by, having
, window functions
- Internal SQL, seperti indeks: berbagai jenis indexing pada SQL dan cara kerjanya.
- Pemodelan data ( Data Modeling ) , Data modeling OLTP menggunakan normalisasi dan skema pemodelan data OLAP seperti skema star dan snowflake.
3. Scripting
Pengetahuan tentang bahasa pemrograman seperti python misalnya sangat membantu untuk mengotomatisasi beberapa langkah yang diperlukan dalam pemrosesan data. Konsep kunci yang perlu diketahui adalah
- Konsep dasar struktur data , seperti
list , dictionary , map, filter, reduce
- Control flow dan looping , seperti
if , for loop
- Library yang biasa digunakan dalam melakukan pemrosesan data seperti pandas atau dask, pyspark ( big data ) di python
4. Distributed Data Storage
Pemahaman terkait penyimpanan data terdistribusi contohnya HDFS ,AWS S3 dan Google cloud storage .konsepnya seperti data replication, serialization, partitioned data storage, file chunking dan sebagainya.
5. Distributed Data processing
Pemahaman bagaimana pemrosesn data secara terdistribusi misalnya
- konsep pemrosesan data secara terdistribusi seperti
Mapreduce
, contoh lainnya jika pemrosesan data didalam memori maksudnya itu memori digunakan sebagai tempat penyimpanan sementaranya yaitu menggunakanapache spark
- Berbagai jenis proses join untuk seluruh kumpulan data, seperti map side and reduce side joins
- Teknik dan pola umum untuk pemrosesan data seperti: partitioning, reducing data shuffles, handling data skews on partitioning
- Mengoptimalkan kode pemrosesan data untuk memanfaatkan semua inti dan memori yang tersedia di cluster
6. Building data pipelines
Pemahaman bagaimana mengkoneksikan setiap sistem data yang berbeda untuk membangun sebuah aliran data atau data pipeline. Konsep kunci yang perlu diketahui adalah
- Tool data orchestration misalnya
airflow
- Bagaimana menghindari jebakan umum dengan cara melakukan data
quality checks
setelah dilakukan pemrosesan - membangun
idempotent
data pipelines yang bertujuan untuk melakukan apakah terdapat kegagalan-pemeriksaan data pipeline.
7. OLAP database
Pemahaman bagaimana teknologi OLAP database beroperasi dan kapan harus mengggunakannya. Konsep kunci yang perlu diketahui adalah
- apa itu penyimpanan berdasarkan kolom dan mengapa cara ini lebih baik untuk sebagian besar jenis kueri dalam melakukan agregasi
- Konsep pemodelan data seperti partioning, fact and dimensions, data skew
- Mencari tahu bagaimana pola kueri data klien dan bagaimana mendesain database yang sesuai dengan kebutuhan
8. Queuing systems
Pemahaman terkait sistem antrian dan kapan dan bagaimana menggunakan sistem ini. Konsep kunci yang perlu diketahui adalah
- Apa yang dimaksud dengan produsen dan konsumen data?
- Pengetahuan tentang offset dan log compaction
9. Stream processing
Pemahaman tentang apa itu stream processing dan bagaimana menggunakannya. Konsep kunci yang perlu diketahui adalah
- Apa itu stream processing dan apa bedanya dengan pemrosesan batch ?
- Teknologi yang digunakan dalam melakukan data stream processing menggunakan kafka
- Berbagai jenis pemrosesan aliran seperti pemrosesan
Event based
danmicro batching.
10. JVM language
Pemahaman terkait bahasa pemrograman berbasis JVM seperti Java atau Scala karena untuk kedepannya sangat berguna, karena sebagian besar data processing tools ditulis menggunakan bahasa JVM. misalnya Apache Spark, Apache Flink, dll