GraphQL : Solusi Pintar untuk Berkomunikasi dengan API

Beberapa waktu yang lalu, kita sempat membahas perbedaan antara jenis database SQL dan NoSQL di mana perbedaan terbesar terletak pada bahasa query-nya. Mumpung masih mengandung QL dalam memori kita walaupun sebenarnya agak berbeda, kali ini kita mengupas tentang bahasa query yang lain yaitu GraphQL.

Berbeda dengan SQL dan NoSQL yang merupakan bahasa query database, GraphQL merupakan bahasa query untuk sebuah API (Application Program Interface) yang bisa juga dinobatkan sebagai konsep baru API. Oleh karena itu, GraphQL ini tidak bisa ditandingkan dengan SQL atau pun NoSQL. Lawan sesungguhnya GraphQL ini adalah siapa lagi kalau bukan API legendaris yang dipakai jutaan umat manusia yaitu REST (Representation State Transfer).

 

Asal-usul GraphQL

GraphQL diciptakan oleh tim internal Facebook yang juga digunakan untuk keperluan internal pada tahun 2012. Karena dianggap terlalu sakti untuk digunakan Facebook sendiri, akhirnya pada tahun 2015 Facebook merilis GraphQL untuk publik. Project GraphQL kemudian berpindah tangan dari Facebook ke organisasi baru yaitu GraphQL Foundation yang berada di bawah naungan Linux Foundation pada tahun 2018.

Ide diciptakannya GraphQL sendiri adalah untuk memecahkan masalah keterbatasan yang dimiliki oleh REST API. Contohnya, katakanlah kita ingin menampilkan beberapa item buku dalam sebuah situs toko buku dan dalam setiap item menampilkan profil singkat dari penulis buku tersebut. Jika kita menggunakan API tradisional kita harus menarik data dari dua endpoint. Pertama, data item yang berisi judul buku, harga, atau sinopsis dengan endpoint misal tokobuku.shop/item/:id. Kedua, data penulis yang berisi nama, foto profil, buku apa saja yang pernah ditulis, dan biografi dengan endpoint tokobuku.shop/author/:id. Beban akan semakin bertambah jika kita harus menampilkan data lain seperti review dari pembeli dan lain sebagainya.

 

Solusi yang Bernama GraphQL

Solusi yang ditawarkan oleh GraphQL sebenarnya sangat simpel, “daripada harus mengurus beberapa endpoint ‘bodoh’ , kenapa tidak buat satu endpoint ‘pintar’ yang bisa menangani query rumit lalu mengemas output data dalam bentuk apapun yang client minta.” Pada intinya GraphQL berfungsi sebagai layer antara client dan beberapa data source, menerima request dari client, dan memberikan data sesuai dengan apa yang diminta. Untuk lebih jelasnya bisa dilihat dari gambar berikut.

GraphQL : Solusi Pintar untuk Berkomunikasi dengan API 1

Jika masih bingung, saatnya kita bermain metafora! Bayangkan kita adalah client yang banyak maunya, server GraphQL adalah seorang personal assistant, dan sumber data adalah toko. Suatu hari kita butuh mengambil laundry, memesan makanan, dan belanja bulanan. Karena kita tak mau repot dan memiliki personal assistant yang tahu di mana letak toko langganan kita, kita tak perlu mendatangi tempat laundry, restoran, atau supermarket. Yang perlu kita lakukan hanyalah menyerahkan daftar belanjaan, mengatakan menu yang kita inginkan, dan memberikan nota laundry ke personal assistant kita. Kita tinggal santai-santai di rumah atau mengerjakan hal lain dan menunggu personal assistant kita datang membawa barang-barang pesanan kita.

 

3 Pondasi Utama

GraphQL sendiri dibangun atas 3 pondasi utama yaitu query, resolver, dan schema.

 

Query

Dengan masih memakai metafora yang sama, kita tentunya harus memakai bahasa yang sama dengan assistant kita agar komunikasi berjalan lancar bukan? Walaupun bahasa query yang digunakan GraphQL agak berbeda dengan bahasa query yang lain, query tersebut sangat sederhana dan mudah dipahami. Berikut contoh pemakaian query GraphQL untuk menarik data salah satu item buku.

 

query {
  book(id: “10002a”) {
    title
    synopsis
    author {
      name
      avatarUrl
      profileUrl
      }
   }
}

 

Familiar? Yup! Query GraphQL sangat mirip dengan dokumen JSON.  Dalam GraphQL kita dapat memasukan argumen untuk setiap field. Agar bisa men-generate item buku secara dinamis, kita dapat memasukkan query berikut.

 

query ($id: String) {
  book(id: $id) {
    title
    synopsis
    author {
      name
      avatarUrl
      profileUrl
    }
  }
}

 

