Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Serverless in Scala on Node.js

Serverless in Scala on Node.js

Lightning Talk at Tokyo Node Festival 2018 Day 2
https://nodejs.connpass.com/event/106263/

C0eb1445cda9489ebf8c31c367fec3fb?s=128

TATSUNO Yasuhiro

November 24, 2018
Tweet

More Decks by TATSUNO Yasuhiro

Other Decks in Programming

Transcript

  1. Serverless in Scala on Node.js High Productivity and Resource Saving

    TATSUNO Yasuhiro 2018-11-24 Tokyo Node Festival
  2. Who am I TATSUNO Yasuhiro Twitter: @smogami GitHub: exoego

  3. 所属での事例紹介 case study from my job 教師データ作成・保管SaaS Quality Annotation for

    ML at Scale 名古屋で機械学習の研究開発 R&D in Machine Learning at Nagoya 2018: ヤフー株式会社(Yahoo Japan) さまとの共同研究 道路沿いの視覚情報をAIでテキスト化する実証実験 https://about.yahoo.co.jp/pr/release/2018/10/15a/ 2017: Google I/O 2017 で紹介 スマートデバイスでラジオ体操をモーション認識 https://youtu.be/25ISTLhz0ys
  4. 少人数で自社SaaS立ち上げの技術テーマ Our Technical Challenges for Building SaaS in Small Team

    両立してイテレーションを速く回す!! インフラ管理とコスト抑えて機能開発に専念できるように Serverless Architecture チームの誰もがUIもバックエンドも開発しやすいように Universal Architecture
  5. サーバーレスのうれしさ Why we love "Serverless" 1. Scale by Design: 必要な性能・量の資源が必要な

    ときに自動起動=スケールしやすい設計になる。 ユーザが少ない時間帯の料金節約にもなる 2. Agile and Manage-Less: フルマネージドサービス 活用でインフラ構築が迅速。管理コストも小 プログラム実行環境の例 Lambda イベント駆動アプリ データベースの例 Batch バッチコンピューティング Aurora Serverless オンデマンドでスケールするRDB AppSync リアルタイムデータアプリ向けBaaS
  6. なぜサーバーレス開発で Scala を選ぶか Why our team choose Scala for Serverless

    SDK Runtime • Back-Endは社内知見豊富で生産性高い Scala • 少人数で Front-End & Back-End を継続開発する必要。 Front-End は Scala.js にして、Universalに開発したい Java JVM Java JS Node.js JS C# .NET C# Python Python Python Language Go Go Go Scala AWS Lambda
  7. 1. Slow Cold-start: メモリをケチると初回起動に数秒。 Web APIバックエンドに使うには遅すぎる メモリ増やしたり、インスタンスを暖めておけば、速くなる。 しかし無料枠が削られてコスト増 2. Too

    Big : 使いたいライブラリを色々乗せたら、 Lambdaのデプロイ上限 50MB スレスレ。立ち上げ 時からプロジェクト分割など手間がかかる Scala on JVM サーバーレスの課題 Technical Challenges in Scala on JVM for Serverless 無難に JS or Python …?
  8. Scala SDK Runtime Language Java版 JVM Scala言語とScala&JSライブラリで開発できるAlt-JS Write JS in

    Scala using Scala Libraries and JS Libraries Our Solution: Run Scala on Node.js using… JavaScript版 Node.js JavaScript transpile use Scala.js
  9. 128MB 256MB 512MB 1024MB 1536MB 10秒 8秒 6秒 4秒 2秒

    0秒 Java (JVM) Scala (JVM) Scala (Node.js) Cold-Start / seconds 省メモリでも Cold-Start 0.1s=爆速 ライブラリ使っても 4MB 程度 何よりチームの好きなScalaで開発 採用 Adopted! 課題解決
  10. 1. 何とかなって自分でも驚いてしまった 2. Front-EndもBack-Endも同じ言語、コードベー スで開発できて疲れない 3. Scala.js由来でユーザに迷惑かけたバグない 4. 将来的には JVM

    の低フットプリント化・高速 起動にも期待: Modular Java, Graal VM 5. 好きな言語で意地でもServerless → AltJS on Node.js という福音 Universal Scala.js で1年半開発・運用してみて Retrospection after 1.5 years of Universal Scala.js in production
  11. Programming Language You Love ... if it has AltJS tooling

    Node.js-powered Serverless Architecture Win 今回1番言いたいこと Summary High-Productivity Resource Saving and Fun
  12. Date メ モ リ 使 用 率 Memory Usage Node.js

    8.10 Lambda on Node.js 6.10 Node.jsバージョンアップで最大60%省メモリ Newer Node.js cut memory usage 60% +Turbofan JIT compiler +Ignition Interpreter 省 メ モ リ 化 Less Memory
  13. AWS-SDK-JS Façade for Scala.js https://github.com/exoego/aws-sdk-scalajs-façade AWS-SDK-JSの型定義 + Scalaらしく書きやすくする拡張 本番利用してく中で使いやすいようバンバン改良(途上) Scala.jsでAWS開発、一緒にやりましょう!!

  14. Type Definition Importer for Scala.js TypeScript の *.d.ts をScala.js用に変換するツール。Scala.js作者が開発。 TSの変化が速く、足りない機能が多かったので

    PR 送りまくった。 Webブラウザ版も作りました https://exoego.net/scala-js-ts-importer/ Example) Converts electron.d.t.s for Scala.js Typing
  15. ご質問 Question?