第12章クラウドネイティブアプリケーション開発
INDUSTRY SPOTLIGHT産業の現場から
CaaS, PaaS, or FaaS?CaaS、PaaS、それともFaaSか
Deployment technologies are broadly used in the industry today to deploy cloud-native applications. Containers/CaaS, PaaS, and FaaS/serverless deployment technologies are used by Netflix, Uber, and WeChat to deploy cloud-native systems that consist of many independent services. Knowing these systems, can you elaborate on the suitability of Containers/CaaS as compared to PaaS or FaaS/serverless for these particular systems?
英語のヒント
今日の産業界では、クラウドネイティブのアプリケーションを配置するため、配置技術が広く使われている。Netflix、Uber、WeChatは、コンテナー/CaaS、PaaS、FaaS/サーバーレスの配置技術を使い、多くの独立したサービスからなるクラウドネイティブのシステムを配置している。これらのシステムについて知っていることから、PaaSやFaaS/サーバーレスと比べて、コンテナー/CaaSが、これらの具体的なシステムにどの程度適しているかを詳しく説明できるだろうか。
Cloud Deployment Technology Use Cases and Implementationクラウド配置技術の利用事例と実装
There are various types of situations that prompt the use of cloud deployment technologies. The corresponding use cases and their implementation are covered in the following sections.
英語のヒント
クラウド配置技術を使うきっかけになる状況には、さまざまな種類がある。以下では、それに対応する利用事例と実装を扱う。
Cloud Deployment Technology Use Casesクラウド配置技術の利用事例
The most common types of deployments are for enterprise data centers, which will be the focus of these use cases. Typically, multiple cloud deployment technologies are used together to provide the services and deployment requirements to satisfy customer needs. As customers seek to deploy large-scale enterprise applications, they must assess the required infrastructure, middleware, runtime dependencies, and constraints to choose the most appropriate cloud deployment technologies. For cloud-native applications, cloud deployment technologies such as CaaS, PaaS, and FaaS are the most popular.
英語のヒント
配置の最も一般的な用途は企業のデータセンターであり、ここで扱う利用事例も、それを中心とする。通常は、複数のクラウド配置技術を組み合わせて使い、顧客の必要を満たすサービスと配置要件に対応する。大規模な企業向けアプリケーションを配置しようとする顧客は、最も適切なクラウド配置技術を選ぶため、必要な基盤、ミドルウェア、実行時の依存関係、制約を評価しなければならない。クラウドネイティブのアプリケーションでは、CaaS、PaaS、FaaSなどの技術が最も広く使われている。
Bare Metal Deployment Technology
ベアメタルの配置技術
With bare metal servers, there is no virtualization and no hypervisor overhead, thus their resources (CPU, memory, and I/O) are dedicated to the application deployed on it. These resources, along with the hardware, are highly customizable and can be tuned up for maximum performance, making bare metal servers a viable option to support resource-intensive workloads such HPC. This also helps with latency-sensitive applications (e.g., streaming services) and large databases that consume significant resources. A combination of cloud deployment technologies can be used to satisfy the various requirements of a solution architecture. Bare metal servers can be used for the resource-intensive components, whereas VMs, containers, and other cloud deployment technologies deliver application services. Bare metal servers are also an option for legacy applications that may not be virtualized or not well suited for a virtualized environment.
英語のヒント
ベアメタルサーバーには仮想化がなく、ハイパーバイザーの付随的な負担もないため、CPU、メモリ、入出力などの資源を、配置したアプリケーションへ専用に割り当てられる。これらの資源は、ハードウェアとともに大きく調整でき、性能を最大にするよう最適化できる。そのため、HPCなど、資源を大量に使うワークロードを支える、実用的な選択肢となる。遅延の影響を受けやすいアプリケーション、たとえばストリーミングサービスや、多くの資源を消費する大規模なデータベースにも役立つ。仕組み全体のアーキテクチャのさまざまな要件は、クラウド配置技術を組み合わせて満たせる。資源を大量に使う構成要素にはベアメタルサーバーを使い、アプリケーションサービスはVM、コンテナー、その他のクラウド配置技術で提供できる。仮想化できない、または仮想化環境に適さない可能性のある既存のアプリケーションにも、ベアメタルサーバーは選択肢となる。
Bare metal servers are also a good fit for security-oriented applications because additional security measures can be easily integrated. Bare metal servers are the best fit for solutions that must comply with regulations or contract agreements that require single-tenant hosting.
英語のヒント
ベアメタルサーバーは、追加のセキュリティ対策を容易に組み込めるため、セキュリティを重視するアプリケーションにも適している。単一のテナント向けのホスティングを要求する規則や契約に従う必要がある仕組みには、最もよく適合する。
VMs Deployment Technology
VMの配置技術
Legacy applications that can be virtualized but have known and manageable behavioral issues are well suited for cloud deployment using VMs. This also applies to legacy applications that are not well documented but there is basic knowledge of how they run. VMs are a viable option for monolithic and tiered applications that are not mature enough to be migrated to a microservices architecture. Such applications could be migrated to the cloud as cloud-based monoliths.
英語のヒント
仮想化でき、動作上の問題が既知で管理可能な既存アプリケーションは、VMによるクラウドへの配置に適している。文書が十分に整備されていなくても、動作方法について基本的な知識がある既存アプリケーションにも、同じことがいえる。VMは、マイクロサービスのアーキテクチャへ移行するほど成熟していない、モノリシックなアプリケーションや、層に分かれたアプリケーションの実用的な選択肢である。そうしたアプリケーションは、クラウドベースのモノリスとして、クラウドへ移行できる。
VMs can also be used to provide enhanced container security, although with additional overhead. The use of a VM can provide an additional layer of isolation when deploying containers eliminating the use of a shared kernel model.
VMは、追加の負担はかかるものの、コンテナーのセキュリティを強化するためにも使える。コンテナーを配置するときにVMを使うと、共有カーネルモデルを使わずに済み、分離の層を追加できる。
Containers/CaaS Deployment Technology
コンテナー/CaaSの配置技術
Containers enable scaling, replicating, and choreographing services in a microservices architecture. Containers are also lightweight, portable, and platform independent. The ability to start containers in a fraction of the time of VMs is critical. With these advantages, cloud customers have developed a plethora of microservices ranging from user interface (UI) front ends to back-end microservices. A microservices architecture is a good use case for using containers.
英語のヒント
コンテナーは、マイクロサービスのアーキテクチャにおける、サービスの規模の調整、複製、相互の連携を可能にする。軽量で移植性があり、プラットフォームにも依存しない。VMの起動時間のごく一部で起動できることは重要である。こうした利点によって、クラウドの顧客は、利用者インターフェース(UI)のフロントエンドからバックエンドのマイクロサービスまで、非常に多くのマイクロサービスを開発してきた。マイクロサービスのアーキテクチャは、コンテナーを使うのに適した事例である。
Legacy applications that depend on out-of-support operating systems or other out-of-support dependencies are candidates for containers. Application dependencies can be containerized to enable execution. However, there are limitations to this approach, and it can be very challenging to get such applications up and running in a container. The application dependencies must be assessed to ensure containerization is a viable option. Legacy applications that can be modernized and migrated to the cloud are also good candidates for containers.
英語のヒント
サポートが終了したOSや、サポートが終了したほかの依存要素に依存する既存のアプリケーションは、コンテナーの利用候補となる。アプリケーションの依存要素をコンテナー化することで、実行できるようになる。ただし、この方法には限界があり、そのようなアプリケーションをコンテナー内で稼働させるのは、非常に難しい場合がある。コンテナー化が実用可能な選択肢かどうかを確かめるため、依存関係を評価しなければならない。近代化してクラウドへ移行できる既存アプリケーションも、コンテナーに適した候補である。
Platform flexibility is the primary use case for CaaS. Containers can consistently run anywhere without the limitations of middleware and platform tools offered by PaaS platforms. CaaS provides the customers with a container-based environment they can control (security, scalability, and availability) without significant effort.
英語のヒント
CaaSの主な利用目的は、プラットフォームの柔軟性である。コンテナーは、PaaSプラットフォームが提供するミドルウェアやプラットフォームツールの制約を受けず、どこでも一貫して動く。CaaSは、大きな手間をかけずに、セキュリティ、拡張性、可用性を顧客が制御できる、コンテナーによる環境を提供する。
Unikernels Deployment Technology
ユニカーネルの配置技術
The need to optimize VMs is the most common use case for unikernels at this time. Unikernels have smaller footprints, in part, because they are built without unnecessary binaries and libraries. Because they have less overhead, unikernels can start up very quickly, faster than VMs and containers. With the smaller footprint and speed comes improve security when it comes to unikernels. Because unikernels are built to include only the libraries needed to run the application, this reduces the cybersecurity attack surface, thereby making them more secure compared to the other cloud deployment technologies.
英語のヒント
現時点で、ユニカーネルの最も一般的な利用目的は、VMの最適化である。ユニカーネルは、不要なバイナリやライブラリを含めずに構築することなどにより、使用する資源の規模が小さい。付随する負担が少ないため、非常に素早く起動でき、VMやコンテナーより速い。ユニカーネルでは、小さな資源使用量と速度に加えて、セキュリティも向上する。アプリケーションの実行に必要なライブラリだけを含めて構築するため、サイバー攻撃を受けうる範囲が小さくなり、ほかのクラウド配置技術より安全性が高くなる。
Mutable server infrastructures are where servers are continually updated and modified in place even after they are deployed. Immutable infrastructures are where servers are never modified after they are deployed. The main difference between mutable and immutable infrastructures is the policy used that determines whether components of the environment are designed to be changed after deployment. Customers may need or expect an immutable infrastructure to preserve the integrity of an environment. Although VMs are not permitted in an immutable environment, unikernels, by design, protect against such modifications because any updates or changes to any components are built from an image and provisioned to replace the old ones. Unikernels, thus, are a good choice for the need of an immutable infrastructure.
英語のヒント
変更可能なサーバー基盤では、配置後も、その場でサーバーを継続的に更新・変更する。変更不可能な基盤では、配置後のサーバーを変更しない。この2つの主な違いは、環境の構成要素を配置後に変更できるよう設計するかどうかを決める方針である。顧客は、環境の完全性を保つため、変更不可能な基盤を必要としたり、期待したりする場合がある。変更不可能な環境ではVMは認められないが、ユニカーネルは、設計上、そのような変更から保護される。構成要素の更新や変更は、イメージから構築して用意し、古いものと置き換えるからである。したがってユニカーネルは、変更不可能な基盤が必要な場合に適した選択である。
PaaS Deployment Technology
PaaSの配置技術
PaaS is used to deploy modern, cloud-native application architectures. PaaS provides a complete cloud platform that includes hardware, infrastructure, middleware, and runtime environment. It is most often delivered using a container-based infrastructure, and therefore supports the same use cases as containers.
PaaSは、現代のクラウドネイティブなアプリケーションアーキテクチャの配置に使われる。ハードウェア、基盤、ミドルウェア、実行環境を含む、完全なクラウドプラットフォームを提供する。多くの場合、コンテナーを基にした基盤で提供されるため、コンテナーと同じ利用事例に対応する。
The most prevalent use case for PaaS is speed to market. PaaS reduces or eliminates the burden of deploying and managing infrastructure, enabling cloud customers to focus instead on customer needs and development of the applications. PaaS can be more affordable, especially for software development houses, which often do not have the budget to hire personnel to build and manage infrastructure, as it offers access to a wider range of services up and down the application stack. PaaS also provides a cost-effective way for customers to scale up and down resources as needed. PaaS also provides a development and CI/CD environment to quickly develop, integrate, build, and deploy applications.
英語のヒント
PaaSの最も一般的な利用目的は、市場投入の速さである。基盤の配置と管理の負担を減らすか取り除くことで、クラウドの顧客は、顧客の必要やアプリケーションの開発に集中できる。PaaSは、アプリケーションスタックの各層で、より幅広いサービスを利用できるようにするため、特にソフトウェア開発会社にとって、より手頃な費用で使える場合がある。こうした会社には、基盤を構築・管理する人員を雇う予算がないことが多い。PaaSは、必要に応じて資源を拡大・縮小する、費用対効果の高い方法も提供する。また、アプリケーションを素早く開発、統合、ビルド、配置するための、開発環境とCI/CD環境も提供する。
FaaS Deployment Technology
FaaSの配置技術
The use case for FaaS/serverless is limited to microservices-based applications, more specifically applications that are short-lived and event-based. Examples of services include data/stream and image processing, reservation handling, and IoT data processing. Other use cases include high-volume and parallel workloads and data aggregation tasks.
英語のヒント
FaaS/サーバーレスの利用事例は、マイクロサービスを基にしたアプリケーション、より具体的には、短時間だけ動作し、イベントを基にするアプリケーションに限られる。サービスの例には、データ/ストリームと画像の処理、予約の処理、IoTデータの処理がある。大量の並列ワークロードや、データの集約作業も利用事例に含まれる。
FaaS/serverless is used to reduce the customer’s responsibility to manage middleware dependencies, runtime considerations, and the underlying infrastructure. The FaaS/serverless platform takes care of this, leaving the customer with the responsibility to write the function code. The result is increased velocity in delivering highly available, technology capability, and satisfying business demand.
英語のヒント
FaaS/サーバーレスは、ミドルウェアの依存関係、実行時の考慮事項、基盤を管理する、顧客の責任を減らすために使われる。これらはFaaS/サーバーレスのプラットフォームが引き受け、顧客に残るのは、関数のコードを書く責任である。その結果、可用性の高い技術的な能力を提供し、業務上の需要を満たす速度が上がる。