Resolver

Kembali lagi ke metafora sebelumnya. Personal assistant kita tidak tahu akan ke mana jika dia tidak mengetahui alamat dari masing-masing tempat yang akan dituju. Untuk kita harus memberi tahu alamat dari masing-masing tempat. Sebuah resolver memberitahu GraphQL bagaimana dan di mana sebuah data akan dikirimkan sesuai dengan field-nya masing-masing. Berikut merupakan contoh resolver yang menggunakan GraphQL-Tools dari Apollo.

 

Query: {
  book(root, args) {
    return Books.find({ id: args.id });
  }},
Book: {
  author(book) {
    return Users.find({ id: book.authorId})
  }}

 

Dalam query di atas, selain memiliki resolver pada root kita juga memiliki resolver pada field author di dalam book.

 

Schema

Schema adalah pondasi utama yang paling utama atau jika meminjam salah satu bapak-bapak YouTuber yang sangat jenius itu schema merupakan “core of the core” dari GraphQL. Akan terlalu panjang jika membahas schema dalam GraphQL. Jika penasaran dengan bagaimana schema dari GraphQL silahkan kunjungi situs GraphQL yang memuat dokumentasi schema GraphQL.

 

***

 

Itulah tadi artikel yang bertujuan mengenalkan GraphQL. Tak akan ada habisnya jika kita membahas GraphQL secara keseluruhan karena banyak sekali library Node.JS yang memiliki relasi terhadap graphQL ini seperti Express ataupun Gatsby.

Hadirkan PWA di Google Play Store dengan Trusted Web Activity

Saat ini, web developer dimanjakan dengan teknologi yang dapat meng-compile web app mereka menjadi native app seperti React Native atau Ionic. Ada juga teknologi yang dapat membuat web app tampak seperti native secara instan melalui PWA. Belum puas dengan PWA, kini Google kembali memanjakan web developer dengan Chrome versi 72 dan setelahnya dengan fitur yang disebut trusted web activities. Trusted Web Activities (TWA) memungkinkan para web developer untuk mendistribusikan PWA mereka melalui Google Play Store.

Bukan Teknologi yang Benar-benar Baru

Sebelum membahas TWA lebih jauh lagi, mari kita flashback sejenak bagaimana Android developer menampilkan konten web kepada pengguna aplikasi mereka. Ada dua protokol yang bisa digunakan untuk menampilkan konten web melalui android app:

  1. Webview
    Cara ini adalah cara yang paling sering digunakan oleh Android developer karena lebih fleksibel. Webview membuat developer dapat menyematkan konten web dalam tampilan native, menginjeksi cookies, dan ‘mengikat’ (binding) kode Javascript ke dalam kode Android (Java, Kotlin, dsb). Kekurangan dari metode ini adalah webview cukup menyita hardware resources seperti proses dan memory. Metode webview ini tidak saling berbagi ‘state’ (cookies dan cache) dengan browser.

     

  2. Chrome Custom Tab (CCT)
    Chrome Custom Tab merupakan fitur yang disediakan oleh Chrome mulai dari versi 45. Metode ini akan membuka tab chrome khusus ketika pengguna membuka link halaman web. Kelebihan dari metode ini adalah performa tinggi tapi dengan konsekuensi harus berbagi cookies dan cache dengan Google Chrome. Saat pengguna menggunakan CCT, aplikasi tidak bisa mengakses cookies, storage, dan cache dari halaman web tersebut yang sangat berguna untuk keperluan riset UX. Selain itu, bagaimanapun juga CCT merupakan bagian dari Google Chrome sehingga kita masih melihat bar atas khas milik Google Chrome yang menampilkan alamat URL.

 

Apa Bedanya Trusted Web Activities dengan 2 Metode di Atas?

Tentu saja TWA merupakan teknologi yang lebih baru bila dibandingkan dengan 2 metode tersebut. TWA hampir mirip dengan CCT tapi sama sekali tidak menampilkan UI dari browser dalam hal ini Google Chrome. Bar paling atas di mana kita bisa melihat alamat URL tidak lagi tampak. Hal ini berguna bagi native app untuk menampilkan atau mengupdate kebijakan privasi dan konten statis lainnya sehingga pengguna merasa bahwa mereka masih di app yang sama.

Fungsi yang paling penting dari TWA seperti yang telah disebutkan dalam judul artikel ini yaitu membuat PWA yang telah kita bangun bisa didistribusikan via Google Play Store. Pengguna tidak lagi harus mengetik URL dalam Chrome dan menekan menu ‘Add to Homescreen’ untuk menginstall PWA. Cara menginstall PWA yang sudah mendukung TWA sama persis dengan menginstal aplikasi native lainnya.  File APK yang akan diunduh oleh pengguna hanya sebesar beberapa ratus KB saja. ServiceWorker dalam PWA dapat berjalan mulus seperti yang diharapkan sehingga sama seperti PWA ‘standar’ yang dapat dibuka secara offline.

