Agile Cat — in the cloud

2008年夏 Azure 前夜:David Chappell _2

Posted in David Chappell by Agile Cat on November 12, 2009

A SHORT INTRODUCTION TO CLOUD PALTFORMS – Aug 2008

David Chappell-2 160-45b

A GENERAL MODEL FOR APPLICATION PLATFORMS

Our experience with application platforms today comes mostly from on-premises platforms. A useful way to think about cloud platforms is to see how the services an application developer relies on in the on-premises environment translate to the cloud. To help do this, Figure 2 shows a general model that can be applied to both worlds.

アプリケーション・プラットフォームのエクスペリエンスにおいては、その大半がオンプレミスのプラットフォームに基づいているという現実がある。クラウド・プラットフォームについて効率よく考えるためには、オンプレミス環境でアプリケーション開発者が頼るサービスを、クラウドに展開するための方式を確認すべきである。その方式を促進するために、この2つの世界に適用できる汎用モデルを、Figure 2 に示す。

David Chappell 2008_2

Figure 2: A modern application platform can be viewed as having three parts.

Whether it’s on-premises or in the cloud, an application platform can be thought of as comprising three parts:

オンプレミスであろうが、クラウドであろうが、アプリケーション・プラットフォームは、3つのパートで構成されるものとして考えることができる:

· A foundation: Nearly every application uses some platform software on the machine it runs on. This typically includes various support functions, such as standard libraries and storage, and a base operating system.

· Foundation: ほとんど全てのアプリケーションが、自身を実行するマシン上で用いる、いくつかのプラットフォーム・ソフトウェアのことである。 一般的には、標準ライブラリや、ストレージ、基本となるオペレーティング・システムといった多様なサポート機能が、そこには含まれる。

· A group of infrastructure services: In a modern distributed environment, applications frequently use basic services provided on other computers. It’s common to provide remote storage, for example, integration services, an identity service, and more.

· Group of Infrastructure Services: 最先端の分散環境において、アプリケーションが頻繁に使用することになる、他のコンピュータから提供される基本サービスのことである。一般的には、リモート・ストレージや、インテグレーション・サービス、アイデンティティ・サービスの提供などがある。

· A set of application services: As more and more applications become service- oriented, the functions they offer become accessible to new applications. Even though these applications exist primarily to provide services to end users, this also makes them part of the application platform. (It might seem odd to think of other applications as part of the platform, but in a service-oriented world, they certainly are.)

· Set of Application Services: 多数のアプリケーションがサービス指向になるにつれて提供されていく、新しいアプリケーションへのアクセスを実現するサービスのことである。 これらのアプリケーションは、エンド・ユーザーへのサービス提供を第一義とするにもかかわらず、アプリケーション・プラットフォームの一部にもなり得る(他のアプリケーションのことを、プラットフォームの一部として考えるのは奇妙かもしれないが、サービス指向の世界では、確かにあり得る)。

And while they’re not shown in Figure 2, development tools are another important part of this story. Modern tools can help developers build applications using all three parts of an application platform.

Figure 2 には開発ツールが記載されていないが、このストーリーにおける、もうひとつの重要なパートである。最新のツールは、アプリケーション・プラットフォームにおける 3つのパートの全てを用いて、デベロッパーによるアプリケーション構築を支援するだろう。

To make this abstract model more concrete, think about how it fits with today’s most popular on-premises platforms. The on-premises foundation looks like this:

この抽象モデルを、より具体的なものにしていくために、現時点で最も一般的なオンプレミス・プラットフォームとの、適合性について考えてみる。オンプレミスの基本を、以下のように見なすことができる:

· Operating system: The dominant choices are Windows, Linux, and other versions of Unix.

· Operating system: 主要な選択肢は、Windows と Linux、そして、Unix の各種バージョンとなる。

· Local support: Different technologies are used depending on the style of application. The .NET Framework and Java EE application servers provide general support for Web applications and more, for instance, while other technologies target specific kinds of applications. For example, Microsoft’s Dynamics CRM product includes a platform designed for creating a particular type of business application. Similarly, different kinds of storage are used for different purposes. Raw byte storage is provided by the file systems in Windows, Linux, and other operating systems, while more structured storage is provided by a range of database technologies, including the Oracle DBMS, MySQL, Microsoft SQL Server, and IBM DB2.

