Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Serverless技術勉強会#2 Chatwork登壇資料
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
shimosyan
January 15, 2020
Technology
1.3k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Serverless技術勉強会#2 Chatwork登壇資料
shimosyan
January 15, 2020
More Decks by shimosyan
See All by shimosyan
入社したばかり情シスがClaudeを使って爆速で社内システムを開発した話
shimosyan
0
760
第9回 情シス転職ミートアップ - わたしのミッションとLayerXに決めた理由
shimosyan
0
940
[JNUC2023] Benefits of Single Sign-On with Jamf Pro and Okta Integration
shimosyan
0
270
macOSの更新を促す通知機能 を実装してみた
shimosyan
2
1.2k
Oktaの管理者権限を適切に移譲してみた
shimosyan
3
870
Okta のグループ運用を軽くするためにやったこと
shimosyan
4
2.5k
Jamf Pro で Okta からユーザー情報や所属グループを LDAP を使って取得してみた
shimosyan
2
1.9k
Other Decks in Technology
See All in Technology
omasushiというライブラリを作った
polidog
PRO
0
230
銀行勘定系システムにおける開発プロセス刷新×AIによる環境モダナイゼーション / Development Process Transformation and AI-Driven Environment Modernization
muit
0
2.2k
越境するなら専門用語を使うな高校校歌 / If you wanna cross border, you shouldn't use jargon
vtryo
0
140
【技術的負債conf】事業成長に伴う技術的負債の説明責任とAIによるモニタリング、認知的負債について
i35_267
2
1.6k
新機種発売前に見直そう!端末移行で再ログインが要るアプリ・要らないアプリは何が違うのか 〜シームレスに再開できる設計と実装〜
zozotech
PRO
0
200
aws-iot-platform-architecture-use-cases.pdf
ma2shita
0
150
Geolonia の開発現場における AIの活用について
miya0001
0
100
LTのテーマ どうきめてる?〜5つの型と私のやり方〜
yama3133
1
110
Reactの設計論
uhyo
24
13k
GoにおけるFFIのこれまでとこれから
goccy
5
3.4k
Claude in Chrome 入門 / Introduction to Claude in Chrome
cielo1985
0
810
MCPをつなげて作る組織横断のAIエージェント基盤(の開発工程)
tsubakimoto_s
0
130
Featured
See All Featured
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
610
The World Runs on Bad Software
bkeepers
PRO
72
12k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
540
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
850
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
280
Ethics towards AI in product and experience design
skipperchong
2
370
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
410
Un-Boring Meetings
codingconduct
0
420
How to build a perfect <img>
jonoalderson
1
6k
Transcript
None
2 © Chatwork ◦ ◦
3 © Chatwork • Lambda が何となく分かる人 • Serverless で複雑なバッチ処理が組みたい人 •
AWS のリソースをコード管理し自動でデプロイしたい人 • 監視の仕組みを作って不具合や障害に気付ける運用をしたい人
4 © Chatwork 自己紹介 ❖ 名前:苅谷 直希 / Naoki Kariya
❖ 所属:CSE 部 ❖ 職業:コーポレートエンジニア ➢ 2018 年 11 月から Chatwork ㈱にジョイン ➢ 副業で同人作家やっています @shimosyan ❖ 岐阜でフルリモート勤務をしています ❖ Serverless 歴は 1 年ちょっと ❖ 本当はLANケーブルをいろんな機械に刺したりSSHでコマンド叩くのが好き
5 © Chatwork 01
6 © Chatwork 会社概要 会社名 Chatwork株式会社 代表者名 代表取締役CEO兼CTO 山本 正喜
資本金 1,358,138,500円 従業員数 106名(2019年12月末日時点) 所在地 東京、大阪、ベトナム、台湾 設立 2004年11月11日 事業内容 ビジネスチャット「Chatwork」の開発・運営 コーポレートミッション
7 © Chatwork Chatwork とは 効率的に情報共有できる 仕事の見える化ができる 見落としがなくなる いつでも会議ができる
8 © Chatwork 02
9 © Chatwork CSE 部とは? (Corporate Solution Engineer) SaaSのインテグレーションや自動化などあらゆる手段を駆使して手作業を減らし、 スタッフが業務に集中できる環境づくりを目指しています。
10 © Chatwork CSE 部の役割 社内システムの開発・運用 オフィスネットワークや SaaS の運用 支給
PC や設備デバイスの管理 ISMS の運用・管理 • ID 管理 • API 連携 • Wifi パスワードの変更 • トラブルシューティング • SaaS 化できない処理のシステム化 • 監視・保守 • ヘルプデスク • 修理手配 • 在庫管理 • トラブルシューティング • セキュリティルールの作成 • 内部監査の実施 • 認証の取得
11 © Chatwork なぜ Serverless が必要なのか? 現実 現実 現実 利点
利点 利点 利点 理想 理想 理想
12 © Chatwork 03
13 © Chatwork 事例 1:Serverless で RPA
14 © Chatwork Serverless で RPA SaaS 間の連携をおこない自動化を推進したが、一部の SaaS は
API を外 部に公開しておらず、手作業で操作するしか手段がなかった。 Web アプリケーションの操作を自動化する RPA を構築し、API を通じ て操作できるようにする!
15 © Chatwork AWS Cloud VPC Private subnet AWS Step
Functions workflow RPA アーキテクチャ図 Public subnet Internet Lambda NAT gateway Internet gateway Elastic IP address 10.0.10.0/24 10.0.1.0/24 10.0.0.0/16 Lambda Lambda Users Client API Gateway Lambda Layers 定期実行 Web 操作を実行 処理結果に応じて通知 などの処理を実施 事前処理を行った後、 本処理を開始 Lambda からの通信を固定 IP化 Cloud Watch Events パケットの流れ 処理の流れ Secrets Manager SaaSのログイン情報は Secrets Managerに 保存 Webhook or Notification
16 © Chatwork 工夫したところ ① - Lambda Layer を活用し容量制限を回避 AWS
Document : Lambda Layer Lambda Lambda Zip Max 50 MB Zip Zip Lambda Layer Max 50 MB Max 50 MB Lambda への Deploy には 50MB の容量制限があります。Chromium バイナリが約 40MB のため実 装によっては容量制限を超える可能性がありました。 Chromium などのライブラリを Lambda Layer に寄せることで実装時のリスクの解消に成功。 Success? Failed? Success Success
17 © Chatwork 工夫したところ ② - 全リソースのコード管理 & CI/CD の構築
AWS Cloud Developer Git push Git webhook CloudFormation CodeBuild Lambda API Gateway Step Functions Template Result GitHub
18 © Chatwork 工夫したところ ② - 全リソースのコード管理 & CI/CD の構築
GitHub に、テスト用の CodeBuild が通らないと Merge できないようにしています。もちろん、 Merge すると CodeBuild が本番環境に Deploy してくれます。 ↑ Typescript + Jest で Chatwork に正しく POST できるかをテスト
19 © Chatwork 工夫したところ ③ - 監視体制の構築 AWS Cloud Lambda
API Gateway Step Functions CloudWatch Collect Logs and Metrics Alert Datadog
20 © Chatwork 工夫したところ ③ - 監視体制の構築 エラー時は Datadog から
Alert が発火します。Dashboard にエラーログがピックアップされるよ うにしてあり、迅速な原因特定ができるよう整えています。
21 © Chatwork 事例 2:Serverless で ETL
22 © Chatwork Serverless で ETL ログデータの分析は、これまで BI ツールに生のログデータを投入→BI ツール内で加工し保存をおこなっていたが、生のログデータが膨大すぎ
て月間インポート数の上限値に達してしまった。 BI ツールに投入する前に、事前に加工をおこなうことで投入時のデータ 量を最適化する!
23 © Chatwork ETL アーキテクチャ図 AWS Cloud - Chatwork Production
Account AWS Cloud - CSE Account S3 Log Bucket Glue Crawler Glue Data Catalog AWS Step Functions workflow Athena Lambda 集計ジョブごとに Step Functions を実行し並列化 EC2 EC2 S3 Bucket Policy CREATE TABLE AS で集計テーブルを作成 テーブルデータは S3にCSV保存するオプションを有効化 定期実行 Cloud Watch Events Lambda Lambda クエリを実行 クエリ完了を監視 (Step Functions で定期実行) アクセスログを抽出 集計が完了したら、 TreasureData をAPIから叩いて起動 Secrets Manager BIツールのAPIキーは Secrets Manager に保存
24 © Chatwork 工夫したところ ④ - Step Functions の活用 “条件やループが組める”
ため、 Lambda の責務を明確にできる & コード量が減る 監視に必要な”待ち”の処理を SFunc に定義できる (SFunc は状態遷移ごとの課金のため 実行時間は問われない) コンソール上で実行経過・結果がわかる
25 © Chatwork ハマったこと AWS Cloud - Chatwork Production Account
AWS Cloud - CSE Account S3 Log Bucket Glue Crawler Glue Data Catalog AWS Step Functions workflow Athena Lambda 集計ジョブごとに Step Functions を実行し並列化 EC2 EC2 S3 Bucket Policy CREATE TABLE AS で集計テーブルを作成 テーブルデータは S3にCSV保存するオプションを有効化 定期実行 Cloud Watch Events Lambda Lambda クエリを実行 クエリ完了を監視 (Step Functions で定期実行) アクセスログを抽出 Secrets Manager 集計が完了したら、 TreasureData をAPIから叩いて起動 BIツールのAPIキーは Secrets Manager に保存 実はこの構成、一箇所ハマリポイントがあります。
26 © Chatwork ハマリポイントはここだ! AWS Cloud - Chatwork Production Account
AWS Cloud - CSE Account S3 Log Bucket Glue Crawler Glue Data Catalog AWS Step Functions workflow Athena Lambda 集計ジョブごとに Step Functions を実行し並列化 EC2 EC2 S3 Bucket Policy CREATE TABLE AS で集計テーブルを作成 テーブルデータは S3にCSV保存するオプションを有効化 定期実行 Cloud Watch Events Lambda Lambda クエリを実行 クエリ完了を監視 (Step Functions で定期実行) アクセスログを抽出 Secrets Manager BIツールのAPIキーは Secrets Manager に保存 集計が完了したら、 TreasureData をAPIから叩いて起動
27 © Chatwork Bucket Policy の影響範囲 AWS Cloud - Chatwork
Production Account AWS Cloud - CSE Account S3 Log Bucket Glue Crawler Glue Data Catalog AWS Step Functions workflow Athena Lambda 集計ジョブごとに Step Functions を実行し並列化 EC2 EC2 S3 Bucket Policy CREATE TABLE AS で集計テーブルを作成 テーブルデータは S3にCSV保存するオプションを有効化 定期実行 Cloud Watch Events Lambda Lambda クエリを実行 クエリ完了を監視 (Step Functions で定期実行) アクセスログを抽出 Secrets Manager BIツールのAPIキーは Secrets Manager に保存 集計が完了したら、 TreasureData をAPIから叩いて起動 Glue Crawler Glue Data Catalog Athena Lambda クエリを実行 結論から述べると、Bucket Policy に読み取りを許可する IAM リソースを指定する場合は下図リ ソース分の実行 IAM Role を指定する必要があります。もちろん、実行 IAM Role 自体にも S3 の読 み取り許可を定義する必要があります。 (Athena はクエリを叩いた実行 Role(= Lambda 実行 Role)に依存します。) Bucket Policy ↑ハマりすぎて SRE 部の人に 助けを求める人の図
28 © Chatwork コストについて AWS 無料利用枠 1,000,000 件/月 の実行 &
3,200,000 秒/月 の実行時間※ 4,000 回/月 の状態遷移 ※ 割り当てるメモリ使用量によって変動します $ 0.00 $ 8.24 $ 0.20 $ 2.77 $ 0.00 $ 79.92 $ 36.11 $ 92.38 $ 1.60 $ 0.75
29 © Chatwork まとめ • Step Functions を活用することで複雑なバッチ処理を実現できる • Cloud
Formation と CodeBuild を使えば、GitHub でコード管理が可能 • Datadog や CloudWatch Alert を使うと障害性に備えられる • たくさん動かしても、ほとんどお金はかからない
30 © Chatwork Chatwork株式会社では一緒に働く仲間を 募集しています
働くをもっと楽しく、創造的に