Walaupun lebih canggih daripada CCT, TWA masih mewariskan kekurangan CCT yang lain yaitu native app tidak bisa mengakses web state karena pada dasarnya aplikasi ini masih berjalan di atas Chrome. Oleh karena itu, sangat disarankan kepada para developer untuk meletakkan metode login di dalam web app dengan OAuth bukan di dalam package APK.

 

Apa yang Harus Dipenuhi Agar PWA Kita Dapat Didistribusikan Melalui Google Play Store?

Dalam pengerjaan proyek TWA ini, seorang web developer membutuhkan tools tambahan di luar proyek PWA biasa. Jadi tidak hanya mengandalkan code editor dan server saja. Tools yang dibutuhkan antara lain:

  • Android Studio
  • TWA Support Library
  • Google Play Developer Account (Premium)

Dalam PWA, selama ServiceWorker dan web app kita berjalan tanpa masalah, pengunjung langsung dapat ‘menginstal’  web app kita. Jika ingin mendistribusikannya melalui Google Play Store tentu saja akan sedikit lebih ribet. TWA tidak serta merta membuat Google mau mendistribusikan di Play Store miliknya. Berikut ini syarat yang harus dimiliki PWA agar dapat didistribusikan di Play Store:

  • Tidak melanggar kebijakan Google Play
  • Dapat diinstall
  • Skor performa Lighthouse (tools untuk debugging PWA) harus di atas 80
  • Direkomendasikan untuk memiliki kebijakan privasi

 

***

Akhir kata, dengan hadirnya TWA ini pasar web development akan semakin ramai. Jika Anda seorang web developer yang menguasai banyak teknologi termasuk PWA di dalamnya, pilihan Anda untuk menginvestasikan waktu dan pikiran dalam menguasai skill ini sudah tepat. Jika Anda masih ingin meningkatkan kemampuan web development dengan menguasai teknologi PWA, Anda dapat mengikuti kelas pelatihan Progressive Web App dari Inixindo Jogja.

SQL vs NoSQL: Perbedaan dalam Menentukan Pilihan Database

 

Berbicara mengenai database, mana yang lebih baik antara SQL atau NoSQL adalah topik yang selalu menjadi perdebatan baik yang baru belajar maupun profesional yang sudah lama malang melintang di dunia database sehingga dipanggil suhu oleh para juniornya. Tak main-main, perbedaan ini sering memanas dan menimbulkan konflik antara teman kerja atau pun teman komunitas persis seperti perdebatan fans sepakbola atau fans politik. Beberapa dekade yang lalu  SQL database merupakan pilihan wajib untuk jenis database karena memang pada saat itu SQL adalah satu-satunya jenis database yang dapat diandalkan.

Situasi dan kondisi mulai berubah sejak negara api menyerang dengan sistem database yang sering disebut dengan NoSQL. Jenis database ini menawarkan sesuatu yang baru. Setiap jenis database memiliki karakter dan kelebihannya masing-masing sehingga sebenarnya jika kita benar-benar memahaminya perdebatan sengit tak perlu terjadi apalagi sampai mengakibatkan keluar dari grup WhatsApp.

 

Definisi

Sebenarnya perbedaan antara SQL dan NoSQL secara mendasar sudah dapat dijelaskan dari akronimnya.

 

SQL

SQL merupakan singkatan dari Structured Query Language. Sebenarnya SQL sendiri merupakan bahasa yang digunakan untuk mengatur/mengelola data dalam database relasional. Jadi sebenarnya SQL sendiri pada mulanya tidak digunakan untuk menyebut jenis database. Akan tetapi karena jenis (kategori) database yang berbeda memiliki bahasa query yang berbeda juga maka agaknya salah kaprah yang juga dialami oleh penulis (karena alasan SEO tentunya) dapat dimaklumi.

Database relasional menggunakan ‘relasi’ (yang biasanya disebut tabel) untuk menyimpan data dan mencocokkan data tersebut dengan memakai karakteristik umum di setiap dataset. Beberapa contoh database management system yang menggunakan SQL antara lain Oracle, Sybase, Microsoft SQL Server, PostgreSQL.

Munculnya SQL berawal dari peran Larry Ellison salah satu pendiri Oracle yang mengimplementasikan ide dari petinggi IBM Edgar F. Cobb. Cobb mengeluarkan makalah pada tahun 70’an yang mendeskripsikan tentang database di mana objek dapat dikonstruksikan dan di-query memakai sesuatu yang disebut SQL. Dia menggunakan SQL untuk membuat data (dalam objek yang disebut tabel) dan skema untuk data tersebut yang mendeskripsikan isian dalam beberapa kolom. Sedangkan untuk setiap record dalam SQL database disebut ‘baris’.