· Local support: アプリケーションのスタイルに応じて、各種のテクノロジーが用いられる。たとえば、.NET Framework と Java EE Application Server は、Web アプリケーションなどのために、汎用的なサポートを提供する。 それに対して、特定アプリケーションに目標を定めた他のテクノロジーなどが、この場合の例として挙げられる。たとえば、Microsoft の Dynamics CRM は、特定タイプのビジネス・アプリケーション開発のために、設計されたプラットフォームを含んでいる。それと同様に、異なる種類のストレージが、異なる目的のために用いられる。 また、未加工のバイト・ストレージは、Windows や Linux といったオペレーティング・システムや、ファイル・システムで提供される。 その一方で、より以上に構造化されたストレージが、Oracle DBMS/MySQL/Microsoft SQL Server/IBM DB2 などを含む、データベース・テクノロジーの領域で提供される。

For on-premises infrastructure services, typical examples include the following:

オンプレミスのインフラストラクチャ・サービスには、一般的に以下の事例が含まれる:

· Storage: Like storage in the foundation, infrastructure storage comes in various styles. A remote file system might provide simple byte-oriented storage, while a Microsoft SharePoint document library provides a more structured remote storage service. Applications can also access a database system remotely, allowing access to another kind of structured storage.

· Storage: このファンデーションにおけるストレージのように、多様なスタイルのインフラストラクチャ・ストレージが登場してきた。リモート・ファイル・システムは、単純なバイト指向のストレージを供給するかもしれないが、Microsoft SharePoint のドキュメント・ライブラリは、それ以上に構造化されたリモート・ストレージ・サービスを提供する。さらにアプリケーションは、データベース・システムへのリモート・アクセスも実現し、その結果として、他の構造を持つストレージにアクセスする。

· Integration: Connecting applications within an organization usually depends on a remote service provided by some integration product. A message queue is a simple example of this, while more complex scenarios use products such as IBM’s WebSphere Process Server, Microsoft’s BizTalk Server, and others.

· Integration: 一般的に、組織内でのアプリケーション接続はリモートサービスに依存するが、それらは、いくつかの統合化のためのプロダクトにより提供される。メッセージ・キューは、こうした状況を示すシンプルな事例である。 その一方で、IBM の WebSphere Process Server や Microsoft の BizTalk などの製品を用いた、さらに複雑なシナリオも存在する。

· Identity: Providing identity information is a fundamental requirement for most distributed applications. Common on-premises technologies that address this include Microsoft’s Active Directory and other LDAP servers.

· Identity: アイデンティティ情報の提供は、大半の分散アプリケーションにおける基本的な要件となる。 それに取り組むための、一般的なオンプレミス・テクノロジーには、Microsoft の Active Directory などの LDAP サーバーが含まれる。

On-premises application services, the third category shown in Figure 2, vary widely across different organizations. The reason for this is simple: Different organizations use different applications, which in turn expose diverse services. One way to think about these applications in the on-premises platform is to divide them into two broad categories:

Figure 2 における 3番目のカテゴリーとして示される、オンプレミスのアプリケーション・サービスは、それぞれの組織に応じた多様なものとなる。その理由は単純である。つまり、それぞれの組織が個々のアプリケーションを使うからであり、言い換えると、多様なサービスをエクスポーズするからとなる。 オンプレミス・プラットフォームにおいて、それらのアプリケーションについて考えるひとつの方式は、2つの大まかなカテゴリーに、それらを切り分けることである:

· Packaged applications: This includes business software such as SAP, Oracle Applications, and Microsoft Dynamics, along with a myriad of other off-the-shelf products. While not all packaged applications expose services to other applications, more and more of them do.

· Packaged Applications: この項目には、無数の既製品ソフトウェアに加えて、SAP/Oracle Applications/Microsoft Dynamics などのビジネス・ソフトウェアが含まれる。 すべてのアプリケーション・パッケージに該当するわけではないが、大半のケースにおいて、他のアプリケーションへ向けたサービスのエクスポーズが実現されている。

· Custom applications: Many organizations have a large investment in custom software. As these applications increasingly expose their functionality through services, they become part of the on-premises application platform.

· Custom Applications: 多くの組織において、カスタム・ソフトウェアに対して、膨大な投資が行われている。それらのアプリケーションによる、サービスを介した機能のエクスポーズが増えるにつれて、オンプレミスのアプリケーション・プラットフォームが拡張されていく。

When it’s described like this, the on-premises application platform can seem quite complex. The truth, though, is that this platform has evolved over time. In the early days of computing, the application platform consisted of nothing more than an on- premises foundation. (Think of MVS and IMS on an IBM mainframe, for example.) In the 1980s and 1990s, as distributed computing spread, on-premises infrastructure services were added, with remote storage, integration, and identity becoming common. Today, with the advent of service-oriented applications, on-premises application services have become part of the platform. The next step in this evolution is clear: providing cloud versions of all three.

