Mengintip Dapur CodeSaya

Ridwan Fajar 4 Oktober 2015

Mengintip Dapur CodeSaya

CodeSaya memang nama yang terdengar unik karena begitu mengetahui namanya, kita akan terasosiasi dengan sebuah layanan yang dapat menyimpan kode program yang kita tulis seperti Github atau BitBucket. Atau mungkin sebuah layanan seperti Pastebin yang dapat menyimpan potongan kode program kita untuk dibagikan ke orang lain. Tapi ternyata anggapan tersebut meleset. CodeSaya adalah sebuah platform untuk belajar pemrograman yang didirikan oleh Ganis, CEO dari CodeSaya.

CodeSaya memiliki konsep belajar terstruktur dengan susunan bab dan sub-bab yang siap membantu Anda belajar bahasa pemrograman. Selain membaca materi yang berada di sebelah kiri, Anda pun dapat mencoba langsung kuis atau materi dengan IDE sederhana yang disediakan oleh CodeSaya. Saat ini CodeSaya baru membuka course untuk PHP, Javascript, dan Git. Laravel akan hadir segera untuk melengkapi skill Anda di masa mendatang.

Dengan platform-nya yang menarik, mungkin ada beberapa pembaca yang penasaran dengan apa Ganis membuat CodeSaya. Ada yang beranggapan bahwa CodeSaya menggunakan Wordpress, tapi apakah cukup Wordpress? ternyata Ganis membuka pintu kepada khalayak untuk melihat dapur dari CodeSaya. Dikutip dari artikel aslinya yaitu (Teknologi Dibalik CodeSaya)[http://codesaya.com/a/teknologi-dibalik-codesaya-sebuah-rlempfhgnh/], berikut ini adalah penuturan Ganis tentang technology stack yang digunakan CodeSaya:

[caption id="attachment_5892" align="aligncenter" width="293"]Teknologi Stack CodeSaya Teknologi Stack CodeSaya[/caption]

Django

Django adalah sebuah framework dalam membuat web apps. Alasan pertama kenapa Django yang dipilih adalah karena Django menggunakan Python. Menulis dan membaca kode di Python sangatlah mudah dan menyenangkan. Saat proyek menjadi sangat besar, keringkasan dan kekuatan dari sebuah bahasa sangatlah penting. Karena kita lebih banyak membaca kode dibandingkan menuliskannya. Jika kode sudah ngejelimet, jangankan untuk menambahkan fitur, memperbaiki bugs saja pasti malas. Framework di Python bukan hanya Django tentunya, tetapi Django adalah framework yang sangat powerful dan sudah mature. Belajar Django pertama kali cukup sulit tetapi setelah sudah terbiasa maka development sebuah fitur baru di app anda akan sangat cepat.

Bootstrap

Bootstrap adalah framework untuk HTML dan CSS. Menggunakan Bootstrap membuat tampilan CodeSaya menjadi lebih sedap di mata. Keputusan memilih Bootstrap adalah karena framework ini memiliki tampilan yang indah, mudah dimengerti, dan sangat populer. Popularitas dari framework sangatlah penting, karena akan lebih mudah untuk mencari solusi jika ada masalah.

[caption id="attachment_5890" align="aligncenter" width="600"]Sarana diskusi di CodeSaya Sarana diskusi di CodeSaya[/caption]

Jquery

JQuery mungkin merupakan framework Javascript de facto untuk pengembangan website. Sebenarnya framework ini adalah framework default dari Bootstrap, jadi jika Anda menggunakan Bootstrap maka anda harus menggunakan JQuery. JQuery sebenarnya punya framework CSS sendiri, yang disebut JQuery UI, tetapi tidak terlihat bagus dan modern.

PostgreSQL

Mungkin anda sering mendengar sebaiknya menggunakan MySQL sebagai database untuk website anda. Tetapi menurut kami sebaiknya anda menggunakan PostgreSQL. PostgreSQL memiliki lebih sedikit masalah dan performa yang lebih baik dibandingkan dengan MySQL. Selain itu, PostgreSQL tidak dimiliki oleh perusahaan seperti halnya MySQL yang dimiliki oleh Oracle. Untungnya, banyak hosting di Indonesia yang telah mendukung PostgreSQL. Jika anda masih ingin menggunakan MySQL, alangkah lebih baiknya anda menggunakan MariaDB. MariaDB dibuat oleh coder asli dari MySQL (sebelum 'dibajak' oracle) dan 100% open source!

Oh ya, Django memiliki ORM yang sangat hebat. Di CodeSaya, karena ORMnya, kami tidak perlu menuliskan code SQL sama sekali untuk melakukan operasi terhadap database. Dan juga dengan Django, berpindah dari satu sistem database ke database yang lainnya sangatlah mudah.

Nginx + Gunicorn

Nginx berguna sebagai web dan proxy server yang akan mengatur request dari internet. Jika request-nya adalah file statis (gambar, dokumen js atau css, dll) maka Nginx akan melayaninya sendiri. Tetapi jika request-nya bukan file statis, maka Nginx akan mengarahkannya ke Gunicorn. Gunicorn adalah server yang berguna untuk menjalankan kode Python untuk melayani permintaan HTTP. Selain Gunicorn sebenarnya ada uWSGI yang memiliki performa sedikit lebih baik, tetapi Gunicorn dipilih karena mudah untuk konfigurasi dan untuk menjalankannya. Jika ada dua solusi untuk permasalahan anda, pilihlah solusi yang paling sederhana untuk diimplementasikan. Sementara Nginx adalah pemain baru jika dibandingkan dengan Apache tetapi Nginx memiliki performa yang lebih baik dan bisa melayani ribuan concurrent request.

[caption id="attachment_5891" align="aligncenter" width="600"]Belajar pemrograman Javascript di CodeSaya Belajar pemrograman Javascript di CodeSaya[/caption]

Lainnya

Memcached digunakan untuk caching di CodeSaya. Untuk code editor online-nya, digunakan sebuah proyek open source bernama CodeMirror. CKeditor dipakai untuk editor dalam menulis artikel. Untuk analisa traffic kami menggunakan Google Analytic. Dan akhirnya Ubuntu 14 adalah operating system yang menjalankan semua software tersebut.

Teknologi Kedepannya

Saat ini kami hanya menggunakan satu virtual machine (VM) dari Digital Ocean. Seluruh komponen di atas berada di satu VM. Untuk saat ini itu cukup, tetapi jika traffic terus bertambah, kami akan menggunakan lebih dari satu VM. Untuk berikutnya kami mempertimbangkan untuk menggunakan Docker dan Ansible di technology stack kami untuk mempermudah menjalankan CodeSaya di lebih dari satu VM. Kami juga memikirkan kemungkinan bagi Varnish untuk masuk membantu Nginx. Dan juga kami mengkaji penggunaan Redis di stack kami untuk menggantikan Memcached.

(rfs/codesaya)