NoSQL

Dilihat dari namanya, database NoSQL sebenarnya sudah cukup menjelaskan. NoSQL merupakan database yang tidak membutuhkan skema dan tidak memiliki relasi untuk setiap tabel. Semua bentuk dokumen dari NoSQL adalah JSON yang mudah dibaca dan dimengerti. NoSQL banyak diminati karena memiliki performa yang tinggi dan bersifat non-relasional sehingga dapat memakai berbagai model data. Beberapa contoh dari database NoSQL yaitu MongoDB, MarkLogic, Couchbase, CloudDB, dan Dynamo DB.

 

Memahami dari Perbedaan

Sebenarnya banyak perbedaan yang dimiliki di antara dua database tersebut tapi inilah perbedaan yang paling mencolok antara SQL dan NoSQL:

  • Bahasa
  • Skalabilitas
  • Komunitas
  • Aplikasi

 

Bahasa

Seperti telah disebutkan sebelumnya bahwa SQL sendiri merujuk pada bahasa query, perbedaan antara SQL dan NoSQL yang langsung dapat dilihat adalah bahasa query dari masing-masing database. Bahasa SQL adalah bahasa query yang terstruktur. Hal ini menyebabkan SQL menjadi agak terbatas. SQL mengharuskan kita untuk menentukan skema dalam membangun struktur data bahkan sebelum kita membuat database tersebut. Data kita harus mengikuti struktur yang sama setelah database dibuat. Oleh karena itu, kita dituntut untuk merencanakan secara matang dan berhati-hati dalam mengeksekusi data.

Sebaliknya, database NoSQL tidak memiliki skema (setidaknya skemanya dapat berubah-ubah) dan tak terstruktur. Selain itu data NoSQL dapat disimpan dalam berbagai cara baik itu graph-based, document-oriented, column-oriented, atau yang terorganisir dengan baik seperti KeyValue. Fleksibilitas ini memungkinkan kita untuk membuat dokumen terlebih dahulu sebelum perencanaan matang dan menentukan struktur terlebih dahulu. KIta juga bisa menambahkan isian (field) secara dadakan serta menerapkan syntax yang berbeda-beda dalam setiap database.

 

Skalabilitas

Hal lain yang membedakan antara SQL dan NoSQL adalah dari segi skalabilitas. Hampir seluruh database SQL memiliki skala vertikal. Ini berarti jika kita ingin mengembangkan database kita, yang dapat kita lakukan adalah menambah kapasitas muatan di satu server dengan meng-upgrade komponennya seperti RAM, kapasitas SSD, atau CPU. Hal ini cukup beralasan mengingat SQL lahir di masa di mana hardisk dan komponen lain masih mahal. Jadi dibandingkan membangun server baru, akan lebih efisien jika kita meng-upgrade komponennya secara bertahap. Walaupun begitu, beberapa korporasi besar seperti Oracle terus melakukan pengembangan agar database SQL dapat memiliki skala horizontal.

Sebaliknya, database NoSQL memiliki skala horizontal di mana jika kita ingin mengembangkan database kita, kita hanya perlu menambah server baru. Inilah mengapa NoSQL dipakai oleh perusahaan seperti Facebook yang memiliki jumlah pengguna sangat besar dan jenis data yang bermacam-macam.

 

Komunitas

Jika dilihat dari segi komunitas, tentu saja SQL memiliki komunitas yang lebih besar dibandingkan NoSQL karena SQL sudah berumur puluhan tahun. Tapi walaupun begitu, perkembangan komunitas NoSQL sangat cepat. Lihat saja banyaknya tutorial MongoDB yang bertebaran di internet. Hadirnya stack seperti MEAN (MongoDB, Express JS, Angular JS, Node JS) atau MERN (MongoDB, Express JS, React JS, Node JS) membuktikan bahwa walaupun terbilang baru, NoSQL memiliki komunitas yang cukup dapat diandalkan.

 

Aplikasi

Seperti yang telah beberapa kali disebutkan bahwa SQL bersifat table-based di mana database ini cocok digunakan untuk aplikasi yang membutuhkan transaksi multi baris. Contoh dari aplikasi ini adalah sistem akuntansi dan mungkin legacy system yang pada awalnya dibuat untuk struktur relasional.  Sedangkan untuk NoSQL, database jenis ini cocok digunakan untuk database yang membutuhkan data set yang besar seperti big data.  NoSQL juga banyak dipakai aplikasi jejaring sosial atau customer management yang struktur datanya bisa berubah sewaktu-waktu tergantung dari perkembangan aplikasinya sendiri.

 

