Layanan cloud dan saran protokol IM, untuk aplikasi mobile chat backend to group

8

Tinjauan Umum
Saya akan mengembangkan aplikasi di Android dan iOS. Ini akan memungkinkan pengguna untuk mengatur 'ruang obrolan' grup dan berbicara di ruang obrolan yang dibuat oleh pengguna lain. Layanan harus sangat skalabel, sehingga bisa mengakomodasi peningkatan besar dalam semalam pengguna (kita hanya bisa bermimpi).


Info latar belakang
Sebelumnya saya terutama menggunakan Java dan Python, tetapi bahasa yang paling tepat untuk tugas ini harus digunakan. Saya tidak keberatan belajar banyak keterampilan baru.

Persyaratan
obrolan Protokol obrolan harus fleksibel: harus memungkinkan untuk menentukan siapa yang dapat melihat / memposting di 'ruang obrolan' berdasarkan faktor yang ditentukan oleh poster pertama / pencipta 'ruang obrolan' tertentu. Ini juga harus memungkinkan pengguna untuk hanya menginstal aplikasi dan mulai menggunakan layanan, setelah hanya memberikan nama panggilan sederhana (yang dapat diubah kemudian).


Paket protokol obrolan
Setelah melihat sekeliling saya pikir protokol XMPP adalah kandidat terbaik. Khususnya ekstensi obrolan multi-pengguna seperti yang saya butuhkan. Apakah ini paling sesuai dengan persyaratan saya, atau Anda tahu solusi potensial lain?

Pembaruan: Saya sejak itu meneliti Protokol untuk Konferensi Synchronous dan sepertinya cocok dengan kebutuhan saya. Namun saya tidak yakin seberapa baik didokumentasikan atau bagaimana saya benar-benar akan mengimplementasikannya.


Layanan cloud
Saya telah memutuskan antara Amazon Web Services, Google App Engine dan Windows Azure. Saya sampai pada kesimpulan bahwa Azure akan menjadi yang terbaik, karena lebih mudah dikelola daripada AWS (kemudahan skalabilitas akan menjadi faktor kunci dalam desain), saya pikir itu mungkin kurang dibatasi daripada GAE, ditambah Azure akan segera memiliki toolkit untuk memudahkan antarmuka dengan ponsel Android dan iOS.

Pembaruan: Melihat lebih jauh, tampaknya AWS akan lebih murah, dan bahwa mereka memiliki ketentuan, seperti Elastic Load Balancing dan Auto Scaling , yang membuat kerja ekstra yang diperlukan untuk mempertahankan skalabilitas dapat diabaikan.

Apakah ini keputusan yang akan Anda buat, atau apakah Anda akan merekomendasikan / melihat ke layanan cloud lainnya?


Persyaratan Umum
Setiap komponen harus didokumentasikan dengan baik, terbukti andal, dan lebih disukai jika memungkinkan. Sebagai contoh saya lebih suka menggunakan plugin untuk mengimplementasikan protokol obrolan daripada menulis sendiri - sehingga menyerahkannya kepada orang yang lebih berpengalaman.


Terima kasih Terima
kasih telah membaca, dan saran yang Anda miliki tentang segala aspek akan sangat dihargai :-)

Jon Cox
sumber
Melihat ke aspek-aspek lain lebih lanjut, saya sampai pada kesimpulan bahwa saya masih tidak tahu penyedia cloud mana yang harus saya pakai. AWS sepertinya lebih murah daripada Azure, dan setelah diperiksa lebih dekat, AWS memang memiliki beberapa alat yang bagus untuk skalabilitas pengelolaan otomatis.
Jon Cox
Saya tidak yakin saya sepenuhnya yakin apa yang Anda cari. Bisakah Anda mengajukan pertanyaan yang lebih spesifik? "Apakah ini keputusan yang akan kamu buat?" cukup subyektif. Anda meminta saran tentang protokol (baik), tetapi semuanya berbunyi seperti RFC daripada pertanyaan SE yang baik.
Greg Jackson
Itu kesan saya bahwa programmer .stackexchange adalah tempat untuk pertanyaan subjektif tentang pengembangan perangkat lunak. Karena itu ada banyak solusi yang mungkin untuk hal-hal yang saya tanyakan, dan saya akan sangat tertarik dengan pendapat orang yang berbeda tentang mereka :)
Jon Cox
Benar, tetapi menurut FAQ , "Anda seharusnya hanya mengajukan pertanyaan yang praktis dan dapat dijawab berdasarkan masalah aktual yang Anda hadapi. Pertanyaan-pertanyaan yang cerewet dan terbuka akan mengurangi kegunaan situs kami dan mendorong pertanyaan lain dari halaman depan." Dengan kata lain, semakin spesifik semakin baik. Anda bisa menjadi subyektif dan spesifik, sehingga pertanyaan langsung masih lebih baik daripada RFC. Perbedaannya ada di sini, saya mungkin menyarankan Anda mengklarifikasi pertanyaan Anda, sementara pada SO, itu akan ditutup (meskipun, ya, itu sudah terlalu subjektif untuk SO tidak peduli seberapa spesifik).
Greg Jackson
Jangan salah paham, ini pertanyaan yang sangat bagus, tapi itu masih bisa lebih baik.
Greg Jackson

