Análisis de la arquitectura técnica de las principales empresas de Internet de China (105)

Autor: Zen y el arte de la programación informática

1. Introducción

  En los últimos cinco años, los principales gigantes de Internet de China han lanzado muchos productos y servicios emergentes, que van desde plataformas de computación en la nube, sistemas de motores de búsqueda, plataformas de pago, redes sociales, plataformas de comercio electrónico hasta plataformas de análisis de big data, plataformas de robots inteligentes, etc. Tendrá un impacto significativo en el sistema económico digital actual y futuro. Como técnico, será una habilidad muy importante cómo comprender y dominar mejor la arquitectura técnica de estos grandes fabricantes y luego participar mejor en la innovación y gestión tecnológica. Este artículo está escrito sobre la base de la experiencia real y tiene como objetivo analizar los principios técnicos básicos y los procesos operativos específicos detrás de ellos clasificando la arquitectura técnica de más de una docena de empresas de Internet reconocidas en el país y en el extranjero, combinadas con mi propia acumulación en Trabajo actual. Al mismo tiempo, también espero poder plantear algunas cuestiones técnicas desafiantes, estimular el interés y el entusiasmo de los lectores por las tecnologías de la industria y explorar formas de abordarlas.

2. Explicación de conceptos y términos básicos

  En primer lugar, necesitamos saber ¿qué es la arquitectura técnica? ¿Qué tipo de cosa es? ¿Cuáles son sus características? ¿Y cómo se pueden aplicar estas características al trabajo real? Echemos un vistazo al conocimiento relevante.

2.1 ¿Qué es la arquitectura técnica?

Arquitectura Tecnológica (TA) se refiere a un término arquitectónico y se refiere a una serie de decisiones, estándares, principios, métodos, herramientas, procesos o procesos utilizados en el diseño y construcción de ingeniería. Según la norma internacional ISO/IEC 42010:2011, la "arquitectura técnica" consta de cinco pasos: "arquitectura, diseño, planificación, construcción, implementación y pruebas", que se utilizan para establecer la dirección técnica, formular una hoja de ruta tecnológica y seleccionar herramientas de diseño. , diseñar Planificar, construir, probar y mantener soluciones tecnológicas. En resumen, la arquitectura técnica incluye muchos aspectos, como diseño arquitectónico, soluciones técnicas, diseño de sistemas, definición de interfaces, especificaciones de desarrollo, estrategias de prueba, planes de implementación, etc.

En ingeniería de software, la arquitectura técnica se utiliza generalmente para guiar el diseño, desarrollo, prueba, integración y mantenimiento del software. La arquitectura técnica de diferentes industrias suele ser diferente y algunas industrias incluso no tienen arquitectura técnica. Por ejemplo, la arquitectura técnica de Dianping no existe porque su producto en sí es un sitio web de catering y no requiere un diseño arquitectónico complejo. Sólo el software de nivel empresarial debe considerar la arquitectura técnica.

  Los cinco pasos de la arquitectura técnica son los siguientes:

  • Fase de arquitectura: en este momento se formulan la visión técnica y los objetivos, se aclaran los requisitos y el valor técnico y se formula la planificación estratégica.
  • Etapa de diseño: principalmente diseño de alto nivel, diseño de sistemas y diseño de detalle. Incluyendo diseño funcional, diseño de módulos, diseño estructural, diseño de flujo de datos, etc.
  • Fase de planificación: Realizar planes y asignar recursos mediante una gestión eficaz de los recursos, el presupuesto y el tiempo del proyecto.
  • Fase de construcción: Redacción de códigos y pruebas según planos y planos y documentos de diseño.
  • Fase de prueba: realice pruebas unitarias, pruebas de integración, pruebas de rendimiento, pruebas de compatibilidad, pruebas de seguridad, pruebas operativas, etc. en el código completo para verificar si su funcionamiento cumple con los requisitos de diseño.

  Cada paso debe cubrir todo el ciclo de vida de la tecnología, lo que implica investigación y desarrollo de productos, diseño de arquitectura, implementación del desarrollo, gestión de operación y mantenimiento y otros aspectos. Por tanto, la arquitectura técnica no es sólo un cascarón vacío, sino también un producto formado en el proceso de interconexión y promoción mutua, que requiere una investigación profunda en torno a necesidades, productos, equipos, etc., desde múltiples perspectivas.

