¿Qué nuevas ideas y tecnologías surgieron en el backend web en 2017?
1. Diversidad de interacción de red
1.1 El protocolo Http1.1 está disminuyendo gradualmente, Http2, websocket y más protocolos personalizados se generalizarán.
El backend web no será solo un backend web, sino que se convertirá en un backend grande, o mid-end + backend (Alibaba ha tenido este concepto durante mucho tiempo). Con el desarrollo de Internet móvil y el auge de Internet de las cosas (aquí considero las bicicletas mobike como un terminal de Internet de las cosas), los métodos de acceso de los usuarios han evolucionado desde un simple navegador hasta una variedad de dispositivos de acceso. Bajo este concepto, la definición de usuario será más amplia. Desde una perspectiva de back-end, ya no son usuarios individuales los que se conectan al servidor, sino terminales individuales, y hay múltiples terminales que comparten la información de un usuario (multiterminal). acceso). Por lo tanto, bajo esta tendencia, toda la capa de acceso de back-end (como nginx para la web) se moverá hacia un mundo más amplio. Para cualquier dispositivo, utilizará múltiples protocolos y múltiples métodos para conectarse a diferentes dispositivos al mismo tiempo. punto de acceso para lograr sus propias funciones.
1.2 Diversidad de estilos de interacción entre protocolos de red e información de red
Desde el primer servicio web hasta el posterior json-rpc y el ahorro hasta el actual protobuf (grpc), etc., nosotros Comenzamos a diseñar diferentes protocolos de serialización y protocolos de llamada para diferentes interacciones de datos. Sin embargo, afectados por el entorno (estado de red débil de los terminales móviles) y el rendimiento (servicios de puerta de enlace y llamadas de red), comenzamos a utilizar una gran cantidad de fallas. tolerante, un método de transmisión de datos con una menor cantidad de datos para satisfacer nuestras necesidades.
En los inicios de la web, el envío del formulario http+from se convirtió en nuestro estándar. Sin embargo, hoy en día, TCP no es necesariamente una opción obligatoria y diferentes empresas están implementando protocolos de mejora UDP. e incluso KCP puede convertirse en una de las opciones que todos consideran.
2. La diversidad de datos comienza a convertirse en el foco del diseño.
2.1 En los inicios del back-end web, el diseño de tablas y el desarrollo de funciones constituían la gran mayoría del trabajo diario. Todo el personal de back-end intentaba que todas las operaciones del usuario cayeran en la categoría abstracta de CRUD (. como Restful), pero ¿cómo puede CRUD satisfacer nuestras necesidades abstractas?
Desde que memcached y redis se introdujeron en el desarrollo de back-end a gran escala, podemos ver que el personal de back-end ha realizado muchos cambios en su comprensión de los datos. dentro de la fila RDBMS, pero clasifica los datos en torno al negocio mismo. Lo más obvio es la introducción de datos de estado. Durante el desarrollo, consideramos parte de la información del usuario como el estado de un usuario. En términos de rendimiento, permitimos que el comportamiento del usuario se convierta en un desencadenante. ' La información se almacenará en Redis y Memcached. Esta es la última mejora que RDMBS no puede satisfacer de manera efectiva nuestras necesidades abstractas.
2.2 Desde el fanático Nosql hasta el almacenamiento de Nosql y RDBMS, representa una nueva comprensión de los datos por parte de los desarrolladores back-end, y desde el almacenamiento tradicional de filas hasta el almacenamiento de columnas y el monitoreo de bases de datos de uso común en función del tiempo. Las series han comenzado a entrar en nuestro campo de visión.
En los últimos años, una gran cantidad de desarrolladores han comenzado a clasificar los datos generados por los usuarios con más detalle. Ya no es el enfoque único de rdbms. Los datos de estado del usuario se dividen en categorías detalladas en Nosql, los datos de operación del usuario se incluyen en el RDBMS (la expresión no es necesariamente completa, pero la integridad de la transacción es necesaria en operaciones con requisitos idempotentes, como el pago de pedidos) y las estadísticas de comportamiento del usuario. Al caer en la base de datos de series de tiempo, una gran cantidad de recursos relacionados con el usuario (como imágenes de avatar) caerán en nuestro almacenamiento de objetos. En el manual de desarrollo back-end, la diversidad de formatos de datos se ha convertido en un tema que debe considerarse.
3. La recopilación, el almacenamiento, el cálculo, la consulta de índices y el análisis de datos se han convertido en la norma en el backend.
3.1 El significado del rol de backend es difícil de entender en una empresa con Personal insuficiente. Hay un desarrollador que se centra en el desarrollo empresarial de back-end. Bajo la ola de big data, los desarrolladores de back-end han comenzado a trabajar a tiempo parcial como ingenieros de desarrollo de sistemas de datos. Con la evolución y el desarrollo de una gran cantidad de tecnologías de Internet, es difícil encontrar un límite claro para cualquier profesión. Por lo tanto, la recopilación, el almacenamiento, el cálculo, el análisis y la consulta de índices de datos se convertirán en habilidades esenciales para los desarrolladores de back-end.
3.2 Recopilación de datos
(1) Con el desarrollo de IDC distribuido, agrupado y múltiple, a diferencia de la recopilación del rendimiento del sistema de operación y mantenimiento, el desarrollo back-end comienza a centrarse en la recopilación y diversos indicadores y datos relacionados con el proceso de operación de la aplicación.
Además del desarrollo comercial diario, también va acompañado de la recopilación de datos, como el proceso de llamada de la aplicación que requiere mucho tiempo y el servicio objetivo. Los más comunes incluyen métricas de Java, y las herramientas de terceros de código abierto como zipkin han comenzado a usarse y citarse ampliamente.
(2) Informes y recopilación del comportamiento del usuario e información del terminal Con el desarrollo de big data y los requisitos para operaciones refinadas, el backend comienza gradualmente a entrar en contacto con el informe de información relacionada con el usuario. e información sobre el estado operativo del terminal.
Los datos recopilados no solo se utilizan para el análisis del perfil del usuario, sino también para que el servicio al cliente rastree a los usuarios y tome decisiones sobre los comportamientos operativos de los usuarios. Esto generalmente se refleja cuando los usuarios se quejan. el fracaso de un determinado negocio, lo cual es conveniente para la localización rápida y la resolución de problemas para los desarrolladores.
3.3 Almacenamiento de datos
Después de la recopilación de datos anterior, la transmisión y el almacenamiento de datos se han convertido en funciones inevitables. Con la aplicación a gran escala de Kafka, también han comenzado HDFS, HBase y otras herramientas. para convertirse en parte del desarrollo back-end diario.
3.4 Computación de datos
Sin embargo, los datos originales almacenados no tienen valor y el back-end ha comenzado su limpieza y procesamiento de datos. Storm y Spark se han convertido en los nuevos talentos del. back-end, a diferencia del análisis estadístico de operaciones del usuario (comúnmente conocido como ejecución de estrategias de ejecución de algoritmos), el cálculo de datos de back-end en el contexto actual es más un cálculo a pequeña escala y a corto plazo, generalmente como los sistemas de control de riesgos. y sistemas de alerta temprana basados en el comportamiento del usuario y el volumen de tráfico, los usuarios malintencionados son examinados y rápidamente intervenidos.
3.5 Consulta de índice de datos
(1) Con la expansión del negocio, casi cualquier aplicación tiene un motor de búsqueda correspondiente incorporado, y Lucene y Solr también se han vuelto necesarios para la back- Los programadores finales son una de las habilidades necesarias, ya sea búsqueda precisa o coincidencia difusa, y el back-end también está cargado de cada vez más negocios.
(2) La búsqueda de datos casi en tiempo real también se convertirá en la norma. En el desarrollo de los últimos años, la forma de completar rápidamente la unión, las distintas estadísticas, etc. en RDBMS en una gran cantidad de datos. convertirse en una ocurrencia tardía Los problemas que los ingenieros finales deben enfrentar
3.6 Consulta de análisis de datos
Han comenzado la IA y el aprendizaje profundo, y la minería y el aprendizaje en torno a los datos en sí han comenzado a convertirse en productos. Los ideales son ideales y la realidad es la realidad. Los estudiantes de back-end todavía están tanteando en esta dirección, pero a la larga no podrán escapar.
4. Mayores avances en el diseño arquitectónico
En 2017, el término SOA se está desvaneciendo, los microservicios se han convertido en una palabra de alta frecuencia que reemplaza a SOA y la tecnología sin servidor también ha comenzado a aparecer. avance hacia el futuro. Le daré algunos ejemplos de palabras comunes, ya sea para buscar nuevas ideas o para satisfacer sus necesidades, pero tengan paciencia si me olvido de algún detalle
4.1 CQRS (Consulta de comando). Modo de separación de responsabilidades)
Asíncronice las operaciones de escritura CRUD tradicionales y el backend cooperará con la separación de las bases de datos de lectura y escritura. Además de la introducción de colas de mensajes, algunas operaciones que consumen mucho tiempo relacionadas con operaciones de escritura (verificación, proceso), etc., son asincrónicas, como los pedidos en el comercio electrónico.
4.2 actores
El auge de los actores de Erlang, ya sea golang Goroutine o akka de scala/java, está afectando profundamente el diseño arquitectónico de los sistemas back-end.
4.3 CRDT y eventual coherencia
El auge de los sistemas distribuidos también ha provocado problemas conflictivos de disponibilidad y coherencia. La coordinación de datos entre dos procesos se ha convertido en una cuestión importante para todo post-proceso. sistema de procesamiento. Para lograr la consistencia final, han surgido todo tipo de planes como hongos después de una lluvia.
4.4 reactivo
Cuando la popular biblioteca Rxjava en Android pasa del front-end al back-end, también significa que el back-end también ha comenzado a entrar en la era. de programación reactiva, y vert.x de Java es uno de los ejemplos. El momento en que la solicitud-respuesta puede resolver todos los problemas ya no está disponible.
5. Requisitos de operación y mantenimiento y devops para el backend
5.1 Seguridad, estabilidad, eficiencia, economía
(1) A medida que el negocio se vuelve estable, y Internet Con el desarrollo de Internet, la seguridad de los servicios de red ha comenzado a convertirse en uno de los núcleos del backend. Debido a la imperfección de la ley, es difícil responsabilizar a los delincuentes y el costo de violar la ley es bajo. Los ataques a la seguridad de la red se convertirán en la norma en el futuro. Esto plantea mayores requisitos para los programas back-end, especialmente el diseño de interfaces externas.
(2) Múltiples salas de computación, recuperación remota de desastres y respaldo de datos. Un backend robusto siempre ha sido uno de los requisitos para las aplicaciones backend. En la nueva era, la disponibilidad y la estabilidad del backend siguen siendo problemas que todo backend debe afrontar.
(3) En el pasado, un usuario solo tenía una computadora. Al navegar por el sitio web, solo interactuaba con el sitio para obtener datos. Ahora, con el aumento de dispositivos electrónicos y dispositivos inteligentes, la cantidad de dispositivos a los que un usuario puede acceder a la red también está aumentando y la cantidad de conexiones largas y concurrencia también aumentará. Por lo tanto, las puertas de enlace de acceso de alto rendimiento han comenzado a convertirse en el foco. Por ejemplo, varias aplicaciones relacionadas con el dpdk de Intel también están llegando en masa.
(4) Económico, aprovechando las características de los servicios en la nube que pueden usarse inmediatamente y devolverse una vez usados, de modo que al realizar actividades operativas, el backend no necesita solicitar y comprar una gran cantidad de las máquinas desde su operación y mantenimiento. Sin embargo, para que las aplicaciones de back-end se ejecuten sin problemas a pesar de los impactos a corto plazo de las actividades operativas y los aumentos repentinos del tráfico, se imponen mayores requisitos a las capacidades de implementación y programación del personal de back-end.
5.2 Un proceso de desarrollo de software más estandarizado
La combinación de código abierto de git+jenkins+ansible está empezando a ser incapaz de satisfacer las necesidades de desarrollo, operación y mantenimiento, la integración de La gestión de proyectos y la intervención de los evaluadores requieren herramientas de ingeniería de software de back-end para pasar de herramientas de código abierto independientes a un sistema unificado, lo que requiere que integremos requisitos, gestión de errores, versiones iterativas, desarrollo, pruebas, escala de grises y azul. -procesos de implementación verde.
5.3 Servicios en la nube, debate sobre la contenedorización
La nube pública, la nube privada, la nube híbrida y los contenedores y otras tecnologías de computación en la nube relacionadas también están promoviendo reformas tecnológicas de back-end. Ya no es solo una máquina física o una máquina virtual, sino un entorno más complejo y diverso, y los requisitos de tecnología y programación más allá del negocio back-end serán cada vez mayores.
En comparación con front-end, back-end es en realidad un término muy general. Como se mencionó anteriormente, muchas tecnologías en realidad no pertenecen a ingenieros de back-end, y algunos de ellos se denominan ingenieros de operación y desarrollo. algunos se llaman ingenieros de big data, pero para dividirlos en relación con el front-end, he dividido el contenido de su trabajo en el back-end. Después de todo, en comparación con la investigación técnica, se enfrentan a muchas situaciones de aplicación técnica. El software de código abierto solo necesita alcanzar el nivel de comprensión de cómo se utilizan los principios para hacer frente al trabajo diario.