¿Qué hace que aplicaciones como Snapchat, Instagram, Pinterest, Uber y más funcionen?

La respuesta a esta pregunta es complicada. Tu pregunta es hacer un montón de cosas a la vez y decir, “¿cómo programo o cómo creo Snapchat?”.

Te daré algunas respuestas de muy alto nivel.

En primer lugar, una sola persona no podrá crear las aplicaciones que mencionó anteriormente hoy. No en su estado actual de todos modos. Es posible que pueda construir el marco original con usted mismo o con un equipo muy pequeño o dos amigos. Pero no será lo mismo que estas aplicaciones son “hoy”. Todos ellos han pasado por un proceso evolutivo y ahora son parte de grandes organizaciones con docenas y docenas de equipos que trabajan en varias partes.

Dicho esto, podrías construir cualquiera de estos. No, no solo usando Google Cloud Engine. Por cierto, una “pila” es solo un término coloquial que significa: “todas las tecnologías utilizadas para construir una aplicación determinada”. Un desarrollador de pila completa, por ejemplo, es alguien que generalmente está bien versado en el conjunto completo de herramientas necesarias para realizar el desarrollo front-end o back-end.

La mayoría de las aplicaciones modernas se crean como una plataforma de varios niveles. Ellos tienen:

  1. Un front-end: esta es la interfaz de usuario web. Por lo general, se construye con cosas como .Net / C #, Java / Netbeans, HTML, Javascript, CSS, etc.
  2. Una capa intermedia o capa de lógica de negocios: esto generalmente se hace en Java o C # o C ++ o algún otro lenguaje pesado orientado a objetos.
  3. Un back-end: esta es la capa de acceso a datos. La base de datos y / o lógica real para acceder a ella. Esto puede estar codificado en C # o Java y tener una base de datos como MySQL, SQL Server, Oracle, etc … o incluso puede usar algo como Hadoop o NoSQL, que son nuevos sabores de bases de datos que son parte del movimiento de big data y no relacionales establecer bases de datos basadas.
  4. Todo esto se ejecuta en una plataforma de servidor web (Linux / Apache para una aplicación Java o Python normalmente y Win / IIS para una aplicación .Net). Es probable que haya una serie de servidores web con carga equilibrada. Junto con servidores de bases de datos o sql agrupados en un centro de alojamiento de datos y, probablemente, múltiples centros de datos o algo de esto en una plataforma de alojamiento virtualizado / en la nube como Amazon Web Services o la plataforma Google Cloud.

Existen muchas metodologías diferentes para la forma de crear aplicaciones de varios niveles, como MVC, MVVM, MVP, .Net WebForms, Java Beans, etc.

en mi opinión, la mayoría de estas aplicaciones no juegan con lo que el cliente necesita, sino cómo crear esa necesidad para el cliente

y algunos de ellos no son realmente útiles, o satisfacen una necesidad crítica para las personas, podemos clasificarlos como entretenimiento y eso es lo que la gente ama y eso es lo que los hace populares

el problema es cómo salir con una nueva característica que hará que las personas se vuelvan locas para usar o usar

More Interesting

¿Cómo puedo hacer que mi computadora se comporte como una súper computadora con técnicas de programación paralelas? ¿Como funciona esto?

¿Cuáles son los factores impulsores para elegir una pila de tecnología mientras se desarrolla un nuevo proyecto basado en la web?

¿Realmente vale la pena la implementación continua?

Cómo ingresar a las pruebas de software en 3 meses

¿Es esencial una alta 'inteligencia emocional' para ser un buen gerente de ingeniería?

¿Qué es akka? ¿Cómo se puede explicar de manera simplista? ¿Por qué es importante para crear aplicaciones web?

Quiero entrar en la inteligencia artificial como una opción de carrera. ¿Debo apuntar a prácticas de ingeniería de software o ciencia de datos?

Cómo encontrar personas que puedan estar interesadas en colaborar en un proyecto Github

¿Qué son los softwares (editores) que las personas pueden usar para crear pequeñas aplicaciones más rigurosas y fáciles de mantener (y quizás menos flexibles) que las hojas de cálculo?

Cómo mostrar el nombre del paquete de una clase usando UML

¿Cuál es el significado de la personalización en un software para compartir conocimientos?

¿Qué proyectos informáticos cooperativos mundiales se están realizando actualmente?

¿Cuál es el mejor IDE para programar en Haskell?

¿Es cierto que los buenos programadores no depuran?

¿Cuál es el procedimiento para aplicar a las compañías de software mejor clasificadas como Google, Microsoft, Facebook, etc., si soy un graduado de ECE?