Web, Mobile and API Development Guide

Web, Mobile and API Development Guide

TusharApshankarProfilePic

Tushar Apshankar

19 de octubre 2017

El desarrollo web, móvil y de API es un laberinto loco de opciones tecnológicas. Mientras se discuten las tecnologías y diversas opciones, las personas no técnicas luchan por sacarle sentido a estos términos ya que son sólo palabras para ellos. Esta Guía de desarrollo web, móvil y de API se publicó por primera vez internamente y fue originalmente diseñada para nuestro equipo de desarrollo BizDev, para que las personas no técnicas puedan tener algún conocimiento al respecto. Creo que ya es hora de que se abra para un público más amplio.

Tenga en cuenta que este artículo :

  • Es simplificado intencionalmente y por lo tanto no encontrará menciones de soluciones de almacenamiento en caché, puesta en cola u otra infraestructura Cloud que utilizamos frecuentemente.
  • No explica el MVC clásico y se centra en el desarrollo impulsado por API.
  • Omite algunas pilas tecnológicas y CMS completamente.

Lo primero que debe tenerse en cuenta es que la elección correcta del conjunto de tecnologías es una de las decisiones clave para una ejecución exitosa del proyecto. La primera pregunta que nos hacemos es: ¿estamos desarrollando una aplicación web, una aplicación móvil o aplicaciones web y móviles? Nuestras opciones para estas plataformas se enumeran a continuación. Tenga en cuenta que si desarrollamos aplicaciones web y móviles, nuestra estructura API sigue siendo la misma. Al seleccionar las tecnologías, iteramos sobre los siguientes pasos. Tenga en cuenta que API también se conoce como RESTful API, Backend o API platform.

APIPlatformArch

Aplicación web

Nuestras opciones para desarrollar aplicaciones web son:

  • API = (Base de datos + Framework extremo a extremo (IU suprimida) + ORM) + Tecnologías front-end
  • API = (Base de datos + SOLO tecnologías del lado del servidor + ORM) + Tecnologías front-end
  • Base de datos + ORM + Framework extremo a extremo + Tecnologías front-end.

Aplicación Móvil

Nuestras opciones para desarrollar aplicaciones movil son:

  • API = (Base de datos + Framework extremo a extremo (IU suprimida) + ORM) + Cualquier tecnología móvil Híbrida o Nativa
  • API = (Base de datos + tecnologías del lado del servidor + ORM) + Cualquier tecnología móvil híbrida o nativa
MobileAppArch

Tecnología web front end

Tenemos que elegir los siguientes componentes:

  • HTML5 es necesario.
  • CSS3 es necesario. Casi siempre usamos Bootstrap
  • JavaScript casi siempre se usa. Podemos usar 1 de estas opciones:
    • ReactJS con Redux
    • AngularJS
    • D3JS
    • JQuery
  • El almacenamiento local es opcional. Nuestras opciones aquí dependen de la plataforma en la que vamos a usarlo.Móvil
    • SQLite (Puede ser utilizado tanto en iOS y Android híbrido/nativo y NO se puede utilizar en la web
    • Almacenamiento local HTML5 (se puede usar ÚNICAMENTE en aplicaciones web o híbridas)
    • CoreData (se puede usar ÚNICAMENTE en IOS. No puede usar en web o Android)

    Web

    • Almacenamiento local HTML5 (se puede usar ÚNICAMENTE en aplicaciones web o híbridas y NO en aplicaciones nativas)

Tecnologías de lado Servidor

Tenemos que elegir una de estas tecnologías.

  • NodeJS
  • Ruby
  • PHP
  • Python
  • Java (JSP/Servlets)
  • C#
  • VB.Net

Frameworks extremo a extremo

Framework extremo a extremo esencialmente significa que tiene el lado del servidor, así como la vista frontal disponible en 1 tecnología. Si tiene que elegir un Framework extremo a extremo, las siguientes son sus opciones:

  • Basado en JavaScript
    • MEAN stack
    • MeteorJS
  • Ruby
    • Rails
  • PHP
    • Laravel
    • Symfony
    • Yii
    • CodeIgniter
    • CakePHP
    • CMS (Content Management Systems (sistema de gestión de contenidos))
      • Magento (Es una plataforma de comercio electrónico fuera de la caja)
      • Drupal
      • WordPress (WooCommerce es un plugin que hace que una instancia de WordPress actúe como una plataforma de comercio electrónico)
  • Python
    • Django
    • Flask
  • Java
    • Jersey/Dropwizard si estamos desarrollando JUST API en esta tecnología
    • Struts
    • JavaPlay
  • DotNet (NOT Open Source (No es fuente abierta))
    • MVC 6
    • MVC6 con WebAPI2 si estamos desarrollando JUST API en esta tecnología
    • DotNet 3.5, 4.0, 4.5

Tecnologías Híbrida Móvil Front End

  • Ionic (con ReactJS o AngularJS)
  • Phonegap (con ReactJS o AngularJS)
  • + Todas las tecnologías web Front End

Tecnologías Nativa móvil Front end

  • Ambos iOS y Android
    • ReactNative con Redux
    • Xamarin
  • Solamente Android
    • Java
  • Solamente iOS
    • Swift 3
    • Objective C

Topologías de implementación

  • Cloud (soporte para todos OS)
    • Amazon (AWS incluye EC2, RDS,SQS, DynamoDB, S3) (tiers gratuitos disponibles)
    • Google Cloud (Tiers gratuitos disponibles)
    • Heroku (Tiers gratuitos no disponibles. Usado principalmente para Rails y a veces para Python )
    • Microsoft Azure (Tiers gratuitos disponibles)

Base de datos

  • RDBMS (Relational Database (base de datos relacional))
    • MySQL
    • Postgres
    • SQLServer (No es fuente abierta, aunque una pequeña versión llamada SQLExpress está disponible de forma gratuita)
    • Oracle (No es fuente abierta, Necesita ser pagado)
  • NoSQL (No es solamente SQL o Base de Datos no Relacional)
    • MongoDB
    • Spark
    • DynamoDB (No es fuente abierta, necesita ser pagado)

ORM (Object Relationship Mapping)

Se usa para conectar la parte del lado del servidor con DB. Elegir el ORM se basa en la tecnología del lado del servidor que elija.

  • NodeJS
    • NoSQL
      • Waterline
  • Ruby
    • RDBMS
      • Rails tiene registros activos
  • PHP
    • RDBMS
      • MySQLConnect
      • Cada framework PHP tiene su propia capa de ORM
  • Python
    • RDBMS
      • Tiene su propio ORM
  • Java
    • RDBMS
      • Hibernate
      • MyBatis
  • C#/MVC/DotNet
    • RDBMS
      • Dapper
      • PetaPoco
      • ADO.net
      • Linq
      • Entity Framework

Servidores Web

La elección del servidor web depende de las tecnologías de back-end que elija.

  • NodeJS tiene su propio servidor web
  • Ruby generalmente se implementa en Fusion Passenger con Apache o Nginx.
  • PHP generalmente se implementa en servidores Apache o Nginx.
  • Python generalmente se implementa en Apache O Nginx.
  • Java generalmente se implementa en Tomcat con Apache o Jetty o WebSphere o JBoss.
  • Las aplicaciones DotNet se implementan solo en IIS.

A excepción de IIS, todos los demás servidores web funcionan tanto en Windows como en Linux. IIS funciona SOLAMENTE en Windows.

Request a quote