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...