Last chance! 50% off DataCamp Premium
Sale ends in
Data science adalah istilah yang mewakili persinggungan banyak hal penting.
Menurut saya ada pilar-pilar keahlian data science, yaitu:
Pilar ketiga sepenuhnya berkaitan dengan pemahaman ilmu komputer dan pemrograman perangkat lunak.
Walaupun mungkin tidak langsung terlihat bagi data scientist pemula, area ini juga sering mencakup hal-hal seperti devops, komputasi awan, pipeline data, rekayasa data, keahlian melakukan kueri ke berbagai jenis basis data, membangun dan menerapkan solusi perangkat lunak produksi, dan seterusnya.
Selain itu, data scientist perlu mengembangkan keterampilan pemrograman yang solid, namun mereka mungkin tidak sedidik atau berpengalaman dalam ilmu komputer, konsep pemrograman, atau arsitektur dan infrastruktur perangkat lunak produksi secara umum seperti insinyur perangkat lunak yang terlatih atau berpengalaman. Ketika seseorang memulai di data science, mereka akan memasang Python dan/atau R di komputer lokal, lalu menulis dan mengeksekusi kode di Lingkungan Pengembangan Terpadu (IDE) lokal seperti Aplikasi Jupyter Notebook atau RStudio.
Seiring analitik lanjutan menjadi lebih umum dan tim data science berkembang, kebutuhan akan solusi kolaboratif untuk menyampaikan insight, analitik prediktif, sistem rekomendasi, dan sebagainya juga meningkat. Riset yang dapat direproduksi dan alat notebook yang dikombinasikan dengan pengendalian sumber kode merupakan bagian dari solusi kolaborasi, sementara memanfaatkan alat dan platform daring berbasis cloud merupakan bagian lainnya.
Kebutuhan kolaboratif juga meluas ke pihak di luar tim data science, terutama karena data science sebagian besar diterapkan untuk mencapai tujuan bisnis. Dengan demikian, pemangku kepentingan dari sebuah proyek data science dapat mencakup eksekutif, pimpinan departemen, dan staf tim data lainnya seperti arsitek, data engineer, analis, dan sebagainya.
Artikel ini dimaksudkan untuk memberikan wawasan kepada data scientist tentang apa yang ada di luar laptop atau desktop lokal, khususnya dalam konteks menempatkan solusi data science ke produksi, atau dalam hal memperluas daya dan kapabilitas komputasi Anda. Bergantung pada pengalaman Anda dengan topik-topik ini, konten ini relevan bagi data scientist di semua tingkat keterampilan.
Mari kita mulai!
Ah ya, cloud yang termasyhur namun masih sering kurang dipahami. Selain terdengar sangat hipotesis dan abstrak, cloud sebenarnya sangat konkret dalam makna yang dimaksudkan. Mari kita definisikan beberapa konsep kunci sebelum beralih ke konsep cloud.
Komputer yang saling terhubung dan berbagi sumber daya disebut jaringan, dengan Internet sendiri sebagai contoh jaringan komputer terbesar dan paling terkenal. Jaringan rumah, seperti Local Area Network (LAN) atau WiFi Service Set Identifier (SSID), di mana beberapa komputer terhubung, adalah contoh lain, meskipun jauh lebih kecil. Sumber daya yang dimaksud di sini dapat mencakup halaman web, media, penyimpanan data, server aplikasi, printer, dan lain-lain.
Komputer dalam sebuah jaringan biasanya disebut node, dan mereka berkomunikasi satu sama lain menggunakan protokol yang terdefinisi dengan baik seperti HyperText Transfer Protocol (HTTP), Transmission Control Protocol (TCP)/Internet Protocol (IP), dan sebagainya. Komunikasi ini dapat untuk pembaruan status, pemantauan, permintaan/respons, dan banyak kegunaan lainnya.
Lebih jauh, komputer sering kali tidak berlokasi di tempat (on-premise), artinya aplikasi dan data sering dihosting pada komputer yang berlokasi di pusat data. Tempat-tempat ini menyediakan semua infrastruktur yang diperlukan, seperti listrik, pendinginan, keamanan, perlindungan bencana, dan lain-lain untuk memelihara dan menjalankan sejumlah besar komputer yang dapat diakses perusahaan atau publik pada umumnya.
Karena komputer dan penyimpanan menjadi relatif murah seiring waktu, banyak solusi kini mempekerjakan banyak komputer yang bekerja bersama yang tidak terlalu mahal untuk diskalakan, alih-alih meningkatkan skala solusi dengan membeli satu mesin komputasi super kuat dan sangat mahal. Sebagian dari "bekerja bersama" ini adalah memastikan solusi terus berjalan secara otomatis bahkan jika salah satu komputer mengalami kegagalan dan juga agar sistem mampu melakukan penskalaan otomatis untuk menangani beban yang dibebankan pada sistem.
Twitter, Facebook, Instagram, Snapchat, Netflix, dan YouTube adalah contoh sempurna aplikasi berbasis cloud yang perlu diskalakan dalam kedua cara ini. Sangat kecil kemungkinannya aplikasi mereka "mati" sepenuhnya, dan mereka juga mampu menangani jutaan pengguna harian yang berinteraksi dengan platform mereka.
Ketika sekelompok komputer tertentu terhubung ke jaringan yang sama dan bekerja bersama untuk menyelesaikan tugas yang sama atau serangkaian tugas, ini disebut kluster. Sebuah kluster dapat dipandang sebagai satu komputer, tetapi dapat menawarkan peningkatan besar dalam kinerja, ketersediaan, dan skalabilitas dibandingkan satu mesin. Manfaat ini akan dibahas lebih lanjut di bagian berikutnya.
Istilah komputasi terdistribusi atau sistem terdistribusi merujuk pada perangkat lunak dan sistem yang ditulis untuk memanfaatkan kluster guna melakukan tugas tertentu, seperti Hadoop, Spark, dan MapReduce.
Terakhir, ke definisi cloud. Selain sumber daya bersama yang dijelaskan di atas, sumber daya solusi penting lainnya dapat mencakup server, layanan, mikroservis, jaringan, dan sebagainya. Cloud menggambarkan situasi di mana satu pihak memiliki, mengelola, dan mengatur sekelompok komputer berjaringan dan sumber daya bersama, yang umumnya digunakan untuk meng-host dan menyediakan solusi berbasis perangkat lunak. Berdasarkan definisi ini, meskipun Internet jelas dianggap sebagai jaringan, ia bukan cloud karena tidak dimiliki oleh satu pihak.
Untuk pendalaman lebih jauh tentang komputasi awan, dan pembahasan konsep kunci dalam menciptakan perangkat lunak yang skalabel dan arsitektur big data, lihat seri mendalam saya yang terdiri dari tiga bagian tentang topik ini.
Tulisan ini kini telah membahas komputasi awan dan konsep terkait lain dengan cukup dalam untuk semoga menggambarkan konsep yang terlibat. Jika eksposur Anda terhadap arsitektur dan rekayasa perangkat lunak saat ini terbatas pada pengembangan lokal saja, Anda mungkin bertanya-tanya mengapa semua ini relevan bagi data scientist. Inilah yang dibahas berikutnya.
Jika Anda akrab dengan proses data science, Anda tahu bahwa sering kali sebagian besar alur kerja data science dilakukan pada komputer lokal data scientist. Komputer tersebut telah terpasang bahasa pilihan, seperti Python dan R, serta IDE yang disukai data scientist. Pengaturan lingkungan pengembangan utama lainnya adalah memasang paket yang relevan baik melalui pengelola paket seperti Anaconda, atau memasang paket individual secara manual.
Setelah lingkungan pengembangan siap dan mantap, alur atau proses kerja data science yang khas pun dimulai, dengan data sebagai satu-satunya hal lain yang dibutuhkan untuk sebagian besar. Langkah-langkah alur kerja yang iteratif biasanya mencakup:
Namun terkadang, tidak praktis atau tidak diinginkan untuk melakukan semua tugas terkait data science atau big data pada lingkungan pengembangan lokal. Berikut adalah beberapa alasan utama mengapa demikian:
Ketika situasi ini muncul, ada beberapa opsi yang tersedia. Alih-alih menggunakan mesin pengembangan lokal data scientist, biasanya orang memindahkan pekerjaan komputasi ke mesin on-premise, atau mesin virtual berbasis cloud (misalnya, AWS EC2, AWS Elastic Beanstalk). Keuntungan menggunakan mesin virtual dan kluster yang diskalakan otomatis adalah mereka dapat dijalankan dan dihentikan sesuai kebutuhan, serta disesuaikan untuk memenuhi kebutuhan komputasi dan penyimpanan data.
Dalam kasus menerapkan deliverable ke lingkungan produksi untuk digunakan sebagai bagian dari aplikasi yang lebih besar atau pipeline data, ada banyak opsi dan tantangan yang perlu dipertimbangkan. Pembahasan lebih lanjut tentang hal itu berada di luar ruang lingkup artikel ini.
Selain solusi dan alat data science berbasis cloud atau produksi yang dikembangkan kustom, ada banyak penawaran berbasis cloud dan layanan dari vendor-vendor ternama, yang sering kali bekerja baik dengan alat notebook seperti Jupyter. Ini tersedia terutama sebagai API big data, machine learning, dan kecerdasan buatan, dan mencakup opsi seperti platform Artificial Intelligence AWS, Databricks, Google Cloud Platform Datalab dan Machine Learning, dan banyak lagi.
Untuk pembahasan yang jauh lebih rinci dan mendalam tentang data science dan analitik lanjutan di produksi versus pengembangan, termasuk rekomendasi bahasa, paket, framework, dan platform, silakan lihat seri tiga bagian saya tentang topik ini. Seri arsitektur perangkat lunak yang skalabel dan big data saya juga merupakan pelengkap yang sangat baik tentang komputasi awan.
Arsitektur perangkat lunak mencakup perancangan sistem perangkat lunak, biasanya berbasis cloud, yang merepresentasikan produk, layanan, atau sistem komputasi berbasis tugas. Anda juga mungkin mendengar istilah arsitektur sistem atau arsitektur perangkat lunak, yang keduanya kurang lebih berarti hal yang sama.
Bagian dari merancang arsitektur perangkat lunak adalah memilih bahasa dan teknologi pemrograman yang sesuai (alias stack), komponen, paket, framework, platform, dan sebagainya. Ini dapat memerlukan banyak pertimbangan, terutama terkait tujuan sistem dan pertukaran penting lainnya. Aspek arsitektur perangkat lunak ini memerlukan keterampilan, pengetahuan, dan pengalaman yang diperoleh seseorang, seperti arsitek perangkat lunak, dari waktu ke waktu.
Aspek penting lainnya dari arsitektur dan rekayasa sistem dan perangkat lunak adalah apa yang disebut atribut kualitas atau persyaratan nonfungsional. Hal ini terutama berlaku untuk solusi produksi di dunia nyata.
Persyaratan nonfungsional biasanya mencakup hal-hal seperti:
Dalam artikel ini, Anda akan mendapatkan gambaran singkat tentang empat hal yang paling penting, yaitu ketersediaan, kinerja, keandalan, dan skalabilitas. Perlu dicatat bahwa pembahasan dimaksudkan bersifat tingkat tinggi dan tidak masuk ke definisi berbasis metrik atau persyaratan untuk atribut kualitas ini.
Ketersediaan sesuai namanya, yaitu bahwa sistem tersedia, atau dengan kata lain aktif dan berjalan dengan baik. Ini dapat berarti banyak hal dan juga sangat bergantung pada keandalan dan skalabilitas. "Aktif dan berjalan dengan baik" berarti sistem berfungsi sebagaimana dimaksud dan kapan pun diperlukan. Ini bisa oleh pengguna akhir yang mencoba menggunakan sistem, misalnya Facebook atau Netflix, atau bisa juga sekumpulan layanan berbasis cloud yang digunakan untuk memproses data.
Keandalan adalah istilah yang mewakili kemampuan sistem untuk berjalan dan bekerja dengan baik tanpa kegagalan atau kesalahan. Semakin sering sistem dapat berjalan seperti ini, semakin toleran kesalahan sistem tersebut. Karena sulit memikirkan dan menguji semua kemungkinan penggunaan dan kasus tepi sebelumnya, 100% keandalan bisa sangat sulit dicapai. Selain itu, kegagalan dapat terjadi karena banyak alasan, dengan bug kode, masalah lingkungan, dan sumber daya terbatas (CPU, RAM, memori disk, ...) menjadi beberapa penyebab utamanya.
Kinerja adalah istilah yang digunakan untuk menggambarkan kecepatan sistem menjalankan tugas, atau cara lain memikirkannya adalah waktu yang dibutuhkan sistem untuk melakukan tugas tertentu. Ambil contoh YouTube. Anda berharap saat akan menonton video, video akan dimuat dan mulai diputar dalam waktu yang wajar. Semakin tinggi kinerja yang dapat dibuat Google untuk YouTube, semakin cepat video dimuat dan mulai diputar, semakin bahagia pengguna YouTube, dan semakin kecil kemungkinan mereka meninggalkan aplikasi tersebut. Sebaliknya, jika YouTube berjalan sangat lambat hingga tidak sepadan dengan manfaatnya, orang akan berhenti menggunakannya. Untungnya yang terjadi kebanyakan adalah yang pertama, bukan yang terakhir.
Terakhir, skalabilitas sangat penting untuk aplikasi tertentu, dan merupakan istilah yang mewakili kemampuan sistem untuk mempertahankan tingkat kinerja tertentu (sebagaimana didefinisikan di atas, masih tingkat tinggi) meski beban pada sistem meningkat. Beban adalah istilah yang digunakan untuk menyebut jumlah permintaan bersamaan atau simultan ke sistem.
Contoh bagus di mana skalabilitas diperlukan adalah ketika tiket pertama kali dijual untuk tim olahraga populer atau artis musik terkenal. Bergantung pada popularitasnya, jumlah permintaan bersamaan untuk membeli tiket di aplikasi web seperti Ticketmaster bisa mencapai ratusan ribu saat tiket mulai dijual. Bergantung pada kemampuan sistem untuk melakukan penskalaan, ini bisa sangat menurunkan kinerjanya, atau mematikan sistem sepenuhnya. Keduanya bukan skenario yang baik.
Untuk memenuhi kebutuhan ini, digunakan teknik untuk melakukan penskalaan sistem ke atas atau ke luar. Penskalaan ke atas adalah ketika perangkat komputasi dalam sistem diganti dengan mesin yang lebih bertenaga (CPU, lebih banyak inti, ...) dan lebih andal dengan sumber daya yang lebih besar seperti memori sistem atau RAM. Mesin seperti ini bisa mahal.
Di sisi lain, penskalaan ke luar menggunakan mesin komoditas berbiaya rendah, yang secara individual tidak terlalu kuat, tetapi ketika digunakan sebagai kelompok lebih dari mampu menangani beban pada sistem. Karena solusi yang menggunakan teknik ini memerlukan banyak komputer, penting untuk menyiapkan sistem agar secara otomatis menangani skenario di mana satu atau lebih komputer (node) gagal atau macet (failover), dan sebagainya.
Semoga artikel ini membantu menjelaskan banyak aspek penting data science di luar pengembangan lokal, dan dalam konteks solusi produksi dunia nyata. Konsep komputasi dan arsitektur berbasis cloud penting untuk dipahami saat mengerjakan solusi data produksi, atau ketika memerlukan daya dan sumber daya komputasi tambahan.
Silakan bagikan pemikiran Anda di kolom komentar di bawah. Jika Anda ingin belajar lebih lanjut, Anda dapat mengikuti @innoarchitech di Twitter, mendaftar newsletter InnoArchiTech, dan melihat blog InnoArchiTech. Anda juga dapat melihat kelas saya tentang Kecerdasan Buatan dan Machine Learning Berorientasi Tujuan.
blogs
Dario Radečić
15 mnt
blogs
Hugo Bowne-Anderson
13 mnt
blogs
David Woods
13 mnt

blogs
Javier Canales Luna
14 mnt