Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
serverless-elixir-intro
Search
ohr486
April 17, 2019
Programming
650
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
serverless-elixir-intro
ohr486
April 17, 2019
More Decks by ohr486
See All by ohr486
負荷試験Night#1 負荷試験2023年トレンド
ohr486
17
4.9k
Elixir/PhoenixによるWeb開発の現場から
ohr486
1
650
Hacking Phoenix Performance
ohr486
1
410
Plug & WAF
ohr486
2
560
elixirをプロダクションに導入する
ohr486
1
740
IEx maniacs
ohr486
4
670
Hack and Read Elixir
ohr486
2
820
Running App on AppRunner
ohr486
0
870
sponsor-talk-drecom-heisei-ruby-kaigi
ohr486
0
910
Other Decks in Programming
See All in Programming
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
290
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
160
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
420
AI がコードを書く時代における新卒エンジニアの仕事風景 (2026) / New Graduate Engineers in the Era of AI Coding (2026)
sushichan044
0
190
鹿野さんに聞く!『TypeScriptコードレシピ集』で磨く実践力
tonkotsuboy_com
4
970
1B+ /day規模のログを管理する技術
broadleaf
0
120
そのテスト、説明できますか?~LWテスト戦略FW~のご紹介
nakahara
0
190
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
180
スマートグラスで並列バイブコーディング
hyshu
0
270
Creating Composable Callables in Contemporary C++
rollbear
0
180
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
780
Agentic UI
manfredsteyer
PRO
0
220
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Unsuck your backbone
ammeep
672
58k
The browser strikes back
jonoalderson
0
1.4k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.3k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
210
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
380
Balancing Empowerment & Direction
lara
6
1.2k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
190
Measuring & Analyzing Core Web Vitals
bluesmoon
9
870
HDC tutorial
michielstock
2
730
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Transcript
Serverless Elixirを 動かすまで 2019/04/17 fukuoka.ex#21 おーはら@tokyo.ex
agenda • about me • (ちょっとだけお礼と宣伝) • goal • サーバーレスアーキテクチャとは
• AWS Lambdaのアーキテクチャ • カスタムランタイムのシーケンス • ElixirをAWS Lambdaで実行するには • まとめ
about me • Tsunenori Ohara/おーはら ◦ Twitter: @ohrdev ◦ Github:
ohr486 • Work ◦ (株)目黒のIT企業 プラットフォーム開発 1部 部長(※エンジニアリングもやってます ) ◦ CTO室(仮) NEW! ◦ インフラ/基盤/アーキテクチャ設計 ,Elixir/Erlang/HCL/SL/Ruby/Golang • Community ◦ tokyo.ex, ElixirConfJapan, Erlang&ElixirFest オーガナイザー ◦ Japan Elixir Association ◦ meguro.rb, meguro.es • Hobby ◦ 仏像制作, 丸太収集, 写経, 寺社仏閣 ◦ 人工衛星/アマチュア無線
(ちょっとだけお礼と宣伝) fukuoka.exコミュニティの皆さまへ いつも日本のElixirの活動を盛り上げていただいて ありがとうございます。 JEA, tokyo.ex, ElixirFestのオーガナイザーとし て、また、Elixirを使う1エンジニアとしてお礼申し上 げます。
https://elixir-fest.jp
goal • サーバーレスアーキテクチャの概要を理解する • AWS Lambdaのアーキテクチャを理解する • ElixirをAWS Lambdaで動かす方法を知る
サーバーレスアーキテクチャとは • 簡単に言うと、以下のようなアーキテクチャ ◦ 「サーバーを自前運用せずに、マネージドサービスの組み合わせで構築する」 ◦ 「リクエスト単位で必要な CPUリソースをリアルタイムで確保し処理できる」 • よく利用されるマネージドサービスは以下
◦ AWS Lambda, API Gateway (AWS) ※今日の発表はこのあたりを話します ◦ Cloud Function (GCP) ◦ Azure Function (Aure) • 何が嬉しいのか? ◦ スケールを意識しなくてよい(勝手にスケールイン・アウトしてくれる) ◦ 費用が安い(使ったぶんだけ費用を払えば良い)
サーバーレスアーキテクチャとは • サーバー運用のトレンド ◦ 物理サーバーによる運用 : オンプレ ◦ 仮想VMによる運用 :
ex) VMware, etc ◦ クラウドによる運用 : ex) AWS EC2, etc ◦ コンテナによる運用 : ex) Docker, Kubernetes いまは、ここから ◦ マネージドなコンテナサービス : ex) AWS ECS, GKE, EKS このあたりまで ◦ Function as a Service : ex) AWS Lambda, Cloud Function, Azure Function これからは • Webサービスのアーキテクチャの文脈で語られる事が多い(気がする)
webサービス サーバーレスアーキテクチャとは • Elixirとサーバーレスアーキテクチャの関係性 inet cloud Reqイベント リソース確保 イベント毎の計算 Resp返却
リソース解放 Respデータ request response ・マネージドサービスで構築 ・自動でスケールイン・アウト
webサービス サーバーレスアーキテクチャとは • Elixirとサーバーレスアーキテクチャの関係性 inet cloud Reqイベント リソース確保 イベント毎の計算 Resp返却
リソース解放 Respデータ request response API G/W ALB AWS Lambda Custom Runtime
AWS Lambdaのアーキテクチャ • 今まででAWS Lambdaのアーキテクチャの情報はあまりなかったが、 re:Invent2018でアーキテクチャ詳細の発表があった。詳しくは以下を参照 ◦ https://www.youtube.com/watch?v=QdzV04T_kec&feature=youtu.be ◦ https://www.slideshare.net/AmazonWebServices/a-serverless-journey-aws-lambda-under-the-
hood-srv409r1-aws-reinvent-2018 • 内部的にはFirecrackerが基盤となっている ◦ https://firecracker-microvm.github.io/ ▪ 超軽量VM(microVM)をセキュア・高速・大量に起動できるコンテナマシン ▪ KVM上で動作、Rust実装、OSS
AWS Lambdaのアーキテクチャ
ElixirをAWS Lambda上で実行するには • カスタムランタイムを利用 ◦ AWS Lambdaで任意の言語ランタイムを実行させる機能 ◦ 実行環境はAmazon Linux、利用できる環境変数は以下
▪ https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/current-supported-versions.html ◦ 必要なもの ▪ bootstrap : Lambda起動時に実行されるファイル ▪ function handler : 関数呼び出し時に実行するハンドラ ◦ 内部的にはAWS Lambdaランタイムインターフェース (HTTP API)をcall ▪ https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/runtimes-api.html ◦ パッケージングについては割愛、以下のドキュメントをご参照ください ▪ https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/runtimes-walkthrough.html
カスタムランタイムのシーケンス Runtime API bootstrap λ start /invocation/next runtimeの初期化処理 request handler
{payload} /invocation/{req-id}/response /invocation/next response start
Runtime API bootstrap /invocation/next runtimeの初期化処理 request handler {payload} /invocation/{req-id}/response /invocation/next
response init phase invoke cycle start λ start カスタムランタイムのシーケンス
Runtime API bootstrap /invocation/next runtimeの初期化処理 request handler {payload} /invocation/{req-id}/response /invocation/next
response init phase invoke cycle 呼び出しイベント取得 呼び出しレスポンスを Lambdaに送信 start λ start カスタムランタイムのシーケンス
ElixirをAWS Lambda上で実行するには Runtime API λ start /invocation/next elixir handler Erlang
RTS start OTP App start elixir lambda core start bootstrap start OTP App
ElixirをAWS Lambda上で実行するには Runtime API request /invocation/next elixir handler Erlang RTS
{payload} elixir lambda core bootstrap :ok | {:ok, result} handle(Event, Context) /invocation/{req-id}/response response
ElixirをAWS Lambda上で実行するには Runtime API request /invocation/next elixir handler Erlang RTS
{payload} elixir lambda core bootstrap :ok | {:ok, result} handle(Event, Context) /invocation/{req-id}/response response
ElixirをAWS Lambda上で実行するには Runtime API elixir handler Erlang RTS elixir lambda
core bootstrap AWS Lambdaのカスタムランタイム Elixir/ErlangのRTS AWS Lambdaを扱うコアライブラリ Elixir実装の ハンドラ
まとめ • サーバーレスアーキテクチャの概要を紹介しました • AWS Lambdaのアーキテクチャを紹介しました • カスタムランタイムのアーキテクチャを紹介しました • Elixirをカスタムランタイムを使って動作させた場合の概要を紹介しました
◦ 既存実装として、erllambdaがあります、詳しくはこちらを参考にすると理解しやすいです ▪ https://github.com/alertlogic/erllambda • Lambdaのコアライブラリ(開発中)や、内部実装についてはElixirFestで紹介する予 定です • ServerlessベースのWAFについてはElixirFestで紹介する予定です
最後に fukuoka.ex様、発表の機会を頂きありがとうございました 引き続きよろしくお願いいたします。