$30 off During Our Annual Pro Sale. View Details »

FOLIOモバイルアプリのインフラ構成/folio-mobile-infra-architecture

Shohei Koyama
November 27, 2018

 FOLIOモバイルアプリのインフラ構成/folio-mobile-infra-architecture

Shohei Koyama

November 27, 2018
Tweet

More Decks by Shohei Koyama

Other Decks in Programming

Transcript

  1. FOLIOϞόΠϧΞϓϦͷ
    Πϯϑϥߏ੒
    גࣜձࣾFOLIO / Site Reliability Engineer
    ބࢁ ᠳฏ(@sion_cojp)

    View Slide

  2. ބࢁ ᠳฏ / @sion_cojp
    ݩFPSϓϩήʔϚʔͰΞδΞνϟϯϐΦϯ
    גࣜձࣾFOLIO / SRE
    自己紹介

    View Slide

  3. - ߏ੒
    - σϓϩΠ
    - ηΩϡϦςΟ
    - ϩά
    - ϞχλϦϯά
    - ϝϯςφϯεը໘
    - ͦͷଞ
    目次

    View Slide

  4. View Slide

  5. 73 ⟎䟝植㹋
    73 ⟎䟝植㹋

    㼐぀ 㼐぀
    ؝أفٖ ؝أفٖ
    ❨鿪 ❨鿪
    ➂䊨濼腉
    ؕآظ鍑犜
    ϑΥϦΦ͸ʮVRʯ΍ʮژ౎ʯͳͲɺ
    ଟ࠼ͳςʔϚΛ͑ΒΜͰ౤ࢿ͕
    Ͱ͖ΔΦϯϥΠϯূ݊Ͱ͢ɻ
    σʔλ౳͸αϯϓϧͰ͋Γɺকདྷͷӡ༻੒Ռ౳Λࣔࠦຢ͸อূ͢Δ΋ͷͰ͸͋Γ·ͤΜɻ

    ۚ༥঎඼ͷऔҾʹ͓͍ͯ͸ɺגՁͷมಈ౳ʹΑΓଛࣦ͕ੜ͡Δ͓ͦΕ͕͋Γ·͢ɻৄࡉ͸ܖ໿క݁લަ෇ॻ໘Λ͓ಡΈ͍ͩ͘͞ɻ
    גࣜձࣾFOLIO ۚ༥঎඼औҾۀऀ ؔ౦ࡒ຿ہ௕ʢۚ঎ʣୈ2983߸ɹՃೖڠձɿ೔ຊূ݊ۀڠձɺҰൠࣾஂ๏ਓ೔ຊ౤ࢿސ໰ۀڠձ

    View Slide

  6. ϞόΠϧΞϓϦपΓͷΠϯϑϥΛ
    ঺հ͠·͢
    本スライドは

    View Slide

  7. ߏ੒ਤ

    View Slide

  8. 構成図

    View Slide

  9. 3छྨͷterraform moduleͰߏ੒
    - ALB
    - Fargate
    - Sorry
    module便利
    Route53は

    module使ってません

    View Slide

  10. ALB module

    View Slide

  11. Fargate module

    View Slide

  12. Sorry module

    View Slide

  13. moduleԽͨ͜͠ͱͰɺDockerfile͑͋͞Ε͹
    FargateͷαʔϏε্ཱ͕͙ͪ͛͢ΕΔ
    ͜ͷߏ੒Ͱɺstage͸1CPU, MEM: 2Gͷίϯςφ1୆ӡ༻
    Ͱ$15/day ͘Β͍Ͱ͢
    ӡ༻ίετΛߟ͑Δͱ͓ಘͩͱࢥ͍·͢
    ʢΠϯϑϥ΄΅ݟͯͳ͍ʣ
    構成について一言

    View Slide

  14. σϓϩΠ

    View Slide

  15. こんな感じ

    View Slide

  16. デプロイツール
    slack-deployͱ͍͏Go੡ͷchatopsπʔϧ
    slackͰinteractiveʹબ୒
    ͦΕΛݩʹฒྻॲཧͰEC2্ͰίϚϯυΛ࣮ߦ
    ݱࡏ͸۪௚ʹaws cli͕ॻ͔ΕͨεΫϦϓτΛ࣮
    ߦͤͯ͞·͕͢ɺ
    Fargate༻ͷdeployπʔϧΛGoͰ࡞੒த

    View Slide

  17. chatops周りの構成図
    ECRは一つのアカウントで
    全てのイメージを管理

    View Slide

  18. slack-deployのconfig一部
    github.com/sioncojp/tomlssm
    を使ってdecryptさせてます

    View Slide

  19. 余談
    ΋ͪΖΜslack-deployͷdeploy΋slack-deploy

    View Slide

  20. ηΩϡϦςΟ

    View Slide

  21. セキュリティ
    SSH͸ଘࡏ͠·ͤΜ
    IAMϧʔϧ΋࠷খݶʹߜͬͯ·͢
    sshなくても苦労はない
    むしろ安心感

    View Slide

  22. セキュリティ
    ίϯςφ੬ऑੑ͸anchoreͱ͍͏αʔϏε
    ΛϩʔΧϧͰಈ͔ͤΔΑ͏ʹͯ͠਍அ
    ECRの機能として早く欲しい!

    View Slide

  23. ϩά

    View Slide

  24. ログ

    View Slide

  25. ログ
    Fargateͷlog driver͸Cloudwatch͚ͩͰ͢
    Cloudwatch͔Βੜϩά:s3 ͱ
    ϦΞϧλΠϜϩά: datadog logsʹग़ྗ͢Δmodule
    Λ࡞ͬͯӡ༻ͯ͠·͢
    ʢtargetʹcloudwatchͷlog groupΛࢦఆ͢Δ͚ͩʣ

    View Slide

  26. ログ - moduleはこんな感じ
    - σʔλΛfirehoseʹ์ΓࠐΉ: cloudwatch -> kinesis firehose
    - datadog logsʹग़ྗ: lambda
    - ੜϩάอଘ s3ʹग़ྗ: firehose

    View Slide

  27. ϞχλϦϯά

    View Slide

  28. モニタリング
    external؂ࢹ͸ಉ͡Α͏ʹFargateͰ
    DatadogΛཱͯͯɺ͔ͦ͜Β؂ࢹͯ͠·͢
    internal؂ࢹ΋DatadogͰɺ
    terraformͰ؅ཧͯ͠·͢
    12月のパブリックβで
    Datadogの機能として使える
    らしいよ!

    View Slide

  29. ϝϯςφϯεը໘

    View Slide

  30. メンテナンス画面
    લஈͷwafͰࣾ಺͔ΒͷΞΫηεͷΈڐՄ
    ϝϯςφϯεը໘͸s3ʹอ؅͞Εͨ503.json
    ͷσʔλΛΞϓϦʹฦ٫

    View Slide

  31. メンテナンス画面のON/OFFもslackから

    View Slide

  32. ͦͷଞ

    View Slide

  33. ドキュメント
    ߏ੒ਤ΍Πϯϑϥܥͷ৘ใ͸αʔϏεଆͷ

    ϦϙδτϦʹೖΕͯ·͢
    terraform͸ίϝϯτΛత֬ʹ࢒͢౒ྗ
    υΩϡϝϯτྨ͕શͯgit্ʹ͋Δҙࣝ
    ʢconfluenceͳͲͦͷଞ͸ۃྗ࢖Θͳ͍ʣ

    View Slide

  34. サービス側のREADME.md
    draw.ioのxmlも保管

    View Slide

  35. terraformのコメント集
    dataやresourceの上の行には自
    明でもコメントを入れてます

    View Slide

  36. リリース前確認
    https://landing.google.com/sre/sre-book/chapters/
    launch-checklist/
    ΛϕʔεʹಠࣗʹνΣοΫϦετΛఆٛ͠
    ϦϦʔεલͷ֬ೝΛSRE + αʔϏε୲౰ऀͰ΍ͬͯ
    ·͢
    ref: https://gist.github.com/sioncojp/57d672fff1a35f3a10dd12526d54afbb

    View Slide

  37. チェックリストの一部

    View Slide

  38. メディア露出等のスパイク対応
    +
    ஆػਃ੥

    View Slide

  39. コンテナ運用最高!
    ؆୯ʂָνϯʂ

    View Slide

  40. 総評
    Dockerfile͚ͩ࡞ͬͯ͘ΕͨΒ͍͍ײ͡ͷΠϯ
    ϑϥ࡞ΔΑʂ
    + ࡞ͬͨޙ͋·Γ໘౗ݟͳͯ͘΋ྑ͍Πϯϑ
    ϥ
    ͱ͍͏ؾ࣋ͪͰ΍ͬͯ·ͨ͠

    View Slide

  41. 総評
    ݁Ռɺͦͷ௨ΓʹͳͬͯΔͱࢥ͏ͷͰ
    ҆ఆͨ͠ྑ͍ӡ༻͕Ͱ͖ͯ·͢

    View Slide

  42. 総評
    ͨͩ·ͩ΍Δ͜ͱ͕͋ΔͷͰ
    ͜Ε͔Β΋վળ͍͖ͯ͠·͢

    View Slide

  43. 以上
    ͋Γ͕ͱ͏͍͟͝·ͨ͠

    View Slide