Jaringan internal sering menggunakan koneksi 1 Gbps, atau lebih cepat. Koneksi serat optik atau ikatan memungkinkan bandwidth yang jauh lebih tinggi antara server. Sekarang bayangkan ukuran rata-rata respons JSON dari API. Berapa banyak tanggapan semacam itu dapat ditransmisikan melalui koneksi 1 Gbps dalam satu detik?
Mari kita benar-benar menghitung. 1 Gbps adalah 131 072 KB per detik. Jika respons JSON rata-rata adalah 5 KB (yang cukup banyak!), Anda dapat mengirim 26 214 respons per detik melalui kabel hanya dengan satu pasang mesin . Tidak terlalu buruk, bukan?
Inilah sebabnya mengapa koneksi jaringan biasanya bukan hambatan.
Aspek lain dari layanan microser adalah Anda dapat mengukur dengan mudah. Bayangkan dua server, satu hosting API, satu lagi memakannya. Jika koneksi menjadi penghambat, tambahkan saja dua server lain dan Anda dapat menggandakan kinerjanya.
Inilah saat 2626 respons kami sebelumnya per detik menjadi terlalu kecil untuk skala aplikasi. Anda menambahkan sembilan pasangan lain, dan sekarang Anda dapat melayani 262 140 respons.
Tapi mari kita kembali ke pasangan server kita dan melakukan perbandingan.
Jika permintaan non-cache rata-rata ke database membutuhkan 10 ms., Anda dibatasi hingga 100 kueri per detik. 100 pertanyaan. 26 214 tanggapan. Mencapai kecepatan 26 214 respons per detik membutuhkan sejumlah besar caching dan optimisasi (jika respons tersebut benar-benar perlu melakukan sesuatu yang bermanfaat, seperti meng-query database; "Hello World" - style-response tidak memenuhi syarat).
Di komputer saya, sekarang, DOMContentLoaded untuk beranda Google terjadi 394 ms. setelah permintaan dikirim. Itu kurang dari 3 permintaan per detik. Untuk beranda Programmers.SE, itu terjadi 603 ms. setelah permintaan dikirim. Itu bahkan 2 permintaan per detik. Omong-omong, saya memiliki koneksi internet 100 Mbps dan komputer cepat: banyak pengguna akan menunggu lebih lama.
Jika hambatannya adalah kecepatan jaringan antara server, kedua situs tersebut dapat melakukan ribuan panggilan ke API yang berbeda saat melayani halaman.
Kedua kasus menunjukkan bahwa jaringan mungkin tidak akan menjadi hambatan Anda dalam teori (dalam praktek, Anda harus melakukan benchmark aktual dan profiling untuk menentukan lokasi yang tepat dari bottleneck dari Anda sistem tertentu host pada hardware tertentu). Waktu yang dihabiskan untuk melakukan pekerjaan yang sebenarnya (apakah itu query SQL, kompresi, apa pun) dan mengirim hasilnya ke pengguna akhir jauh lebih penting.
Pikirkan tentang basis data
Biasanya, basis data dihosting secara terpisah dari aplikasi web yang menggunakannya. Hal ini dapat menimbulkan kekhawatiran: bagaimana dengan kecepatan koneksi antara server hosting aplikasi dan server hosting database?
Tampaknya ada kasus di mana memang, kecepatan koneksi menjadi bermasalah, yaitu ketika Anda menyimpan sejumlah besar data yang tidak perlu diproses oleh database itu sendiri dan harus tersedia sekarang (itu adalah file biner besar). Tetapi situasi seperti itu jarang terjadi: dalam kebanyakan kasus, kecepatan transfer tidak sebesar itu dibandingkan dengan kecepatan pemrosesan permintaan itu sendiri.
Ketika kecepatan transfer sebenarnya penting adalah ketika sebuah perusahaan menjadi tuan rumah set data besar pada NAS, dan NAS diakses oleh banyak klien pada saat yang sama. Di sinilah SAN bisa menjadi solusi. Ini dikatakan, ini bukan satu-satunya solusi. Kabel Cat 6 dapat mendukung kecepatan hingga 10 Gbps; ikatan juga dapat digunakan untuk meningkatkan kecepatan tanpa mengubah kabel atau adapter jaringan. Solusi lain ada, yang melibatkan replikasi data di beberapa NAS.
Lupakan kecepatan; pikirkan skalabilitas
Poin penting dari aplikasi web adalah untuk dapat mengukur. Meskipun kinerja aktual penting (karena tidak ada yang mau membayar untuk server yang lebih kuat), skalabilitas jauh lebih penting, karena skalabilitas memungkinkan Anda untuk melemparkan perangkat keras tambahan saat dibutuhkan.
Jika Anda memiliki aplikasi yang tidak terlalu cepat, Anda akan kehilangan uang karena Anda akan memerlukan server yang lebih kuat.
Jika Anda memiliki aplikasi cepat yang tidak bisa menskalakan, Anda akan kehilangan pelanggan karena Anda tidak akan bisa menanggapi permintaan yang meningkat.
Dengan cara yang sama, mesin virtual satu dekade lalu dianggap sebagai masalah kinerja yang sangat besar. Memang, hosting aplikasi di server vs hosting di mesin virtual memiliki dampak kinerja yang penting. Meskipun jaraknya jauh lebih kecil hari ini, masih ada.
Meskipun kehilangan kinerja ini, lingkungan virtual menjadi sangat populer karena fleksibilitas yang mereka berikan.
Seperti halnya kecepatan jaringan, Anda mungkin menemukan bahwa VM adalah hambatan yang sebenarnya dan mengingat skala Anda yang sebenarnya, Anda akan menghemat miliaran dolar dengan hosting aplikasi Anda secara langsung, tanpa VM. Tapi ini bukan yang terjadi pada 99,9% aplikasi: kemacetannya ada di tempat lain, dan kelemahan dari hilangnya beberapa mikrodetik karena VM mudah dikompensasi oleh manfaat abstraksi perangkat keras dan skalabilitas.