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

EKSにRailsをのせた

hatappi
January 16, 2019

 EKSにRailsをのせた

#otemachirb

hatappi

January 16, 2019
Tweet

More Decks by hatappi

Other Decks in Technology

Transcript

  1. EKSʹRailsをのせた
    Otemachi.rb #13

    View Slide

  2. ⾃⼰紹介
    • Yusaku Hatanaka (@hatappi)
    • Mercari, Inc
    • ϓϥΠϕʔτͰͷRubyΛ࢖ͬͨ׆ಈ
    • roppongi.rbͷΦʔΨφΠβʔ
    • Red Data ToolsͰRed Chainerͭͬͯ͘·͢
    • RailsΛ࢖ͬͨαʔϏεͷ։ൃ <= ࠓ೔͸͜ͷ࿩
    • 煎り⼤⾖が好き

    View Slide

  3. View Slide

  4. Anketとは?
    • Slack上でアンケートをとるためのサービス
    • アンケートの作成や投票はSlack上から⾏う
    • 集計結果はSlack上やWEB上から確認する
    • 今後は回答結果を取得するようなAPIを追加予定
    https://slack.com/apps/ADJRPSY1Y-anket-

    View Slide

  5. なぜ作ったのか?
    • Slack Appを作ってみたかった
    • 会社でSlackは使っているけど、もっと使い倒したい
    • 技術を試せる場所がほしかった
    • 僕はドキュメントや記事を読んでわかった気になって
    しまうので実際にそれを試すような場がほしかった
    • サービス作るのおもしろい

    View Slide

  6. 構成

    View Slide

  7. Rails
    • Ruby 2.5.3 (2.6.1が出たら2.6にしたいなぁ)
    • Rails 5.2.2
    • JSはTypeScriptで書いていて⼀部でReactを使⽤

    View Slide

  8. Kubernetsとは?
    • コンテナ化されたアプリのデプロイなどを⾃動化してくれ
    るコンテナオーケストレーションエンジン
    • k8sと略して使う
    • kubernetes => k8s

    View Slide

  9. EKSとは?
    • AWSの提供するマネージドなKubernetsのサービス
    • AWSならではの特徴
    • VPC サポート
    • IAM 認証
    • EKS APIのAPIコールはCloudTailで記録
    • etc

    View Slide

  10. 例えばRailsに機能追加
    をしてデプロイする

    View Slide

  11. サービスを
    ⽌めたくない!

    View Slide

  12. RollingUpdate
    old
    new
    old
    new
    old
    new
    old
    new
    old
    new
    • maxUnavailableでRolling Update時
    に使えなくなるpod数を指定
    • maxSurgeで超過を許可するpod数を
    指定します。

    View Slide

  13. _⼈⼈⼈⼈⼈⼈_
    > 当然の死 <
     ̄Y^Y^Y^Y^Y^Y^ ̄

    View Slide

  14. しょ障害が

    View Slide

  15. セルフヒーリング
    _⼈⼈⼈⼈⼈⼈_
    > 当然の死 <
     ̄Y^Y^Y^Y^Y^Y^ ̄
    起動数を設定することでk8sがその数を維持するようにしてくれる

    View Slide

  16. 他にも
    • 複数のNodeの管理
    • オートスケーリング
    • サービスディスカバリ
    • ロードバランシング
    • etc

    View Slide

  17. 悩んだところ

    View Slide

  18. 秘匿値はどうわたす?
    • Databaseへの接続情報やSECRET_KEY_BASEとか
    • Docker Image をbuildする時にわたす? =>
    • セキュリティ的にもだし秘匿値の変更があるたびにビ
    ルドするの?
    • k8sのSecret リソースを使⽤する =>
    • マニフェストファイルはどう管理するのか?

    View Slide

  19. 秘匿値はどうわたす?
    CBTFͰFODPEF͞Ε͍ͯΔ͚ͩͳͷͰ
    (JUͰ؅ཧ͢Δͷ͸ɾɾɾ
    "84,.4Λ࢖ͬͯ4FDSFUͷEBUBͷ஋͚ͩΛ҉߸Խʂ
    (JUͰ΋؅ཧͰ͖Δ͠LFZ͕࢒ΔͷͰϨϏϡʔ΋Ͱ͖Δ
    TIZJLPLVCFTFD

    View Slide

  20. まとめ
    • RailsをEKSにのせました
    • Railsのコンテナ化よりもEKSにのせることよりもk8sと
    仲良くなるのが1番時間かかった
    • Anketをぜひ使っていただいてフィードバックください!!

    View Slide

  21. 余談

    View Slide

  22. プライベートで継続して開発する
    • ⼟⽇にまとめて書こうだと出来ない時に萎えてしまう
    • ⼟⽇はなんだかんだでイベントが⼊る
    • 毎⽇ちょっとずつ開発する
    • 30分とか1commitとか
    • いつか完成する
    • https://johnresig.com/blog/write-code-every-day/

    View Slide