Dari sudut pandang pengembang platform mana yang akan Anda pertimbangkan untuk aplikasi web sosial besar? Jika Anda bisa memberikan beberapa perincian tentang apa yang Anda anggap sebagai kekuatan dari alternatif mana itu akan lebih bagus.
Dari sudut pandang pengembang platform mana yang akan Anda pertimbangkan untuk aplikasi web sosial besar? Jika Anda bisa memberikan beberapa perincian tentang apa yang Anda anggap sebagai kekuatan dari alternatif mana itu akan lebih bagus.
Jawaban:
Saya telah menulis aplikasi yang sama pada GAE (Python dan sekarang Java) dan Azure. Saya mungkin akan terus menggunakan keduanya, untuk hal-hal yang berbeda. Berikut adalah beberapa pemikiran yang akan terus saya perbarui:
Alasan menggunakan GAE:
Alasan menggunakan Azure:
Saya jelas bias - saya bekerja di tim App Engine melakukan hubungan pengembang - tetapi ini adalah pendapat saya:
Mereka tidak dapat dibandingkan secara langsung. Ada satu set aplikasi yang bisa Anda tulis untuk salah satu dari mereka, tetapi Anda akan menulis hal yang berbeda di setiap kasus. App Engine menyediakan lingkungan runtime terbatas - tidak ada penulisan file, tidak ada soket, dan sebagainya - dan DBMS non-relasional. Namun sebagai imbalannya, Anda mendapatkan lingkungan runtime yang berskala tanpa batas, dan tingkat kepastian yang masuk akal bahwa aplikasi Anda akan berskala sebesar yang Anda inginkan.
Azure, di sisi lain, menyediakan lingkungan yang sedikit kurang terkendala, yang memungkinkan Anda menulis array aplikasi yang lebih luas, tetapi mengharuskan Anda untuk menulis lebih banyak - karena Anda menerapkan lebih banyak tumpukan itu sendiri - dan memberikan jaminan skalabilitas yang jauh lebih longgar. .
Akhirnya, AWS memberikan solusi do-it-yourself terbaik. Mereka menyediakan perangkat keras, dan penyimpanan, dan tidak banyak lagi. Anda membangun tumpukan dari bawah ke atas, mempertahankannya, memutakhirkannya, dan sebagainya. Aplikasi Anda menskala jika dan hanya jika Anda menulis ke skala, yang bukan tantangan kecil. Tapi, Anda mendapatkan kontrol penuh atas perangkat keras Anda.
Saran saya adalah: Jika aplikasi Anda cocok dengan model App Engine - dan aplikasi jejaring sosial mungkin menjadi contoh yang cukup bagus - tulis aplikasi Anda di App Engine (Java atau Python, pilihan Anda). Lebih murah, dan jauh lebih mudah untuk menulis aplikasi yang berskala.
Jika aplikasi Anda tidak cocok dengan model GAE, pilih Azure atau AWS, tergantung pada apakah Anda menulis untuk tumpukan MS, dan pada seberapa banyak kontrol yang Anda inginkan atas lingkungan eksekusi. Jika sebagian besar aplikasi Anda cocok dengan GAE, tetapi sebagian kecil tidak, Anda dapat mempertimbangkan hibrida - misalnya, penayangan langsung di GAE, tetapi penyimpanan pada S3, atau pemrosesan massal pada EC2.
Bagi saya, kunci adalah faktor penentu.
Jika Anda memilih untuk Google, aplikasi Anda hanya akan berfungsi di Google. Jika Anda merasa kurang puas setelah beberapa waktu, Anda buntu.
Jika Anda memilih untuk MS, aplikasi Anda hanya akan berfungsi di Azure. Hal yang sama.
Di Amazon, Anda mendapatkan (a) server virtual yang berfungsi persis seperti mesin yang biasa Anda gunakan. Tidak puas? Ambil aplikasi Anda, instal pada perangkat keras nyata, selesai.
Pilihan pribadi saya sekarang adalah Google dengan Java (bahkan jika saya. NET sebagian besar waktu). Pikirkan tentang biaya - skema mereka sulit untuk dibandingkan.
Lihat artikel ini - http://www.infoq.com/news/2008/11/Comparing-EC2-App-Engine-Azure
Seperti Arachnid, saya mungkin bias, menjadi googler. Namun, aku juga pemegang saham Amazon, sehingga yang bias yang mungkin sebagian diimbangi pertama ;-). Tidak ada pengalaman Azure (meskipun saya juga memegang saham MSFT, jadi saya berharap mereka juga melakukannya dengan baik - namun bias lainnya ;-).
Pandangan saya yang sangat sederhana adalah bahwa App Engine dengan mudah menawarkan Anda kemampuan untuk bekerja (dalam batasannya) hanya dengan coding - tidak ada tugas administrasi sistem yang diperlukan. AWS jauh lebih fleksibel, tetapi Anda akan membutuhkan pekerjaan administrasi sistem yang substansial (dan sama sekali tidak sepele) untuk memanfaatkan fleksibilitas itu. Jadi pada akhirnya saya akan menyarankan saran Arachnid yang kedua: jika App Engine dapat memenuhi kebutuhan Anda, lakukan saja; jika Anda membutuhkan lebih banyak fleksibilitas, AWS sepertinya cara yang harus dilakukan (kecuali kemampuan Azure yang tidak diketahui bagi saya harus menjadi pasangan yang lebih baik - tetapi saya pikir AWS akan lebih fleksibel tidak peduli apa yang Azure dapat lakukan, misalnya dengan AWS Anda bahkan dapat memilih OS mana yang akan digunakan, jika Anda membutuhkannya).
Saya baru saja mulai bekerja dengan Azure, dan saya sudah terkesan Anda dapat melakukannya di F #: http://code.msdn.microsoft.com/fsharpazure! Sejauh ini, ini satu-satunya platform cloud yang memungkinkan seseorang untuk menggunakan pemrograman fungsional secara terkelola (tentu saja Anda dapat melakukan Haskell di EC2 ... atau Algol 68 dalam hal ini). Saya sangat terkesan dengan kualitas integrasi Visual Studio - Anda mendapatkan "cloud" lokal untuk diuji, DevFabric, dengan penyimpanan yang merupakan SQL Server nyata, sehingga Anda dapat bermain sebelum mengunggah. Bisakah GAE melakukan itu? Melihat Azure, belajar VS dengan F # (berasal dari Linux dan OCaml), saya berharap saya telah beralih ke MS stack sejak lama untuk itu. Sangat mudah untuk membuat penyimpanan SQL dan memeriksanya dalam VS - sangat berguna. Open Source tidak memiliki toolset yang cocok dan sudah waktunya orang memberikan pertimbangan yang adil kepada MS - mereka telah melakukan pekerjaan yang luar biasa di sini. Saya pasti bertahan dengan basis Mac OSX saya (dual-boot ke Vista), dan dugaan saya adalah, dengan kemampuan Azure untuk dikembangkan secara lokal, saya akan mendapatkan kotak Vista terpisah untuk pengembangan Azure. .NET benar-benar luar biasa ketika Anda berasal dari dunia pipa Unix - PowerShell, SQL dan LINQ, C # dan F # (yang merupakan alasan utama saya) - tetapi ternyata semuanya bertambah dan layak untuk dipelajari, bukan sebagai gantinya. dari, Linux; dan dalam semua kasus, Azure akan memperluas wawasan Anda.
Seperti halnya saya mencintai GAE, salah satu alasan utama mengapa saya menggunakan EC2 daripada GAE untuk proyek saya saat ini adalah bahwa saya harus dapat memiliki ujung depan aplikasi saya dilayani dari pusat data yang berlokasi di berbagai belahan dunia. GAE berjalan di satu pusat data sekaligus. Sebagai contoh, saya membutuhkan pengguna di Asia untuk menekan server di Asia untuk waktu respon tercepat yang mungkin untuk aplikasi saya. Tambahkan pada kemampuan untuk mengelola dns, load balancers, database pilihan, flume mendorong ke S3 untuk pengolahan data hadoop, dll ... dan EC2 menjadi solusi yang sangat menarik.
Beberapa hal yang perlu dipertimbangkan:
Semakin cepat: seberapa cepat Anda bisa produktif dengan lingkungan yang dipilih seperti apa dokumen yang ada dan apakah sampel yang jelas dan didukung dengan baik terlihat dan bermanfaat
Biaya: biaya adalah faktor, tetapi jika Anda membuat Aplikasi komersial yang benar-benar akan memiliki pelanggan, ini semua adalah pilihan yang layak. Jika Anda berasumsi bahwa Azure, dengan satu proc pada instance "kecil" berjalan sekitar $ 90 sebulan untuk penggunaan 24x7 ... berapa banyak pengguna yang dapat Anda layani pada waktu itu? Tambahkan contoh kedua untuk redundansi ... masih tidak terlalu mahal jika lalu lintas Anda menjaminnya. Jika tidak, mengapa Anda berada di cloud alih-alih di penyedia yang dihosting murah? Faktor biaya yang lebih besar datang saat Anda menerapkannya. AWS adalah solusi roll Anda sendiri. Itu banyak yang harus ditangani untuk mendapatkan solusi yang akan stabil dan dikelola dengan baik. Azure dan GAE memilikinya di luar kotak. Dalam pikiran saya AWS adalah yang paling mahal karena pekerjaan yang harus Anda lakukan. Apakah Anda benar-benar membutuhkan kendali pada tingkat granularitas yang sangat baik itu? Jika begitu,
Kemampuan untuk melakukan apa yang Anda inginkan: AWS sepanjang jalan. Azure adalah yang kedua, GAE adalah yang ketiga. Tidak masalah jika yang Anda inginkan adalah Java dan Python. Biggie jika Anda ingin melakukan DB relasional atau pemrosesan data multi-utas yang luas di C ++ (tidak yakin apakah ada yang melakukan ini sekarang?).
Bagaimana dengan portabilitas? Bisakah Anda membawanya kembali ke peternakan Anda sendiri nanti atau memindahkannya ke cloud farm lain? Mereka semua portabel sampai batas tertentu.
Banyak yang harus dipikirkan ... masih belajar tentang ini sendiri.
Jika Anda perlu memulai mesin virtual secara manual untuk memenuhi permintaan maka itu bukan cloud.
Azure dan EC2 hanyalah server virtual dengan beberapa layanan di samping.
Memperbarui:
EC2 dan Azure memberi Anda opsi untuk mengelola mulai instance baru secara otomatis di bawah pemuatan, tetapi Anda masih harus mengelola ini. Dan Anda membayar untuk hal-hal yang naik dan diam.
GAE menangani ini secara otomatis out-of-the-box dan itu hanya membebani Anda saat kode Anda berjalan selama permintaan.
Berikut beberapa pertimbangan lain.
GAE - Duduk lebih tinggi di platform sebagai tumpukan layanan kemudian AWS dan Azure, semua lalu lintas yang dialihkan melalui DNS ghs.google.com mereka, secara dinamis memuat penayangan halaman Anda melalui salah satu mesin mereka, yang memungkinkan mereka menjaga harga tetap rendah. scaling baik-baik saja dengan pendekatan ini, Kontra tidak ada ip statis, cenderung disaring atau diblokir. Dari batasan ip statis, Anda tidak akan dapat mengatur situs https spesifik apa pun.
AWS dan Azure memberi Anda cukup banyak IP statis dan VM khusus, memungkinkan untuk persyaratan dasar seperti sertifikasi https. Anda juga akan mendapatkan dukungan penyimpanan relasional. Biaya juga lebih tinggi untuk mencerminkan fakta VM khusus ini, dan Anda akan menskalakan per VM jadi dalam potongan 40 dolar / bulan. Keuntungannya adalah karena Anda mendapatkan VM untuk diri sendiri, Anda tidak dibatasi oleh batasan pemrosesan cpu 30 detik pada GAE, dan dapat menjalankan tugas yang lebih besar.
Jadi jika Anda mempertimbangkan basis pelanggan di negara yang difilter, atau ingin IP statis untuk melakukan pengaturan DNS Anda sendiri, atau memiliki persyaratan yang memerlukan db relasional atau lebih dari 30 detik tugas. AWS, Azure akan jauh lebih ramah untuk bekerja dengannya.
Lihatlah solusi yang disediakan masing-masing cloud dan gunakan model hybrid. Beberapa masalah memerlukan palu dan yang lainnya obeng. Kenali alat Anda dan terapkan pada masalah yang tepat.
Saya tidak memiliki reputasi yang cukup untuk memberikan komentar untuk salah satu jawaban di atas. Kesesuaian salah satu dari solusi cloud tersebut tergantung pada banyak faktor termasuk kebutuhan dan keahlian Anda.
Saya memiliki proyek jejaring sosial yang membutuhkan database nosql. AppEngine akan menjadi solusi yang baik jika memiliki dukungan yang lebih baik untuk berbagai kerangka kerja. Django dengan adaptor nonrel berfungsi pada Python GAE, tapi saya lebih suka Rails karena berbagai alasan. Rails3 telah keluar selama beberapa bulan dan tidak ada seorang pun di komunitas atau di tim GAE yang menulis resep untuk mendukungnya. Kecuali Anda memiliki keahlian - mengetahui internal ruby dan rails, jruby, dan GAE internal - untuk menulis resep Anda sendiri, Anda berada di tangan orang lain hanya untuk mendapatkan platform.
AWS adalah pekerjaan yang jauh lebih banyak tetapi setidaknya Anda bisa mendapatkan di platform dengan alat apa pun dan menangani banyak masalah secara administratif daripada sebagai pengembang internal atau meminta kekuatan yang lebih tinggi.
Keluhan saya tentang Heroku dan EngineYard, untuk pengembang Ruby, adalah misteri tentang bagaimana skala basis data. Bagaimana mereka mengukur?
Dalam kasus saya, saya memilih solusi NoSQL dan Mongo tampaknya menjadi pilihan yang baik. MongoMachine tampaknya menjadi solusi yang disarankan untuk orang-orang seperti Heroku atau EY tetapi mahal gila. Penyimpanan $ 2,50 / GB? Penyimpanan hanya $ 0,10 GB / bulan pada GAE atau EBS.
Saya mulai bereksperimen dengan Google App Engine baru-baru ini, dan untuk jejaring sosial web, saya yakin ini akan memenuhi semua kebutuhan Anda. Sangat mudah untuk memahami dan dapat digunakan baik dengan Python atau Java. Memang benar itu tidak memberi Anda akses atas file, tetapi untuk aplikasi Anda, GQL (antarmuka seperti SQL ke database yang mereka sediakan) mungkin akan lebih dari cukup (dan itu cukup kuat).
Satu hal yang mungkin ingin Anda pertimbangkan, adalah bahwa aplikasi pada GAE dapat menggunakan antarmuka yang akan memungkinkan pengguna dengan Akun Google, atau akun pada domain menggunakan Google Apps log in (jalan pintas). Anda memilih salah satu dari ini. Jadi jika Anda sudah menggunakan Situs Web Google Apps, Google App Engine akan menjadi pilihan yang tepat untuk Anda, karena pengguna Anda tidak perlu mendaftarkan akun baru.
EDIT: Seperti yang ditunjukkan Arachnid, bukan berarti Anda tidak dapat membuat kode sistem login Anda sendiri. Maaf, jika saya membuat Anda khawatir di sana.
Adapun dua alternatif lainnya, saya hanya membaca tentang mereka dan tidak mengujinya. Tapi saya percaya GAE menyediakan kerangka kerja yang lebih mudah, dari penelitian saya, dan seperti yang Anda sebutkan harga yang mahal.
Bagaimanapun, Anda dapat mencoba GAE menggunakan kuota gratis pada ruang dan bandwidth dan melihat apakah itu sesuai dengan kebutuhan Anda.
Semoga berhasil.
Azure memiliki Windows / SQL sebagai server "Platform as a Service", dan Anda pasti TIDAK terjebak, kembali saja ke Windows / SQL di pusat data Anda sendiri (Tidak ada linux, tapi ya mereka mendukung Java, Python, PHP, Ruby, Ruby, Tomcat , Apache, dll.). Seperti Amazon, mereka juga akan menyediakan opsi Mesin Virtual yang sepenuhnya dapat diakses, sehingga Anda dapat menginstal / menjalankan apa pun yang Anda inginkan.
Amazon hanya memiliki Mesin Virtual, jadi Anda masih harus menginstal, menambal, melisensikan, mengamankan, dll ... Jenis kekalahan manfaat pindah ke cloud menurut saya. Anda baru saja memindahkan sesuatu dari pusat data Anda ke yang lain.
Google tidak memiliki basis data relasional dan Anda akan TERJADI. Mereka benar-benar hanya melayani pengembang Python dan beberapa dukungan terbatas untuk Java. Mereka benar-benar bukan pemain di ruang cloud menurut saya.
Satu hal yang tidak disebutkan di sini, adalah apa yang orang pertimbangkan dari "Windows Azure AppFabric Service Bus & ACS" selain nama yang menghebohkan ...?
Tampaknya menjadi tumpukan fitur integrasi yang sangat kuat yang akan membuat Azure menarik dari perspektif bisnis apa pun dengan investasi di infrastruktur tempat.
Setelah bereksperimen dengan Amazon EC2 untuk sementara dan memukul beberapa penundaan, saya mulai meneliti Google Apps sambil bereksperimen karena biaya. Saya lebih suka Erlang sebagai bahasa pengembangan tetapi bisa menangani Python, jadi itu bukan faktor penentu. Ketika saya tidak melihat IP statis, itu. Juga seluruh bagian tentang itu menjadi lebih tinggi di tumpukan membuat saya sedikit gugup sehubungan dengan kinerja.
Saya berharap AWS lebih murah, tetapi sampai Google memberikan IP statis dan lebih disukai bahasa tambahan seperti Scala, JRuby, dan Erlang, pilihannya jelas bagi saya: AWS . Dua bahasa pertama juga harus sederhana, keduanya berbasis JVM. Bahkan mungkin sudah dilakukan melalui kerja-sekitar, karena saya ingat untuk membaca sesuatu tentang itu.
Guys Saya pikir selain dari hanya berpikir tentang platform apa yang didukung perbandingan harus pada Skalabilitas, Kemudahan akses, Serbaguna (dalam hal implementasi), dapat mengakomodasi platform hosting yang berbeda, sama-sama layak secara ekonomi untuk kasus bisnis, memiliki beberapa solusi untuk perusahaan aplikasi (yaitu penyimpanan, pengiriman, bandwidth, kebijakan perizinan dll), rekam jejak kredibilitas kualitas layanan, Keamanan diaudit, Transparansi dalam penagihan serta penetapan biaya dll. Jika Anda melihat semua metrik di atas, saya merasa skor AWS jauh di atas . Saya mengelola 10 akun produksi di AWS sejak 2 tahun & pada saat yang sama perusahaan / unit bisnis dapat memenuhi tuntutan skalabilitas pelanggan yang sangat besar .... Tidak diragukan lagi pada AWS seseorang harus memelihara infrastruktur, Pembaruan (jika ada / jika wajib), keamanan dll. Tetapi Anda memiliki semua alat yang tersedia di pasar / internet secara bebas. Sumber daya TI yang ada dapat mempertahankan semua infrastruktur di AWS juga.
Azure tentu memiliki IDE terintegrasi dengan VS 2010, tetapi penetapan biaya sebenarnya dari cloud apa pun akan dimulai setelah berhasil menggunakan aplikasi (platform untuk penyebaran). Masih jauh untuk matang untuk mengatasi penyebaran waktu nyata / skenario produksi yang dapat diskalakan ....... Seperti semua orang tahu MS memainkan banyak agenda tersembunyi mengenai penetapan biaya .. sangat sulit untuk mengetahui biaya yang dikeluarkan atau akan terjadi (saat mengirim keluar perkiraan).
GAE sangat spesifik untuk aplikasi Python / Java. Upaya besar (baik dalam hal sumber daya + biaya) dalam mendapatkan aplikasi ditulis ulang (ada), diuji, digunakan dll.