Descripción del empleo
Buscamos un arquitecto de software con una sólida base técnica y experiencia demostrable en la construcción de sistemas distribuidos a gran escala. El candidato ideal debe poseer un profundo entendimiento de la arquitectura de microservicios y ser capaz de diseñar soluciones robustas y escalables, fundamentando sus decisiones con un enfoque pragmático y orientado a resultados.
Se trata de una posición estable en modalidad híbrida (2 - 3 días en oficina) en la zona de Chamartín.
Requisitos
Arquitectura y Plataformas:
* Kubernetes (K8s) [Obligatorio]: Experiencia avanzada en el diseño, implementación y gestión de arquitecturas en clústeres de Kubernetes. Es crucial el conocimiento de las diferencias entre entornos de nube públicos (AWS, Azure, GCP) y privados/on-premise. Debe ser capaz de gestionar servicios tanto internos (ClusterIP) como externos (NodePort, LoadBalancer, Ingress).
* Gestión de Tráfico y Conectividad [Valorable]: Experiencia práctica con herramientas de control de tráfico y seguridad como Ingress y Service Mesh. Se valora especialmente el conocimiento de Istio o alternativas similares, comprendiendo la gestión de la comunicación tanto a nivel de APIs públicas como de la comunicación segura entre pods (comunicación intra-cluster communication).
* Sistemas Distribuidos [Obligatorio]: Sólida experiencia en el diseño y la implementación de sistemas distribuidos. Es fundamental el entendimiento de patrones de diseño como el SAGA, así como los desafíos inherentes a la consistencia de datos, la tolerancia a fallos y la comunicación asíncrona.
* Orquestación de Procesos (BPM) [Valorable]: Experiencia práctica con motores de orquestación de procesos de negocio. Se requiere experiencia específica con jBPM o el más moderno Kogito. Se valorará el conocimiento de otros enfoques como la Arquitectura Orientada a Servicios (SOA).
Lenguaje y Frameworks:
* Java [Obligatorio]: Dominio del lenguaje Java, con experiencia demostrada en versiones Java 11 y 17 o superiores.
* Frameworks de Microservicios [Obligatorio]: Profundo conocimiento de al menos uno de los frameworks modernos para la creación de microservicios. Se requiere experiencia con Spring Boot o Quarkus, comprendiendo las diferencias de rendimiento y los casos de uso óptimos para cada uno.
* Programación [Obligatorio]: Entendimiento claro de la diferencia y las implicaciones de la programación imperativa frente a la programación reactiva en el contexto de sistemas distribuidos.
* Otros Lenguajes [Valorable]: Se valorará experiencia en otros lenguajes y frameworks, especialmente python con FastAPI y NodeJs.
DevOps y Observabilidad:
* Contenerización [Obligatorio]: Sólidos conocimientos de Docker para la creación y gestión de imágenes de contenedores.
* Infraestructura como Código (IaC) [Valorable]: Conocimientos sólidos de herramientas de IaC como Terraform. El arquitecto debe ser capaz de diseñar la estrategia de despliegue y guiar a los equipos de DevOps.
* Ciclo de Vida del Software (CI/CD) [Valorable]: Profundo conocimiento de los principios de CI/CD y DevSecOps. El rol implica la coordinación de los equipos de desarrollo y operaciones para definir y custodiar los procesos y pipelines, garantizando la seguridad, calidad e integridad del software.
* Observabilidad y Monitorización [Valorable]: Experiencia en la implementación de soluciones de observabilidad para sistemas distribuidos. Se requiere conocimiento de herramientas de monitorización (p. ej., Prometheus, Grafana), de logging centralizado (p. ej., ELK Stack, Loki) y de rastreo distribuido (p. ej., Jaeger, OpenTelemetry).
Comunicación y APIs:
* API RESTful [Obligatorio]: Experiencia fundamental en el diseño e implementación de API RESTful.
* Otros Protocolos [Valorable]: Se valora positivamente la experiencia con otros protocolos de comunicación, como SOAP.
Responsabilidades Clave
El arquitecto será responsable de:
* Diseño de Alto Nivel y Fundamentación: Definir la arquitectura de alto nivel para los sistemas distribuidos del cliente, diseñando la interacción entre microservicios, procesos de negocio e infraestructura en la nube. Debe ser capaz de documentar y fundamentar sus decisiones, definiendo los drivers de arquitectura y las fitness functions para validar que la solución cumple con los objetivos de negocio y técnicos.
* Liderazgo Técnico y Adaptabilidad: Liderar y guiar a los equipos de desarrollo, asegurando la aplicación de las mejores prácticas y estándares de calidad. Deberá ser capaz de iterar y adaptar la arquitectura de manera continua a medida que evolucionan las necesidades del cliente.
* Supervisión y Custodia: Custodiar la visión arquitectónica y revisar los entregables para asegurar que se alinean con los principios de la arquitectura, como la separación de responsabilidades y el bajo acoplamiento.
* Estrategia de DevOps: Diseñar la estrategia de despliegue e infraestructura como código y supervisar su implementación.
* Estrategia de Observabilidad: Definir los estándares de monitorización, logging y rastreo para la solución, asegurando una visibilidad completa del estado del sistema.