10 Hal Lain yang Bisa Kamu Ulik Selain Web Framework

Muhammad Arslan 18 Agustus 2017

10 Hal Lain yang Bisa Kamu Ulik Selain Web Framework

Web Framework memang seksi untuk diulik, bahasan dan berita terbarunya selalu saja hadir setiap saat dari berbagai sumber. Framework A menghadirkan fitur X, Framework B menghadirkan fitur Y. Framework C memiliki performa terbaik dibandingkan framework lainnya. Framework D didukung oleh vendor besar dan kua dukungan komunitasnya, dan Framework O memiliki dokumentasi yang terbaik.

Gak pernah habis bila kita membicarakan web framework entah itu backend web framework maupun frontend web framework. Namun sayangnya ngulik web framework saja tidak cukup untuk bersaing di industri IT masa kini. Ada beberapa hal lain yang seharusnya dikuasai oleh seorang programmer dari berbagai bahasa pemrograman apapun.

Menguasai web framework saja tidak cukup, menguasai teknologi yang terkait dengan web framework pun harus menjadi perhatian yang utama. Karena bila kita harus selalu fokus di web framework bisa jadi kemampuan kita hanya sebatas membuat aplikasi saja dan tidak beranjak hingga memahami arsitektur secara keseluruhan.

Selain ngulik web framework, kamu juga sebaiknya mempelajari beberapa hal berikut untuk meningkatkan kemampuan kamu dalam menggunakan web framework favorit kamu serta meningkatkan kualitas aplikasi yang kamu kembangkan.

###1. Relational Database

Tidak sedikit banyak yang menggunakan relational database namun tidak menggunakan fitur relasionalnya. Ada beberapa orang yang terbiasa membuat foreign key tanpa memberikan index foreign key pada suatu tabel. Ada juga yang terbiasa tidak menggunakan primary kery pada tabel dan menggunakan sistem unik setiap baris di level aplikasi.

Relational database tidak hanya sekedar menyimpan data dan melakukan query tanpa optimasi yang tepat. Sebaiknya kita harus kuasai relational database ini sampai level dimana kita menguasai berbagai tipe data yang tersedia, replication, clustering, backup & recovery, hingga bagaimana mengelola administrasi suatu role dari user di dalam database tersebut.

Beberapa relational database yang dapat kamu ulik antara lain:

  • SQLite
  • MySQL
  • PostgreSQL
  • MariaDB
  • SQL Server
  • Oracle
  • dan lainnya

###2. NoSQL Database

Tidak semua dapat diselesaikan oleh relational database. Ada kalanya kita harus merepresentasikan data kita diluar konsep relasional. Sebut saja kita ingin merepresentasikan sebuah jalur perkotaan dengan penyimpanan berbasis graf. Atau menyimpan dokumen dalam bentuk indeks yang dapat dicari dengan sangat cepat. Atau hanya berupa key-value untuk menyimpan sebuah informasi user dan ingin sekali cepat diakses.

Tak jarang ada juga yang ingin menyimpan sebuah informasi namun informasi tersebut disimpan di dalam baris data tersebut dan ditanamkan dengan berupa struktur JSON. Semua konsep non relasional tersebut hanya dapat kamu temukan di kursus - kursus atau mencarinya melalui internet. Sangat jarang kampus - kampus yang mau mengajarkan basis data non relasional ini karena keterbatasan tertentu.

Kamu dapat mencoba beberapa NoSQL database seperti:

  • MongoDB, CouchDB, ArangoDB (document based)
  • Elasticsearch, Solr, Lucene (search engine)
  • Redis, RethinkDB, ArangoDB (key value storage)
  • ArangoDB, Neo4j, OrientDB (graph database)
  • Cassandra (columnar database)
  • dan lainnya

###3. Message Queue

Terutama untuk pengembangan Restful Web API. Biasanya sistem harus dibuat sedemikian rupa agar tidak time out. Terkadang ada sebuah endpoint atau resource yang sangat lama diakses sehingga membuatnya time out. Untuk mencegah hal tersebut kamu dapat memberdayakan message queueing. Sebuah solusi dimana informasi yang ingin kamu proses dengan algoritma berat dan konsumtif dapat dijalankan di belakang layar namun harus diantrikan dulu ke dalam sistem message queueing tersebut.

Selain itu bila sistem down, message queue dapat menyimpan informasi yang sudah diantrikan dan akan diproses kembali sampai sistem nyala kembali. Dengan demikian kamu tidak akan kehilangan banyak data ketimbang tanpa menggunakan message queue.

Beberapa message queue yang dapat kamu ulik antara lain:

  • RabbitMQ
  • ZeroMQ
  • Apache Kafka
  • Apache ActiveMQ
  • Rq
  • Resque
  • dan lainnya

###4. Caching

Caching adalah suatu mekanisme dimana kamu dapat menyimpan sebagian informasi agar dapat diakses lebih cepat tanpa harus melihat kembali ke database. Kamu dapat menyimpan informasi berupa data user, sebagian halaman web, seluruh halaman web, atau file - file seperti gambar, js, css, dan lainnya.

Caching tingkat web server dapat menangani caching untuk file - file statik di web. Namun untuk menangani data dan halaman web. Dapat juga kamu gunakan engine lain yang lebih mumpuni agar web server tidak terbebani.

Beberapa caching engine yang dapat kamu coba antara lain:

  • Redis
  • Memcached
  • Varnish
  • File-based caching
  • dan lainnya

###5. Push Notification

Push notification adalah sebuah mekanisme dimana sistem dapat mengirimkan pesan pemberitahuan langsung kepada device yang sedang dipegang oleh user. Device dapat berupa web browser, aplikasi desktop, smartphone, dan lainnya.

