Pengertian Patch Serta Memahami Konsep Patch Software-Bayangkan seorang programmer tulen dalam pikiran sobat, mungkin sosok yang tergambar cukup menyeramkan : Manusia Introvert yang lebih sering melek dimalam hari, komplit dengan kacamata tebal dan dahi yang selalu berkerut. Tapi sebenarnya jika sobat memahami konsep patch software, sobat akan lebih menyadari sisi feminim seorang programmer.
Patch menurut definisinya merupakan potongan kecil software yang didesain untuk meng-update program. Dalam hal ini, sobat dapat membayangkan programmer seperti seorang penjahit. Sobat membutuhkan penjahit saat ingin membuat saku tambahan pada celana sobat, atau menambal bagian pakaian yang bolong, bahkan bisa jadi sobat ingin merombak total sebuah taplak meja menjadi jubah kebanggaan sehingga membuat sobat lebih keren. Semuanya dapat sobat wujudkan dengan menggunakan jasa dan keahlian penjahit.
Begitu pula dengan seorang programmer, kerap harus menambal bugs software, menambah fitur baru, atau mengubah tampilan agar lebih cantik. Tidak heran kalau programmer sering dituntut untuk bisa menghasilkan aplikasi yang tailor-made, atau aplikasi yang bisa di custom sesuai dengan kebutuhan pengguna.
Urusan “jahit-menjahit” program memang sudah menjadi pekerjaan sehari-hari programmer. Tetapi hati-hati, jahitan yang salah akan mengakibatkan tambal sulam, yang diibaratkan pakaian , akan mirip dengan pakaian yang dijahit setelah dikenakan oleh The Incredible Hulk.
Dalam melakukan patch, sobat perlu melakukan persiapan dan analisis yang baik. Sebelum membahas lebih dalam, marilah kita melihat beberapa contoh patch.
Patch pada game.
Saat ini, sedemikian banyak pilihan game komputer yang sangat dikenal dan memiliki penggemar masing-masing, bahkan mungkin sobat pernah mendengar nama game tersebut, walaupun tidak pernah memainkannya. Siapa yang tidak pernah mendengar game seperti The Sims, StartCraft, Half-life, Doom, atau Age of Empires? Masih banyak lagi game-game yang dikuasai pasar game dunia.
Hampir semua game dengan skala development yang besar pernah memiliki patch. Ambil salah satu contoh misalnya game Quake, sebuah jenis game FPS (First Person Shooter). Patch seperti apa yang dapat terjadi pada sebuah game seperti Quake?
Jawabannya dapat sangat bervariasi, antara lain patch dapat dilakukan untuk perbaikan bug, mengubah atau menambah efek suara, grafik, karakter musuh, peta, item, level, bahkan bisa jadi peraturan (rules) baru pada game tersebut.
Patch berbeda dengan versi, dimana perubahan pada patch tidak terlalu signifikan jika dibandingkan dnegan versi baru sebuah game. Bahkan bis ajadi sebuah game merilis semacam expansion pack (kurang lebih seperti service pack yang dikenal pada sistem operasi), contohnya pada game Diablo yang meluncurkan Diablo : Hellfire pada tahun 1997. Diablo : Hellfire merupakan sebuah expansion pack yang berisi tambahan lokasi peta, cerita, item dan karakter. Expansion pack kembali dirilis untuk game Diablo II, dengan judul Diablo II : Lord of Destruction.
Patch pada game tidak mustahil berukuran besar, yang dapat mencapai hingga ratusan megabyte atau lebih, terutama jika patch tersebutberisi data grafik atau suara.
Antivirus mungkin merupakan jenis software yang paling sering di-update dibandingkan contoh-contoh patch lainnya. Ini dikarenakan software antivirus harus terus “Berperang” melawan birus-virus yang terus diciptakan setiap hari.
Software antivirus tidak hanya perlu meng-update untuk dapat mengenali virus-virus baru dan varian-nya, tetapi juga harus mengupdate keamanan software-nya sendiri agar tidak mudah diserang, atau istilah ngetopnya : Memiliki Vulnerability.
Karena terlalu seringnya software antivirus harus melakukan update, maka sering disediakan fitur live update dimana akan dilakukan update otomatis setiap kali terdeteksi sebuah update baru dari server.
Patch pada sistem operasi.
Sistem operasi sebagai bagian paling vital dari keseluruhan kerja komputer sobat juga sering mengalami penambahan patch. Berbagai ancaman pada sistem operasi dapat datang dari bugs sistem operasi itu sendiri, virus, malware, trojan, ataupun worm.
Sistem operasi seperti Microsoft Windows juga menerapkan live update, seperti pada software antivirus untuk melakukan update tanpa campur tangan pengguna. Microsoft windows menyebutnya dengan Automatic Update.
Sedemikian rumit dan luasnya sebuah sistem operasi, hingga tidak mustahil pengguna melakukan “Patch” sendiri, seperti melakukan perubahan registry atau manipulasi file-file sistem operasi.
Patch Firmware.
Bukan hanya software seperti game, sistem operasi, ataupun aplikasi lainnya yang bisa dilakukan patch, patch juga bisa dilakukan pada peralatan hardware, yang di patch tentu bukanlah hardware nya, tetapi software yang ditanam didalam hardware.
Salah satu contoh patch firmware adalah saat sobat meng-update BIOS pada motherboard, sistem operasi router, atau control menu pada pemutar musik iPod. Patch pada firmware bertujuan untuk memperbaiki kinerja, menjaga kompatibilitas hardware dengan teknologi yang terus berkembang, dan keuntungan-keuntungan lainnya.
Dengan melihat contoh-contoh patch, mungkin sobat berfikir bahwa patch ternyata lebih merupakan sebuah service atau support kepada pengguna. Memang benar, pada umunya patch tidak dikenakan biaya, tetapi untuk software komersial, tentu saja sobat harus terlebih dahulu meiliki software tersebut.
Software dengan versi atau nama yang berbeda, memiliki patch yang berbeda pula. Misalnya Microsoft Windows 8 dan windows 10, tentunya memiliki patch masing-masing.
Distribusi Patch.
Metode distribusi patch memiliki sejarah yang cukup unik. Pada awalnya, distribusi patch software dilakukan dengan menggunakan tempat penyimpanan magnetic tape (tentu saja pada saat ini disk drive ataupun disk belum lazim digunakan), dimana bagian tape yang berisi patch dapat dilekatkan pada segmen tertentu.
Selanjutnya, sobat tentu telah mengetahuinya, distribusidapat dilakukan melalui disket, CD-ROOM, ataupun melalui email. Atau dapat didownload dari situs pembuat software tersebut, seperti pada contoh patch diatas, menggunakan update otomatis.
Merencanakan patch software.
Pada saat sobat memulai tahap desain software, terutama untuk software dimana sangat dimungkinkan terjadinya patch, maka sobat harus melakukan analisis yang baik, dan mampu untuk mengidentifikasikan patch yang akan dilakukan.
Sebagai contoh, sobat membuat software yang mengutamakan multimedia, maka penting untuk dipertimbangkan bagaimana software sobat dapat melakukan update tampilan, ataupun efek suara dan musik yang dapat terus mengikuti trend.
Untuk itu, salah satu alternatif, sobat dapat menyediakan folder khusus untuk menyimpan file gambar maupun suara, dimana software sobat memiliki fitur untuk melakukan pemilihan skin atau theme yang diinginkan. Update yang sobat perlukan untuk kebutuhan ini hanyalah patch dalam bentuk gambar maupun suara.
Bagaimana jika ditemukan bugs didalam software sobat? Untuk oermasalah ini,patch sangat tergantung pada library yang sobat gunakan. Suatu sistem software secara keseluruhan dapat terdiri dari modul-modul library atau komponen.
Jika terjadi bug atau penambahan fitur pada slaah satu komponen, maka dengan melakukan perbaikan pada komponen tersebut, sobat dapat membuat patch yang meng-update komponen yang diinginkan.
Managemen Patch.
Jika sobat berada pada posisi pengguna software dengan skala yang cukup besar, maka kebutuhan maintenance mutlak diperlukan. Untuk kasus ini, patch yang dilakukan secara regukar menjadi bagian dari maintenance, dimana sobat harus melakukan managemen terhadap patch yang akan dilakukan.
Dengan memberikan patch, software akan terus disempurnakan secara berkesimbungan. Dari pengoperasian software tersebut, pengguna memberikan masukan kepada developer, yang akan bertindak dengan memberikan update. Dari perputaran ini, software akan semakin baik dan sesuai dengan keinginan pengguna.
Sebuah roadmap dari pembuat software juga dapat memberikan kepercayaan dan jaminan pada pengguna bahwa software tersebut dapat memenuhi dan mendukung kebutuhan-kebutuhan tertentu dimasa yang akan datang.
Membicarakan managemen patch, bukanlah membicarakan sebuah ilmu pasti, pendekatan yang sobat gunakan bisa jadi berbeda dengan yang lainnya, yang dapatsobat sesuaikan dengan situasi yang dihadapi.
Terdapat beberapa hal penting yang sangat bervariasi tergantung pada situasi yang sering terjadi, mungkin bisa menjadi pertimbangan sobat dalam managemen patch saat menghadapi situasi serupa :
1. Toleransi Downtime.
Selalu terdapat kemungkinan bahwa update patch memiliki resiko pada saat diterapkan pada sisi pengguna, walaupun bisa jadi selama pengembangan dan testing sebelum didistribusikan, patch telah berjalan dengan baik. Karena itu, memperkirakan faktor downtime atau tidak aktifnya software dalam beberapa saat yang masih dapat ditolerir, perlu sobat pertimbangkan pada situasi seperti ini.
2. Self Maintenance.
Tidak hanya vendor atau pembuat software yang selalu melakukan maintenance terhadap software. Jika pada sisi pengguna dapat melakukan aktifitas maintenance secara inhouse tanpa melibatkan pihak lain, hal ini dapat sobat pertimbangkan, sekali lagi tergantung situasi dan kondisi yang sobat hadapi.
3. Proactive Patch.
Jika diatas telah disinggung mengenai roadmap, maka proactive patch dapat dimasukkan ke dalam perencanaan roadmap software. Proactive patch merupakan patch yang telah direncanakan, bukan diakibatkan karena permasalahan yang sedang terjadi. Proactive patch sering kali merupakan fitur tambahan.
4. Reactive Patch.
Kebalikan dari Proactive patch, reactive patch merupakan respon atau jawaban dalam bentuk patch terhadap permasalah yang ditemui. Misalnya ditemukan bugs atau masalah keamanan.
Sebelum menentukan managemen patch yang sesuai untuk sobat, terlebih dahulu sobat harus selalu mempertimbangkan resiko yang dapat terjadi. Contohnya jika sobat melakukan patch pada seluruh sistem yang mungkin tersebar diratusan lokasi, pertimbangkan resiko jika patch tersebut bermasalah.
Salah satu alternatif pendekatan untuk kasus seperti diatas, sobat dapat menerapkan patch pada sebagian lokasi terlebih dahulu.
Mungkin juga terjadi situasi dimana sobat hanya melakukan patch pada server, tetapi akan berakibat pada seluruh aplikasi yang terhubung pada server. Untuk kasus ini, sobat harus menyiapkan langkah-langkah untuk mengembalikan sistem kembali seperti semula, sebelum dilakukan patch dengan cepat.
Merencanakan patch secara tidak langsung akan membantu menyiapkan software sobat dalam jangka panjang. Sebagaimana dengan penjahit yang bangga jika pakaian yang dijahitnya dapat bertahan lama, tentunya seorang programmer juga akan bangga jika aplikasi yang diciptakannya mampu memenuhi kebutuhan pengguna. Tidak perlu untuk selama-lamanya seperti penutup dongeng, tetapi katakanlah bertahan dalam 10 tahun, maka software sobat sudah tergolong sukses kuar biasa.