As we concluded, a radical change was needed a
brave new world. A completely new approach to building applications
needed to be developed that could scale to meet
the demands of the rapidly growing internet. Not a key
step to building a scalable system is you need
to decouple it from executing on a single computer. You
design a scale out architecture as your application scales
outside the scope of a single computer and this distributed
architecture needs to be a socalled, share
nothing architecture. Meaning, that it must not depend
on any shared resources that can become the
bottleneck, this way if your application needs a
scale, you can just provide more computers to
provide the additional capacity required. That means, you
can run your application on. All the things.
And to get even more flexibility the concept
of virtual machines was born which enables you
to decouple a physical machine from the application
execution machine. This had great flexibility gain since
the infrastructure turned virtual you would now run your
scale out application on several virtual machines instead
of physical computers. Problem solved, right? You can
now scale indefinitely by adding these standard building
blocks of performance that your application can utilize and
you have decomposed your application from the
specific execution machine, great. Now only one
question remains, how do you design your
application to be able to scale like this?
:وكما استنتجنا، كانت هناك حاجة إلى تغيير جذري
عالم جديد يتمتع بالشجاعة. وكان يلزم تطوير نهج جديد تمامًا لإنشاء التطبيقات
بحيث يمكن أن تتوسع لتلبي
متطلبات الإنترنت المتزايدة بسرعة. والآن من الخطوات الأساسية
لإنشاء نظام قابل للتوسع
هو إلغاء التنفيذ على كمبيوتر واحد. فأنت
تنشئ تصميم قابل للتوسع بخروج التطبيق
خارج نطاق كمبيوتر واحد ويجب أن يطلق على
ذلك التصميم الموزع
تصميم عدم المشاركة. ويعني ذلك أنه يجب ألا يعتمد على
أي موارد مشتركة يمكن أن تمثل
عقبة، وبهذه الطريقة، إذا كان التطبيق في حاجة إلى
التوسع، فيمكنك توفير مزيد من أجهزة الكمبيوتر
لزيادة السعة المطلوبة. ويعني ذلك
.أنه يمكنك تشغيل التطبيق على كل الأجهزة
ولمزيد من المرونة، ظهر مفهوم
الأجهزة الظاهرية الذي يمكنك من
فصل جهاز فعلي عن
جهاز تنفيذ التطبيق. وقد نتج عن ذلك زيادة في المرونة؛
فبتحول البنية الأساسية إلى بنية ظاهرية، يمكنك تشغيل
التطبيق القابل للتوسع على عدة أجهزة ظاهرية
بدلاً من أجهزة الكمبيوتر الفعلية. لقد تم حل المشكلة، أليس كذلك؟ يمكنك الآن التوسع
بشكل غير محدد من خلال إضافة المكونات الأساسية للأداء
التي يمكن للتطبيق استخدامها
وكنت قد قمت بفصل التطبيق عن ،
،جهاز التنفيذ المحدد، هذا رائع! ويتبقى الآن سؤال واحد
كيف تصمم تطبيقك
ليتمكن من التوسع بهذه الطريقة؟
Como hemos visto,
hacía falta un cambio radical.
Un mundo feliz.
Faltaba un enfoque nuevo
para construir aplicaciones escalables
que satisficieran la demanda
de una internet en continuo crecimiento.
Otro punto clave
para construir un sistema escalable
era disociarlo de la ejecución
en un solo ordenador.
Se diseña una arquitectura scale out
cuando la aplicación
trasciende los límites de un ordenador.
Esta arquitectura distribuida
debía ser de tipo share nothing.
Esto quiere decir que
no debía depender de ningún recurso
que pudiese convertirse
en cuello de botella.
Así, cuando la aplicación
requiere escalado,
solo hay que aportar más ordenadores
para darle capacidad adicional.
Así, es posible ejecutar la aplicación
en todos los casos.
Y para obtener aún más flexibilidad surgió
el concepto de máquina virtual,
que disocia la máquina física
de la que ejecuta la aplicación.
Esto condujo a una mayor flexibilidad
porque, con una infraestructura virtual.
Se podía ejecutar la aplicación scale out
en varias máquinas virtuales
en vez de ordenadores físicos.
Problema resuelto, ¿no es así?
Ahora se puede escalar indefinidamente
sin más que añadir bloques
de rendimiento estándar
que la aplicación puede utilizar.
Y la aplicación pasa a estar separada
de la máquina de ejecución específica.
Genial. Ahora solo falta una pregunta,
¿cómo se diseña la aplicación
para que resulte escalable?
前回お話ししたとおり
新しい世界には革新が必要でした
アプリケーションを構築するための
新しい方法が求められていたのです
そして急速に成長するインターネットの要求を
満たすスケールが必要でした
スケーラブルなシステムを構築するためには
1台のコンピュータで動くシステムを
分離する必要があります
スケールアウトの仕組みを設計し
アプリケーションが1台のコンピュータの
範囲を超えて動くようにします
この分散型のアーキテクチャはいわゆる
シェアード・ナッシング・アーキテクチャである
必要があります
つまり共有リソースには依存しないこと
そしてスケールが必要であれば
このように必要な許容量の分だけ
コンピュータを追加するという
仕組みが必要だったのです
要するにすべてのコンピュータで
アプリケーションを動かすのです
そしてさらに柔軟性を得るために
仮想マシンという概念が誕生しました
物理的なマシンはアプリケーションを
実行するマシンと分離されたのです
これにより大きな柔軟性がもたらされます
なぜならインフラが仮想化され
スケールアウト可能なアプリケーションを
数台の仮想マシン上で
動かせるようになったからです
問題解決です
アプリケーションはこれらの標準的な
パフォーマンスブロックを利用でき
ブロックを追加することで
無制限にスケールすることができます
アプリケーションを物理的なマシンから
分離したのです すばらしいですね
残る疑問はたった1つ
スケーラブルなアプリケーションを
設計する方法とは?
Como concluímos, uma mudança radical era necessária.
Um admirável mundo novo. Era necessário desenvolver uma abordagem completamente nova
para a criação de aplicativos, para que a escalabilidade pudesse atender
às demandas da Internet em rápido crescimento.
Uma etapa essencial para criar um sistema escalável é
dissociá-lo da execução em um único computador.
Você projeta uma arquitetura expandida à medida que seu aplicativo escala
para além do escopo de um único computador. Essa arquitetura
distribuída precisa ser o que chamamos de arquitetura
sem compartilhamento. Isso significa que ela não deve depender
de nenhum recurso compartilhado que pode se tornar um ponto
de afunilamento. Dessa forma, se seu aplicativo precisa escalar,
basta fornecer mais computadores para
suprir a capacidade adicional necessária. Isso significa que você
pode executar seu aplicativo em todas as coisas.
E para uma flexibilidade ainda maior, surgiu
o conceito de máquinas virtuais, o que possibilitou
dissociar uma máquina física da máquina de
execução do aplicativo. Isso representou um grande ganho de flexibilidade,
pois com a infraestrutura virtual é possível executar
o aplicativo expandido em várias máquinas virtuais, em vez de
em computadores físicos. Problema resolvido, certo? Agora você pode
ter escalabilidade indefinida ao adicionar esses blocos de construção de desempenho
padrão, que seu aplicativo pode usar.
E você desagregou seu aplicativo de uma
máquina de execução específica. Maravilha! Agora só resta
uma dúvida: como você pode projetar seu
aplicativo para ele ter esse tipo de escalabilidade?
我们得出的结论是:巨变才会
创建出美好新世界 需要开发一种全新的方法来构建应用
从而进行扩展以满足
快速增长的互联网需求 构建可扩展的系统不是
关键步骤 你需要
在单一计算机上执行操作对其进行解耦 你
将向外扩展架构设计为将应用
扩展到单一计算机范围之外
还需要扩展此分布式架构
而不是共享架构 这意味着它不必依赖
可以变为瓶颈的任何共享资源
这样 如果你的应用需要扩展
你可以提供更多的计算机以
提供所需的其他容量 这意味着
你可以在所有地方 运行你的应用
为了提高灵活性
从而诞生了虚拟机的概念
让你能够从应用执行机器中
分离物理机器 这会极大地提高灵活性
这是因为基础结构转为虚拟结构
你现在可以在多台虚拟机而不是物理机器上
外向扩展你的应用 问题解决了 是吧?通过添加应用可以使用的
这些性能标准构建基块
可以进行无限扩展
并且从特定执行机器中分离了你的应用
这很好 现在 唯一的问题是
你要如何设计你的应用
以便使它达到此扩展程度?