このように記述すると、オンプレミスのアプリケーション・プラットフォームを、きわめて複雑ものと見なすことができる。 しかし真実は、このプラットフォームが、長い時間をかけて進化してところにある。コンピューティングの時代が始まったころ、アプリケーション・プラットフォームを構成するものとして、オンプレミス・ファンデーション以外の何ものも存在しなかった。 (たとえば、IBM メインフレーム上の MVS と IM について考えるべきだ) 1980年代から1990年代にかけて、分散コンピューティングが広まるにつれて、リモートストレージ/インテグレーション/アイデンティティを用いることで、オンプレミスのインフラストラクチャ・サービスが一般的になってきた。そしていま、サービス指向アプリケーションの到来により、オンプレミスのアプリケーション・サービスがプラットフォームの一部になった。 この進化における次のステップは明確である。つまり、それら 3 つの全てを、クラウド・バージョンとして提供することである:

FROM ON-PREMISES PLATFORMS TO CLOUD PLATFORMS

Along with describing on-premises platforms, the general model just described can also be used to think about cloud platforms. And since on-premises and cloud platforms can be used together, it’s important to understand how the two work in concert. Figure 3 illustrates this new world.

オンプレミス・プラットフォームを記述することで、クラウド・プラットフォームを考えるための汎用モデルも記述され、その活用が可能となる。さらに、オンプレミスとクラウドのプラットフォームを、つなぎ合わせて使用することが可能になるため、双方が協調して動作する方式の理解が重要になる。 Figure 3 が例証するのが、この新しい世界である。

David Chappell 2008_3

Figure 3: On-premises platforms and cloud platforms can be
viewed in similar ways, and they can also be used together.

As the figure shows, a cloud application can be built on a cloud foundation, just as an on-premises application is built on an on-premises foundation. Both kinds of applications can access infrastructure and application services provided on-premises and in the cloud. Just as on-premises platforms support today’s applications, cloud platforms provide services for the applications we’re likely to build tomorrow.

上記の図が示すように、オンプレミス・アプリケーションがオンプレミス・ファンデーション上に構築されるように、クラウド・アプリケーションもクラウド・ファンデーション上に構築される。そのため、オンプレミスとクラウドで提供される、インフラストラクチャとアプリケーションのサービスに、二種類のアプリケーションがアクセスできることになる。まさに、オンプレミス・プラットフォームが現時点のアプリケーションをサポートするように、これから構築することになるアプリケーションのためのサービスを、クラウド・プラットフォームが提供していく。

—————

2008年夏 Azure 前夜:David Chappell _1
2008年夏 Azure 前夜:David Chappell _2
2008年夏 Azure 前夜:David Chappell _3
2008年夏 Azure 前夜:David Chappell _4
2008年夏 Azure 前夜:David Chappell _5

 

Comments Off on 2008年夏 Azure 前夜:David Chappell _2

2008年夏 Azure 前夜:David Chappell _3

Posted in David Chappell by Agile Cat on November 12, 2009

A SHORT INTRODUCTION TO CLOUD PALTFORMS – Aug 2008

David Chappell-2 160-45b

EXAMINING CLOUD PLATFORMS

Understanding cloud platforms means looking at each of their parts: the cloud foundation, cloud infrastructure services, and cloud application services. This section walks through these three areas, using some of today’s most visible cloud platform technologies as examples.

クラウド・プラットフォームを理解するために、クラウド・ファンデーション/クラウド・インフラストラクチャ・サービス/クラウド・アプリケーション・サービスといった、それぞれのパートに注目していく。このセクションでは、現時点で注目されている、いくつかのクラウド・プラットフォーム・テクノロジーを例として用いて、これらの 3 つのエリアをウォーク・スルーしていく。

Before we begin, one important note: While it’s useful to look at on-premises platforms and cloud platforms through the same lens, the two aren’t identical. When platform functions move into the cloud, they sometimes change in significant ways. For example, on-premises platforms are designed to support (at most) enterprise-scale applications. Applications that run in the cloud, by contrast, can potentially operate at Internet scale, which requires handling many more simultaneous users than any enterprise application. While the same kinds of platform functions might be needed in both cases, achieving this high scalability can force a cloud platform to provide them in a quite different way. In what follows, expect to see some differences from the on-premises world.

