Slide 1

Slide 1 text

Shinjuku.rb #39 動画配信サイトを⽀える技術 タケユー・ウェブ株式会社 ⽵内雄⼀

Slide 2

Slide 2 text

⽵内雄⼀ @takeyuweb 元フリーランスWeb開発者 • 1984年限界集落⽣まれ、⾼専育ち • 2008年個⼈事業主として独⽴ • 上流、下流、運⽤ • Rails 1.1〜4.2受託(ほぼ業務委託) • 地域コミュニティサイト • SNS • ペライチ的なの • 業務管理システム • 動画配信・販売サイト などなど… • 特定の取引先に依存しない働き⽅! • 2016年6⽉ 法⼈成りしました • タケユー・ウェブ(株) ロケ地:蒜⼭⾼原

Slide 3

Slide 3 text

ディーゼル気動⾞ on Rails(単線)

Slide 4

Slide 4 text

ディーゼル気動⾞ on Rails(単線)

Slide 5

Slide 5 text

Gem選び • 情報があるか • 不⽑な嵌まり時間を最⼩限にしたい • コードに⽬を通す • 完全に追うほどはしないけどざっと⽬を通して何をやっているか把握 する • 挙動を変えるものは使わない • 便利系にある奴 • たとえば論理削除は専⽤のメソッドを使う感じ

Slide 6

Slide 6 text

RailsとAWSで動画配信サイト を作ったのでその話

Slide 7

Slide 7 text

動画配信サイトに必要っぽいもの • ⼤容量ファイルアップロード • エンコード • サムネイル • ストリーミング • ダウンロード

Slide 8

Slide 8 text

⼤容量ファイルアップロード

Slide 9

Slide 9 text

⼤容量ファイルアップロード • 分割アップロード • S3に蓄積 • MultipartUpload機能で結合

Slide 10

Slide 10 text

エンコード

Slide 11

Slide 11 text

エンコード • Amazon Elastic Transcoder • 動画変換サービス • S3上の動画ファイルを、指定した形式(プリセット)に変換し てS3に書き出すサービス

Slide 12

Slide 12 text

エンコード

Slide 13

Slide 13 text

サムネイル

Slide 14

Slide 14 text

サムネイル • Refile gem • 画像アップロード系gem • Sinatra製画像サーバ • 画像サーバについて • URL中で画像の変換指⽰ • くり抜き、縮⼩、など • サイズ • フォーマット • URLに応じて変換して返す • processor⾃作もかんたん • JPEG/PNG圧縮・最適化で転送 量を削減

Slide 15

Slide 15 text

サムネイル • Amazon CloudFront • Refile 毎回変換するので遅い • プロキシキャッシュなどキャッ シュの仕組みが必要 • CloudFrontを経由してRefile サーバにアクセス • CoudFront側でキャッシュさ れるのでRefileサーバへのア クセスは激減

Slide 16

Slide 16 text

サムネイル

Slide 17

Slide 17 text

ストリーミング • 購⼊者だけに動画をストリーミング再⽣させたい • ストリーミングサーバーによらないストリーミングしたい

Slide 18

Slide 18 text

ストリーミング • HLS: HTTP Live Streaming • HTTPでストリーミング再⽣する仕組み • 簡単に⾔うと、動画ファイルを⼩分けにして、次々ダウンロー ドしながら再⽣するもの • ⼩分けにした動画ファイルを「セグメント」と呼びます。

Slide 19

Slide 19 text

ストリーミング • CloudFront • セグメントをエッジサーバーでキャッシュ • Tokyoリージョンではデータ転送料⾦はS3と変わらない(15GBで $2000ぐらい) • 速い • 署名付きURL • 利⽤期限等を設定したCloudFront URLを発⾏できる • 権限のあるユーザーにのみセグメントのDLが可能に • 署名付きURLでもちゃんとキャッシュされます

Slide 20

Slide 20 text

ストリーミング • CloudFront • 署名付きURL

Slide 21

Slide 21 text

ダウンロード • S3 • 安いリージョンに バケットを作る • 署名付きURL

Slide 22

Slide 22 text

そんなこんなで

Slide 23

Slide 23 text

独⼒でなんとか(プレ)リ リースに漕ぎ着けましたが

Slide 24

Slide 24 text

このままでは 死んでしまう!ので ※2016年4⽉〜6⽉の平均稼働時間300時間

Slide 25

Slide 25 text

パートナー募集してます。 • フリーランス、副業さんなど • 時給制、応相談 • Railsに⾃信 • Issueを渡すので消化して欲しい • AWSなら俺に任せろー • 保守管理⽤ツールとか作って欲しい • フロントエンドできますって⼈ • ※現在React SPAですが、諸事情によりRailsビューへの移植を・・・ • 現在ぼく+2⼈ • https://takeyuweb.co.jp / Twitter @takeyuweb / Facebook takeyuweb