Push notification sangat dibutuhkan terutama untuk platform seperti iOS dan Android. Kamu juga dapat membangun infrastruktur push notification sendiri dengan Parse Server. Ataupun menggunakan solusi lain yang sudah tinggal pakai. Sehingga sistem dapat mengirimkan pesan kepada device - device tadi dan pesan akan muncul langsung di layar device yang sedang dipegang oleh user

Beberapa push notification yang dapat kamu coba secara gratis antara lain:

  • Parse Server
  • Firebase
  • One Signal
  • dan lainnya

###6. Web Server

Jangan hanya mengandalkan system engineer atau system administrator untuk deployment aplikasi web yang kita kembangkan. Web developer pun perlu tahu bagaimana cara deploy dan cara setting di suatu web server.

Dengan mengetahuinya kamu dapat meningkatkan performa aplikasi web kamu dibantu dengan system engineer dan system administrator (yang berpengalaman). Karena performa web tidak hanya diselesaikan dengan optimasi kode program. Namun juga dengan cara mengatur web server yang baik dan sesuai kebutuhan.

Beberapa web server yang dapat kamu coba antara lain:

  • Nginx
  • Apache Httpd
  • Caddy Server
  • Apache Tomcat
  • Cherokee
  • Lighttpd
  • dan lainnya

###7. Deployment

Bila kita biasa melakukan deployment secara on-premise atau di hostingan biasa. Ada banyak cara untuk melakukan deployment aplikasi web kita dan tentunya harus kamu coba sendiri di waktu luang entah itu dengan membaca dokumentasinya atau mencobanya langsung.

Mengetahui cara deployment dapat mengubah cara kita mengembangkan aplikasi web, serta menambah pengetahuan kita dalam membangun infrastruktur untuk aplikasi web. Selain mempelajari web framework itu sendiri.

Beberapa deployment yang dapat kamu coba antara lain:

  • Deploy di server on-premise
  • Deploy di Hostingan Klasik
  • Containerizing dengan Docker
  • Deploy di Cloud Server
  • Deploy di Platform As A Service
  • Deploy di Function As A Service
  • dan lainnya

###8. Cloud Computing

Tidak semua infrastruktur harus kita bangun. Dengan cloud computing, aplikasi web yang kita kembangkan dapat dibangun lebih cepat dengan bantuan layanan yang disediakan penyedia cloud computing.

Misal kamu tidak perlu lagi membangun infrastruktur untuk database, search engine, caching, message queue, content delivery network, dan distributed storage. Semua dapat mengandalkan cloud computing namun tentu dengan biaya yang tak sedikit.

Mempelajari beberapa layanan cloud computing dapat membantu aplikasi web yang kamu kembangkan menjadi lebih handal dan dinamis serta memiliki delivery time yang lebih singkat.

Beberapa cloud computing yang dapat kamu coba antara lain:

  • Amazon Web Service
  • Google Cloud Platform
  • Microsoft Azure
  • IBM Bluemix
  • dan lainnya

###9. Big Data

Aplikasi web yang kita kembangkan tentu mempunyai user, apalagi bila penggunanya mencapai jutaan pengguna. Tentu saja data yang ingin ditangkap dari pengguna dan data yang ditangkap dari aplikasi tidak mungkin disimpan begitu saja di database. Apalagi kalau database-nya cuma satu instance server saja. Bisa - bisa meledak.

Perlu solusi lain dimana kita dapat menyimpan data yang akan jarang diakses namun dapat beradaptasi dengan jumlah yang sangat besar saat pertumbuhan pengguna aplikasi web kita bertambah.

Salah satu teknologi yang dapat membantu kita untuk menyimpan file secara terdistribusi dan masif adalah Hadoop. Teknologi ini adalah sebuah file system yang dapat membentuk suatu cluster storage dari sejumlah server. Dan tentu saja teknologi yang berdiri diatasnya pun ada banyak yang dapat dicoba.

Karena Hadoop sejatinya adalah file system, maka kamu perlu mengetahui teknologi pemrosesan data yang disimpan diatas Hadoop entah itu scripting atau berbasis SQL. Belum lagi kamu harus mengetahui bagaimana membuat pipeline untuk menyalurkan data kamu dari satu tempat ke tempat lain.

Beberapa solusi big data yang dapat kamu coba antara lain:

  • Apache Hadoop
  • Apache Hive
  • Apache Spark
  • Apache PrestoDB
  • Apache Flink
  • Apache Zeppelin
  • Apache Pig
  • Apache Sqoop
  • Apache Beam
  • dan lainnya

###10. Machine Learning

Setelah menyimpan data yang sangat masif dari aplikasi web yang kita kembangkan tentunya sangat sayang apabila harus dibuang begitu saja. Pasti ada manfaat yang dapat digunakan untuk meningkatkan penjualan atau mencari pengetahuan yang tersimpan di dalam big data tersebut.

Kamu dapat mempelajari berbagai tools untuk mengolah data tersebut menjadi pengetahuan dengan memanfaatkan machine learning. Sehingga big data yang kamu kelola dapat menjadi lebih bermanfaat, berhaga, dan bermakna.

Di dalam machine learning, kamu dapat mempelajari klasifikasi data, mencari jumlah pasangan yang sering muncul, pengelompokkan data otomatis, prediksi suatu nilai, mengenali pola suatu data, dan lainnya. Kamu juga dapat memberikan rekomendasi kepada user berdasarkan jumlah rating yang diberikan oleh user lain.

Beberapa tools machine learning yang dapat kamu coba antara lain:

  • Scikit-Learn
  • TensorFlow
  • Keras
  • PyTorch
  • Spark ML
  • dan lainnya