Saat ini saya sedang mengerjakan proyek dengan organisasi sebagai berikut:
- Klien - Mendapat data dari server utama melalui REST api.
- Server - Meminta data dari berbagai server lain melalui API pihak ketiga
- API pihak ketiga - Layanan di luar kendali saya yang menyediakan data ke server (Reddit, Hackernews, Quora, dll.)
Demi argumen, katakanlah klien pertama-tama membutuhkan daftar item dari masing-masing API pihak ketiga. Dari daftar ini, item akan dipilih pada titik mana klien perlu melihat konten lengkap item serta tanggapan (yaitu komentar) terhadap item tersebut. Saya mencoba memutuskan di antara tiga opsi:
A la carte
Dalam pendekatan ini, saya akan memiliki 3 titik akhir yang terpisah di server saya: satu untuk mendapatkan daftar item, satu untuk mendapatkan konten utama untuk suatu item, dan satu untuk mendapatkan tanggapan dari item tersebut.
- Pro: Saya tidak pernah membuat lebih banyak permintaan daripada yang saya butuhkan, permintaan harus kecil sehingga umumnya harus lebih cepat.
- Cons: Saya harus membuat banyak permintaan. Setelah memilih item dari daftar, pengguna mungkin harus menunggu sebelum melihat konten utama dan kemudian menunggu lebih lama untuk melihat tanggapannya
Tembolok sisi server
Dalam permintaan ini, saya akan melakukan satu panggilan ke server saya untuk "mengambil" semua data untuk semua sumber. Data kemudian akan di-cache di server. Klien kemudian akan memiliki titik akhir REST yang sama seperti sebelumnya, kecuali tidak akan ada banyak menunggu antara panggilan karena server saya sudah memiliki data dan hanya harus memberi makan kepada klien.
- Pro: Masih mudah diimplementasikan di sisi klien, tetapi tanpa masalah latensi
- Cons: Sisi server sedikit lebih terlibat, dan panggilan pertama bisa sangat lama.
Tembolok sisi klien
Skenario ini mirip dengan yang sebelumnya kecuali klien hanya pernah membuat satu permintaan ke server: beri saya semua data. Dari sini, tanggung jawab klien untuk menyimpan data dan menggunakannya dengan tepat.
- Pro: Implementasi server yang mudah, sangat cepat setelah panggilan pertama
- Cons: Panggilan pertama akan sangat lambat, implementasi sisi klien lebih rumit
Saya tidak yakin mana yang merupakan pendekatan terbaik, atau jika mungkin saya kehilangan solusi yang jelas. Saran apa pun akan sangat dihargai!