***

 

Itulah tadi beberapa perbedaan dasar antara SQL dan NoSQL. Tidak ada jawaban pasti mana yang lebih baik. Semua disesuaikan kebutuhan oleh masing-masing aplikasi.

Agile: Project Management yang Fokus ke Pengguna

 

Dalam artikel scrum kita telah sedikit membahas tentang agile project management di mana scrum merupakan framework dari agile yang populer digunakan selain kanban.  Dalam artikel tersebut kami lebih memfokuskan membahas ritual-ritual yang dijalani saat kita menggunakan scrum tapi justru kurang memberi pengertian tentang apa agile itu sendiri. Oleh karena itu, kami berharap dalam artikel ini kami berharap kami memberikan gambaran umum tentang agile kepada semua kalangan termasuk yang belum memiliki pengalaman dalam software development sekalipun.

 

Apa Itu Agile?

Agile adalah metodologi dalam pengembangan software dengan proses-proses kecil yang berulang-ulang atau yang sering disebut dengan iterasi. Berbeda dengan metodologi waterfall di mana kita memiliki alur linear awal hingga akhir yang tak bisa dipotong atau diubah di tengah proses. Prinsip dari agile sendiri adalah fleksibel terhadap perubahan.

 

Agile: Project Management yang Fokus ke Pengguna 2

 

Agile sendiri lahir dari perusahaan Jepang Toyota pada tahun 70’an di mana pada tahun tersebut produksi mobil menerapkan sistem waterfall. Jadi memang agile sebenarnya tidak murni milik perusahaan yang bergerak di bidang software development saja. Sebelum Toyota menerapkan metode yang disebut Toyota Production System pada dekade tersebut, mereka merekrut W. Edwards Deming untuk melatih ratusan managernya. W. Edwards Deming merupakan seorang engineer yang menyempurnakan metode siklus Plan-Do-Study-Act (PDSA).

 

Agile Manifesto

We are uncovering better ways of developing software by doing it and helping others do it.

Through this work we have come to value:

Individuals and interactions over processes and tools

Working software over comprehensive documentation

Customer collaboration over contract negotiation

Responding to change over following a plan

 

Agile memiliki manifesto seperti yang tertulis di atas. Metode agile mengedepankan individu dan interaksi dibanding proses dan alat, software yang terus dikerjakan dibandingkan dokumentasi yang komprehensif, kolaborasi dengan pelanggan dibandingkan negosiasi kontrak, serta peka terhadap perubahan dibanding selalu mengikuti rencana. Walaupun begitu, metode ini tidak serta-merta meninggalkan semua yang berada di sebelah kanan dari manifesto. Akan tetapi jika dihadapkan pada kondisi harus memilih satu di antara dua, maka yang dipilih adalah yang sebelah kiri.

 

Contoh Penerapan Agile

Agile memang lebih mudah diterapkan pada proyek pengembangan software karena pada dasarnya sebuah produk software atau aplikasi merupakan kumpulan dari beberapa fitur-fitur kecil yang digabungkan jadi satu.  Itulah mengapa metode ini populer di kalangan start-up digital. Akan tetapi seperti yang sudah dibahas sebelumnya, agile justru lahir dari produsen mobil di mana pengguna melihat produk mobil secara keseluruhan. Untuk itu, kami akan memberikan contoh penerapan agile dalam pengembangan mobil karena mobil lebih familiar untuk semua kalangan.

Katakanlah kita ingin membuat sebuah mobil. Pada metode waterfall kita membuat list tentang apa yang dibutuhkan oleh pengguna dari mobil tersebut mulai dari jenis mobil,  kapasitas penumpang, tenaga mesin, sistem transmisi, sistem pengendalian, dan sebagainya. Lalu kita akan mendesain mobil secara keseluruhan mulai dari chasis, body, mesin, hingga interior. Setelah keseluruhan desain diselesaikan mungkin kita akan meminta persetujuan dari klien yang memesan mobil tersebut dan kemudian memproduksi bagian-bagiannya satu persatu.

Proses perakitan pun dimulai, kita merangkai bagian-bagian tersebut hingga menjadi sebuah unit mobil. Kita kembali mengkonsultasikan produk tersebut ke klien. Di tahap inilah sering muncul permasalahan klasik metode waterfall. Di saat klien kurang puas dengan katakanlah satu bagian saja, misalnya bagian suspensi. Kita harus membongkar atau bahkan mendesain ulang keseluruhan mobil termasuk rangka dan bodi.

