BLOQUE II TEMA 4
ANDROID_IOS
[Link] OPERATIVOS PARA DISPOSITIVOS MOVILES
• Fabricantes de hardware que son los fabricantes de sus propios SO:
Apple.
• Fabricantes de dispositivos que utilizan SO de otras compañías:
Android, Windows Mobile.
[Link] (construido a partir de la versión 2.6 del kernel de Linux en
2008 (v. 1.0)): (Pregunta examen)
• 1.5 Cupcake
• 1.6 Donut
• 2.0 Eclair / 2.2 Froyo / 2.3 Gingerbread
• 3.0 Honeycomb (solo para trablets) (Pregunta examen)
• 4.0 Ice Cream Sandwich / 4.1 Jelly Bean / 4.4 KitKat
• 5.0 Lollipop
• 6.0 Marshmallow
• 7.0 Nougat
• 8.0 Oreo
• 9.0 Pie
• Android 10
• Android 11
• Android 12
Basa el funcionamiento de sus aplicaciones en una máquina virtual Java que
ejecuta cada aplicación en un proceso propio, donde se lanza una nueva
máquina virtual llamada Dalvik, sustituida por ART (Android Runtime) en
Android 5.0. Las aplicaciones se distribuyen en ficheros empaquetados
“.apk”, posee un navegador integrado basado en WebKit, los gráficos están
optimizados por una librería grafica 2D propia y OpenGL para gráficos 3D,
para el almacenamiento de datos utiliza como gestor de bases de datos
SQLite. (Pregunta examen)
[Link]
Esta limitado a la instalación en hardware propietario, la versión más
actual es IOS 13.2. Deriva del sistema operativo de ordenadores Mac (OS
X), es un sistema UNIX, la pantalla principal (SpringBoard).
**Swift: lenguaje de programación multiparadigma creado por Apple enfocado
en el desarrollo de aplicaciones para iOS y macOS. (Pregunta examen)
**FileVault: tecnología que proporciona capacidades de cifrado para todo
el sistema de almacenamiento principal de un equipo macOS, usando el método
de encriptación AES. (Pregunta examen)
**Gatekeeper: es una función de seguridad de macOS. Hace cumplir la firma
de código y verifica las aplicaciones descargadas antes de permitir que
se ejecuten. (Pregunta examen)
Tipos de sistemas operativos para móviles: (Pregunta examen)
• Android
• iOS
• Windows 10 Mobile
299
BLOQUE II TEMA 4
• Symbian OS
• Firefox OS
• Ubuntu Touch
• HarmonyOS
• Tizen
• KaiOS
• Bada
• MeeGo era la unión de los sistemas operativos Maemo de Nokia y Moblin
de Intel.
[Link] de APP Móviles
• Nativas: se diseñan y desarrollan específicamente para un sistema
operativo en particular, empleando un lenguaje de programación
específico, son fluidas, estables y permiten obtener el máximo
provecho de las funcionalidades del dispositivo. (Kotlin y Java).
(Pregunta examen)
• Web: se desarrollan con lenguajes como es el caso de HTML, CSS o
Javascrip. Se accede a ellas mediante un navegador web por lo que
cualquier dispositivo puede entrar en ellas. PWA “Progressive Web
App” páginas web, pero mediante el uso de Service Workers y otras
tecnologías se comportan más como aplicaciones normales que como
aplicaciones web, es decir, pueden seguir ejecutándose en segundo
plano.
• Hibridas: combinación de los dos tipos de apps descritos con
anterioridad, serán desarrolladas con lenguajes de programación
típicos de una web, pero su estructura externa estará basada en
lenguajes de programación propios del dispositivo móvil.
[Link] en Sistema Operativos
Uso de sistemas operativos en la nube, ahorro de costes en licencias.
Plataformas de virtualización de sistemas operativos y del software de
aplicación en las máquinas virtuales.
• Tipos de servicios Cloud:
o IaaS (Infraestructure): el consumidor alquila recursos IT, no
controla la infraestructura cloud, pero tiene control directo sobre
el SO, computación, almacenamiento, deploy de aplicaciones y red.
Se realiza a través de virtualización, externalizando todos estos
recursos y lo delegan al proveedor de servicios externo (Amazon
Web Services, Windows Azure, Rackspace, Openstack).
**ownCloud: aplicación de software libre del tipo Servicio de
alojamiento de archivos, que permite el almacenamiento en línea y
aplicaciones en línea (cloud computing). ownCloud puede ser
instalado dentro de un servidor que disponga de una versión
reciente de PHP (mayor o igual a 5.6) y soporte de SQLite (base de
datos por defecto), MySQL o PostgreSQL. (Pregunta examen)
o PaaS (Platform): ofrece todo lo necesario para soportar el ciclo
de vida completo de desarrollo/construcción y puesta en marcha
(deploy) de aplicaciones y servicio web mediante lenguajes o
herramientas soportadas por el proveedor (java, phyton…).
300
BLOQUE II TEMA 4
Proporciona control completo sobre las aplicaciones desplegadas y
sobre los ajustes de configuración de estas, es usado
principalmente por desarrolladores. (Servicios de Azure, Google
App Engine, OpenShift…).
**OpenShift: producto de computación en la nube de plataforma como
servicio de Red Hat. Los desarrolladores pueden usar Git para
desplegar sus aplicaciones Web en los diferentes lenguajes de la
plataforma. OpenShift se encarga de mantener los servicios
subyacentes a la aplicación y la escalabilidad de la aplicación
como se necesite. (Pregunta examen)
**Origin, la versión de código abierto de Open Shift, utiliza
Docker para la gestión de contenedores y Kubernetes para la gestión
de grupos de contenedores. Todo el código del proyecto está
disponible sobre la licencia Apache en GitHub. (Pregunta examen)
**Azure DevOps: anteriormente Team Foundation Server (TFS), es un
producto de Microsoft que proporciona control de versiones,
informes, gestión de requisitios, gestion de proyectos, building
automatizado y testing. (Pregunta examen)
o SaaS (Software): las aplicaciones del proveedor son accesibles como
servicios, el consumidor no controla la infraestructura ni las
capacidades de las aplicaciones. (Office 365, Suit de Google…)
Git: software de control de versiones, eficiencia, confiabilidad y
compatibilidad del mantenimiento de versiones de aplicaciones cuando estas
tienen un gran número de archivos de código fuente. Comandos GIT: (Pregunta
examen)
• init: creará un nuevo repositorio local GIT.
• clone: se usa para copiar un repositorio
• add: agregar archivos al área de preparación.
• commit: creará una instantánea de los cambios y la guardará en el
directorio git.
• config: establecer una configuración específica de usuario, como el
email, user…
• status: muestra la lista de los archivos que se han cambiado junto
con los archivos que están por ser preparados o confirmados.
• push: se usa para enviar confirmaciones locales a la rama maestra del
repositorio remoto.
• checkout: crea ramas y te ayuda a navegar entre ellas. • remote:
lista los repositorios remotos.
• branch: listar, crear o borrar ramas.
• pull: fusiona todos los cambios que se han hecho en el repositorio
local con el directorio de trabajo local.
• merge: fusionar una rama con otra rama activa.
• diff: hacer una lista de conflictos.
• tag: marca commits específicos.
• log: se usa para ver el historial del repositorio listando ciertos
detalles de la confirmación.
• reset: sirve para resetear el index y el directorio de trabajo al
último estado de confirmación.
• rm: remover archivos del index y del directorio de trabajo.
301
BLOQUE II TEMA 4
• stash: guardará momentáneamente los cambios que no están listos para
ser confirmados
• fetch: buscar todos los objetos de un repositorio remoto que
actualmente no se encuentran en el directorio de trabajo local.
• show: mostrar información sobre cualquier objeto git.
• grep: permite al usuario buscar frases y palabras específicas en los
árboles de confirmación, el directorio de trabajo y en el área de
preparación.
**Bitbucket: servicio de alojamiento basado en web, para los proyectos que
utilizan el sistema de control de versiones Mercurial y Git, similar a
GitHub. (Pregunta examen)
TIPOS DE SOFTWARE, en función de su proximidad al hardware: (Pregunta
examen)
• Software de base: compuesto por programas que interactúan
directamente con el hardware del SO.
• Software de utilidad: utilizado como herramienta básica en tareas de
mantenimiento, soporte y ejecución.
• Software de aplicación: realización de tareas específicas,
aplicaciones ofimáticas, software educativo, editores de música…
**Software MDM (mobile device management): es un tipo de software que
permite asegurar, monitorizar y administrar dispositivos móviles sin
importar el operador de telefonía o proveedor de servicios. La mayoría de
las MDM permiten instalar aplicaciones, localizar y rastrear equipos,
sincronizar archivos, reportar datos y acceder a dispositivos, todo esto
de manera remota. (Pregunta examen)
**MobileIron: un MDM que permite la seguridad y la gestión de dispositivos
móviles como teléfonos inteligentes y tabletas en un entorno empresarial,
así como el acceso móvil seguro a los datos empresariales. (Pregunta
examen)
[Link]-ORIENTED ARCHITECTURES (SOA)
Es un estilo de arquitectura de TI que se apoya en la orientación a
servicios. Un servicio es una representación lógica de una actividad de
negocio que tiene un resultado de negocio específico. SOA se caracteriza
por los principios:
• Contrato de servicios estandarizados: los servicios adhieren a un
acuerdo de comunicación, según se define en conjunto con uno o más
documentos de descripción de servicios.
• Acoplamiento débil de sistemas: los servicios mantienen una relación
que minimiza las dependencias y sólo requiere que mantengan un
conocimiento de uno al otro.
• Abstracción de servicios: más allá de las descripciones del contrato
de servicios, los servicios ocultan la lógica a los demás.
• Reutilización de servicios: lógica se divide en servicios para
promover la reutilización.
• Autonomía de servicios: los servicios tienen control sobre la lógica
que encapsulan, desde una perspectiva de diseño y ejecución.
• Servicios sin-estado: los servicios minimizan el consumo de recursos
aplazando la gestión de la información de estado cuando sea necesario.
302
BLOQUE II TEMA 4
• Descubrimiento de servicios: los servicios se complementan con los
metadatos mediante los cuales se pueden descubrir e interpretar la
eficacia.
• Composición de servicios: servicios están compuestos por partes
eficazmente, independientemente del tamaño y la complejidad de la
composición.
• Granularidad de servicios: una consideración de diseño para
proporcionar un ámbito óptimo y un correcto nivel granular de la
funcionalidad del negocio en una operación de servicio.
• La normalización de servicios: los servicios se descomponen a un
nivel de forma normal para minimizar la redundancia. En algunos casos,
los servicios se desnormalizan para fines específicos, como la
optimización del rendimiento, el acceso y agregación.
• Optimización de servicios: los servicios de alta calidad son
preferibles a los de baja calidad.
• Relevancia de servicios: la funcionalidad se presenta en un nivel de
granularidad reconocido por el usuario como un servicio
significativo.
• Encapsulación de servicios: muchos servicios están consolidados para
el uso de SOA. A menudo, estos servicios no fueron planificados para
estar en un SOA.
• Transparencia de ubicación de servicios: se refiere a la capacidad
de un consumidor de servicios para invocar a un servicio
independientemente de su ubicación en la red. Esto también reconoce
la propiedad de descubrimiento (uno de los principios fundamentales
de SOA) y el derecho de un consumidor para acceder al servicio. A
menudo, la idea de la virtualización de servicios también se refiere
a la transparencia de ubicación. Aquí es donde el consumidor
simplemente llama a un servicio lógico, mientras que un SOA habilita
la ejecución del componente de la infraestructura, normalmente un bus
de servicios, que mapea este servicio lógico y llama al servicio
físico.
[Link] Services Architecture (MSA)
Desarrollo de software que consiste en construir una aplicación como un
conjunto de pequeños servicios, que se ejecutan en su propio proceso y se
comunican normalmente con una API de recursos HTTP. Cada servicio se
encarga de implementar una funcionalidad, es desplegado de forma
independiente y puede estar programado en distintos lenguajes y usar
diferentes tecnologías. Características:
• Cada microservicio tiene un nombre único (URL): se usa para resolver
su ubicación y debe ser direccionable en cualquier lugar donde se
ejecute (de la misma manera que DNS resuelve una URL para un equipo
en particular, su microservicio debe tener un nombre único para que
su ubicación actual sea reconocible).
• Los servicios son componentes: están separados y se comunican
mediante mecanismos como los servicios web o los RPC en lugar de usar
llamadas a funciones en memoria.
• Organizada en torno a las funcionalidades del negocio: el sistema se
divide en distintos servicios donde cada uno está organizado en torno
a una capacidad del negocio. Es muy importante limitar la
responsabilidad de cada servicio. Cada servicio implementa toda la
303
BLOQUE II TEMA 4
funcionalidad del negocio que agrupa desde la interfaz de usuario,
la persistencia en el almacenamiento y cualquiera de las
colaboraciones externas.
• Productos, no proyectos: se sigue la idea de que un equipo debe estar
a cargo de un componente (servicio) durante todo el ciclo de vida del
mismo, desde la etapa de diseño y construcción, la fase de producción
y hasta la de mantenimiento. Esta mentalidad se acopla bien con la
vinculación a una capacidad del negocio. En lugar de ver el software
como un conjunto de funcionalidades terminadas se ve como una relación
continua, esto es facilitado por el bajo nivel de granularidad que
ofrecen los microservicios.
• Extremos inteligentes, tuberías bobas: las aplicaciones creadas desde
microservicios pretenden ser tan disociadas y cohesivas como sea
posible, ellas poseen su propia lógica de dominio y actúan como
filtros en el clásico sentido UNIX: recibe una solicitud, aplica la
lógica apropiada y produce una respuesta. Estos pasos son
coreografiados usando protocolos simples (típicamente HTTP con REST
o mensajería liviana como RabbitMQ o ZeroMQ).
• Tener gobierno descentralizado permite usar tecnologías que se
adapten mejor a cada funcionalidad: con el sistema con múltiples
servicios colaborativos, podemos decidir utilizar diferentes
lenguajes de programación y tecnologías dentro de cada servicio. De
esta forma podemos elegir la herramienta adecuada para cada tipo de
trabajo en lugar de tener una estandarizada.
• Gestión de datos descentralizada: los microservicios prefieren dejar
a cada servicio que gestione su propia base de datos, sean estas
diferentes instancias de la misma tecnología de base de datos o
sistemas de base de datos completamente diferentes.
El estilo de microservicios tiene implicaciones en el manejo de las
actualizaciones las cuales tradicionalmente han usado transacciones
para garantizar la consistencia. Las transacciones imponen un
acoplamiento temporal lo que se vuelve problemático cuando hay varios
servicios. Como las transacciones distribuidas son mucho más
difíciles de implementar, las arquitecturas de microservicios
promueven la coordinación no transaccional entre servicios, con el
reconocimiento explícito que la consistencia puede ser una
consistencia eventual y los problemas son compensados operativamente.
El sistema merece la pena siempre y cuando el costo de solucionar los
errores sea menor que el costo de perder negocios por una mayor
consistencia. Los microservicios no obligan a tener distintas
tecnologías de almacenamiento, solo lo permiten.
• Diseño tolerante a fallos: las aplicaciones necesitan ser diseñadas
de modo que puedan tolerar las fallas de los distintos servicios.
Cualquier llamada de servicio puede fallar y el cliente tiene que ser
capaz de responder a esto con la mayor facilidad y eficacia posible,
evitando los muy habituales fallos en cascada de las arquitecturas
distribuidas.
• Automatización de la infraestructura: la mayoría de los productos y
sistemas desarrollados con el enfoque de microservicios han sido
construidos por equipo que usan entrega continua y su precursor la
integración continua.
• Diseño evolutivo: cuando se divide el sistema en servicios hay que
tener en cuenta que cada uno tiene que poder ser reemplazado o
304
BLOQUE II TEMA 4
actualizado de forma independiente. Es decir, tiene que permitir una
fácil evolución. El diseño del servicio tiene que ser de tal forma
que evite en lo posible que la evolución de los servicios afecte a
sus consumidores.
**AMQ de Red Hat: es una plataforma de mensajería flexible que permite la
integración en tiempo real y la conexión a Internet de las cosas (IoT).
(Pregunta examen)
305