Jawaban:

2

Protokol

Ya, ini akan terdengar seperti penghalang tetapi itu terserah Anda. Sejujurnya, apa yang Anda gambarkan terdengar sangat mirip dengan IRC, tetapi XMPP cukup dapat diperluas dan digunakan secara luas, jadi mungkin non-IRC termudah untuk bekerja dan mendapatkan dukungan untuk. Anda akan dapat menemukan banyak contoh untuk kedua platform, dan bahkan mungkin perpustakaan yang sudah disiapkan, jika Anda ingin pergi ke arah itu. Saya tidak akan merekomendasikan apa pun, tetapi pencarian cepat harus menjadi alat yang sangat berguna di sini. Tidak ada jawaban yang benar, tetapi XMPP jelas bukan pilihan yang buruk.

Layanan Cloud

Baik Azure dan AWS adalah layanan yang sangat baik. Banyak aplikasi penting atau profil tinggi yang dijalankan pada masing-masing aplikasi. Salah satu alasan saya cenderung lebih menyukai Azure daripada AWS, adalah bahwa Microsoft benar-benar mencoba untuk membuatnya mudah bagi Anda untuk mendapatkannya. Jika Anda belum, saya akan melihat ke dalam Bizspark , yang, jika Anda disetujui, akan memberi Anda, antara lain, contoh kecil gratis Azure. Agar adil, Amazon melakukan hal yang sama , tetapi mereka tampaknya memberi Anda sedikit lebih sedikit, dan hanya selama satu tahun (Bizspark adalah selama 3 tahun). Di sisi lain, Bizspark sebenarnya mengharuskan Anda untuk disetujui, sementara Amazon benar-benar hanya memberikannya kepada Anda dengan mudah.

Singkatnya, keduanya adalah layanan yang sangat baik untuk digunakan, dan baik Microsoft maupun Amazon cenderung sangat berkomitmen untuk membantu pengembang menyelesaikan sesuatu, sehingga Anda juga tidak dapat salah. Cara terbaik untuk memutuskan adalah dengan melihat fitur yang mereka tawarkan dibandingkan dengan apa yang Anda butuhkan, dan harga untuk tingkat minimum dan ideal Anda. Misalnya, jika Anda memang ingin mendukung Windows Phone, Azure mungkin merupakan pilihan yang lebih baik, karena mereka bekerja dengan baik bersama, tetapi jika Anda ingin memanfaatkan layanan pemenuhan dan mengirimkan kaos atau cangkir kopi atau hal-hal lain yang terkait, Amazon mungkin menjadi pilihan yang lebih baik (Catatan: Jangan membaca salah satu dari ini; Saya sengaja memilih dua skenario yang tidak Anda sebutkan hanya untuk memberikan contoh beberapa fitur unik dari layanan.)

Adapun Balancing Load Elastis dan Auto Scaling, itu hanya AWS merek apa yang server cloud pada umumnya lakukan. Semua layanan cloud yang layak akan membuat penskalaan sistem Anda diabaikan secara teknologi, setidaknya dari sisi mereka (jika Anda memiliki kode buruk yang tidak dapat diukur dengan baik, Anda tidak dapat menyalahkannya ...). Jadi ya, itu adalah hal-hal yang baik, tetapi semua orang memilikinya, jadi mereka seharusnya tidak menjadi pengambil keputusan.

Greg Jackson
sumber
Terima kasih atas jawaban Anda. Ini benar-benar membantu saya berpikir lebih banyak tentang apa yang sebenarnya diperlukan, dan mengklarifikasi pemikiran saya di bidang lain. Bersulang.
Jon Cox
IRC adalah hal pertama yang muncul di kepalaku juga. Ini adalah protokol yang didokumentasikan dengan sangat baik dan sederhana, dan dirancang dengan baik untuk meningkatkan jumlah pengguna yang besar.
Cercerilla
0

Saya tidak tahu apa-apa tentang protokol obrolan jadi saya akan beralih ke cloud bit.

Saya tidak suka gagasan hosting seluruh kehadiran di cloud.

Mengapa tidak memulai dengan 2 pengaturan server virtual kecil dalam mode failover? Ada penyedia yang menawarkan fasilitas yang cukup untuk menyeimbangkan 2 contoh virtual kecil secara geografis sebesar $ 40 sebulan.

Saat Anda tumbuh, tambah / kurangi ukuran / kuantitas instance virtual Anda seperti yang diperlukan saat menggunakan cloud untuk bursting. VPS lebih murah daripada instance per jam yang digunakan penuh waktu.

Sepertinya saya bahwa sistem Anda dapat dipartisi dengan mudah berdasarkan ruang obrolan. Sumber daya yang berbeda menampung ruang obrolan yang berbeda - dan mereka bergerak berdasarkan jumlah pengguna bersamaan untuk mendekati distribusi optimal.

Ini menyisakan dua tantangan teknis: 1: Bagaimana Anda memigrasi ruang ke server mid-flow baru? 2: Bagaimana Anda mengatasi ruangan yang membutuhkan lebih banyak sumber daya daripada satu unit komputasi / unit vps?

Jonno
sumber