そのための考察を開始する前に、注意すべき重要なポイントがある。 つまり、オンプレミスとクラウドのプラットフォームを、同一の視点から見ることは有用であるが、その 2 つが同一ではないことを再認識する必要がある。プラットフォーム機能がクラウドへと移行するとき、特筆すべき方向へ向けて、変化していく場合がある。たとえば、オンプレミス・プラットフォームは、(せいぜい)エンタープライズ・スケールのアプリケーションを、サポートするようにデザインされる。それとは対照的に、クラウド上で動作するアプリケーションは、インターネット・スケールで運用される可能性を持ち、あらゆるエンタープライズ・アプリケーションよりでも、ずっと多くのユーザーを、同時にサポートする必要がある。同種類のプラットフォーム機能が、双方のケースで要求されるかもしれない。 しかし、クラウド・プラットフォームの場合は、ハイ・スケーラビリティを達成するために、きわめて異なる方式を要求される可能性をもつ。それ以外にも、オンプレミスの世界から見ると、いくつかの相違点が見出されると予測すべきである。

CLOUD FOUNDATION

Like their on-premises cousins, cloud foundations provide the basic local functions an application needs. These can include an underlying operating system and local support. Yet how cloud platforms provide these functions differs from what we’re used to, as this section shows.

オンプレミスの従兄弟ともいえるクラウド・ファンデーションは、アプリケーションにとって 必要な、基本的なローカル機能を提供する。そこには、基本的なオペレーティング・システム と、ローカル・サポートを含むことができる。 それにしても、このセクションで示されるよう に、クラウド・プラットフォームがを提供する機能は、これまでに慣れ親しんだものとは異なる。

Operating System

From a platform point of view, an operating system provides a set of basic interfaces for applications to use. By far the most well-known example of an operating system in the cloud today is Amazon’s Elastic Compute Cloud (EC2). EC2 provides customer-specific Linux instances running in virtual machines (VMs). From a technical perspective, it might be more accurate to think of EC2 as a platform for VMs rather than operating systems. Still, a developer sees an operating system interface, and so viewing it in this light makes more sense here.

プラットフォームの観点からすると、オペレーティング・システムは、アプリケーションが用いる基本的なインターフェイス・セットを提供している。クラウドにおけるオペレーティング・システムとして、現時点で認識されている有名な事例は、Amazon の Elastic Compute Cloud(EC2)である。 EC2 が提供する、顧客に固有の Linux インスタンスは、バーチャルマシン上で動作する。 テクニカルな視点に基づくと、EC2 はオペレーティング・システムというよりは、VM 用のプラットフォームと見なすほうが正しいかもしれない。しかし、開発者は依然としてオペレーティング・システムのインターフェイスを参照する。つまり、その視点で EC2 見る方が、いまの時点では、意味を持つことになる。

Each development team is free to use whatever local support it likes in this VM.Amazon doesn’t care. The creators of one application might choose a Java EE app server and MySQL, for example, while another group might go with Ruby on Rails. EC2 customers are even free to create many Linux instances, then distribute large workloads across them in parallel, such as for scientific applications. While the service EC2 provides is quite basic, it’s also very general, and so it can be used in many different ways.

この VM 上で、それぞれの開発チームは、あらゆるローカル・サポートを自由に使用するが、そのことを Amazon は気にかけていない。 たとえば、アプリケーション開発者は Java EE アプリケーション・サーバーと MySQL を選択するかもしれないが、別のグループは Ruby on Rails を使うかもしれない。 さらに EC2 のカスタマは、Linux インスタンスを自由に作成した後に、極端なたとえで言うと、科学計算アプリケーションのための膨大な作業負荷を、並列的に振りまく可能性すらもつ。 EC2 が提供するサービスが、きわめて基本的なものである一方で、上記の運用も一般的である。その結果として EC2 は、数多くの方式で運用されるという可能性を生じる。

Local Support

In an on-premises platform (and in EC2), a developer can mix and match parts of the foundation as she sees fit. Choosing to use the .NET Framework on Windows doesn’t mandate using a particular database, for example. Similarly, an on-premises application using the .NET Framework is free to access the underlying Windows operating system, as is an application built on a Java EE server.

オンプレミス・プラットフォームにおいて(そして EC2 において)、開発者が適切と判断するときに、ファンデーションの一部が使い回される。たとえば、Windows 上の .NET Framework を用いることで、特定データベースの利用が決定されたりはしない。同様に、.NET Framework を用いるオンプレミス・アプリケーションは、Java EE サーバー上に構築されたアプリケーションのように、基本となる Windows オペレーティング・システムに自由にアクセスできる。

