¿Qué piensan los desarrolladores de las mejores prácticas para crear una aplicación similar a WhatsApp?

Hola, soy desarrollador de iOS con 3 años de experiencia y muchas aplicaciones enviadas. Consulte http://www.sigmapoint.pl para conocer nuestros proyectos. Fui responsable de cada versión de iOS enviada por mi empresa.

Ahora volviendo a sus preguntas.

Rápido
En mi opinión, Swift aún no está listo para la producción para un gran proyecto o una gran empresa. Actualmente estoy desarrollando un proyecto en Swift y tiene algunos inconvenientes:
– Xcode aún no es perfecto: la finalización del código a veces falla (alerta famosa “SourceKit se estrelló”), Xcode con un proyecto grande con ~ 40 archivos abiertos parece reaccionar más lentamente que con un proyecto similar en Objective-C, no puede desarrollar sus herramientas Swift y distribúyalos como CocoaPods, el depurador se bloquea a veces si coloca un punto de interrupción en un bloque asincrónico, etc.
– La mayoría de los ejemplos de funciones iOS más complicadas todavía se encuentran en Objective-C (StackOverflow, blogs, tutoriales). Al menos debe comprender la sintaxis de Objective-C y algunas ideas de diseño de lenguaje para poder traducirla en vivo a Swift y adaptarse a su proyecto.
– En equipos más grandes se requerirá cierta disciplina para desarrollar y mantener buenos estándares de codificación porque Swift es diferente a Objective-C y algunas cosas deben resolverse de manera diferente.

Por otro lado, Swift es un lenguaje muy agradable, de hecho, mi favorito. Creo que, según los idiomas que conozco, solo Python ofrece el mismo nivel de flexibilidad y código de escritura divertido ( clojure , haskel , etc.son demasiado nicho en mi opinión y JS tiene muchas decisiones de diseño extrañas y requiere un poco más de tiempo para enviar código confiable).

Pero si eres un ejército de un solo hombre, te gustan los nuevos desafíos y quieres divertirte escribiendo código, ¡puedes intentarlo! 🙂

WhatsApp
No conozco los detalles técnicos de WhatsApp pero creo que se basan en:
– Comunicación WebSocket: HTTP típico puede ser demasiado lento y no responde para hacer una comunicación en tiempo real,
– Algún servicio de pub-sub donde te registras en la habitación y esperas un nuevo mensaje, como PubNub o muchos otros: http://www.pubnub.com
– Alguna base de datos rápida, puede ser una base de datos de objetos porque podemos renunciar a algunos elementos de ACID, pero debería replicarse con bastante facilidad.

En cuanto al desarrollo, el backend de WhatsApp es de aproximadamente el 80% y la aplicación es de aproximadamente el 20%. Para hacer un clon simple de WhatsApp para, por ejemplo, iOS, tomaría alrededor de 4 a 5 meses dependiendo de cuántas funciones adicionales tenga (envío de imágenes, captura de video, ubicación, etc.) pero solo suponiendo que todo el trabajo duro se pondrá en el backend. El backend más simple se puede hacer usando, por ejemplo, PubNub vinculado, pero cuanta más gente use su aplicación, más sofisticada es la arquitectura que necesita, por lo que puede llevar años construir un servicio tan escalable y confiable como WhatsApp.

No es el software o la infraestructura, es la visión lo que hace que, de hecho, cualquier aplicación sea la mejor.

A continuación se encuentra la nota adjunta al escritorio de Jan Koum.

Llegando a la pregunta real:
Swift: Objective C es más cómodo para los desarrolladores que Swift. Esta impresión puede no durar mucho. Los nuevos desarrolladores se sentirían más cómodos con Swift que con el Objetivo C. Una vez más, no es el lenguaje de programación o IDE el que hace el mejor software. Pero es el desarrollador quien hace uso de ellos.

Infraestructura: no soy la persona adecuada para comentar sobre eso.

Al ver que las respuestas son similares, me gustaría incluir node.js en la mezcla.

XMPP es el estándar antiguo para aplicaciones de chat, su implementación FOSS más estable es Jabber (en Java). Pero en mi humilde opinión, y no puedo saberlo con certeza, no creo que Whatsapp esté usando XMPP.

Lo más probable es que sea su propio protocolo de mensajería, que puede ser tan simple o complejo como los que lo imaginan. Supongo que es un protocolo simple.

Con eso, recomendaría node.js en el servidor con un protocolo personalizado adaptado a los usos de la aplicación.

En el alojamiento para una aplicación de este tipo, AWS parece ser una opción clara debido a su infraestructura distribuida geográficamente y escalabilidad bajo demanda, pero esto es demasiado especulativo ya que el tipo de arquitectura de aplicación que tiene Whatsapp es completamente desconocido para mí.

Soy un desarrollador de iOS.

P: ¿Crees que es una buena idea usar SWIFT ahora para comenzar o Xcode también hace un buen trabajo en términos de rendimiento de esta aplicación?

R: Según el escenario actual, el objetivo C es más útil que rápido.

P: ¿Alguien sabe cuál es el secreto detrás del servicio confiable de Whatsapp?
R: No podemos conocer los detalles técnicos exactos sobre WhatsApp.

P: ¿Cuánto tiempo le toma a un programador experto hacer una réplica de Whatsapp, en realidad?

R: Si desea crear una aplicación como WhatsApp, le llevará de 4 a 5 meses. Porque hay tantas aplicaciones como WhatsApp en el mercado.

P: Muchas respuestas me confunden, ¿entonces el protocolo XMPP es el camino a seguir? Los servidores de Amazon son los mejores servidores de alojamiento para Whatsapp?

R: Debería usar el protocolo XMPP con conexión de socket y le recomiendo usar Amazone Cloud Front Plant.

Si desea obtener más información sobre los detalles de la aplicación móvil o desea desarrollar una aplicación para su dispositivo móvil, simplemente envíeme un correo electrónico a [correo electrónico protegido] . Siempre estoy feliz de responder a sus consultas.

Hola, no soy un técnico, soy de administración, así que qué programas, servidores y protocolos, etc., utiliza Whatsapp, no tengo idea. Pero sé una cosa que WhatsApp ha estropeado una buena cantidad de negocios para las empresas de telecomunicaciones.
Los usuarios de Whatsapp están felices de usarlo y el propietario de Whatsapp está más feliz de venderlo por miles de millones de dólares.

Me pidieron que respondiera esto, pero probablemente no soy el mejor para hacerlo. Definitivamente iría con Obj-C sobre Swift. Es más completo y hay una comunidad más grande de apoyo. Swift es más una novedad en este momento.

En cuanto a WhatsApp, no sé mucho al respecto. Asumiría XMPP pero quién sabe. Yo no. Sin embargo, no sugeriría hacer un clon. Gastará mucho tiempo / dinero con poco rendimiento. En su lugar, encuentre una brecha en el mercado. Tal vez una aplicación de estilo de chat funciona bien como parte de una aplicación más grande. Si es así, probablemente sea mejor buscar un SDK para manejar eso y dedicar más tiempo a monetizar la aplicación.

Para ser honesto, seguro que suenas más técnico que yo 🙂

Una práctica recomendada que recomiendo es comenzar con un modelo de negocio y hablar menos implementación.