builderscon2017/Serverless Server Side Swift
@noppoMan722さん
akix.icon感想
Swiftでサーバー立てることを考えたこともなかったので、高速だとかデプロイしやすといった話を聞いておもしろいと思った
Hexavilleが辛いパーミッションまわりもやってくれるのは実装大変だったんじゃないかという気がしてすごいと思った
-.icon
概要
Swiftでサーバーレス
範囲が大きい
Swift
当初はiOSアプリ用
強力な静的型付け言語
特徴
VMもインタプリタもない
ARC
Safe
fater
expressive
パフォーマンス
Go Node Rust Swiftだと
フィボナッチ関数でSwiftが最速!
開発
2015年12月
SwiftがOSS化
☞ Webアプリを作れるようになった
なぜSwiftか?
Isomorphicな開発、iOSとバックエンドでコード共有できる
VM/intepreterないので高速
デプロイ簡単
静的型付けなのでランタイムエラー起きづらい
iOSで既に3年間使われていて情報も多い
開発環境の構築
mac + Xcode + Swift Package Manager
Swift Package Manager(SPM)
公式のパッケージマネージャ
依存関係の管理とか
ビルドシステムも兼ねてる
swift package command
プロジェクトファイルも生成できる
swift build command
package.swiftがGemfileみたいなもん
$ swift build
Hello World on Docker
swift.orgからダウンロードできる
Webフレームワーク
言語標準でHTTPサーバーを提供していない
Webフレームワークを利用する
ROM / Database Driver/ template engineも提供されている
http server兼フルスタック
ドキュメントも充実
ControllerとActionを定義していくのでRailsっぽい
モデルもあってfetch save deleteとかもある
1K
vapor universityというe-lerningサイトもある
IBMが開発
SinatraとかExpressみたいな小さな
6K
ドキュメントもVAPORほどじゃないけど充実
薄いサーバーを立てるのでGoっぽい感じ
デプロイについて
VMとかないので、バイナリアップロードするとLinuxで実行できる
UbuntuとRed Hat Linuxでは問題なく動いてる
まだ早くない?と思う人たちへ
サーバーレスコンピューティングでスモールスタートしよう
Serverless computing
AWS Lambdaとか
イベントドリブン
導入コストほぼ0円
実行時間がめちゃ安い
AWS Lambda + API Gateway
Lambda
AWSでserverlessやるため
HTTPのエンドポイントがないのでAPI Gatewayを使う
API Gateway
httpsのエンドポイントを持てる
バックエンドにlambdaを選べる
Amazon Linux
64bit binary
Language
node.js
python
Java
.NET core
swiftはビルドすると実行可能なバイナリになるので、ELFにしてAmazonにうpすればいい
ビルドとデプロイにLinuxが必要
開発フローがめんどい
Lambdaでは直接実行できない
Hexaville
Swiftでサーバーレスアプリケーション
API Gateway + AWS Lambdaを対象
クラウドネイティブなのでインストールしてすぐデプロイできる
パーミッションとか面倒なところを全部やってくれる
HexavilleFramework
ミドルウェアとルーターだけ提供
Hexavillefile.yml
設定ファイル
Package.swift
パッケージマネージャ用
Sources/main.swift
エンドポイント
$ hexville deploy Hello
で面倒なやつ全部やってくれる
XcodeとLLDBによるデバッグも可能
リモートは開発中
まとめ
Siwftサーバーのパフォーマンス
KituraとProsumを比較
Swift/Go/Nodeで見ると、Goroutineが早い
Hexavilleによるオーバーヘッド
node.jsのピュアな方が少ない