The local support functions in today’s leading cloud foundations don’t work this way. Instead, a cloud local support technology typically includes its own storage, and it hides whatever the underlying operating system might be. A developer choosing to build on a particular local support option must accept the limitations it imposes.

今日のクラウド・ファンデーションをリードする、ローカル・サポート機能は、この方式では上手くいかない。 その代わりに、クラウドのローカル・サポート・テクノロジーに、独自のストレージを含む方式が、一般的には用いられる。そして、基本となるオペレーティング・システムが何であっても、そのテクノロジーが隠蔽してしまう。特定のローカル・サポート・オプションを用いる構築においては、それにより強要される制約を受け入れなくてはならない。

There are good reasons for these limitations, of course. One of the things that makes cloud computing so attractive is its potential for scalability, but to make an application built on a cloud foundation handle Internet-size loads requires limiting it in some ways. By making the local support functions more specialized, a cloud platform provider has more freedom to optimize the application environment. Accordingly, each set of local support functions in cloud foundations today focuses on supporting a particular kind of application.

もちろん、これらの制約については、充分な理由がある。 スケーラビリティに関する潜在能力は、クラウド・コンピューティングを魅力的なものにする、ひとつの事柄である。しかし、インターネット・レベルの負荷を取り扱う、クラウド・ファンデーション上に構築されたアプリケーションは、いろいろな意味で、その能力に対する制約を要求される。さらに、目的を絞り込んだローカル・サポート機能を提供することで、クラウド・プラットフォームのプロバイダは、アプリケーション環境を最適化するための自由を得る。したがって、今日のクラウド・ファンデーションにおける、それぞれのローカル・サポート機能のセットは、特定された種類のアプリケーションを、サポートすることに焦点を当てている。

For example, Google’s AppEngine provides local support for running Python Web applications. Along with a standard Python runtime, AppEngine also includes a hierarchical data store with its own query language. Another example of a cloud platform providing local support is Force.com, offered by Salesforce.com. Rather than targeting general Web applications, however, Force.com is aimed at creating data- oriented business applications. Toward this end, it provides its own focused support for data storage. And rather than adopt an existing programming language, this platform’s creators invented their own, a language called Apex.

たとえば、Google の AppEngine は、Python Web アプリケーションを実行するためのローカル・サポートを提供する。 AppEngine には、標準的な Python ランタイムが含まれ、さらに、自身のクエリー言語を用いる、階層的なデータストアも含まれる。クラウド・プラットフォームにおいて、ローカル・サポートを提供する別の例は、Salesforce.com の Force.com となる。 Force.com は、一般的な Web アプリケーションに目標を定めるというより、データ指向のビジネス・アプリケーション開発を目的とし、データ・ストレージに焦点を合わせた独自のサポートが提供される。そして、このプラットフォームの開発者は、既存のプログラム言語を採用するよりも、Apex と呼ばれる独自の言語を考案する道を選んだ。

Microsoft also provides local support for applications in the cloud as part of its CRM Live offering. Based on the Dynamics CRM platform mentioned earlier, this technology targets data-oriented business applications, much like Force.com. And like both Force.com and AppEngine, it includes both run-time application support and a data store. Microsoft has also talked about its plans to go further in this area, with a platform that will support standard .NET development languages and tools. The intent, Microsoft says, is to allow portability of both applications and developer skills between the company’s on-premises foundation and its cloud foundation.

Microsoft も、自身が供給する CRM Live のパートとして、クラウド・アプリケーションのためのローカル・サポートを提供する。 以前から述べられている Dynamics CRM プラットフォームに基づき、このテクノロジーは、データ指向のビジネス・アプリケーションに向けられたものとなり、また、Force.com ときわめて似たものとなる。 そして、Force.com や AppEngine のように、ランタイム・アプリケーション・サポートとデータ・ストアの両方が、そこには含まれる。さらに Microsoft は、スタンダードな .NET 開発言語とツールをサポートするプラットフォームを用いて、このエリアに参入するという計画について述べている。こうした Microsoft の発言における意図は、企業内でオンプレミスとクラウドのファンデーションをつなぐポータビリティを、アプリケーションとデベロッパー・スキルの双方において実現することにある。

—————

2008年夏 Azure 前夜:David Chappell _1
2008年夏 Azure 前夜:David Chappell _2
2008年夏 Azure 前夜:David Chappell _3
2008年夏 Azure 前夜:David Chappell _4
2008年夏 Azure 前夜:David Chappell _5

 

Comments Off on 2008年夏 Azure 前夜:David Chappell _3

%d bloggers like this: