Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Ruby on Jets × AWS で 研究の生産性を上げた話 Kindai University Keisuke Mori しがない学部生はServerlessで生産性向上の夢を見るか
Slide 2
Slide 2 text
Mory 近畿大学産業理工学部 - 情報学科 3回生 - Bitcoin, Lightning Network Keisuke Mori - @moririn772 2 株式会社ハックツ - Co-Founder - Rails, Go, Vue.js, AWS 好きなことば - ΏΔ;Θ, ӽڥ
Slide 3
Slide 3 text
・永年初心者 - カンゼンリカイ ⇔ ナンモワカラン ・弊社プロダクト(開発中) - 動画変換API, 画像変換API ・工務店様向けCMSの新規開発 - JSON-API server : Ruby on Jets, DynamoDB - Authentication : Cognito, AWS Amplify - Frontend : Vue.js on Lambda 3 Serverless and @moririn772
Slide 4
Slide 4 text
・背景と技術要件 ・Ruby on Jets ? ・設計のポイント ・運用してみての気付き ・今後の改善点 ・まとめ 4 Agenda
Slide 5
Slide 5 text
・背景と技術要件 ・Ruby on Jets ? ・設計のポイント ・運用してみての気付き ・今後の改善点 ・まとめ 5 Next …
Slide 6
Slide 6 text
山崎重一郎研究室(ネットワーク) ・BitcoinのSecond Layer ・研究目的でノードを100台近く運用中(予定) Raspberry Pi … 76台 Intel NUC … 25台 6 大学で何をやっているのか
Slide 7
Slide 7 text
・100+台のノードたちの構成管理がキツい ・手動デプロイがとてもキツい ・ネットワーク的な制限があって学外からさわれないのがキツい ・技術的な練度の違いで、運用できる人間が限られている ・ 〃 ツールの使い方が浸透しない 7 抱えていた(抱えている)課題
Slide 8
Slide 8 text
! VPN ! 踏み台サーバー ! そもそもラボ内マシンへの外部からのSSH 8 前提
Slide 9
Slide 9 text
9 Labo 1. 手順書をもとにペチペチ Pi NUC CBTI CBTI खॱॻ
Slide 10
Slide 10 text
10 Labo 2. Itamae で構成管理 Pi NUC %4- खॱॻ Ϩγϐ ൘લ͞Μ *UBNBF Ϩγϐ
Slide 11
Slide 11 text
11 Labo 3. Docker NUC #BTI खॱॻ %PDLFSpMF *UBNBF Ϩγϐ
Slide 12
Slide 12 text
12
Slide 13
Slide 13 text
・人 海 戦 術 ・各地に散らばるドキュメント ・Infrastructure as Code ・カオス化するマシンたち 13 つらみ〜
Slide 14
Slide 14 text
・1箇所でポチポチするだけで構成の変更ができる ・現在の構成と運用状況がわかる ・学外からでもさわれる ・運用コストをかけない ・Rubyを使いたい 14 以上を踏まえ、ざっくり要件
Slide 15
Slide 15 text
15 無期限無料枠 $
Slide 16
Slide 16 text
ポチポチするだけで構成管理ができる、 いい感じの管理画面を、 無料枠がある Lambda, DynamoDB を中心に、 Cognito で認証機能をサクッといれつつ、 できれば Ruby をつかって つくればいいのね! 16
Slide 17
Slide 17 text
ポチポチするだけで構成管理ができる、 いい感じの管理画面を、 無料枠がある Lambda, DynamoDB を中心に、 Cognito で認証機能をサクッといれつつ、 できれば Ruby をつかって つくればいいのね! 17 Rubyist やけん Ruby ば書きたか! Serverless なアーキテクチャで作ってみたか!
Slide 18
Slide 18 text
18
Slide 19
Slide 19 text
・背景と技術要件 ・Ruby on Jets ? ・設計のポイント ・実装のポイント ・今後の方針 ・運用してみての気付き ・まとめ 19 Next …
Slide 20
Slide 20 text
“ The Ruby Serverless Framework ” 20 Ruby on Jets
Slide 21
Slide 21 text
フルスタックフレームワークなので、 使いたい用途に応じていい感じに始められる 21 Mode API ViewΛੜ͠ͳ͍ JSON-APIͱ͔ HTML ;ͭ͏ͷRailsత ཧը໘ͱ͔ JOB δϣϒΛಈ͔͢
Slide 22
Slide 22 text
22 Commands
Slide 23
Slide 23 text
コマンド一発でいい感じの CRUDを生成してくれる。 23 Scaffold
Slide 24
Slide 24 text
24 Deploy
Slide 25
Slide 25 text
25 https://rubyonjets.com/
Slide 26
Slide 26 text
Cloud Formation を意識せず、 Rails Like な DSL によってバックエンドを構成する (内部的には Cloud Formation が生成されている) 26 Bye YAML, Hello Ruby
Slide 27
Slide 27 text
27 Routing
Slide 28
Slide 28 text
28 Routing
Slide 29
Slide 29 text
29 Action (Function)
Slide 30
Slide 30 text
30 Database RDSを使うのであれば、普通のRailsと雰囲気同じ Amazon Aurora Serverless を使うもよし、 VPC内にLambdaと同居させてあげるのもよし * 標準で “dynomite” という ORM が入るが、 Rails で広く使われている “dynamoid” を使うのが安定
Slide 31
Slide 31 text
31 Database https://aws.amazon.com/jp/blogs/compute/announcing-improved-vpc-networking-for-aws-lambda-functions/
Slide 32
Slide 32 text
32 Database https://aws.amazon.com/jp/about-aws/whats-new/2019/12/amazon-rds-proxy-available-in-preview/
Slide 33
Slide 33 text
33 Prewarming Jets はデフォルトでPrewarmingをサポートしてくれる (Controllerに関わるアクションのみ)
Slide 34
Slide 34 text
34 Prewarming https://aws.amazon.com/jp/blogs/news/new-provisioned-concurrency-for-lambda-functions/
Slide 35
Slide 35 text
35 See also … “Ruby Serverless Framework“ Tung Nguyen @tongueroo https://rubykaigi.org/2019/presentations/tongueroo.html
Slide 36
Slide 36 text
・背景と技術要件 ・Ruby on Jets ? ・設計のポイント ・運用してみての気付き ・今後の方針 ・まとめ 36 Next …
Slide 37
Slide 37 text
37 LJUDIFO -BCP %PDLFS pMF Pi NUC ൘લ͞Μ *UBNBF SFDJQF 全体像
Slide 38
Slide 38 text
・背景と技術要件 ・Ruby on Jets ? ・設計のポイント ・運用してみての気付き ・今後の方針 ・まとめ 38 Next …
Slide 39
Slide 39 text
・GitHub で dockerfile や itamae recipe を管理し、 管理画面から適用するワークフローの基礎ができた ・学外からでも構成変更が可能に ・ノードの運用状況が一目瞭然 ・たのしく、サクッと作れた 39 使える!
Slide 40
Slide 40 text
・学習コスト低い(サクッとつくるだけなら……) ・使用頻度を考えてもずっと無料枠内で運用できそう ・Rails の便利gemがそのまま使える(のが多い) ・Rails のプロジェクトを強制的に Jets としてデプロイできる ( AfterBurner Mode というのがありまして…) ・使用頻度を考えてもずっと無料枠内で運用できそう 40 Easy!
Slide 41
Slide 41 text
・テストがちゃんと書ける!(デフォルトで Rspec が使える…!) ・弊学は、Ruby, Rails に関する知見のある学生が多いので、 誰でもメンテ(しようという意思があれば)できる。 41 Maintainability!
Slide 42
Slide 42 text
・背景と技術要件 ・Ruby on Jets ? ・設計のポイント ・運用してみての気付き ・今後の方針 ・まとめ 42 Next …
Slide 43
Slide 43 text
・板前さんにポーリングさせるのやめたい ・というかそもそも板前さん退職させたい ・Docker image のビルド、管理もやりたい ・ログの閲覧とかもやりたい(現状試験的に Datadog Logs を使用) ・もっとよくしたい (そもそも、もっと良いアーキテクチャあるでしょ絶対) 43 もっとかんたんに、もっと便利に
Slide 44
Slide 44 text
・背景と技術要件 ・Ruby on Jets ? ・設計のポイント ・運用してみての気付き ・今後の方針 ・まとめ 44 Next …
Slide 45
Slide 45 text
・研究室にあるマシンたちの運用ツールを作った話 ・成果物はそれほど苦労せず意外といい感じにできた ・さよなら YAML ・Ruby on Jets は Rails っぽく Serverless Application を開発できる ・Ruby on Jets は Serverless への入口によさそう ・Lambda ⇔ RDS のようなアンチパターンが徐々になくなってる (?) ・とりあえずやってみよう! 45 まとめ
Slide 46
Slide 46 text
Thank you !! “Ruby on Jets × AWS Ͱݚڀͷੜ࢈ੑΛ্͛ͨ” And enjoy your serverless days
Slide 47
Slide 47 text
Ruby on Jets _ The Ruby Serverless Framework [EN] Ruby Serverless Framework / Tung Nguyen @tongueroo 5ͰAWS LambdaʹσϓϩΠͰ͖ΔʮRuby on Jetsʯ 参考 https://rubyonjets.com/ https://youtu.be/a0VKbrgzKso https://qiita.com/kskinaba/items/9c...