Você está na página 1de 11

Universidad Mariano Glvez de Guatemala, Villa Nueva

Ingeniera en Sistemas de Informacin


Diseo de Sistemas
Ing. Mauricio Estrada

SOA y Arquitectura de Facebook

Brenda Alvarez 5190-12-1825

Julio Blanco 5190-12-8425

Cristian Gomez 5190-12-13360


Qu es SOA:

SOA (Arquitectura orientada a servicios) es un marco de trabajo conceptual que establece


una estructura de diseo para la integracin de aplicaciones, que permite a las
organizaciones unir los objetivos de negocio, en cuanto a flexibilidad de integracin con
sistemas legados y alineacin directa a los procesos de negocio, con la infraestructura de
TI.

Esto permite la reduccin de costos de implementacin, innovacin de servicios a


clientes, adaptacin gil ante cambios y reaccin temprana ante la competitividad, ya que,
combinan fcilmente las nuevas tecnologas con aplicaciones independientes, permitiendo
que los componentes del proceso se integren y coordinen de manera efectiva y rpida.

Beneficios de SOA:

Aplicaciones ms productivas y flexibles: La estrategia de orientacin a servicios,


permite a TI conseguir una mayor productividad de los recursos TI ya existentes
(aplicaciones y sistemas instalados o los ms antiguos), y obtener mayor valor de
stos para la organizacin.

Desarrollo de aplicaciones ms rpido y econmico: Gracias a la integracin


flexible de todos los datos, esfuerzos de ingeniera incrementales y la creacin de
un repositorio de servicios utilizables que se pueden combinar en servicios de
mayor nivel, se logra una aceleracin en el desarrollo de proyectos de TI y una
disminucin en los costos del desarrollo de soluciones y de los ciclos de prueba,
pues se eliminan redundancias y se consigue su puesta en valor en menos tiempo.

Aplicaciones ms seguras y manejables: SOA proporciona una infraestructura y


documentacin comn, para desarrollar servicios seguros, predecibles y
gestionables, adems de facilitar la posibilidad de aadir nuevos servicios y
funcionalidades para gestionar los procesos de negocios crticos. Puesto que se
accede a los servicios y no a las aplicaciones, SOA optimiza las inversiones
realizadas en TI potenciando la capacidad de introducir nuevas capacidades y
mejoras.

Minimizacin del riesgo de tiempo de inactividad o prdidas de datos: Esto debido


a que ofrece rendimiento, escalabilidad, seguridad y alta disponibilidad sin
precedentes.

Mejora de la capacidad para innovar y diferenciarse: Mediante datos integrales,


precisos y oportunos para desarrollar la nueva funcionalidad de forma rpida.
En resumen, la estrategia de orientacin a servicios proporciona las condiciones para
llevar a la empresa a niveles altos de competitividad y crecimiento, ya que a aporta la
flexibilidad necesaria para mantener el xito en el futuro, terminando adems con la
desintegracin e inflexibilidad, la cual genera costos, reduce la capacidad de respuesta
ante los clientes y afecta la productividad de la empresa.

Arquitectura de Facebook

Facebook se divide en varias fases:

Front-end web escrito en PHP. Compilador de HipHop de Facebook [1] entonces


