<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AWS &#8211; システム開発・AI導入なら株式会社taiziii（タイジー</title>
	<atom:link href="https://taiziii.com/column_cat/aws-ja/feed/" rel="self" type="application/rss+xml" />
	<link>https://taiziii.com</link>
	<description>事業理解に強いITコンサルタントとフルスタックエンジニアが、Webサービス・アプリ・業務システムを戦略設計から実装・保守運用まで一気通貫で支援。AI活用や内製化支援で成果に直結する開発を実現します。</description>
	<lastBuildDate>Tue, 04 Nov 2025 00:01:32 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://taiziii.com/wp-content/uploads/2023/10/favicon.ico</url>
	<title>AWS &#8211; システム開発・AI導入なら株式会社taiziii（タイジー</title>
	<link>https://taiziii.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Amazon Cognito のカスタム属性について</title>
		<link>https://taiziii.com/column/312/</link>
		
		<dc:creator><![CDATA[THiNGMAjiG_admin_user_kato]]></dc:creator>
		<pubDate>Wed, 17 May 2023 00:48:33 +0000</pubDate>
				<guid isPermaLink="false">https://taiziii.com/?post_type=column&#038;p=312</guid>

					<description><![CDATA[今回は、Amazon Cognito のカスタム属性に関する内容だね！ この記事を読めば、Amazon Cognito のカスタム属性について詳しくなれますね！ 本記事で学べること ・Amazon Cognotoの概要  [&#8230;]]]></description>
										<content:encoded><![CDATA[<div class="balloonWrap">
<div class="balloon2-left">
<p>今回は、Amazon Cognito のカスタム属性に関する内容だね！</p>
</div>
<div class="balloon2-right">
<p>この記事を読めば、Amazon Cognito のカスタム属性について詳しくなれますね！</p>
</div>
</div>
<div class="intro"></div>
<h2>本記事で学べること</h2>
<p>・Amazon Cognotoの概要<br />
・カスタム属性の種類や運用</p>
<h2>はじめに</h2>
<p>本記事では、Amazon Cognito のカスタム属性とその運用について解説します。</p>
<h2>AWS Cognito とは</h2>
<p>AWS Cognitoとは、アプリケーションでユーザー認証とアクセス制御を実装するためのサービスで、ユーザー属性をカスタマイズできる機能を提供しています。</p>
<h2>カスタム属性とは</h2>
<p>カスタム属性とは、ユーザーの属性情報に追加の情報を含めるために使用されます。たとえば、ユーザーのプロフィール写真、電話番号、または会社名などが挙げられます。</p>
<h2>ユーザープール属性の種類</h2>
<ol>
<li>標準属性：Cognitoが提供する基本的な属性で、名前、メールアドレス、電話番号などが含まれます。</li>
<li>カスタム属性：アプリケーションで定義する追加の属性で、属性名とデータ型を指定できます。</li>
</ol>
<h2>カスタム属性の運用</h2>
<p>カスタム属性の運用については、次のようなことを考慮する必要があります。<br />
&nbsp;</p>
<ol>
<li>アプリケーションで必要な属性を適切に定義することが重要です。必要な属性が定義されていない場合、アプリケーションで必要な機能を実現できません。</li>
<li>属性データのバリデーションを実装することが重要です。属性データが正しくない場合、アプリケーションが正しく動作しない可能性があります。</li>
<li>属性データを適切に保管することが重要です。属性データには、個人情報などの機密情報が含まれる可能性があるため、適切なセキュリティ対策が必要です。</li>
<li>属性データの変更に対するアプリケーションの振る舞いを定義することが重要です。変更によってアプリケーションが影響を受ける可能性があるため、変更時には注意深く対処する必要があります。</li>
</ol>
<h2>まとめ</h2>
<p>本記事では、Amazon Cognitoのカスタム属性とその運用について解説してきました。カスタム属性には、標準属性、カスタム属性があります。また、カスタム属性の運用には、属性の適切な定義、バリデーション、保管、および変更に対するアプリケーションの振る舞いの定義が必要となってきます。ぜひ本記事の内容を参考にして、Amazon Cognitoのカスタム属性を使いこなせるようになってください。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>NoSQL を使うなら？ Amazon DynamoDB vs Google Cloud Firestore</title>
		<link>https://taiziii.com/column/305/</link>
		
		<dc:creator><![CDATA[THiNGMAjiG_admin_user_kato]]></dc:creator>
		<pubDate>Fri, 31 Mar 2023 00:31:49 +0000</pubDate>
				<guid isPermaLink="false">https://taiziii.com/?post_type=column&#038;p=305</guid>

					<description><![CDATA[今回は、NoSQL　に関する内容だね！ この記事を読めば、適切な　NoSQL　がわかりますね 本記事で学べること ・NoSQLの概要 ・各種サービスの長所・短所やユースケース はじめに 近年において、NoSQL　の需要が [&#8230;]]]></description>
										<content:encoded><![CDATA[<div class="balloonWrap">
<div class="balloon2-left">
<p>今回は、NoSQL　に関する内容だね！</p>
</div>
<div class="balloon2-right">
<p>この記事を読めば、適切な　NoSQL　がわかりますね</p>
</div>
</div>
<div class="intro"></div>
<h2>本記事で学べること</h2>
<p>・NoSQLの概要<br />
・各種サービスの長所・短所やユースケース</p>
<h2>はじめに</h2>
<p>近年において、NoSQL　の需要が高まりつつあります。これは、NoSQL　がリレーショナルデータベースよりもビッグデータの処理に向いているためです。そこで今回は、NoSQL　の代表である、Amazon DynamoDB　とGoogle Cloud Firestore　について、</p>
<p style="font-weight: bold;">1. 可用性</p>
<p style="font-weight: bold;">2. 機能性</p>
<p style="font-weight: bold;">3. バックアップ</p>
<p style="font-weight: bold;">4. データ構造</p>
<p>の観点から比較したいと思います。</p>
<p>はじめに、NoSQL　について説明したいと思います。<br />
NoSQLとは、従来型のRDBMS<span id='easy-footnote-1-305' class='easy-footnote-margin-adjust'></span><span class='easy-footnote'><a href='https://taiziii.com/column/305/#easy-footnote-bottom-1-305' title='リレーショナルデータベースサービスの略で、表形式の複数データを関連付けて使えるようにしたデータベース。'><sup>1</sup></a></span>　とは異なる非関係データベースの総称です。NoSQL　は、大規模なデータや複雑なデータ構造を扱うために開発されたデータベースで、スケーラビリティや柔軟性に優れています。<br />
NoSQL　には、以下のような種類があります。</p>
<p style="font-weight: bold;">・キーバリューストア</p>
<p style="font-weight: bold;">・ドキュメントデータベース</p>
<p style="font-weight: bold;">・グラフデータベース</p>
<p style="font-weight: bold;">・列データベース</p>
<p>キーバリューストアは、キーと値のペアを格納するデータベースです。キーと値は任意の型を持ち、データの検索や追加が高速です。<br />
ドキュメントデータベースは、ドキュメントと呼ばれる単位でデータを格納するデータベースです。ドキュメントは　JSON　や　XML　などのテキスト形式で記述され、データの追加や変更が容易です。</p>
<p>グラフデータベースは、ノードとエッジと呼ばれる単位でデータを格納するデータベースです。ノードはデータの要素を表し、エッジはノード間の関係を表します。グラフデータベースは、ソーシャルネットワークや金融取引などのデータに適しています。</p>
<p>列データベースは、列と呼ばれる単位でデータを格納するデータベースです。列はタプルと呼ばれる行に格納され、データの検索や追加が高速です。</p>
<p>NoSQL　は、従来型の　RDBMS　では対応できないデータの保存や処理に適しています。大規模なデータや複雑なデータ構造を扱うアプリケーションでは、NoSQL　の使用が検討されます。</p>
<h2>Amazon DynamoDB　とは</h2>
<p>Amazon DynamoDB　は、AWS　が提供するフルマネージド　NoSQL　データベースサービスです。DynamoDB　は、従来型の　RDBMS　とは異なり、データ量だけでなく、スループットに基づき購入するデータベースです。<br />
DynamoDB　は、スケーラビリティ、耐久性、可用性に優れたデータベースです。DynamoDB　は、自動的にスケーリングし、データの損失を防ぎ、高可用性を実現します。<br />
DynamoDB　は、ウェブアプリケーション、モバイルアプリケーション、IoTアプリケーションなど、さまざまなアプリケーションに使用され、大規模なデータや複雑なデータ構造を扱うアプリケーションに適しています。</p>
<h2>Google Cloud Firestore　とは</h2>
<p>Google Cloud Firestore　は、Google Cloud Platform　が提供するフルマネージド NoSQL データベースサービスです。Firestore は、ドキュメントベースのデータベースで、JSON　ドキュメントを保存することができます。Firestore　は、スケーラブルで、耐久性が高く、使いやすいデータベースです。<br />
Firestore　も　DynamoDB　同様、ウェブアプリケーション、モバイルアプリケーション、IoT　アプリケーションなど、さまざまなアプリケーションに使用され、大規模なデータや複雑なデータ構造を扱うアプリケーションに適しています。<br />
さらに、Firestore　は、Google Cloud Platform　で提供される他のサービスと統合することができます。たとえば、Firestore　は、Cloud Functions、Cloud Storage、Cloud Pub/Sub　などのサービスと統合することができます。</p>
<h2>比較</h2>
<h3>可用性</h3>
<ul>
<li>DynamoDB　は、自動でデータを複製し、同じリージョン<span id='easy-footnote-2-305' class='easy-footnote-margin-adjust'></span><span class='easy-footnote'><a href='https://taiziii.com/column/305/#easy-footnote-bottom-2-305' title='AWSのサービス提供地域を物理ロケーションに分割した単位。'><sup>2</sup></a></span>内の複数のAZ<span id='easy-footnote-3-305' class='easy-footnote-margin-adjust'></span><span class='easy-footnote'><a href='https://taiziii.com/column/305/#easy-footnote-bottom-3-305' title='アベイラビリティゾーンの略で、あるリージョンに立地するデータセンター群を1つの論理的な管理単位にまとめたもの。'><sup>3</sup></a></span>に保存します。</li>
<li>Firestore　は、リージョンレプリケーションを用いることで、同じリージョン内の複数の　AZ　にデータを複製することができます。ロケーションをマルチリージョンに選択した場合は、データを複製して元々それがあったリージョンだけでなく、さらに少なくとも2つの異なるリージョンにも保存することができますが、マルチリージョンに対応したリージョンは、europe　と　united states　のみなので、日本国内での利用を考えると現実的ではありません。</li>
</ul>
<p style="font-weight: bold;">可用性は、どちらも優れていますが、自動で複製できる分だけ　DynamoDB　の方が使いやすいといえます。</p>
<p>&nbsp;</p>
<h3>機能性</h3>
<ul>
<li>DynamoDB　は、データセットの大きさに関わらず、1秒ミリ単位でリクエストに応じることができます。</li>
<li>Firestore　は、高い可用性と耐用性を実現するため、DynamoDB　ほど速い応答を返すことはできません。</li>
</ul>
<p style="font-weight: bold;">機能性に関しては、DynamoDB　がおすすめといえます。</p>
<p>&nbsp;</p>
<h3>バックアップ</h3>
<ul>
<li>DynamoDB　において、ユーザーは2つのバックアップ方法を使うことができます。1つ目は、AWS Backup　を使う方法です。Backup　を使うことでユーザーはすべてのテーブルをバックアップをすることができます。2つ目は、Point- in -Time リカバリを使う方法です。これを使うことで、現在のテーブルを過去30日以内の状態に戻すことができます。</li>
<li>Firestore　において、ユーザーは　Google DataStore　を用いてインポート/エクスポートのワークフローを作らなければいけません。このワークフローは非常に複雑で、作るのが難しいです。</li>
</ul>
<p style="font-weight: bold;">バックアップの観点からは、DynamoDB　がおすすめです。</p>
<p>&nbsp;</p>
<h3>データ構造</h3>
<ul>
<li>DynamoDBは、キーバリュー型と呼ばれる、キーとバリューをペアで格納するデータベースです。</li>
<li>FireStoreは、ドキュメント型と呼ばれる、JSON　などのドキュメントをそのまま格納するデータベースです。</li>
</ul>
<p style="font-weight: bold;">データベースにおいては、キーバリュー型が基本的であり、ドキュメント型は　JSON　などのドキュメントの扱いも学ばなくてはならないため、学習コストは、DynamoDB　の方が低いといえます。ただし、ドキュメント型のデータベースは、データを自由な形式で保存できるというメリットがあります。FireStore　であれば、複雑なデータ設計に対応可能となります。</p>
<h2>ユースケース</h2>
<p style="font-weight: bold;">DynamoDB</p>
<ul>
<li>ゲームステートとプレーヤーのデータストアやプレイヤーのセッション履歴のデータストア</li>
</ul>
<p style="font-weight: bold;">Firestre</p>
<ul>
<li>オフラインファーストアプリケーションやリアルタイムアプリケーション</li>
</ul>
<h2>まとめ</h2>
<p>本記事では、Amazon DynamoDB　と　Google Cloud Firestore　について4つの観点から比較しました。<br />
可用性の観点、機能性の観点、バックアップの観点からは、DynamoDB　がおすすめです。データ構造の観点では、学習コストの低さを選ぶなら　DynamoDB　がおすすめですが、データ設計が複雑な開発を行いたいときはFirestoreを使うと良いと思います。<br />
初めは　DynamoDB　を使ってみて、NoSQL　に慣れてきて複雑なデータ設計を組みたくなったら、ぜひ　Firestore　にも挑戦してみてください。</p>
<h2>語句の説明</h2>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>コンテナ管理を任せるなら？ Amazon ECS vs Amazon EKS</title>
		<link>https://taiziii.com/column/302/</link>
		
		<dc:creator><![CDATA[THiNGMAjiG_admin_user_kato]]></dc:creator>
		<pubDate>Thu, 23 Mar 2023 06:43:11 +0000</pubDate>
				<guid isPermaLink="false">https://taiziii.com/?post_type=column&#038;p=302</guid>

					<description><![CDATA[今回は、AWS　を用いたコンテナ管理　に関する内容だね！ この記事を読めば、コンテナ管理を任せるサービスが決まりそうですね！ 本記事が想定する読者 本記事は、AWS　コンピューティングサービスを利用して、アプリケーション [&#8230;]]]></description>
										<content:encoded><![CDATA[<div class="balloonWrap">
<div class="balloon2-left">
<p>今回は、AWS　を用いたコンテナ管理　に関する内容だね！</p>
</div>
<div class="balloon2-right">
<p>この記事を読めば、コンテナ管理を任せるサービスが決まりそうですね！</p>
</div>
</div>
<div class="intro"></div>
<h2>本記事が想定する読者</h2>
<p>本記事は、AWS　コンピューティングサービスを利用して、アプリケーション開発を行いたいエンジニアやエンジニア志望の方</p>
<h2>はじめに</h2>
<p>本記事では、AWS　が提供するコンピューティングサービスである、Amazon ECS　と　Amazon EKS　について、</p>
<p style="font-weight: bold;">1. コストパフォーマンス</p>
<p style="font-weight: bold;">2. 柔軟性</p>
<p style="font-weight: bold;">3. 運用コスト</p>
<p style="font-weight: bold;">4. 学習コスト</p>
<p style="font-weight: bold;">5. サービスとしての幅</p>
<p>の観点から、詳しく解説します。</p>
<h2>Amazon ECS　とは</h2>
<p>Amazon ECS　は、Docker<span id='easy-footnote-1-302' class='easy-footnote-margin-adjust'></span><span class='easy-footnote'><a href='https://taiziii.com/column/302/#easy-footnote-bottom-1-302' title='Docker社が開発している、コンテナ型の仮想環境を作成、配布、実行するためのプラットフォーム。'><sup>1</sup></a></span>　コンテナを実行および管理するためのフルマネージドサービスです。ECS　を使用すると、コンテナを作成、起動、停止、スケーリングできます。また、ECS　は、コンテナのネットワーク、ストレージ、セキュリティを管理することもできます。<br />
ECS　は、Web　アプリケーション、バックエンドサービス、データ処理タスクなどのコンテナ化されたアプリケーションを実行するために使用できます。ECS　は、DevOps<span id='easy-footnote-2-302' class='easy-footnote-margin-adjust'></span><span class='easy-footnote'><a href='https://taiziii.com/column/302/#easy-footnote-bottom-2-302' title='Development(開発)とOperations(運用)を組み合わせた造語で、開発担当と運用担当が連携する開発手法。'><sup>2</sup></a></span>　チームやアプリケーション開発者にとって、コンテナ化されたアプリケーションを迅速かつ簡単にデプロイおよび管理するための強力なツールです。</p>
<h2>Amazon EKS とは</h2>
<p>Amazon EKS は、AWS が提供する完全マネージド　Kubernetes<span id='easy-footnote-3-302' class='easy-footnote-margin-adjust'></span><span class='easy-footnote'><a href='https://taiziii.com/column/302/#easy-footnote-bottom-3-302' title='コンテナの運用管理と自動化を行うために設計されたオープンソースソフトウェア。'><sup>3</sup></a></span>　サービスです。EKS　を使用すると、Kubernetes　クラスターを作成、管理、スケーリングできます。EKS　は、ECS　同様、コンテナ化されたアプリケーションを実行するための強力なツールです。</p>
<h2>比較</h2>
<h3>コストパフォーマンス</h3>
<ul>
<li>ECS　は、データプレーン<span id='easy-footnote-4-302' class='easy-footnote-margin-adjust'></span><span class='easy-footnote'><a href='https://taiziii.com/column/302/#easy-footnote-bottom-4-302' title='実際のコンテナが稼働する場所で、具体的には Amazon ECS や Amazon EKS を指す。'><sup>4</sup></a></span>の利用料金分のみが課金されます。</li>
<li>EKS は、EKS クラスターを立てているだけで、その時間分の料金が発生します。</li>
</ul>
<p style="font-weight: bold;">これらの点を考慮すると、ECS の方が極めてコストパフォーマンスが高いでしょう。</p>
<p>&nbsp;</p>
<h3>柔軟性</h3>
<ul>
<li>ECS は、AWS オリジナルのソフトウェアをベースに構築されているため、AWS 上でしか稼働しません。</li>
<li>Kubernetes をもとに開発されているクラウドサービスは、Microsoft Azure やGoogle Cloud Platform などがあります。これにより、EKS は、AWS 以外の様々なサービスと併用することができます。さらに、他のクラウドへの移行も簡単に行えます。</li>
</ul>
<p style="font-weight: bold;">以上を踏まえると、EKS の方が柔軟性が高いといえます。</p>
<p> &nbsp;	</p>
<h3>運用コスト</h3>
<ul>
<li>Kubernetes はオープンソースで、世界中の開発者によって開発が進められているため、アップデートが3か月に１回のペースで実施されています。Kubernetes のアップデートの都度、EKS もバージョンアップしなくてはならないため、運用が非常に難しいです。
</ul>
<p style="font-weight: bold;">EKS と比べると、ECS の方が運用しやすいでしょう。</p>
</li>
<p>&nbsp;</p>
<h3>学習コスト</h3>
<ul>
<li>Kubernetes の使い方を理解することは難しいと言われています。柔軟な設定が可能なKubernetes は、その分だけ選択肢が多くなり、必然的に勉強することが多くなってしまいます。さらに、Kubernetes は定期的にアップデートされるため、その都度変更の差分を学ばなくてはなりません。</li>
</ul>
<p style="font-weight: bold;">学習コストは ECS の方が低いです。</p>
<p>&nbsp;</p>
<h3>サービスとしての幅</h3>
<ul>
<li>ECS はコンテナをデプロイするだけのサービスです。例えば、アプリを公開するには、別のサービスを利用する必要があります。</li>
<li>EKS はコンテナをデプロイすることに加えて、ロードバランサー<span id='easy-footnote-5-302' class='easy-footnote-margin-adjust'></span><span class='easy-footnote'><a href='https://taiziii.com/column/302/#easy-footnote-bottom-5-302' title='外部からの通信を複数のサーバーに分散させる仕組みを提供する装置。'><sup>5</sup></a></span>など、アプリや Web サイトを公開するためのリソースを包括的に管理できるサービスです。</li>
</ul>
<p style="font-weight: bold;">サービスとしての幅は EKS の方が広いといえます。</p>
<h2>まとめ</h2>
<p>本記事では、Amazon ECS とAmazon EKS について３つの観点から解説しました。<br />
コストパフォーマンスの点では、データプレーンの利用料金分のみが課金される ECS が、柔軟性では、AWS 以外の様々なサービスとも併用できる EKS が優れているといえます。また、運用コストの観点では、Kubernetes のアップデートに合わせてバージョンアップしなければならない EKS に比べると ECS の方が優れているでしょう。さらに、ECS の方がはるかに学習コストが低いこと、サービスの幅は EKS の方が広いことも抑えておきたいです。<br />
実際の開発では ECS の機能で十分なケースがほとんどであるので、Kubernetes を使いこなす自信がない人は、ECS を利用すると良いと思います。</p>
<h2>語句の説明</h2>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>AWS でサーバーレスのサービスを使うなら？ AWS Lambda vs AWS Fargate</title>
		<link>https://taiziii.com/column/297/</link>
		
		<dc:creator><![CDATA[THiNGMAjiG_admin_user_kato]]></dc:creator>
		<pubDate>Sun, 05 Feb 2023 02:40:24 +0000</pubDate>
				<guid isPermaLink="false">https://taiziii.com/?post_type=column&#038;p=297</guid>

					<description><![CDATA[今回は、AWS　のサーバーレスサービスに関する内容だね！ この記事を読めば、どのサーバーレスのサービスを使えば良いかわかりますね！ 本記事で学べること ・Lambda、Fargateの概要 ・サーバーレスの概念 ・各種サ [&#8230;]]]></description>
										<content:encoded><![CDATA[<div class="balloonWrap">
<div class="balloon2-left">
<p>今回は、AWS　のサーバーレスサービスに関する内容だね！</p>
</div>
<div class="balloon2-right">
<p>この記事を読めば、どのサーバーレスのサービスを使えば良いかわかりますね！</p>
</div>
</div>
<h2>本記事で学べること</h2>
<p>・Lambda、Fargateの概要<br />
・サーバーレスの概念<br />
・各種サービスの長所・短所やユースケース</p>
<h2>はじめに</h2>
<p>AWSは様々なコンピューティングサービスを提供しています。これは、アプリケーション開発にとってよいことだと思えますが、開発初心者にとっては混乱の元になってしまうでしょう。<br />
そこで、本記事では、AWSが提供する2つのサーバーレスのサービス、AWS LambdaとAWS Fargateについて、</p>
<p style="font-weight: bold;">1. コストパフォーマンス</p>
<p style="font-weight: bold;">2. 柔軟性</p>
<p style="font-weight: bold;">3. 学習コスト</p>
<p>の観点から、詳しく解説していきます。</p>
<p>本記事の内容を理解するには、サーバーレスに関する知識が必要となるので、まず、サーバーレスのサービスがどのようなものなのかを説明しようと思います。</p>
<p>サーバーレスサービスとは、サーバーハードウェアやインフラの管理をサービスプロバイダーが行ってくれるクラウドコンピューティングサービスです。ユーザーは、サーバーインスタンスやストレージ容量などのリソースを必要に応じて使用し、使用した分だけ課金されます。<br />
サーバレスサービスには、以下のメリットがあります。</p>
<p style="font-weight: bold;">・インフラの管理が不要で、コストを削減できます。</p>
<p style="font-weight: bold;">・開発に集中でき、生産性を向上させることができます。</p>
<p style="font-weight: bold;">・スケーラビリティに優れており、急激なトラフィックの増加にも対応できます。</p>
<p>サーバレスサービスは、Webアプリケーション開発、モバイルアプリケーション開発、データ分析、IoTなど、さまざまな用途に使用されています。</p>
<h2>AWS Lambda とは</h2>
<p>AWS Lambdaは、AWSが提供するサーバーレスコンピューティングサービスです。サーバーやクラスターについて心配することなく、コードを実行できます。AWS Lambda は、イベントが発生したときにコードを実行する環境を提供します。イベントには、HTTP リクエスト、メッセージキュー、データベースの変更など、さまざまなものがあります。AWS Lambda は、ウェブアプリケーション、バックエンドサービス、データ分析など、さまざまな目的に使用できます。<br />
AWS Lambda のメリットは、次のとおりです。</p>
<p style="font-weight: bold;">・サーバーやクラスターを管理する必要がない</p>
<p style="font-weight: bold;">・スケーラブルで、イベントが発生するたびに自動的にコードを実行できる</p>
<p>AWS Lambda を使えば、サーバーやクラスターを管理する必要がなく、サーバへの負荷対策も容易に行えます。</p>
<h2>Amazon Fargateとは</h2>
<p>AWS Fargate は、コンテナを実行するために必要なインフラストラクチャを管理する必要がないように設計されたサーバーレスコンピューティングサービスです。コンテナを実行するために必要なインフラストラクチャをAWSが管理するので、ユーザーはコンテナの作成と管理のみに集中することができます。<br />
Fargate は、Amazon ECS<span id='easy-footnote-1-297' class='easy-footnote-margin-adjust'></span><span class='easy-footnote'><a href='https://taiziii.com/column/297/#easy-footnote-bottom-1-297' title='Dockerを管理するサービスのこと。Amazon ECSを使うと、クラスターインフラストラクチャのインストール、運用などが不要になる。'><sup>1</sup></a></span> と統合されており、ECS を使用してコンテナを作成、デプロイ、スケーリング、管理することができます。ウェブアプリケーション、バックエンドサービス、データ分析など、さまざまな目的で使用されています。<br />
AWS Fargate のメリットは、次のとおりです。</p>
<p style="font-weight: bold;">・コンテナを実行するために必要なインフラストラクチャを管理する必要がない</p>
<p style="font-weight: bold;">・スケーラブルで、負荷に応じてコンテナの数を自動的に調整できる</p>
<p>AWS Fargate を使えば、コンテナを実行するために必要なインフラストラクチャを管理する必要がないので、効率的にコンテナを運用することができます。</p>
<h2>比較</h2>
<h3>コストパフォーマンス</h3>
<ul>
<li>AWS Lambda は、必要なときにしか起動しないため、料金は使用時間のみで決まります。さらに、毎月、リクエスト100万件は無料枠で提供されます。</li>
<li>AWS Fargate は、最低実行数を設定するため、実行に対して料金が発生します。</li>
</ul>
<p style="font-weight: bold;">コストパフォーマンスの観点では、Lambda の方が良いです。</p>
<p>&nbsp;</p>
<h3>柔軟性</h3>
<ul>
<li>Lambda の実行時間は15分以内に制限され、開発言語も、nodeJS 、 Python 、 Go 、 Java 、 Ruby 、Net 、 C# に制限されます。ただし、開発で必要な言語は基本的にそろっていると考えて良いです。</li>
<li>Fargate の実行時間には制限がありません。また、コンテナを使用するため自由度が<br />
高く、開発言語にも制限がありません。</li>
</ul>
<p style="font-weight: bold;">柔軟性を重視するなら、Fargate がおすすめです。</p>
<p>&nbsp;</p>
<h3>学習コスト</h3>
<ul>
<li>Lambda を使う上では、実行する OS や制約のみを理解すれば大丈夫です。</li>
<li>Fargate は、ECS 、Docker についての理解が必要となります。しかし、アプリケー<br />
ションのアーキテクチャが把握しやすいというメリットはあります。</li>
</ul>
<p style="font-weight: bold;">学習コストは、Lambda の方が低いといえます。</p>
<h2>ユースケース</h2>
<p>AWS Lambda は小規模な処理を行うときに、他のサービスと組み合わせて利用されます。具体的には、API Gateway と組み合わせた API システムや Amazon EventBridge と組み合わせた cron システム、 SQS と組み合わせた非同期処理に利用されることが多いです。 API システムは、主に API の管理や実行を容易にしてくれる仕組みを指し、例えば、Amazon EventBridge と組み合わせた cron システムは、1日に1回の夜間のデータベース定期メンテナンスや1時間ごとに売上の集計をコンピュータに自動で行わせることができます。また、SQS と組み合わせた非同期処理は、EC サイトのクレジットカード決済処理に使われます。</p>
<p>一方、AWS Fargate は大規模な処理を行うときに利用されます。具体的には、大規模なウェブアプリケーションを開発するときやコンテナワークロードの実行とスケーリングを行うとき、Pass<span id='easy-footnote-2-297' class='easy-footnote-margin-adjust'></span><span class='easy-footnote'><a href='https://taiziii.com/column/297/#easy-footnote-bottom-2-297' title='Platform as a service の略で、サービスとしてのプラットフォーム。クラウド内の完全な開発及びデプロイの環境であり、単純なクラウドベースのアプリから高度なクラウド対応型エンタープライズアプリケーションまで、あらゆるものを実現できるリソースがそろっている。'><sup>2</sup></a></span> などのプラットフォーム向けのマイクロサービスバックエンドを利用するときなどに使われます。また、先述したように、Docker を使う場合にも利用されます。</p>
<h2>まとめ</h2>
<p>本記事では、AWS が提供するサーバーレスサービス、AWS Lambda と AWS Fargate について解説しました。<br />
コストパフォーマンスでは、必要なときにしか起動しない Lambda が、柔軟性では、実行時間に制限がない Fargate が優れています。また、学習コストの観点ではLambda の方が低いといえます。<br />
AWS を使った開発に自信がない方は、まず初めに、コストパフォーマンスが高く、学習コストが低い Lambda を使ってみると良いでしょう。そのあとで、Fargate にも挑戦してみてください。</p>
<h2>語句の説明</h2>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>AWS でバッチ処理を実装するなら？ AWS Lambda vs Amazon ECS vs AWS Batch を徹底比較</title>
		<link>https://taiziii.com/column/292/</link>
		
		<dc:creator><![CDATA[THiNGMAjiG_admin_user_kato]]></dc:creator>
		<pubDate>Wed, 01 Feb 2023 09:13:00 +0000</pubDate>
				<guid isPermaLink="false">https://taiziii.com/?post_type=column&#038;p=292</guid>

					<description><![CDATA[今回は、AWS　を用いたバッチ処理の実装 に関する内容だね！ この記事を読めば、バッチ処理の実装でどんなサービスを使えば良いかもう悩まなくて良さそうですね! 本記事で学べること ・Lambda、ECS、Batchの概要  [&#8230;]]]></description>
										<content:encoded><![CDATA[<div class="balloonWrap">
<div class="balloon2-left">
<p>今回は、AWS　を用いたバッチ処理の実装 に関する内容だね！</p>
</div>
<div class="balloon2-right">
<p>この記事を読めば、バッチ処理の実装でどんなサービスを使えば良いかもう悩まなくて良さそうですね!</p>
</div>
</div>
<h2>本記事で学べること</h2>
<p>・Lambda、ECS、Batchの概要<br />
・サーバーレスの概念<br />
・コンテナの概念<br />
・各種サービスの長所・短所やユースケース</p>
<h2>はじめに</h2>
<p>AWS は様々なコンピューティングサービスを提供しています。これは、アプリケーション開発にとってよいことだと思えますが、開発初心者にとっては混乱の元にもなります。<br />
そこで本記事では、AWS が提供する3つのサービス、AWS Lambda、AWS ECS、AWS Batch について、</p>
<p style="font-weight: bold;">1. コストパフォーマンス</p>
<p style="font-weight: bold;">2. 柔軟性</p>
<p style="font-weight: bold;">3. 機能</p>
<p>の観点から、詳しく解説します。</p>
<p>本記事の内容を理解するには、サーバーレスとコンテナに関する知識が必要となるので、まず、サーバーレスとコンテナのサービスがどのようなものなのかを説明しようと思います。</p>
<h2>サーバーレスサービスとは</h2>
<p>サーバーレスサービスとは、サーバーハードウェアやインフラの管理をサービスプロバイダーが行ってくれるクラウドコンピューティングサービスです。ユーザーは、サーバーインスタンスやストレージ容量などのリソースを必要に応じて使用し、使用した分だけ課金されます。<br />
サーバレスサービスには、以下のメリットがあります。</p>
<p style="font-weight: bold;">・インフラの管理が不要で、コストを削減できます。</p>
<p style="font-weight: bold;">・開発に集中でき、生産性を向上させることができます。</p>
<p style="font-weight: bold;">・スケーラビリティに優れており、急激なトラフィックの増加にも対応できます。</p>
<p>サーバレスサービスは、Webアプリケーション開発、モバイルアプリケーション開発、データ分析、 IoT など、さまざまな用途に使用されています。<br />
サーバレスサービスの代表的なサービスには、以下のようなものがあります。</p>
<p style="font-weight: bold;">・ AWS Lambda (本記事で紹介する)</p>
<p style="font-weight: bold;">・ Microsoft Azure Functions</p>
<p style="font-weight: bold;">・ Google Cloud Functions</p>
<p style="font-weight: bold;">・ IBM Cloud Functions</p>
<p>サーバレスサービスは、クラウドコンピューティングの新しいトレンドであり、今後ますます普及していくと考えられています。</p>
<p>&nbsp;</p>
<p><span style="font-size: 8pt;">(サーバーレスのサービスに関してはこちらをチェック↓)</span></p>
<p><span style="color: #3366ff;"><a style="color: #3366ff;" href="https://taiziii.com/column/307/" target="_blank" rel="noopener">サーバーレスのサービスを使うなら？ AWS Lambda vs Azure Functions vs Cloud Functions</a></span></p>
<p><a href="https://taiziii.com/column/297/" target="_blank" rel="noopener"><span style="color: #3366ff;">AWS でサーバーレスのサービスを使うなら？</span><span style="color: #3366ff;"> AWS Lambda vs AWS Fargate</span></a></p>
<h2>コンテナサービスとは</h2>
<p>コンテナサービスは、コンテナ技術を活用してアプリケーションのデプロイ、実行、管理を行うためのクラウドサービスのことを指します。コンテナは、アプリケーションやその依存関係、ランタイム環境などを包含した軽量な仮想化ユニットです。コンテナサービスを利用することで、アプリケーションをより効率的にデプロイし、スケーラビリティを向上させ、管理を簡素化できます。<br />
具体的な利点には、以下のようなものがあります:</p>
<p style="font-weight: bold;">・アプリケーションの環境をコンテナに包含するため、環境の差異による問題を軽減することができます。</p>
<p style="font-weight: bold;">・コンテナは軽量で高速に起動し、リソースの効率的な利用が可能です。</p>
<p style="font-weight: bold;">・スケーラビリティが向上し、負荷の増減に柔軟に対応できます。</p>
<p style="font-weight: bold;">・マイクロサービスアーキテクチャの実現に適しており、疎結合なアプリケーションの構築が容易です。</p>
<p>ただし、コンテナサービスを導入する際には、セキュリティやネットワークの設定、監視、管理などに注意を払う必要があります。適切な設計とベストプラクティスを実践することが重要です。</p>
<p>代表的なコンテナサービスとしては、Docker　や　Kubernetes（クーバネティス）があります。<br />
&nbsp;</p>
<h3>Docker</h3>
<p>Dockerは、コンテナ技術のパイオニアであり、アプリケーションやその依存関係をコンテナにパッケージ化し、実行環境を完全に隔離することができます。多くのクラウドプロバイダー（AWS、Azure、Google Cloudなど）は、Dockerコンテナをホストするためのマネージドサービスを提供しています。これにより、コンテナのデプロイ、スケーリング、監視などを容易に行えます。<br />
&nbsp;</p>
<h3>Kubernetes</h3>
<p>Kubernetesは、コンテナオーケストレーションシステムであり、複数のコンテナのデプロイ、スケーリング、自動復旧、バージョン管理などを行うことができます。Kubernetesはオープンソースプロジェクトであり、多くのクラウドプロバイダーやオンプレミス環境でも利用されています。また、Kubernetesは非常に柔軟で拡張性があり、さまざまなアプリケーションのデプロイに適しています。<br />
&nbsp;</p>
<h2>AWS Lambda とは</h2>
<p>AWS Lambda は、 AWS が提供するサーバーレスコンピューティングサービスです。サーバーやクラスターについて心配することなく、コードを実行できます。 AWS Lambda は、イベントが発生したときにコードを実行する環境を提供します。イベントには、 HTTP リクエスト、メッセージキュー、データベースの変更など、さまざまなものがあります。 AWS Lambda は、ウェブアプリケーション、バックエンドサービス、データ分析など、さまざまな目的に使用できます。<br />
AWS Lambda のメリットは、次のとおりです。</p>
<p style="font-weight: bold;">・サーバーやクラスターを管理する必要がない</p>
<p style="font-weight: bold;">・スケーラブルで、イベントが発生するたびに自動的にコードを実行できる</p>
<p>AWS Lambda を使えば、サーバーやクラスターを管理する必要がなく、サーバへの負荷対策も容易に行えます。</p>
<h2>Amazon ECS とは</h2>
<p>Amazon ECS は、Amazon EC2<span id='easy-footnote-1-292' class='easy-footnote-margin-adjust'></span><span class='easy-footnote'><a href='https://taiziii.com/column/292/#easy-footnote-bottom-1-292' title='仮想サーバを構築できるサービス。'><sup>1</sup></a></span> と一緒に用いられ、Docker コンテナを実行および管理するためのフルマネージドサービスです。 ECS を使用すると、コンテナを作成、デプロイ、スケーリング、管理することができます。ECS は、ウェブアプリケーション、バックエンドサービス、データ分析など、さまざまな目的に使用できます。<br />
ECS のメリットは、次のとおりです。</p>
<p style="font-weight: bold;">・コンテナの作成、デプロイ、スケーリング、管理を簡単に行える</p>
<p style="font-weight: bold;">・スケーラブルで、負荷に応じてコンテナの数を自動的に調整できる</p>
<p>ECS を使えば、コンテナの作成、デプロイ、スケーリング、管理を簡単に行えるので、効率的にコンテナを運用することができます。</p>
<h2>AWS Batch とは</h2>
<p>AWS Batch は、バッチ処理ジョブをスケーラブルかつ簡単に実行するためのサービスです。 AWS Batch を使用すると、バッチ処理ジョブを作成、スケジュール、および実行することができます。 AWS Batch は、コンピューティングインスタンスの自動スケーリングをサポートしているため、バッチ処理ジョブの負荷に合わせてコンピューティングインスタンスの数を自動的に調整することができます。<br />
AWS Batch のメリットは、次のとおりです。</p>
<p style="font-weight: bold;">・バッチ処理ジョブをスケーラブルかつ簡単に実行できる</p>
<p style="font-weight: bold;">・コンピューティングインスタンスの自動スケーリングをサポートしているため、バッチ処理ジョブの負荷に合わせてコンピューティングインスタンスの数を自動的に調整できる</p>
<p>AWS Batch を使えば、バッチ処理ジョブをスケーラブルかつ簡単に実行できるため、効率的にバッチ処理ジョブを運用することができます。</p>
<h2>比較</h2>
<h3>可用性</h3>
<ul>
<li>Lambda　では、メモリが設定した値で足りなくなった場合、コンソール上でメモリ量を増やせすことができ、毎秒のリクエスト数が突然増えても問題なく処理されます。</li>
<li>ECS では、メモリが足りなくなった場合、メモリ量をコンソールで増やすことはできません。新規にインスタンスを起動し、プログラムを実行できる環境を再度整えてからプログラムを実行する必要があります。</li>
<li>Batch も ECS と同じです。</li>
</ul>
<p style="font-weight: bold;">可用性の観点では、Lambda の方が良いです。</p>
<p>&nbsp;</p>
<h3>柔軟性</h3>
<ul>
<li>Lambda の実行時間は15分以内に制限され、開発言語も、nodeJS 、Python 、Go 、Java 、Ruby 、Net 、C# に制限されます。ただし、開発で必要な言語は基本的にそろっていると考えて良いです。</li>
<li>ECS や Batch は、必要に応じてサーバーのスペックを自由に選ぶことができます。</li>
</ul>
<p style="font-weight: bold;">柔軟性の観点では、ECS と Batch が優れているといえます。</p>
<p>&nbsp;</p>
<h3>機能性</h3>
<ul>
<li>Lambda は処理時間が15分を過ぎたら強制的に停止されます。</li>
<li>ECS は15分以上の処理ができます。</li>
<li>Batch は15分以上の処理ができ、さらに Amazon ECS よりも大規模な処理に適しています。</li>
</ul>
<p style="font-weight: bold;">機能性の観点では、ECS と Batch がおすすめです。</p>
<p>&nbsp;</p>
<h3>コスト</h3>
<ul>
<li>Lambda は、必要なときにしか起動しないため、料金は使用時間のみで決まります。　さらに、毎月、リクエスト100万件は無料枠で提供されます。</li>
<li>ECS は、EC2 インスタンスを起動している時間も課金されます。</li>
<li>Batch は、 コンピューティングリソース分の料金がかかります。</li>
</ul>
<p>これら3つは、料金形態が大きく異なり、単純な比較が難しいので、条件を設定して具体的なコストを紹介することにします。<br />
以下では、</p>
<p style="font-weight: bold;">・128MBで十分動作可能なプロセス</p>
<p style="font-weight: bold;">・1回あたり3秒かかるAPIを想定</p>
<p style="font-weight: bold;">・毎秒1リクエスト</p>
<p>の場合について、1ヶ月のコストを算出することにします。<br />
&nbsp;</p>
<h4>Lambda</h4>
<p>・リクエスト数<br />
　86,400(回/日) * 30(日) = 2,592,000(回)<br />
　2,592,000(回) &#8211; 1,000,000(回)※無料枠 = 1,592,000(回)<br />
　1,592,000(回) / 1,000,000(回) * 0.20(USD) = 0.3184(USD)<br />
・実行時間<br />
　0.128(GB/回) * 3(秒) = 0.384(GB秒/回)<br />
　0.384(GB秒/回) * 86,400(回/日) * 30(日) = 995,328(GB秒)<br />
　995,328(GB秒) &#8211; 400,000(GB秒)※無料枠 = 595,328(GB秒)<br />
　595,328(GB秒) * 0.0000166667(USD) = 9.9222(USD)</p>
<p>計： 0.3184 + 9.9222 = 10.2406(USD)</p>
<p>&nbsp;</p>
<h4>EC2</h4>
<p>2vCPU, 0.5GiBMemoryのt3.nanoインスタンス1台の場合</p>
<p>計: 0.0068(USD/h) * 24(時間) * 30(日) = 4.896(USD)</p>
<p>&nbsp;</p>
<h4>AWS Batch</h4>
<p>2vCPU, 0.5GiBMemoryのt3.nanoインスタンス1台の場合</p>
<p>計: 0.0068(USD/h) * 24(時間) * 30(日) = 4.896(USD)</p>
<h2>ユースケース</h2>
<p>Lambda は小規模な処理を行うときに、他のサービスと組み合わせて利用されます。具体的には、API Gateway と組み合わせた API システムや Amazon EventBridge と組み合わせた cron システム、SQS と組み合わせた非同期処理に利用されることが多いです。</p>
<ul>
<li>API Gateway と組み合わせた API システムは、主にAPIの管理や実行を容易にしてくれる仕組みを指します。</li>
<li>Amazon EventBridge と組み合わせた cron システムは、例えば、1日に1回の夜間のデータベース定期メンテナンスや、1時間ごとに売上の集計をコンピュータに自動で行わせることができます。</li>
<li>SQS と組み合わせた非同期処理は、 EC サイトのクレジットカード決済処理に使われます。</li>
</ul>
<p>ECS は長い時間がかかる大規模な処理を行うときに利用されます。具体的には、マイクロサービス<span id='easy-footnote-2-292' class='easy-footnote-margin-adjust'></span><span class='easy-footnote'><a href='https://taiziii.com/column/292/#easy-footnote-bottom-2-292' title='複雑なアプリケーションを単純な複数のサービスに分け、それぞれ独立して開発を進めていく手法であり、バッチジョブとは、事前に定義され、まとめて処理されるタスクの集まりのこと。'><sup>2</sup></a></span>やバッチジョブなどに利用されます。</p>
<p>Batch は大規模かつ ECS のサービスクォータ<span id='easy-footnote-3-292' class='easy-footnote-margin-adjust'></span><span class='easy-footnote'><a href='https://taiziii.com/column/292/#easy-footnote-bottom-3-292' title='AWS のサービスごとに定められた制限のこと。'><sup>3</sup></a></span>を超える数の並列処理を要するバッチ処理を行う場合に利用されます。具体的には、ライフサイエンスや計算化学、臨床モデリングなどの分野や金融サービスにおける取引に関するデータ処理や機密情報の分析に利用されます。 Batch は、一般的な企業が扱うにはオーバースペックであり、主に大企業や研究機関で活躍します。</p>
<p>&nbsp;</p>
<table style="border-collapse: collapse; width: 100%;">
<tbody>
<tr>
<td style="width: 50%;">
<p style="font-weight: bold;">サービス</p>
</td>
<td style="width: 50%;">
<p style="font-weight: bold;">データ処理の規模</p>
</td>
</tr>
<tr>
<td style="width: 50%;">Lambda</td>
<td style="width: 50%;">小規模</td>
</tr>
<tr>
<td style="width: 50%;">ECS</td>
<td style="width: 50%;">大規模</td>
</tr>
<tr>
<td style="width: 50%;">Batch</td>
<td style="width: 50%;">大規模（ECS 以上)</td>
</tr>
</tbody>
</table>
<h2>まとめ</h2>
<p>本記事では、AWS が提供するコンピューティングサービスである、AWS Lambda 、Amazon ECS 、AWS Batch について解説しました。<br />
初心者にとっては、Lambda　が使いやすいこと、Batch は一般的な開発ではオーバースペックであるということを頭に入れておいてください。<br />
AWS を使った開発が初めての方は、まず初めに Lambda を使い、慣れてきたら ECS も使ってみると良いでしょう。</p>
<h2>語句の説明</h2>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