2.2 ¿Por qué existe una arquitectura técnica?

  El propósito de la arquitectura técnica es ayudar a las empresas a establecer una infraestructura técnica científica y confiable, promover una comunicación efectiva entre la tecnología de la información y la cadena industrial y maximizar la innovación y los resultados. A continuación explicamos brevemente las características de la arquitectura técnica.

2.2.1 La arquitectura enfatiza la integración transfronteriza

  La arquitectura técnica no solo se centra en sus propias capacidades técnicas internas, sino que también se preocupa por cómo integrarse eficazmente entre diferentes campos. Esta integración transfronteriza involucra dos dimensiones: producto y tecnología. Los productos se pueden dividir en Arquitectura de Producto, Arquitectura de Diseño UI/UX y Arquitectura de Marca, mientras que las tecnologías se pueden dividir en Arquitectura de Microservicios y Arquitectura de Contenedores y Arquitectura de Big Data.

  Estos diseños arquitectónicos no existen de forma aislada, sino que se apoyan y promueven mutuamente. Por ejemplo, debido a la rápida popularidad de la tecnología de computación en la nube, muchas empresas tradicionales han comenzado a aprovechar las oportunidades comerciales de la computación en la nube. Sin embargo, el modelo tradicional de desarrollo de software todavía domina. Para adaptarse a este nuevo modelo de negocio, la arquitectura técnica a menudo introduce nuevos modelos arquitectónicos, como la arquitectura de microservicios y la arquitectura de contenedores.

  Además, la arquitectura también puede potenciarse con tecnología de gestión, algoritmos inteligentes y tecnología de inteligencia artificial para brindar a las organizaciones mayor creatividad y flexibilidad. Las empresas pueden mejorar la gestión, optimizar la eficiencia de la producción, mejorar la competitividad, ahorrar costos y evitar el estancamiento de la innovación a través de la arquitectura tecnológica.

2.2.2 La arquitectura refleja el valor compartido

  La arquitectura técnica no solo se centra en sus propias capacidades técnicas, sino que también se centra en la cooperación colaborativa y en resultados beneficiosos para todos. La arquitectura no sólo define la forma en que se implementa la tecnología, sino que también se centra en el consenso técnico y el intercambio de valores.

  En primer lugar, la arquitectura técnica debe implementarse en las prácticas de gestión diarias. Dado que la arquitectura técnica es una inversión a largo plazo que requiere actualizaciones iterativas continuas, la administración debe establecer una conexión estrecha con la arquitectura técnica. Por ejemplo, la administración puede utilizar el soporte de decisiones de la arquitectura, las especificaciones de implementación, las especificaciones técnicas, las herramientas de automatización, etc. para garantizar que el trabajo del equipo se desarrolle sin problemas.

  En segundo lugar, la arquitectura técnica también debe proporcionar una referencia para la comunicación entre diferentes departamentos. Los diferentes equipos a menudo tienen diferentes alcances de responsabilidades y divisiones funcionales, y requieren estándares de arquitectura técnica unificados para comunicarse de manera efectiva. La arquitectura juega un papel en muchas áreas, incluida la estructura organizacional, el desarrollo de productos y la experiencia del usuario.

  Finalmente, la arquitectura tecnológica también debe facilitar el cambio y la innovación organizacionales. Debido a que la arquitectura técnica mejora las capacidades técnicas del equipo, brindándoles mejores capacidades de ejecución y niveles de gestión, le brinda a la organización más oportunidades y espacio para explorar y practicar la innovación.

2.2.3 La arquitectura es el motor de la innovación

  La arquitectura técnica no es un proceso fluido. El mundo actual está experimentando cambios profundos y la arquitectura tecnológica necesita rastrear y responder constantemente a los cambios.

  Por ejemplo, el desarrollo de la tecnología de computación en la nube, la tecnología blockchain, la tecnología de inteligencia artificial y los cambios en la dirección general del desarrollo de la industria de Internet afectarán el diseño, la implementación y la aplicación de la arquitectura técnica.

  Por tanto, la arquitectura técnica es el motor de la innovación y el autoempoderamiento. Sólo centrándose en la creación de valor empresarial y la realización del valor social se podrá actualizar continuamente la arquitectura técnica para proporcionar un mejor entorno para la innovación.

