2010-09-21 12 views
10

Estoy desarrollando una aplicación para iPhone y me gustaría crear algún tipo de API RESTful para que los diferentes usuarios de la aplicación puedan compartir información/datos. Para crear una comunidad de tipo.¿La forma más económica (plataforma/idioma) para implementar una API web RESTful para una aplicación de iPhone?

Decir que mi aplicación es una especie de juego, y quiero que el usuario pueda publicar su puntuación más alta en una clasificación mundial, así como mantener una lista de amigos y ver sus puntuaciones. Mi aplicación no es como esta, pero muestra el tipo de acceso a la información colectiva que necesito implementar.

La forma en que podría implementar esto es configurar un servidor PHP y MySQL y tener un script php que interactúe con la base de datos y medie las solicitudes entre el DB y cada usuario en el iPhone, tomando una solicitud GET y regresando una cadena JSON.

¿Es esta una buena manera de hacerlo? Me parece que usar PHP es una forma lenta de implementar esto en lugar de decir un lenguaje compilado. Sin embargo, podría estar muy equivocado. Estoy tratando de mantener mis cuentas de alojamiento ocultas porque planeo lanzar la aplicación gratis. Reconozco que una implementación que rinde mejor en términos de ciclos de CPU y uso de RAM (por ejemplo, algo compilado en C#?) Podría requerir soluciones de alojamiento más costosas que un servidor LAMP, por lo que podría terminar siendo más caro en términos de $ /solicitud.

También quiero que mi implementación sea escalable en el raro caso de que muchas personas comiencen a usar la aplicación. ¿El volumen de uso cambia la relación rendimiento/$ hacia una implementación diferente? Es decir. si tengo 1k de solicitud/día, podría ser más barato usar PHP + MySQL, pero las solicitudes de 1M/día podrían hacer que usar otra cosa sea más económico.

En resumen, ¿cómo implementaría una base de datos remota (bastante simple) a la que se accedería de forma remota mediante HTTP (S) para minimizar las facturas de alojamiento? ¿Qué tipo de solución de alojamiento y qué tipo de plataforma/idioma?

ACTUALIZACIÓN: por sugerencia de Karl Traté: Rubí (lenguaje) + Sinatra (marco) + Heroku (aplicación de hosting) + Amazon S3 (archivo estático hosting). Para cualquiera que lea esto y pueda tener el mismo dilema que yo tuve, esta configuración es increíble: escalable sin esfuerzo (hasta "infinito"), asequible y fácil de usar. Gracias Karl!

Aún no puedo comentar las particularidades de DB porque aún no lo he implementado, aunque para mis requisitos simples de consulta, CouchDB y MongoDB parecen buenas opciones y están integradas con Heroku.

+0

Hola codenoob. ¿Alguna noticia sobre esto? ¿Terminaste tu solución? ¿Has encontrado el motor de la aplicación try de tiempo? – j7nn7k

+0

Hola Johe, lo he implementado y ahora estoy trabajando en el cliente de iOS. Usé Ruby con Sinatra corriendo en Heroku con archivos estáticos en Amazon S3 y una base de datos MongoDB corriendo en MongoHQ. Fue muy simple implementar un protocolo RESTful usando Sinatra y todo es extremadamente escalable, y solo pago por los recursos que uso. No he probado el motor de la aplicación porque funcionó perfectamente para mí. – lms

Respuesta

5

¿Ha considerado usar Sinatra y alojarlo en [Heroku]? Esto es exactamente lo que sobresale Sinatra en (servicios REST). Y el alojamiento con Heroku puede ser gratuito, dependiendo de la cantidad de datos que necesite almacenar. Simplemente mantenga todos sus archivos de apoyo (imágenes, javascript, css) en S3. Estarás en la nube y volarás en poco tiempo.

Esto puede no encajar con sus deseos de PHP, pero sinceramente, no es más fácil que Sinatra.

+0

Enlace a Heroku: http://heroku.com/ – Karl

+0

Esto se ve muy interesante, voy a intentarlo. Creo que puedo salirse con la suya con el servicio gratuito Blossom por el momento y, en caso de que las demandas de la aplicación crezcan, los precios parecen muy razonables al alza. Sin embargo, podría probar el motor de la aplicación de google en el futuro. Gracias por la info! – lms

0

Se trata de una compensación entre costo vs experiencia.

si tiene la experiencia, definitivamente buscaría en alguna forma de infraestructura basada en la nube, algo así como Google App Engine. La plataforma en la nube que elija dependerá de la experiencia que tenga con los diferentes idiomas (App Engine solo funciona con Python/Java, por ejemplo). Sin embargo, en general, las plataformas escalables basadas en la nube tienen más "errores" y necesitan más conocimientos, porque están específicamente ajustadas para la escalabilidad de alta gama (y, por lo tanto, requieren conocimiento de conceptos de nivel empresarial en algunos casos).

Si quiere estar en funcionamiento de la manera más rápida y sencilla posible, yo personalmente iré a instalar CakePHP. Configura los datos del modelo para representar las entidades básicas que estás administrando, luego utiliza la maravillosa magia amante de las convenciones de CakePHP para exponer las actualizaciones de CRUD en estos modelos con facilidad.

+0

He decidido ir con Sinatra y Heroku por ahora porque parece muy simple hacer lo que quiero que haga. Miré a GAE y ya tengo experiencia en Java, así que definitivamente intentaré esto en el futuro también. ¡Gracias por el consejo! – lms

0

La tecnología que utilice para implementar los servicios REST tendrá un impacto mucho menos significativo en el rendimiento y los costos de alojamiento que en la forma en que usa HTTP. Aprender a aprovechar HTTP es mucho más que simplemente aprender a usar GET, PUT, POST y DELETE.

Utilice la tecnología del lado del servidor que ya conozca y dedique un poco de tiempo de calidad a leer RFC2616. Te ahorrarás una tonelada de tiempo y dinero.

0

En su caso, se accede a su servidor de base de datos en cada solicitud. así que incluso si tiene un lenguaje compilado (digamos C# o java) no importará mucho (a menos que esté haciendo alguna transformación o procesamiento de datos).

Así que el servidor de bases de datos tiene que escalar bien. aquí, su elección de idioma y DB debe estar bien configurada con el sistema operativo anfitrión.

En resumen PHP + MySQL es bueno si está enviando/recibiendo cadenas JSON y almacenando/recuperando en DB con un procesamiento de datos mínimo.

próxima aplicación se vuelve popular y si su aplicación no requiere actualizaciones frecuentes de los datos existentes, entonces puede mover dichos datos a muy altas bases de datos escalables como MongoDB (JSON friendly).

Cuestiones relacionadas