Location via proxy:
[ UP ]
[Report a bug]
[Manage cookies]
No cookies
No scripts
No ads
No referrer
Show this form
Submit Search
Submit Search
Upload
[D3]サーバーレスでサービスを作ってみた話
•
Download as PPTX, PDF
•
3 likes
•
1,415 views
dcubeio
Follow
サーバーレスアーキテクチャについての基礎的な話から、実例を用いて解説
Read less
Read more
Report
Share
Report
Share
1 of 47
Download now
More Related Content
[D3]サーバーレスでサービスを作ってみた話
1.
サーバーレスでサービスを 作ってみた話
2.
自己紹介 名前:國井 匡生 (くにい まさお) 所属:株式会社ビズリーチ HRMOS事業部 職業:雑用、エンジニア
3.
アジェンダ サーバーレスとは AWSにおけるサーバーレス アーキテクチャ 住所検索問題 KEN_ALL.CSVとの出会い KEN_ALL.CSVとの別れ S3との別れ ドメインとSSL証明書 API Gatewayの機能 Mailgun クレジットカード決済 所感
4.
サーバーレス アーキテクチャとは アプリケーションサーバを自前で管理せず、マネージドサービスを活用してシス テムを構築するアーキテクチャのこと
5.
サーバーレス アーキテクチャとは 簡単に言うと IaaSなどいらんのです的な AWSでいうところのEC2を使わずに頑張るプレイ
6.
サーバーレス アーキテクチャとは PaaSやSaaSを駆使してシステムを構築する
7.
サーバーレス アーキテクチャとは アプリケーションはマイクロサービス、SPAのような形になる
8.
サーバーレス アーキテクチャとは 良い点 ● このような心配事から解放される ○
OSの選定、保守、管理 ○ ハードウェアの故障 ○ プロセスの異常終了 ○ CPU、メモリ、ストレージなどのリソースの枯渇 ○ セキュリティパッチの適用 ● スケーラブル ○ アクセスに応じて勝手にスケールする ● 主に従量課金で固定費が少なくすむ
9.
サーバーレスにするとほぼ使うサービス • API Gateway •
Lambda • S3 • Cognito
10.
API Gateway API を作成および管理するためのサービス。 バックエンドにあるリソースとクライアントの中間に立ってAPIとして振る舞う リバースプロキシ的な役割をする。
11.
API Gatewayの機能 • プロキシ •
バックエンドにはhttp(s)かAWSの各マネージドサービスが使える • APIキーの発行/認証 • トラフィック管理 • Swaggerからインポート • APIのSDK作成 • カスタムドメイン • 証明書にCertificate Managerは使えない • CloudWatchログ • ヘッダーはログに出ない
12.
Lambda Node.js、JVMベース、Pythonで記述された任意のコードをスケージュールやイ ベントに応じて実行する。 トリガーとなるイベントには以下のようなサービスがある
13.
S3 ストレージサービス。 LambdaやAPI Gatewayからのプライベートアクセスのほか、HTTPを使用したパ ブリックなアクセスも可能。 サーバーレスの場合はHTML等の静的コンテンツの格納、配信で活躍する。
14.
Cognito ユーザーの作成、認証、認可を提供する。 クライアントからのTokenを使用したアクセスを可能にする。 既存の認証システムとの統合も可能。
15.
例えば アップロードした写真を勝手に分類してくれるクラウドアルバムサービスを考え てみる。
16.
例えば Cognitoでユーザー管理
17.
例えば SDKを使用してS3へファイルをアップロード
18.
例えば S3へのPutイベントを拾い、Lambdaで画像を解析、metadataをDynamoDBに保 存。
19.
例えば クライアントからAPI Gateway経由でmetadataを取得。
20.
住所検索問題 スタンバイ・カンパニーで郵便番号から住所を検索できないことがあった データが古い 事業所個別番号が入っていない
21.
なんやかんやあって
22.
サーバーレスで住所検索APIサービスを作ってみた
23.
KEN_ALL.CSVとの出会い 郵便局が提供している郵便番号データのCSVファイル ... 01101,"064 ","0640822","ホッカイドウ","サッポロシチュウオウク","キタ2ジョウニシ(20-28チョウメ)","北海道","札幌市中央区","北二条西(20〜28丁目)",1,0,1,0,0,0 01101,"060 ","0600033","ホッカイドウ","サッポロシチュウオウク","キタ3ジョウヒガシ","北海道","札幌市中央区","北三条東",0,0,1,0,0,0 01101,"060
","0600003","ホッカイドウ","サッポロシチュウオウク","キタ3ジョウニシ(1-19チョウメ)","北海道","札幌市中央区","北三条西(1〜19丁目)",1,0,1,0,0,0 01101,"064 ","0640823","ホッカイドウ","サッポロシチュウオウク","キタ3ジョウニシ(20-30チョウメ)","北海道","札幌市中央区","北三条西(20〜30丁目)",1,0,1,0,0,0 01101,"060 ","0600034","ホッカイドウ","サッポロシチュウオウク","キタ4ジョウヒガシ(1-8チョウメ)","北海道","札幌市中央区","北四条東(1〜8丁目)",1,0,1,0,0,0 01101,"060 ","0600004","ホッカイドウ","サッポロシチュウオウク","キタ4ジョウニシ(1-19チョウメ)","北海道","札幌市中央区","北四条西(1〜19丁目)",1,0,1,0,0,0 ...
24.
当初の想定 CSVファイルを1行づつ読み込んでJSON形式のバラバラなファイルにする S3のWebホスティング機能を使用して参照可能にする
25.
最終的な形
26.
なぜこんなことに・・・
27.
KEN_ALL.CSVの闇 複数行にまたがっている ...,"6028062",...,"京都市上京区","亀屋町(油小路通上長者町下る、油小路通下長者町上る、油小路通",... ...,"6028062",...,"京都市上京区","中長者町上る、油小路通中長者町下る、上長者町通油小路西入、上長者町通油小 "... ...,"6028062",...,"京都市上京区","路東入)",...
28.
KEN_ALL.CSVの闇 もはや住所じゃない ...,"1600023",...,"ニシシンジュク(ツギノビルヲノゾク)",...,"新宿区","西新宿(次のビルを除く)",... ...,"1630790",...,"ニシシンジュクオダキュウダイイチセイメイビル(チカイ・カイソウフメイ)",...,"新宿区","西新宿小田急第一生命ビル(地階・階層不明) " ,... ...,"1630701",...,"ニシシンジュクオダキュウダイイチセイメイビル(1カイ)","東京都","新宿区","西新宿小田急第一生命ビル(1階)",...
29.
KEN_ALL.CSVの闇 else的な 01101,"060 ","0600000","ホッカイドウ","サッポロシチュウオウク","イカニケイサイガナイバアイ","北海道"," 札幌市中央区","以下に掲載がない場合",0,0,0,0,0,0
30.
KEN_ALL.CSVの闇 差分ファイルがPDF
31.
もぅマヂ無理。。。
32.
KEN_ALL.CSVとの別れ どうやら何年か前にKEN_ALL.CSVブームがあったらしく、正規化して配布して いる人がいるらしい情報を入手
33.
素敵やん!
34.
S3との別れ バラバラにするスクリプトを作ってS3に置こうとしたものの、一向にアップロー ドが終わらない。 AWSの料金を確認するとS3の無料枠は2,000 Put リクエスト/月
らしい。 郵便番号データは15万件くらい・・・
35.
+ DynamoDB +
API Gateway key-value的なデータだから置く場所には困らない。DynamoDBに入れてみた。 DynamoDBの無料枠は月25 の書き込み/読み込み容量ユニット、250 万回の Streams 読み込みリクエスト、25 GB のストレージ
36.
ドメインとSSL証明書 これってサービスになるんではと思ったのでドメインを探してみた post-code.info なかなかそれっぽいのでそのまま取ってみた。
37.
ドメインとSSL証明書 ついでにSSL証明書も無料で手に入らないか探してみた 怪しい証明書発行サービス(WoSign...) アドレスバーが赤いまま Let’s Encript ワイルドカード証明書が作れない 3ヶ月更新 面倒 AWS Certificate
Manager
38.
+ Route53 +
CloudFront 初めての課金 ドメイン取得: ¥350(1年間) Route53:$0.5/month Certificate Managerのせいで CloudFrontが必要
39.
+ UI LPが完成
41.
+ Lambda ユーザー毎にAPIキーを発行して認証してみよう 課金するためにはリクエスト回数を集計しないと →ログを集計すればいいか →あれ、ログにAPIキーがでない →Lambdaか
42.
+ mailgun 体裁は整ったので会員登録的なものを考える 会員登録はメールで問い合わせてもらって登録するようにしてみた
43.
クレジットカード決済 FastPayが良いとおすすめされたので、申し込んでみた。 利用規約とか特定商取引法に関するページがないとダメと言われ、審査担当者と のやりとりが1ヶ月くらい続く。
44.
こうなった
45.
が、 なぜかCloudFront経由でAPI Gatewayが呼べなくな った
46.
最終的に
47.
所感 • 大体なんでもできる • 頑張ればHRMOSくらいならサーバーレスにできる •
Lambda用のフレームワークも登場した • https://github.com/serverless/serverless • https://github.com/awslabs/chalice • パズルみたいに組み立てていけるのは面白い • 怖い • 管理は緩めでよくなるけど、気づいたら動いてないかった • 監視はやっぱり必要 • サーバーレスが話題になって結構経つけど、まだ発展途上 • API Gatewayのトラフィック管理機能は8月くらいに付いたばかり
Download now