2.3 ¿Qué empresas tienen una buena arquitectura técnica?

  Una buena arquitectura técnica debe servir tanto a los negocios como a la tecnología. Una arquitectura técnica exitosa debe primero satisfacer las necesidades comerciales y luego brindar soporte técnico. A continuación enumeramos varias empresas con buena arquitectura técnica.

  ### 2.3.1 Facebook Facebook tiene empleados llenos de espíritu innovador, centrándose en la "apertura" y abandonando el cierre y negándose al cambio. Como empresa de redes sociales más famosa del mundo, su arquitectura técnica ha pasado por tres generaciones y, en general, muestra una tendencia con visión de futuro.

  Los cinco pasos de la arquitectura técnica de Facebook incluyen: diseño arquitectónico, implementación técnica, monitoreo, mejora y transformación cultural, de la siguiente manera:

  • Diseño de arquitectura: la arquitectura central de Facebook es proporcionar servicios estables para billones de usuarios. En términos de diseño arquitectónico, Facebook utiliza la "arquitectura hexagonal" como base para romper la arquitectura tradicional de un solo servidor grande y adoptar una arquitectura distribuida y orientada a servicios para dividir los componentes del sistema en servicios independientes pequeños y fáciles de administrar.

  • Implementación técnica: Facebook adopta una arquitectura de microservicio para distribuir diferentes módulos funcionales en diferentes servidores e interactuar con el front-end a través de protocolos de comunicación externos como RESTful API y GraphQL para lograr una iteración rápida, una expansión elástica y escalabilidad.

  • Monitoreo: Facebook ha creado un sistema de monitoreo completo que puede identificar fallas, descubrir problemas, localizar problemas rápidamente y tomar las medidas correspondientes. Todos los servicios backend de Facebook registran registros, envían alertas y monitorean las dependencias del servicio a través de tecnología de seguimiento distribuida para ayudar a los desarrolladores a localizar y resolver fallas rápidamente.

  • Mejora: en términos de mejoras arquitectónicas, Facebook ha lanzado una variedad de soluciones técnicas, como una plataforma API abierta, un sistema de publicidad dinámica y una función de línea de tiempo. Estas soluciones técnicas no solo satisfacen las necesidades de desarrollo comercial de la empresa, sino que también mejoran eficazmente la experiencia del usuario.

  • Transformación cultural: Facebook anima a los empleados, clientes y empleados a crecer cambiando la cultura de la plataforma. Entre ellos, la cultura avanzada, como las oficinas planas, el WIFI gratuito y las cenas, brindan a los empleados oportunidades de aprendizaje.

  En general, la arquitectura técnica de Facebook abstrae problemas técnicos complejos en una arquitectura orientada a servicios simple y fácil de entender, lo que ayuda a la empresa a servir mejor a los consumidores.

  ### 2.3.2 Google La arquitectura técnica de Google, desde el motor de búsqueda de 2007 hasta la tecnología de reconocimiento de imágenes de IA actual, destaca su enorme arquitectura de software, su cartera de productos estrechamente coordinada y su pila de tecnología unificada.

  La arquitectura técnica de Google es el caso más representativo de la tecnología global. Consta de cinco pasos: diseñar, construir, implementar, mejorar y utilizar.

  • Diseño: Las ideas de diseño de Google tienen una larga historia, se fundaron en Bell Labs y luego fueron imitadas por Amazon, Apple, Microsoft, etc. Desde bases de datos hasta infraestructura y aplicaciones, Google dedica mucho tiempo y dinero al diseño de productos.

  • Construcción: el proceso de construcción de software de Google sigue la metodología de Lean Development, es decir, construcción rápida, integración de lotes pequeños y lanzamientos frecuentes para lograr la perfección del producto.

  • Despliegue: Google tiene tres sistemas de despliegue: nube, big data e Internet de las cosas. Cada sistema de implementación tiene diferentes responsabilidades.

    • Sistema de implementación en la nube: Responsable de brindar servicios como Google Cloud Platform y Firebase para brindar servicios confiables y de baja latencia a una gran cantidad de usuarios.

    • Sistema de implementación de big data: el marco de procesamiento de big data de Google es principalmente Apache Hadoop, que almacena datos masivos en el sistema de archivos HDFS y los analiza y extrae a través de marcos de procesamiento como MapReduce, Hive y Spark.

    • Sistema de implementación de IoT: el sistema de procesamiento de IoT de Google es principalmente el IOT Core en la nube de Google, que es responsable de conectar, administrar, analizar, procesar y almacenar datos de dispositivos IoT.

  • Mejora: El liderazgo tecnológico de Google se debe en gran medida a su fortaleza técnica interna y su buen juicio sobre el mercado. Por ejemplo, el éxito del navegador Chrome abrió un nuevo mercado de navegadores y afectó profundamente el desarrollo de Internet.

  • Uso: Los servicios de arquitectura de Google están dirigidos directamente a los usuarios finales y ofrecen una gama de productos y servicios que incluyen búsquedas, páginas web, vídeos, imágenes, música, App Store y YouTube.

   En general, la arquitectura técnica de Google refleja el alto grado de inteligencia empresarial y espíritu innovador. Tiene plenamente en cuenta las tendencias futuras y crea software que puede satisfacer las necesidades de los usuarios mediante una construcción, implementación, mejora y uso eficientes.

  ### 2.3.3 Uber Uber es la empresa de viajes compartidos más conocida de los Estados Unidos. Su arquitectura técnica se basa en aplicaciones móviles y proporciona a los usuarios servicios más convenientes y que ahorran tiempo a través de la tecnología de Internet de las cosas y algoritmos de aprendizaje automático. , análisis de big data y otros medios servicios de viaje.

  La arquitectura técnica de Uber consta de tres niveles: aplicaciones móviles, nube de IoT y análisis de datos.

  • Aplicación móvil: la aplicación móvil Uber es un producto completo que utiliza tecnologías de desarrollo mixtas, incluidas las cuatro pilas tecnológicas principales: iOS, Android, Web y React Native, y se amplía utilizando bibliotecas de componentes de código abierto existentes.

      Las aplicaciones móviles mejoran la experiencia del usuario al separar varios módulos funcionales, fortalecer el control de permisos y los mecanismos de seguridad y realizar ajustes de retroalimentación basados ​​en los datos del usuario.

  • Nube de IoT: la plataforma en la nube de Uber IoT es un conjunto de infraestructura de Uber que brinda servicios para conductores, pasajeros, logística, equipos compartidos, vehículos y otras partes del sistema.

      La plataforma en la nube IoT de Uber adopta una arquitectura modular y se basa en plataformas en la nube como AWS y GCP para lograr la automatización de la infraestructura, la expansión automática y la alta disponibilidad.

  • Análisis de datos: la plataforma de análisis de datos de Uber es un análisis en tiempo real del comportamiento y los hábitos de los usuarios para obtener información sobre las necesidades de los usuarios y mejorar la calidad del servicio.

      La plataforma de análisis de datos de Uber utiliza aprendizaje automático, modelos estadísticos y tecnología de inteligencia artificial para analizar datos históricos de los usuarios y brindarles sugerencias de mejora a través de comentarios en tiempo real.

  En general, la arquitectura técnica de Uber combina conocimiento profesional, excelente diseño de productos y tecnología de punta para brindar a los usuarios servicios de viaje satisfactorios.

  # 3. Principios básicos del algoritmo y pasos operativos específicos: después de comprender la arquitectura técnica, echemos un vistazo a los principios específicos del algoritmo y los pasos operativos específicos.

