Scalable Software
Dalam konteks ekonomi, business model dikatakan scalable jika penjualan perusahaan tersebut dapat ditingkatkan jika resource yang disediakan juga meningkat. Dengan demikian sebuah jasa software dapat dibilang scalable jika pertumbuhan performa dan penambahan resources-nya proporsional. Performa di sini dapat berarti munculnya layanan tambahan, banyak request yang dapat dilayani, atau kapasitas pengguna yang dapat ditampung.
Berikut hal yang bisa dilakukan supaya kita dapat membuat perangkat lunak yang scalable :
- Scale horizontally, not vertically. Scale vertically berarti scaling dengan menambah power (CPU, RAM) atau meng-upgrade mesin yang sudah kita punya. Sedangkan scale horizontally berarti menambah jumlah mesin. Cost dari scaling secara vertikal meningkat secara eksponential sedangkan scaling secara horizontal meningkat secara linier.
- Load balancing. Public server dari web service yang scalable tersembunyi dibalik load balancer. Load balancer membuat semua request terdistribusi sehingga tidak terlalu berat di 1 server.
3. Cache everything. Caches berguna untuk menghindari melakukan hal yang sama berulang kali. Hal ini sangat berguna bagi scalability maupun performance.
4. Asynchronous dibanding synchronous. Ketika user men-submit sesuatu, informasikan user bahwa submit berhasil, kemudian lakukan proses setelahnya di background, dengan demikian user tidak perlu menunggu terlalu lama. Selanjutnya software dapat memberikan update kepada user apabila proses sudah berhasil atau gagal.
5. This too shall fail. Computer systems fail. Software fails. Hardware fails. Designs fail. Failure handling fails! Bersiaplah untuk beragam failure, tapi jangan membiarkan user dapat melihatnya dengan jelas.