見出し画像

AWS研修・完

6月1日から3日間で,AWS研修に参加してきました!今回のお題は,「3日間で世界規模のチャットサービスのアーキテクチャを考えてください」というものでした。

,,,,,,,????

はい,自分全くの初心者でして,何をしていいのか分からないという状況になりました。4人1チームで構成されていて,僕らのチームは皆途方に暮れていました。そんな中で,3日後の発表では何とか形にすることができました!(以下画像)

画像1

この3日間で,何も分からない→少し分かるようになった,になることができました!
具体的に何を学んだかを一部紹介したいと思います!

今回は,Amazon API Gateway,ECSの役割について,大まかに説明します。

1,Amazon API Gateway


まず,「APIとは」からです。
APIとは,「Application Programming Interface」の略称です。
技術者の間でAPIという言葉がよく使われています。正直僕は何を言ってるのかさっぱりわかりませんでした。
そもそも「インターフェース」は,「何か」と「何か」を繋ぐもの,という意味を持ちます。
つまり,APIは「アプリケーション,ソフトウウェア」と「プログラム」を繋ぐもの,という意味になります。
例えば,USBメモリなどで聞くUSB(Universal Serial Bus)はメモリとパソコンを繋ぐインターフェースですが、APIはソフトウェア同士を繋げます。
さらに分かりやすく例えると,鎖国時代の日本と諸外国は連携することが困難でしたが、諸外国との貿易を許されていた唯一の場所である長崎の出島をうまく活用することで、日本との貿易や文化交流、情報交換が行えるようになった、という歴史の話がありますが、日本を一つのソフトウェア、諸外国をまた別のソフトウェアと考えると、出島が司っていたのが言ってみればその二つを繋げるAPI機能です。(この例でようやく自分は理解した。)
要は,スマホにあるアプリで何かアクションを起こすと,ソフトウェア上でアクションを起こした時に実行される機能に紐づけるためにAPIがあるということですね。

その役割を果たしてくれているのが,Amazon API Gatewayなんです。これを介して, Lambda(プログラム実行のトリガー機能)やCognito(アカウント認証機能)に繋がっています。今後これらの機能について自分が理解できたら,載せようと思います。

2,ECS


ECSはElastic Container Serviceの略称です。直訳すると,柔軟なコンテナサービスです。

なにそれ,,,

だと思います。ではまず,「コンテナとは」から入ります。
IT用語のコンテナから一旦外れて,コンテナとは「入れ物,容器」を指します。大小や用途は様々です。コンテナの利点として中身を1個ずつ移動するのではなく,コンテナごと移動しますよね。
特に貿易業界では,国際間を行き来する大量の物流を支える手段として,多くの手順とルールで運用されています。サイズだったり,常温用,冷凍用だったり。適当に運用されているわけではありません。
コンテナの考えを具体的に応用したのが,貿易業界での事例です。そして本題となるIT業界でサーバーを管理する手段として用いられたのが,コンテナ技術です。Dockerなどが有名です。

なぜコンテナ技術がサーバーに利用されているのか?

背景として,ITで解決できるサービスが拡大している反面で,動かすサーバー機器が急増しています。サーバー機器が急増すると,サーバーの置き場所や費用,管理が大変になります。そんな中で,作業全般のスピードとコストを解消する方法が必要になってきました。そこで,仮想化技術が誕生し,発展した流れで,コンテナ技術が生まれました。
仮想化とは,1つのサーバー上に,複数のサーバーがあるかのように設定をする技術です。

仮想化とコンテナ技術の関係は?

仮想化の発展型がコンテナ技術になります。仮想化とコンテナでは,プロセスが稼働するための構成が異なります。

無題のプレゼンテーション

仮想化では,
ホストOS→仮想化ソフトウウェア→ゲストOS→プロセス
という構成になります。
ホストOSというのが,パソコンに搭載されているOSです。WindowsやMac,Linuxが挙げられます。その上に仮想化ソフトウウェアを置くことで,今まで様々なサーバーを用意していた部分を一つに集約しています。その仮想サーバー上にさらにOSを立てることによって,様々なアプリケーション(プロセス)を稼働することができます。

一方,コンテナは,
ホストOS→コンテナに詰め込んだプロセス
という構成です。じゃあコンテナ内のプロセスってOSが無いから稼働できないじゃんって思いますよね。ここではざっくり話します。コンテナは,ホストOSを利用してプロセスを稼働します!つまり,ホストOS上のプロセスと同じ扱いなのです。
(ホストOS内はカーネル,コマンド,ライブラリで構成されていて,コンテナはカーネルを利用しているのですが,今回詳しくはは触れません!)

コンテナのメリットとは?

コンテナAにvar/www/html/kota.phpというパスで「Hello iXIT!」と表示する機能があり,
コンテナBにvar/www/html/kota.phpというパスで「Hello Excite!」と表示する機能があるとします。
どちらも同じパス,ファイル名です。普通のパソコンで同じファイルを作成したら,「名前が重複しています」など出ますよね。しかし,コンテナで分けていれば,同じファイル名でも存在することができます。
コンテナの概念は奥が深いので,自分の分かる範囲はここら辺です。

本題のECSについてです!
ECSは,アプリケーションの開発に専念したい人,インフラ基盤を構築するのが面倒な人向けに,あらかじめ設定を保存して必要な時に呼び出してすぐにアプリ開発ができるのをサポートしてくれるサービスです。
例えば,
1日に1つのアプリケーションで
朝に1台,夜1台
のサーバーを使い,10個のアプリケーション
があるとします。
まず,Dockerを使えば,1アプリケーションを1つのコンテナに組み込むことができるので,コストが半減します。そして,今までのコンテナ技術では,サーバリソース(CPUやメモリ)が足りなくなった時に,ユーザー側でリソースの拡張を行っていましたが,ECSでは,サーバーのリソースの拡張を自動で行ってくれるので,ユーザーはリソースの心配をすることなくDockerを利用することができます。


3,最後に

長々と話してきましたが,
自分の場合,分からない単語を「〇〇とは」と検索して,「初心者でも分かる〜」みたいなのをひたすら読みました。読んで,他の用語と組み合わせて理解していくという日本語なのに違う言語を話しているような気分でした。
また,こうして記事に書くことで,理解が深まると思います。
自分の解釈が間違っていたら,ご指摘頂けると嬉しいです!!
AWS初心者なので,全てが分からず,何を質問したらいいのか分からない,という状態で何とか追いつこうと必死でした。今回はチームで作業しながら,SA(Solution Architect)にサポートしていただきました。
とても充実した3日間となり,エンジニアとしてもモチベーションが更に上がりました。
3日間お疲れ様でした!

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?