3.1 Arquitectura de computación en la nube

  La arquitectura de computación en la nube es actualmente el modelo de arquitectura más utilizado. Proporciona una serie de soluciones, que incluyen virtualización, contenedorización, automatización, expansión automática y expansión elástica, etc., y proporciona servicios de computación en la nube con derechos de pago o de uso para computación, almacenamiento, redes y otros recursos de TI. Los principios algorítmicos centrales de la arquitectura de computación en la nube son los siguientes:

3.1.1 IaaS

  IaaS (Infraestructura como servicio) se refiere a un servicio en el que el proveedor proporciona hardware, red, almacenamiento y otra infraestructura a individuos u organizaciones a través de la red u otras formas. El principio de su algoritmo central es el siguiente:

  1. Expansión elástica: cuando el sistema de aplicaciones requiere más recursos de los que realmente proporciona, se puede solucionar comprando más recursos de la nube, esta capacidad de expansión se denomina expansión elástica.

  2. Implementación automatizada: los proveedores de servicios en la nube pueden completar la implementación del sistema en segundos, lo que reduce significativamente el tiempo de operación y mantenimiento.

  3. Facturación bajo demanda: los proveedores de servicios en la nube pueden cobrar por el uso de los recursos de la nube en función del uso del usuario, logrando la facturación bajo demanda mediante la comparación de precios en lugar de la comparación de cantidades.

  4. Alta disponibilidad: los proveedores de servicios en la nube garantizan una alta disponibilidad del sistema a través de configuraciones de red y hardware redundantes.

  5. Programable: los proveedores de servicios en la nube pueden configurar y programar el sistema mediante lenguajes de programación u otros métodos para satisfacer de manera flexible las necesidades individuales de los usuarios.

  6. Conexión local: los proveedores de servicios en la nube brindan a los usuarios conexiones locales para acceder a los recursos de la nube desde cualquier lugar, lo que reduce el consumo de ancho de banda de la red.

  Con el desarrollo de la tecnología de computación en la nube, IaaS se está convirtiendo en el modelo de arquitectura de nube más popular. Con la popularidad y la aplicación de la computación en la nube, cada vez más empresas de Internet están comenzando a utilizar IaaS para el alojamiento de servidores y centros de datos para mejorar sus capacidades de servicio.

  ## 3.2 Arquitectura distribuida La arquitectura distribuida es la última tendencia en el desarrollo de la tecnología informática actual. Distribuye diferentes datos, tareas y recursos informáticos a diferentes ubicaciones a través de la red y realiza el intercambio de datos, el intercambio de recursos y el equilibrio de carga mediante el paso de mensajes y llamadas remotas. El principio del algoritmo central de la arquitectura distribuida es el siguiente:

  1. Almacenamiento distribuido: el almacenamiento distribuido es la base de la arquitectura distribuida. Al distribuir datos a diferentes nodos, se logra el intercambio de datos y la tolerancia a fallas.

  2. Computación distribuida: el núcleo de la computación distribuida es distribuir las tareas informáticas a múltiples nodos para el procesamiento en paralelo mientras se mantiene la coherencia de los datos.

  3. Programación distribuida: la programación distribuida es un componente clave de la arquitectura distribuida. Logra la máxima utilización de los recursos del clúster al asignar tareas a diferentes nodos.

  4. Bloqueo distribuido: el bloqueo distribuido es un mecanismo de sincronización importante en la arquitectura distribuida. Evita que múltiples procesos o subprocesos accedan a los mismos datos o recursos al mismo tiempo.

  5. Transacciones distribuidas: las transacciones distribuidas son una característica importante de la arquitectura distribuida. Mantiene la atomicidad y coherencia de las operaciones de datos.

  Con la integración de la computación en la nube y la arquitectura distribuida, están surgiendo nuevos sistemas de software. Por ejemplo, bases de datos distribuidas, colas de mensajes distribuidas, motores informáticos distribuidos, sistemas de archivos distribuidos, etc. El rápido desarrollo de la arquitectura distribuida ha promovido el desarrollo de la computación en la nube.

  # 4. Ejemplos y explicaciones de código específicos Finalmente, echemos un vistazo a algunos ejemplos y explicaciones de código específicos.

