第12章クラウドネイティブアプリケーション開発
Summaryまとめ
12.1 Introduction to Cloud-Native Applications12.1 クラウドネイティブアプリケーション入門
• Cloud-based applications leverage cloud platforms; however, they do not take full advantage of the inherent characteristics of the cloud like cloud-native applications. Monoliths can be deployed in the cloud as cloud-based applications but can be converted to leverage a microservices architecture as cloud-native applications.
• クラウドベースのアプリケーションはクラウドプラットフォームを利用するが、クラウドネイティブアプリケーションのように、クラウド固有の特徴を十分には活用しない。モノリスは、クラウドベースのアプリケーションとしてクラウドへ配備できるが、マイクロサービスアーキテクチャを生かすクラウドネイティブアプリケーションへ変換することもできる。
• Microservices are self-contained software units. Components were used before in older architectures such as web service components and SOA. However, the way components between these architectures communicate are quite different.
• マイクロサービスは、それ自体で完結したソフトウェア単位である。以前のアーキテクチャでも、WebサービスのコンポーネントやSOAなどの構成要素が使われていた。しかし、それぞれのアーキテクチャで構成要素同士が通信する方法は、かなり異なる。
• There are several challenges associated with implementing a microservices architecture. Building microservices to interoperate with each other, as well as testing, debugging, versioning, deploying, logging, and monitoring microservices add additional challenges.
• マイクロサービスアーキテクチャの実装には、いくつもの課題がある。互いに相互運用できるマイクロサービスの構築に加え、テスト、デバッグ、バージョン管理、配備、ログ記録、監視も、新たな課題を生む。
• Features of cloud-native applications include they are microservices-based, container-based, API-based, and are dynamically orchestrated to scale and optimize the use of computing resources.
• クラウドネイティブアプリケーションの特徴には、マイクロサービス、コンテナー、APIを基にすること、計算資源の拡張と利用の最適化のために、動的にオーケストレーションされることがある。
• DevOps is a methodology that combines Agile software engineering and IT operations to release higher-quality software faster. CI/CD is a DevOps approach that provides steps to build, package, test, deploy, and release software components with the goal to automate as many steps as possible in the process.
• DevOpsは、アジャイルなソフトウェア工学とIT運用を組み合わせ、より高品質なソフトウェアをより速く公開する方法論である。CI/CDは、ソフトウェア部品をビルド・パッケージ化・テスト・配備・公開する手順を提供するDevOpsの手法であり、その過程で可能な限り多くの段階を自動化することを目指す。
• Some benefits of cloud-native applications are they are cost-effective, easily scalable, portable because they are containerized, reliable, and easier to manage through a DevOps pipeline using CI/CD.
• クラウドネイティブアプリケーションには、費用対効果が高い、容易に規模を拡大できる、コンテナー化されているので移植性がある、信頼できる、CI/CDを用いたDevOpsのパイプラインで管理しやすい、といった利点がある。
• Best practices for creating cloud-native applications include automate as much of the development life cycle as possible, monitor the development environment as well as the use of microservices, document the services making it easier to integrate with them, and schedule incremental and reversible releases.
• クラウドネイティブアプリケーションを作る際の推奨される実践には、開発ライフサイクルを可能な限り自動化すること、開発環境とマイクロサービスの使用状況を監視すること、連携しやすいようサービスの文書を書くこと、段階的で元に戻せる公開を計画することがある。
• Microservices are containerized. Docker is an open-source platform that creates, deploys, and manages microservices containers.
• マイクロサービスはコンテナー化される。Dockerは、マイクロサービスのコンテナーを作成・配備・管理する、オープンソースのプラットフォームである。
• Kubernetes is an open-source orchestration platform that is used for automating the deployment, scaling, and managing the health of microservices container-based workloads.
• Kubernetesは、マイクロサービスのコンテナーを基にするワークロードの配備・拡張・健全性の管理を自動化する、オープンソースのオーケストレーションプラットフォームである。
• There are various categories of tools that can be used to develop cloud-native applications, including IaC tools (e.g., Terraform), cloud-based DevOps platforms (e.g., GitLab, GitHub), containerization software products and platforms (e.g., Red Hat OpenShift), and developer tools to develop and deploy applications quickly (e.g., Tanzu, Node).
• クラウドネイティブアプリケーションの開発に使えるツールには、各種の分類がある。IaCツール(Terraformなど)、クラウド上のDevOpsプラットフォーム(GitLab、GitHubなど)、コンテナー化ソフトウェア製品やプラットフォーム(Red Hat OpenShiftなど)、迅速にアプリケーションを開発・配備する開発者ツール(Tanzu、Nodeなど)が含まれる。
12.2 Cloud-Based and Cloud-Native Applications Deployment Technologies12.2 クラウドベース・クラウドネイティブアプリケーションの配備技術
• There are three service models (IaaS, PaaS, and SaaS) and four deployment models (public cloud, private cloud, community cloud, and hybrid cloud) that make up the cloud computing model.
• クラウドコンピューティングのモデルは、3つのサービスモデル(IaaS、PaaS、SaaS)と、4つの配置モデル(パブリッククラウド、プライベートクラウド、コミュニティークラウド、ハイブリッドクラウド)から構成される。
• Cloud service models (IaaS, PaaS, and SaaS) combine and change the way IT resources are consumed by cloud customers with the goal of providing a more economical solution as they can be scaled on-demand at a predictable cost. These cloud service models present a spectrum from complex and high effort of investment to simple and low effort of investment depending on business needs.
• クラウドサービスモデル(IaaS、PaaS、SaaS)は、クラウドの顧客によるIT資源の利用方法を組み合わせ、変化させる。予測可能な費用で必要に応じて規模を調整できるため、より経済的なソリューションを提供することが目的である。これらのクラウドサービスモデルは、事業上の必要に応じて、複雑で大きな投資労力を必要とするものから、単純で投資労力の小さいものまで、連続した範囲を形成する。
• Cloud deployment models (public cloud, private cloud, community cloud, and hybrid cloud) are where cloud services are implemented and made available to end users. Cloud computing deployments work on the principle of virtualizing compute resources. Cloud deployment models can be combined (e.g., hybrid clouds) to offer varying degrees of flexibility in terms of how cloud resources are accessed and managed.
• クラウドの配置モデル(パブリック、プライベート、コミュニティー、ハイブリッドクラウド)は、クラウドサービスをどこで実装し、エンドユーザーが使えるようにするかを示す。クラウドコンピューティングの配備は、計算資源を仮想化する原理に従って動く。ハイブリッドクラウドのように配置モデルを組み合わせることで、クラウド資源へのアクセスや管理の方法について、さまざまな度合いの柔軟性を提供できる。
• There are several cloud deployment options to choose from, including bare metal, VMs, unikernels, and containers that are offered in various cloud service models. Serverless computing is another cloud deployment option where developers can build and run applications in the cloud but are not responsible for provisioning, maintaining, and scaling the server infrastructure the application runs on.
• クラウドの配備方法には、ベアメタル、仮想マシン、ユニカーネル、コンテナーなどの選択肢があり、各種のクラウドサービスモデルで提供される。サーバーレスコンピューティングも、クラウドへの配備方法の1つである。開発者はクラウドでアプリケーションを構築・実行できるが、そのアプリケーションが動くサーバー基盤の用意・保守・拡張の責任は負わない。
• Given there are several cloud deployment technology options, an understanding of the use cases for these technologies can help customers choose the “best fit” options that satisfy business needs. For example, customers who need to have dedicated server with a high level of control would choose bare metal servers, whereas customers who need a solution with an immutable infrastructure would choose unikernels.
• クラウドの配備技術には複数の選択肢があるため、それぞれの技術のユースケースを理解すると、事業上の必要を満たす「最適な」方法を選ぶ助けになる。たとえば、専用サーバーを高度に制御する必要がある顧客はベアメタルサーバーを選び、変更不能なインフラストラクチャーを必要とする顧客はユニカーネルを選ぶ。
• Several tools are available for making implementing services using cloud deployment technologies easier. For example, IaC tools are useful to automate various steps in maintaining operating systems when adopting IaaS. In contrast, tools that automate software development process tasks are more suitable when adopting PaaS.
• クラウド配備技術を使ってサービスを実装する作業を容易にする、さまざまなツールがある。たとえばIaaSを採用する場合、IaCツールはオペレーティングシステムの保守の各段階を自動化するのに役立つ。PaaSを採用する場合には、ソフトウェア開発過程の作業を自動化するツールの方が適している。
• There are some key considerations when selecting cloud deployment technologies, which include assessing whether cloud deployment technologies satisfy business needs, understand workload/service requirements, and ensuring they satisfy application and service requirements.
• クラウド配備技術の選択には、重要な検討事項がある。事業上の必要を満たすかを評価すること、ワークロードやサービスの要件を理解すること、アプリケーションとサービスの要件を満たすと確認することなどである。
• Some things to consider when assessing whether cloud deployment technology options fit business needs are cost, architectural fit, performance, compliance, elasticity requirements, control requirements, and whether the cloud service provides lock-in.
• クラウド配備技術の選択肢が事業上の必要に合うかを評価するときは、費用、アーキテクチャへの適合、性能、法令などへの適合、伸縮性の要件、制御の要件、クラウドサービスによる囲込みの有無などを考慮する。
• Cloud applications and services can be combined to form a cloud mashup. Cloud mashups can give organizations a competitive advantage by bringing competitive solutions to the market quickly.
• クラウドアプリケーションやサービスを組み合わせ、クラウドマッシュアップを作れる。クラウドマッシュアップは、競争力のあるソリューションを迅速に市場へ投入することによって、組織へ競争上の優位をもたらしうる。
• Some keys to successfully utilizing cloud deployment technologies include identifying currently available cloud deployment technologies and how they provide a fit to delivering cloud services, determining the use cases for these cloud deployment technologies and identifying tools available to help deliver cloud services, and assessing these cloud deployment technologies and selecting those that best fit business needs.
• クラウド配備技術をうまく活用する鍵には、現在利用できる技術と、それがクラウドサービスの提供にどう適合するかを見極めること、技術のユースケースを決めてサービス提供を助けるツールを見つけること、そして配備技術を評価し、事業上の必要に最も適したものを選ぶことがある。