convierte en C++ y compila con g ++, proporcionando as una plantillas de alto
rendimiento y capa de ejecucin Web logic.
Debido a las limitaciones de depender enteramente de compilacin esttica, Facebook
comenz a trabajar en un intrprete de hip-hop as como una mquina Virtual de HipHop
que traducir el cdigo PHP a HipHop ByteCode.
Lgica de negocio se expone como servicios con ahorro [4]. Algunos de estos servicios
se implementan en C++, Java o PHP dependiendo de los requerimientos de servicio
(algunos otros idiomas probablemente se utilizan...)
Servicios implementados en Java no utilizan ningn servidor de aplicaciones de empresa
generalmente, sino que utilizan el servidor de aplicacin personalizada de Facebook. Al
principio que esto puede ver como rueda reinventada, pero como estos servicios son
expuestos y consumidos slo (o principalmente) utilizando el ahorro, la sobrecarga de
Tomcat o Jetty incluso, era probablemente demasiado alta sin valor aadido significativo
para su necesidad.
Persistencia se realiza utilizando MySQL, Memcached, HBase de Hadoop. Memcached
es utilizado como una memoria cach para MySQL, as como una cach de propsito
general.
Procesamiento sin conexin se realiza utilizando Hadoop y colmena.
Datos como el registro, haga clic y trnsito mediante Escribano se alimenta y son adicin
y almacenado en HDFS utilizando Escribano-HDFS, permitiendo anlisis extendido
utilizando MapReduce
BigPipe es su tecnologa personalizada para acelerar la representacin de la pgina
utilizando una lgica de yuxtaposicin
Barniz cach se utiliza para el proxy HTTP. He preferido por su alto rendimiento y
eficacia.
El almacenamiento de miles de millones de fotos publicadas por los usuarios es
manejado por el pajar, una solucin de almacenamiento de informacin ad-hoc
desarrollada por Facebook que trae optimizaciones de nivel bajo y slo anexar escribe.
Mensajes de Facebook est utilizando su propia arquitectura que se basa en particular
en sharding de infraestructura y gestin de cluster dinmico. Persistencia y la lgica de
negocio est encapsulado en supuesto 'Cell'. Cada clula encarga de una parte de los
usuarios; las nuevas clulas pueden agregarse como popularidad crece. Persistencia se
consigue utilizando HBase .
Motor de bsqueda de mensajes en Facebook se construye con un ndice invertido en
HBase
Detalles de la implementacin del motor de bsqueda de Facebook son desconocidos lo
que s
La bsqueda de typeahead utiliza una lgica de almacenamiento y recuperacin
personalizada
Chat se basa en un servidor de Epoll desarrollado en Erlang y acceso mediante ahorro
Han construido un sistema automatizado que responde al seguimiento alertas lanzando
el apropiado flujo de trabajo de reparacin, o escalada a los seres humanos si la corte no
poda ser superado.

Sobre los recursos provisionados para cada uno de estos componentes, se conocen
algunos nmeros e informacin:

Facebook se estima que posee ms de 60.000 servidores. Su reciente centro de datos


en Prineville, Oregon se basa enteramente diseado hardware que fue recientemente
presentado como Open Compute Project.
300 TB de datos se almacena en los procesos de Memcached
Su cluster de Hadoop y colmena se hace de 3000 servidores con discos de 12 TB de 8
ncleos, 32 GB de RAM, que es un total de 24 ncleos de k, 96 TB de RAM y discos de
PB 36
en cach hits 100 billones por da, 50 billones de fotos, objetos 3 trillones, 130 TB de
registros por da a partir de julio de 2010

Facebook utiliza el tipo de arquitectura para aplicaciones distribuidas utilizando el modelo


de N-capas.
Que es una aplicacin distribuida: Es una aplicacin con distintos componentes que se
ejecutan separados, normalmente en diferentes plataformas conectadas

A qu se refiere la distribucin?
La distribucin se refiere a la construccin de software por partes, a las cuales le son
asignadas un conjunto especfico de responsabilidades dentro de un sistema. Esta
distribucin como bien enunciaba la definicin formal, habla de que las partes o
componentes se encuentran en entornos separados, sin embargo, lo que tiene implcito
esta definicin, es que para realizar esta separacin fsica primero debe tenerse clara la
separacin lgica de las partes de una aplicacin, esto quiere decir que
programticamente existe una forma de separar o agrupar los componentes.

Qu es una arquitectura en ambiente distribuido?


Describe la estructura y la organizacin de los componentes del software, sus
propiedades y la conexin entre ellos para formar el sistema; la cantidad y la granularidad
de comunicacin que se necesita para la interaccin y los protocolos de interfaz usada por
la comunicacin.
MODELO DE N-CAPAS

En una aplicacin distribuida en n-capas los diferentes procesos estn distribuidos en


diferentes capas no slo lgicas, sino tambin fsicas. Los procesos se ejecutan en
diferentes equipos, que pueden incluso residir en plataformas o sistemas operativos
completamente distintos. Cada equipo posee una configuracin distinta y est optimizado
para realizar el papel que le ha sido asignado dentro de la estructura de la aplicacin, de
modo que tanto los recursos como la eficiencia global del sistema se optimicen.

1. Aplicaciones de una Capa: Las capas dentro de una arquitectura son nada ms que un
conjunto de servicios especializados que pueden ser accesibles por mltiples clientes y
fcilmente reutilizables.

2.-Aplicaciones de dos capas: Se caracterizan por tener 2 asociaciones lgicas, que


prestan servicios y que a la final son capas. En la primera capa se incluye a la
presentacin (Interface grafica) y a la lgica de negocios, toda la lgica la escribimos en
las formas (en el onClick del botn por ejemplo), y accedemos a un servicio de datos para
la gestin de los mismos, por lo general a un servidor de Base de Datos

3.-Aplicaciones de 3 Capas: Una aplicacin de tres capas es una aplicacin cuya


funcionalidad puede ser segmentada en tres niveles lgicos (capas):

Los servicios de presentacin.


Los servicios de negocios (Lgica de Negocios)

Los servicios de datos.

ARQUITECTURA DE LAS APLICACIONES DISTRIBUIDAS

Atendiendo al papel que los distintos elementos juegan dentro de la aplicacin,


distinguimos con claridad tres grupos lgicos en los que podemos agrupar elementos
segn su funcionalidad:

La capa de servidor incluye aquellos elementos que se encargan de recibir las


peticiones de datos o de acceso a servicios bsicos del sistema y de suministrar a
otros elementos la informacin solicitada.
La capa de negocios encapsula las reglas de acceso a datos y la gestin de
procesos internos de la aplicacin.

La capa de presentacin se encarga de la lgica necesaria para interactuar con el usuario


de la aplicacin.
Cmo es que Facebook logra administrar 100 petabytes de datos online?

La respuesta es: Apache Hadoop. No es un secreto que la red social Facebook almacena
miles y miles de datos, exactamente unos 100 petabytes (100 millones de Gigabytes)
hasta el momento. Tampoco es desconocido, por lo menos por los geeks ms curiosos,
que Facebook utiliza Apache Hadoop para administrar esos datos y lograr que estn
disponibles en milsimas de segundos cada vez que son requeridos.

Apache Hadoop es un framework de software para aplicaciones distribudas, bajo licencia


de software libre. El proyecto Hadoop es un desarrollo de alto nivel Apache que ha
crecido con el aporte comunitario del grupo de desarrolladores que lo conforman, entre los
que se destac siempre uno de sus principales usuarios y aportantes: Yahoo!

Este framework permite correr aplicaciones en grandes clusters de hardware dedicado


utilizando una arquitectura donde la aplicacin se divide en muchos pequeos fragmentos
de trabajo, cada uno de los cuales se pueden ejecutar o volver a ejecutar en cualquier
nodo del clster

En la actualidad empresas como AOL, eBay, Fox, IBM, LinkedIn o Twitter entre otras,
utilizan Hadoop como solucin para sus plataformas multiusuario.

Durante el da de hoy se realiz la primera de dos jornadas de la Cumbre Hadoop, en San


Jos California, donde uno de los ingenieros de Facebook, Andrew Ryan, destac que la
solucin a uno de los principales problemas que suele presentar Hadoop fue resuelto con
una solucin propia.

El problema de Hadoop se llama NameNode, un servicio en la arquitectura Hadoop que,


segn detallan en GigaOm, "maneja todas las operaciones de metadatos con el sistema
de archivos distribuidos, pero que slo se ejecuta en un nico nodo. Si el nodo se cae,
tambin lo hace, para todos los efectos, Hadoop, porque nada basado en HDFS (sistema
de archivos propio de Hadoop) se logra ejecutar 100% correctamente".

Andrew Ryan destac que la solucin de Facebook al problema de disponibilidad


generado por NameNode se llama AvatarNode. Ryan coment que comenz a construir
AvatarNode hace unos dos aos (el nombre fue inspirado por el film de James Cameron)
y que ahora est en produccin.
La funcin de AvatarNode es sustituir a NameNode con una arquitectura de dos nodos, en
la que uno acta como una versin de espera si el otro baja. En la actualidad, el proceso
de conmutacin por error es manual, pero Ryan asegur que "estamos trabajando para
mejorar an ms AvatarNode e integrarlo con un marco general de alta disponibilidad que
nos permita la conmutacin por error desatendida, automatizada y segura."

La solucin de Facebook no es la definitiva ni la mejor que se pueda lograr de momento


para la limitacin de NameNode, pero segn aclara Ryan, a pesar de que slo el 10% de
las paradas no planificadas de Facebook podran evitarse con AvatarNode, ms del 50%
de los tiempos de inactividad planificados para el futuro podrn ser tolerados por esta
arquitectura de alta demanda.

Facebook no es la nica empresa en resolver este problema. La empresa Appistry


present un sistema de archivos totalmente distribuido hace un par de aos que inclua la
distribucin de Hadoop MAPR, el cual tambin proporciona un sistema de archivos de alta
disponibilidad.

En tiempos de mega redes de datos y servicios en la nube, conocer desarrollos como


stos y que estn diseados en plataformas libres nos permite tener un mejor panorama
de lo que vendr en el futuro de la distribucin y administracin de datos a gran escala

Arquitectura HADOOP
Hadoop consiste bsicamente en el Hadoop Common, que proporciona acceso a los
sistemas de archivos soportados por Hadoop. El paquete de software The Hadoop
Common contiene los archivos .jar y los scripts necesarios para ejecutar Hadoop. El
paquete tambin proporciona cdigo fuente, documentacin, y una seccin de
contribucin que incluye proyectos de la Comunidad Hadoop.

Una funcionalidad clave es que, para la programacin efectiva de trabajo, cada sistema
de archivos debe conocer y proporcionar su ubicacin: el nombre del rack (ms
precisamente, del switch) donde est el nodo trabajador. Las aplicaciones Hadoop
pueden usar esta informacin para ejecutar trabajo en el nodo donde estn los datos y, en
su defecto, en el mismo rack/switch, reduciendo as el trfico de red troncal (backbone
traffic). El sistema de archivos HDFS usa esto cuando replica datos, para intentar
conservar copias diferentes de los datos en racks diferentes. El objetivo es reducir el
impacto de un corte de energa de rack o de fallo de interruptor de modo que incluso si se
producen estos eventos, los datos todava puedan ser legibles.
Un clster tpico Hadoop incluye un nodo maestro y mltiples nodos esclavo. El nodo
maestro consiste en jobtracker (rastreador de trabajo), tasktracker (rastreador de tareas),
namenode (nodo de nombres), y datanode (nodo de datos). Un esclavo o compute node
(nodo de cmputo) consisten en un nodo de datos y un rastreador de tareas. Hadoop
requiere tener instalados entre nodos en el clster JRE 1.6 o superior, y SSH.

Sistemas de archivos
Hadoop Distributed File System
El Hadoop Distributed File System (HDFS) es un sistema de archivos distribuido,
escalable y porttil escrito en Java para el framework Hadoop. Cada nodo en una
instancia Hadoop tpicamente tiene un nico nodo de datos; un clster de datos forma el
clster HDFS. La situacin es tpica porque cada nodo no requiere un nodo de datos para
estar presente. Cada nodo sirve bloques de datos sobre la red usando un protocolo de
bloqueo especfico para HDFS. El sistema de archivos usa la capa TCP/IP para la
comunicacin; los clientes usan RPC para comunicarse entre ellos. El HDFS almacena
archivos grandes (el tamao ideal de archivo es de 64 MB ), a travs de mltiples
mquinas. Consigue fiabilidad mediante replicado de datos a travs de mltiples hosts, y
no requiere almacenamiento RAID en ellos. Con el valor de replicacin por defecto, 3, los
datos se almacenan en 3 nodos: dos en el mismo rack, y otro en un rack distinto. Los
nodos de datos pueden hablar entre ellos para reequilibrar datos, mover copias, y
conservar alta la replicacin de datos. HDFS no cumple totalmente con POSIX porque los
requerimientos de un sistema de archivos POSIX difieren de los objetivos de una
aplicacin Hadoop, porque el objetivo no es tanto cumplir los estndares POSIX sino la
mxima eficacia y rendimiento de datos. HDFS fue diseado para gestionar archivos muy
grandes.9 HDFS no proporciona Alta disponibilidad.

Otros sistemas de archivos


A junio de 2010, la lista de sistemas de archivos soportados incluye:

HDFS: El sistema propio de Hadoop. Est diseado para la escala de decenas petabytes
de almacenamiento y funciona sobre los sistemas de archivos de base.
Amazon S3. ste se dirige a clusters almacenados en la infraestructura del servidor bajo
demanda Amazon Elastic Compute Cloud. No hay conciencia de racks en este sistema de
archivos, porque todo l es remoto.
CloudStore (previamente llamado Kosmos Distributed File System), el cual es consciente
de los racks.
FTP: ste almacena todos sus datos en un servidor FTP accessible remotamente.
HTTP y HTTPS de solo lectura.
Hadoop puede trabajar directamente con cualquier sistema de archivos distribuido, el cual
puede ser montado por el sistema operativo subyacente simplemente usando la URL
file://, sin embargo, esto tiene un precio: la prdida de la localidad. Para reducir el trfico
de red, Hadoop necesita saber qu servidores estn ms prximos a los datos; esta
informacin la pueden proporcionar los puentes especficos del sistema de archivos
especfico de Hadoop.

Job Tracker y Task Tracker: el motor MapReduce


Aparte del sistema de archivos, est el motor MapReduce, que consiste en un Job
Tracker (rastreador de trabajos), para el cual las aplicaciones cliente envan trabajos
MapReduce.

El rastreador de trabajos (Job Tracker) impulsa el trabajo fuera a los nodos Task Tracker
disponibles en el clster, intentando mantener el trabajo tan cerca de los datos como sea
posible. Con un sistema de archivos consciente del rack en el que se encuentran los
datos, el Job Tracker sabe qu nodo contiene la informacin, y cules otras mquinas
estn cerca. Si el trabajo no puede ser almacenado en el nodo actual donde residen los
datos, se da la prioridad a los nodos del mismo rack. Esto reduce el trfico de red en la
red principal backbone. Si un Task Tracker (rastreador de tareas) falla o no llega a tiempo,
la parte de trabajo se reprograma. El TaskTracker en cada nodo genera un proceso
separado JVM para evitar que el propio TaskTracker mismo falle si el trabajo en cuestin
tiene problemas. Se enva informacin desde el TaskTracker al JobTracker cada poco
minuto para comprobar su estado. El estado del Job Tracker y el TaskTracker y la
informacin obtenida se pueden ver desde un navegador web proporcionado por Jetty.

Si el Job Tracker fallaba en Hadoop 0.20 o anterior, todo el trabajo en curso se perda.
Hadoop versin 0.21 aadi algunos autoguardados al proceso; el rastreador de trabajo
graba lo que est en el sistema de archivos. Cuando un Job Tracker comienza, busca
datos para recomenzar el trabajo donde lo dej. En versiones anteriores, todo el trabajo
activo se perda cuando se reiniciaba el Job Tracker.

Las limitaciones de esto son:

La asignacin de trabajo de los seguidores de trabajo es muy sencilla. Cada rastreador de


tarea tiene un nmero de plazas disponibles, llamadas ranuras o slots (por ejemplo, "4
slots"). Cada mapa activo o cada reduce toma (ocupa) una posicin. El Rastreador de
Trabajo asigna trabajo para el seguidor ms cercano a los datos con una ranura
disponible. No hay ninguna consideracin de la carga activa actual de la mquina
asignada, y por tanto de su disponibilidad real.
Si una tarea de seguimiento es muy lenta, se puede retrasar toda la operacin
MapReduce -especialmente hacia el final de un trabajo, donde todo puede estar a la
espera de una sola tarea lenta-. Con la ejecucin especulativa activada, sin embargo, una
tarea simple puede ejecutarse en mltiples nodos esclavos. As que esta tecnologa
permite una conexin en red muy eficiente.
Programacin de tiempo
Por defecto Hadoop usa el mtodo FIFO para programar la realizacin de trabajos desde
una cola de trabajo. En la versin 0.19 el job scheduler (programador de trabajos) fue
refactorizado fuera de Hadoop, lo cual aadi la habilidad de usar un programador
alternativo.10

Programador justo
El fair scheduler (programador justo o limpio) fue desarrollado por Facebook. El objetivo
del programador es proporcionar rpida respuesta para trabajos pequeos y calidad de
servicio (QOS, en sus siglas en ingls) para trabajos de produccin. El fair scheduler se
basa en 3 conceptos bsicos:11

Você também pode gostar