4.1 Principios de la arquitectura Elasticsearch

  Elasticsearch es un servidor de búsqueda de código abierto que proporciona un motor de búsqueda RESTful distribuido. Elasticsearch admite multiinquilino, API RESTful, consultas de sintaxis SQL y otras características. Su principio de arquitectura se muestra en la siguiente figura.

  1. Nodo maestro: el nodo maestro es responsable de la administración del clúster, incluido el mantenimiento del estado del clúster, la fragmentación de metadatos, la distribución de copias, el equilibrio de carga, etc.

  2. Nodo de datos: el nodo de datos es responsable del almacenamiento y recuperación de datos. Cada índice corresponde a un archivo de índice de Lucene, que almacena los datos reales del documento. Los nodos de datos utilizan memoria dinámica de Java, almacenamiento en disco y recursos de transmisión de red.

  3. Nodo cliente: el nodo Cliente es responsable de comunicarse con el clúster, recibir solicitudes de usuarios y enviar solicitudes de consulta.

  4. Nodo de ingesta: el nodo de ingesta se utiliza principalmente para procesar, analizar y convertir datos. El nodo de ingesta puede manejar escenarios como la importación de datos y la generación de informes.

  5. Nodo coordinador: el nodo coordinador se utiliza principalmente para coordinar operaciones distribuidas, como crear índices, eliminar índices, replicar fragmentos, etc.

  La arquitectura Elasticsearch demuestra claramente su arquitectura distribuida, que puede manejar eficazmente datos masivos y mejorar la velocidad de búsqueda.

  # 5. Tendencias de desarrollo futuras Finalmente, echemos un vistazo a las tendencias de desarrollo de la arquitectura técnica futura.

5.1 Arquitectura de contenedorización

  La arquitectura en contenedores es un nuevo patrón arquitectónico que permite implementar sistemas de software en contenedores virtuales livianos, proporcionando un alto grado de aislamiento y utilización de recursos. El principio del algoritmo central de la arquitectura en contenedores es el siguiente:

  1. Inicio rápido: la arquitectura en contenedores puede iniciarse en segundos, lo que agiliza la implementación y el inicio de las aplicaciones.

  2. Virtualización ligera: la máquina virtual de arquitectura en contenedores ocupa menos espacio, tiene una velocidad de inicio rápida y un tiempo de inicio corto, y puede ahorrar recursos de computación en la nube.

  3. Implementación automática: el proceso de implementación de la arquitectura en contenedores está automatizado y no requiere configuración ni instalación manual.

  4. Expansión cómoda y elástica: la arquitectura en contenedores permite que las aplicaciones se expandan de manera fácil y elástica mediante la asignación dinámica de recursos basada en herramientas de orquestación de contenedores.

  5. Intervalo de servicio: la arquitectura en contenedores puede evitar la interferencia de comunicación entre servicios mediante el aislamiento de la red.

  6. Observabilidad: el sistema de gestión de la arquitectura en contenedores puede mostrar intuitivamente el estado de ejecución del servicio y la utilización de los recursos.

  Con la integración de la computación en la nube y la arquitectura en contenedores, la nube de contenedores se ha convertido en la forma principal de computación en la nube en el futuro. La arquitectura en contenedores redefinirá la forma en que funcionan el desarrollo, la operación y el mantenimiento de software, brindando nuevas oportunidades para la implementación, la operación y el mantenimiento de aplicaciones.

5.2 Arquitectura de la red de servicios

  La arquitectura de malla de servicios es una parte importante de la arquitectura de microservicios. Consigue transparencia del servicio, mayor confiabilidad y mayor flexibilidad al automatizar la comunicación y la gestión del tráfico entre microservicios. El principio del algoritmo central de la arquitectura de malla de servicios es el siguiente:

  1. Descubrimiento de servicios: la arquitectura de la red de servicios realiza la comunicación automatizada entre microservicios a través del registro de servicios y el descubrimiento de servicios, y realiza el descubrimiento dinámico de microservicios.

  2. Gestión del tráfico: la arquitectura de la red de servicios puede proporcionar calidad de servicio, control de tráfico, disyuntores, equilibrio de carga y otras funciones entre microservicios para mejorar la confiabilidad de los microservicios.

  3. Autenticación de seguridad: la arquitectura de la red de servicios proporciona un mecanismo unificado de autenticación y autorización para proteger la información privada de los microservicios.

  4. Observabilidad: la arquitectura de la red de servicios proporciona información de monitoreo, como el estado de salud, los indicadores de rendimiento, las relaciones de llamadas y la información de excepción de los microservicios, y puede captar el estado operativo de los microservicios en tiempo real.

  5. Gestión de la configuración: la arquitectura de la red de servicios puede configurar automáticamente microservicios para lograr un escalamiento elástico y una asignación de recursos.

  Con el desarrollo de la arquitectura de red de servicios, sus aplicaciones se extenderán a diversas industrias y se convertirán en una parte importante de la arquitectura de microservicios.

Supongo que te gusta

Origin blog.csdn.net/universsky2015/article/details/132179518
Recomendado
Clasificación