Di dalam metode Agile dengan menggunakan contoh yang sama, setelah membuat daftar tentang apa yang dibutuhkan target pengguna dari sebuah mobil saatnya memilah fitur tersebut untuk diprioritaskan semisal suspensi yang nyaman pada urutan pertama. Maka kita akan memfokuskan pada desain rangka dan damper (shock absorber) dan memproduksi part tersebut. Lalu kita akan meminta klien untuk mengetes-nya walaupun kita belum membuat mesin ataupun body-nya. Bahkan jika perlu, kita bisa memasang bodi atau mesin dari produk yang sudah pernah dibuat sebelumnya baik oleh kita sendiri atau produsen lain agar mobil bisa berjalan terlebih dahulu selama pengetesan. Jika ada ketidakpuasan dari klien, kita tidak usah repot-repot membongkar desain dari keseluruhan mobil. Setelah mendapat persetujuan dari klien, maka kita akan fokus untuk menyediakan fitur selanjutnya. Proses ini berjalan berulang-ulang hingga semua kebutuhan pengguna atas sebuah mobil tercukupi. Jika profesi Anda berkecimpung dalam pengembangan software atau aplikasi tentu Anda sudah mendapatkan gambaran singkat contoh agile dan waterfall dalam proyek yang Anda jalankan.

***

Jadi pada intinya, perbedaan metode agile dan waterfall terletak pada proses di mana agile lebih melibatkan klien / kustomer dalam  menyempurnakan bagian-bagian kecil dari sebuah produk. Sesuai dengan manifesto agile yang sudah kami sebutkan sebelumnya, produk yang diciptakan melalui metode ini cenderung akan lebih bisa menyesuaikan dengan perubahan-perubahan yang disebabkan oleh tren maupun inovasi baru. Memang penerapan metode ini tidak semudah teorinya. Perusahaan sekelas Toyota saja butuh waktu dan effort yang lebih untuk menerapkan metode agile ini dengan melatih karyawannya di level perencana maupun pelaksana.

Jika Anda ingin menguasai penerapan agile sesuai dengan PMBOK 6, Anda dapat mengikuti class of the month dengan materi “Agile Practice Guide in PMBOK 6” oleh Inixindo Jogja.

 

Mengenal MU-MIMO Pada Teknologi Wireless

Jika membicarakan teknologi jaringan wireless terutama Wi-Fi pada level pengguna pasti ada di antara kita yang menjadi pendukung fanatik atau pun penolak die hard. Mendukung atau menolak biasanya tergantung dari device dan kebutuhan. Orang serba simpel, tak mau ribet, dan kelihatan keapple-applean tentu banyak yang cinta mati dengan Wi-Fi dan merasa jijik dengan konektor RJ45. Sebaliknya orang yang suka nonton video streaming 4K dan para gamer tentu saja tak bisa hidup tanpa kabel ethernet.

Seperti yang kita ketahui bahwa Wi-Fi yang biasa kita pakai di coffee shop, perpustakaan, dan tempat umum memiliki beberapa kelebihan dan kekurangan. Kelebihannya sudah jelas yaitu pengguna tak perlu terjerat oleh kabel yang membatasi ruang gerak bahkan hanya untuk sekedar menggeser laptop. Sedangkan untuk kelemahan, kualitas koneksi Wi-Fi tentu saja kalah dengan kabel ethernet biasa apalagi jika jumlah pengguna dalam satu router cukup banyak. Tapi sekarang para fans wi-fi tak perlu berkecil hati lagi karena hadirnya teknologi baru pada wireless network yang disebut MU-MIMO

 

Apa itu MU-MIMO?

MU-MIMO adalah singkatan dari Multi User, Multiple input, Multiple Output. Walaupun singkatannya imut dan menggemaskan, MU-MIMO ini memiliki kemampuan lebih yang signifikan bila dibandingkan dengan generasi sebelumnya yaitu SU-MIMO (Single User, Multiple input, Multiple Output) yang mulai kita jumpai pada protokol 802.11n di sekitar tahun 2007. Pada MU-MIMO sendiri protokol yang digunakan adalah 802.11ac tapi tidak semua chipset Wi-Fi yang mendukung protokol 802.11ac juga mendukung fitur MU-MIMO.

Tidak seperti SU-MIMO yang hanya memiliki satu jalur untuk beberapa pun jumlah penggunanya, MU-MIMO menggunakan beberapa jalur terpisah untuk dapat digunakan oleh beberapa user. Jumlah jalur ini tergantung dari angka pada spesifikasi router atau access point. Router 2×2 memiliki 2 jalur yang berarti 2 user/device dapat mengirimkan request dan mendapatkan response secara bersamaan. Sistem yang sama juga berlaku untuk access point 3×3, dan 4×4.

 

Mengenal MU-MIMO Pada Teknologi Wireless 3

 

Bagaimana Cara MU-MIMO bekerja?

Seperti yang disebutkan sebelumnya, MU-MIMO membuat router atau access point bisa berkomunikasi dengan beberapa perangkat/pengguna dalam satuan waktu dengan beberapa jalur yang berbeda. Jika dianalogikan, MU-MIMO seperti memiliki beberapa kasir dalam sebuah supermarket yang dapat memecah antrian orang belanja. Secara umum jalur-jalur yang dimiliki ini terpisah secara spasial, jadi user yang berada di sebelah utara access point memiliki jalur yang berbeda dengan yang ada di selatan, barat, atau timur access point.

Keuntungan penggunaan MU-MIMO ini tidak hanya didapatkan dari perangkat yang telah mendukung MU-MIMO saja tapi juga pengguna yang perangkatnya belum mendukung MU-MIMO. Hal ini disebabkan karena jika banyak pengguna yang mendukung MU-MIMO dalam antrian tersebut otomatis jumlah antrian akan berkurang karena pengguna MU-MIMO tersebut terlayani dengan cepat. Selain masalah kecepatan, masalah keamanan bisa dijadikan alasan untuk menggunakan MU-MIMO karena sinyal yang dikirim atau diterima oleh access point MU-MIMO terenkripsi.

 

Keterbatasan MU-MIMO

Bagaimana sudah tertarik untuk membeli access point MU-MIMO? Jangan terburu-buru dulu! Selain kelebihan MU-MIMO yang sudah kami sebutkan di atas, MU-MIMO memiliki beberapa keterbatasan yang dapat membuat kita harus berpikir dua kali sebelum membeli access point MU-MIMO yang harganya tentu saja di atas access point biasa.

Keterbatasan MU-MIMO:

  • MU-MIMO mengharuskan router dan perangkat client harus mendukung teknologi ini. Jadi jika perangkat pengguna banyak yang belum mendukung MU-MIMO, membeli access point MU-MIMO adalah sesuatu yang sia-sia.
  • Performa MU-MIMO hanya terasa jika banyak pengguna yang terhubung
  • Pembagian jalur MU-MIMO spasial membuat kita tidak bisa berpindah pindah memutari router dan kemungkinan router akan memindahkan user tersebut ke jalur SU-MIMO
  • MU-MIMO tidak meningkatkan kecepatan upstream, jadi untuk pengguna yang membutuhkan upstream tinggi seperti mengupload konten video tidak seberapa merasakan perbedaan antara MU-MIMO dan dan Wi-Fi biasa.

 

***

 

Walaupun MU-MIMO punya banyak keterbatasan, pengembangan di teknologi jaringan masih belum berhenti untuk berusaha memecahkan masalah keterbatasan tersebut dan saat artikel ini dipublikasikan sudah banyak perangkat laptop atau pun smartphone yang sudah mendukung MU-MIMO.

8 Situs Freelancing yang Direkomendasikan Untuk Programmer

Beberapa bulan yang lalu, kami sempat menulis artikel tentang tips menjadi programmer freelance. Setelah sekian lama, sebuah pertanyaan lalu muncul yang kemudian menjadi beban pikiran kami “bagaimana jika ada dari pembaca yang benar-benar resign dari pekerjaannya dan memutuskan menjadi programmer freelance?”

Seketika tim penulis Inixindo Jogja memiliki perasaan yang campur aduk, ada yang merasa bertanggung jawab, ada yang merasa bersalah, bahkan ada yang khawatir setengah mati bagaimana jika pembaca yang nekat tersebut diceraikan pasangannya, dihukum orang tuanya, atau jadi bahan obrolan tetangga gara-gara status ‘kerja serabutan’. Walaupun sebenarnya ada juga di antara kami yang cuek dan masih asik makan bubur kacang ijo di pantry, tapi kami sepakat untuk membantu pembaca yang nekat dalam mencari pekerjaan serabutan sebagai programmer atau developer lepas.

Biasanya karena sibuk coding, para programmer freelance kurang bersosialisasi dengan orang yang berpotensi menjadi klien mereka. Memang ada yang suka berkumpul atau ‘nongkrong bareng’ tapi itu pun biasanya dengan rekan seprofesi yang notabene adalah kompetitor mereka. Solusi untuk masalah ‘kurang main’ programmer freelance sebenarnya sudah ada sejak beberapa tahun yang lalu dengan hadirnya situs-situs cari kerja lepas.

Mirip dengan marketplace produk, situs-situs freelance dibuat untuk mempertemukan orang yang mencari pekerja dengan orang yang membutuhkan kerja tentu saja dalam konteks freelance yang berarti kontrak pekerjaannya per project. Dalam situs ini, kita sebagai freelancer harus bersaing dengan freelancer lain yang menawarkan jasa dengan skill tertentu. Si pemberi kerja biasanya memilih berdasarkan preferensinya sendiri-sendiri, ada yang menilai berdasarkan kualitas portfolio, pengalaman, popularitas, dan yang paling sering adalah harga.

