Si quisiera ejecutar un sitio web como AirBnb, ¿sería mejor / más rápido o más económico ejecutarlo en Amazon EC2, CDN o usar clusters y Hadoop / Cassandra?

La ventaja que el alojamiento compartido le ofrece es que puede comenzar poco a poco y ampliarse cuando lo necesite. Aparte de eso, el costo de ejecutar su aplicación dependerá de su pila y del proveedor que elija.

Por ejemplo, si desea usar un servicio compartido como S3 para almacenar sus objetos y ejecutar trabajos de EMR en él, el costo de almacenamiento es de aproximadamente $ 0.03 / gb para el primer TB.

Sin embargo, si desea configurar su propio grupo de Yarn equivalente, necesitará algunas máquinas dedicadas para los nodos de datos, nodos de cómputo y nodos maestros. El almacenamiento para su instancia dedicada lo ejecutará a $ 0.05 / gb (si necesita un SSD es aproximadamente $ 0.10 / gb). Agregue a esto la redundancia / tolerancia a fallas que tendrá que construir (la replicación de 3 vías lo hará 3 X 1TB) y el costo de las operaciones o la administración del sistema para este sistema. S3 ya ha incorporado redundancia con 99.99% de disponibilidad y es cero administrador.

S3 es solo un ejemplo, usted ve un patrón similar en el uso de otras plataformas de administración cero de AWS, como SQS, Redshift, Kinesis y otros. Aparte de esto, realmente no tiene que invertir en la seguridad de la red para estas máquinas tanto como tendría que hacerlo de otra manera.

Estoy usando AWS para ilustración porque tengo experiencia con él. Lo mismo podría decirse de Azure si usted es una tienda .NET o Google si necesita BigQuery.

Esta pregunta es confusa porque puede ejecutar los clústeres de Hadoop / Cassandra en EC2. Los EC2 son solo servidores virtualizados como cualquier otro “proveedor de servicios en la nube”. Los servidores de Bare Metal siempre serán más potentes, pero con “The Cloud” puede comprar solo la CPU “bandwith” que necesita y ampliar a pedido, este es un buen escenario para cosas como Cassandra, donde solo agrega más “nodos” EC2 Como lo exigen los requisitos. Dicho esto, para ejecutar Cassandra necesita al menos dos instancias de M1.large que le costarán alrededor de $ 150 / mes. También tenga en cuenta que Cassandra no es la respuesta a todo y probablemente necesitará una base de datos relacional como MySQL, EC2 para ejecutar algunos de los códigos de su aplicación, etc.

Así que para responder a su pregunta:

“mejor / más rápido”: ¿Habla de mejor / más rápido en términos de aplastamiento de la CPU (buena probabilidad de ganancias simples para cpu / dólar), ancho de banda de Internet (buena posibilidad de ganar en la nube), más rápido de configurar y escalar (buena probabilidad de que la nube gane) . Bare Metal O virtual puede ser mejor / más rápido dependiendo de cómo lo configures y tu experiencia con él. Si estás usando el metal desde cero, debes alojarlo en algún lugar y pagar esos costos. También estás limitando en cómo escalas. También es probable que haya costos de inicio más altos para ir al descubierto. También tenga en cuenta cosas como una CDN, DNS, arquitectura de conmutación por error a otros centros de datos, todo esto es relativamente fácil en entornos de nube frente a Bare Metal.

“más económico”: depende de qué tan bien pueda anticipar su crecimiento y tráfico con precisión. Si tiene un público selecto al que desea dirigirse, puede ejecutar sus propios servidores potentes y completos a un costo inicial y ahorrar dinero Y tener una persona dedicada (tal vez usted) para mantener y agregar más servidores allí. El problema es que la mayoría de las personas no pueden anticipar lo que va a suceder, en la mayoría de los casos no reciben tanto tráfico como pensaban, pero lo planearon O O alguien escribe sobre usted en TechCrunch y sus servidores Bare-metal están abrumados . Otro punto de bonificación para los proveedores de la nube. Si llega a tráfico de nivel de tráfico de Facebook o Google, es probable que los proveedores de servicios en la nube no sean su respuesta y que se estén ejecutando sus propios centros de datos.

La única otra consideración aquí es que Cassandra, las granjas de renderizado 3D, etc., requieren máquinas poderosas. Las máquinas potentes son más caras en la nube. La ventaja es que cuando los servidores no están mostrando, una gran cantidad de ellos pueden desactivarse y no se le cobrará por ellos en la nube. Si están siempre disponibles las 24 horas del día, los 7 días de la semana y se utilizan en su totalidad, es posible que sea mejor alquilar espacio en un Colo y colocar sus propios servidores físicos allí. Esto es especialmente bueno para empresas medianas con clientes constantes y definidos. Si recién estás comenzando y probando ideas, por supuesto, ve a Cloud.

Estás confundiendo la arquitectura física con la arquitectura lógica.

Un servicio como AirBNB se compone de un montón de componentes lógicos. Existen múltiples tecnologías equivalentes que pueden usarse para realizar cada función lógica, y múltiples.

Digamos que uno de esos componentes es un almacén de clave / valor NoSQL. Tengo múltiples opciones de lo que puedo usar:

  • Podría usar Amazon SimpleDB o DynamoDB
  • Podría usar el Cassandra de 1 clic de Amazon o ejecutar HBase en EMR.
  • Podría instalar y administrar mis propias instancias de Cassandra o HBase que se ejecutan en instancias de EC2 sin procesar
  • Podría ejecutar Cassandra o HBase en hosts dedicados que alquilo en Rackspace
  • Podría comprar mi propio hardware y ejecutar Cassandra o HBase en una instalación de colo.
  • Podría construir mi propio centro de datos y ejecutar Cassandra o HBase allí.

En términos de capacidades lógicas, todos hacen exactamente el mismo trabajo.

Donde difieren es cuánta sobrecarga administrativa tienen, cuánto control tengo sobre la infraestructura y el modelo de costo. El alojamiento por cuenta propia es probablemente más barato a largo plazo, pero requiere una gran inversión inicial y me da un control total; El uso de DynamoDB es más barato desde el principio pero puede costar más a largo plazo, y tengo que confiar en que Amazon hará su trabajo.

La ventaja de una arquitectura basada en AWS es que puedo aumentarla y bajarla dinámicamente casi en tiempo real para cumplir con mi carga actual. Con el autoalojamiento, tengo que comprar o alquilar hardware suficiente para manejar mi carga máxima, incluso si la mayoría está inactiva 23 de las 24 horas del día. La elasticidad de la nube significa que solo pago por lo que realmente uso, por lo que a pesar de que estoy pagando más por máquina / hora, todavía tengo un ahorro neto porque no estoy pagando la capacidad inactiva. También significa que estoy obteniendo el beneficio de tener un personal de centro de datos de clase mundial sin tener que reclutarlos yo mismo.

El alojamiento compartido será más que suficiente para empezar. No se preocupe por la optimización de un sistema grande en este momento. Solo asegúrese de permitir que el DBMS haga su trabajo siempre que sea posible, en lugar de optimizarse. De esta manera, las cosas no se romperán cuando un administrador de base de datos optimice más tarde el DBMS.