Ya! Kami mengetahui betapa sakitnya freelancer yang handal dan memiliki jam terbang yang tinggi harus mengalah kepada fresh graduate atau juga mahasiswa yang memasang rate jauh lebih murah dibanding harga pasaran. Tapi bagaimanapun juga mereka tidak bisa disalahkan karena kita pernah mengalami betapa sulitnya membangun portfolio pada saat awal kita terjun di dunia freelancing.

Meskipun begitu, kita tak boleh menyerah begitu saja. Saatnya melebarkan sayap demi meningkatkan reach dari personal brand kita dengan memasang lapak di setiap situs freelancing yang ada di muka bumi! Yup, itu usulan dari digital marketing kami. Agak berlebihan memang, tapi paling tidak inilah delapan situs baik dari luar maupun dalam negeri yang bisa kalian coba agar kesempatan mendapatkan klien semakin besar.

 

  1. Sribulancer
    Jika kalian belum seberapa percaya diri untuk memiliki klien dari luar negeri, kalian bisa mencoba situs dalam negeri ini. ‘Act locally’ kata pepatah. Selain berkomunikasi dengan klien lokal lebih mudah, saingan kalian juga tak sebanyak situs internasional yang datang dari berbagai penjuru dunia untuk memperebutkan satu gelar yaitu deal dengan klien. Kekurangan dari situs ini adalah rate yang sudah ditetapkan oleh situs tersebut.  
  2. Freelancer
    Walaupun bukan berasal dari Indonesia, situs dari Australia ini memiliki basis pengguna yang kuat di Indonesia dan juga di seluruh dunia. Situs ini juga merupakan salah satu pionir situs freelancing.  
  3. Upwork
    Situs ini adalah paling populer di antara para developer walaupun sebenarnya situs ini menyediakan berbagai pilihan jenis pekerjaan. Sempat beken 2 tahun lalu, Upwork banyak menuai kritikan karena customer support yang buruk padahal Upwork mengambil komisi yang cukup besar yaitu sebesar 20%.  
  4. Fivver
    Situs ini sebenarnya lebih cocok untuk para freelancer di bidang kreatif seperti desain, animasi, dan musik. Meski begitu, situs ini juga menyediakan tempat bagi para freelancer di bidang teknologi seperti web & app development sampai ke database. Aura kreatif memang sengaja diciptakan oleh situsini dengan menyebut suatu pekerjaan dengan kata ‘gig’.  
  5. Gigster
    Kelebihan Gigster yang mungkin bisa menjadi panutan bagi situs freelancing lainnya adalah milestone pekerjaan yang telah ditentukan oleh Gigster. Milestone ini sangat realistis jika dibandingkan freelancer di situs lain yang menawarkan web development dalam satu hari saja (walaupun kita tahu itu hanya memasukkan data ke dalam template saja).  
  6. Toptal
    Salah satu unique selling proposition yang ditawarkan Toptal adalah kualitas dari freelancer. Website ini mengklaim bahwa mereka menawarkan developer pilihan top 3% yang artinya jika ada 100 developer dengan rate dan keahlian yang sama maka yang ditawarkan 3 developer peringkat teratas. Sampai artikel ini terpublikasi, kami masih belum mengetahui bagaimana proses screening yang dilakukan oleh Toptal.  
  7. Stack Overflow
    Kiblat untuk copy paste kode pemrograman ini juga menyediakan fitur marketplace pekerjaan. Sebagian besar project yang ditawarkan di sini bersifat long term jadi bagi yang gemar akan stabilitas ketahanan dompet tentu situs ini dapat dijadikan pilihan.  
  8. Hired
    Sistem yang digunakan Hired ini mirip seperti Tinder. Maksudnya, klien yang akan menghubungi programmer freelance hanyalah yang berstatus ‘match’ saja di mana kecocokan antara kebutuhan klien dan skill freelancer. Walaupun terlihat praktis, baik klien maupun freelancer harus melewati proses yang cukup panjang (sekitar 90 menit termasuk tes untuk freelancer). Karena proses yang agak rumit ini, kebanyakan project yang ditawarkan bersifat jangka panjang.

***

Itu tadi 8 situs yang dapat kalian jadikan referensi untuk mendapatkan gigs/project. Serta jangan lupa bahwa kebanyakan situs di atas mengambil komisi antara 10-30% dari rate yang kita tawarkan. Jadi perlu hitung-hitung lagi tentang neraca pengeluaran dan pendapatan kita untuk kebutuhan sehari-hari. Selamat mencoba dan terus belajar!