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

Technology to support Eight, Infrastructure part

Yutaro Sugai
February 24, 2017

Technology to support Eight, Infrastructure part

2017/2/24に開催したEightを支える技術という勉強会のインフラ編での発表資料です。

Yutaro Sugai

February 24, 2017
Tweet

More Decks by Yutaro Sugai

Other Decks in Technology

Transcript


  1. > &JHIUΛࢧ͑Δٕज़ Πϯϑϥฤ
    Sansan株式会社 Eight事業部 インフラエンジニア 菅井祐太朗

    View Slide

  2. Copyright © 2014 Sansan, Inc. All rights reserved. 2
    > ⾃⼰紹介
    l Sansan株式会社 Eight事業部
    l インフラエンジニア
    l 活動(現在)
    l ⼀般社団法⼈LOCAL理事
    l 活動(以前)
    l Chef実践⼊⾨
    l Asakusa.rb
    l るびま(Rubyist向けWeb Magazine)編集
    l 最近、Go⾔語の勉強をはじめました。
    l 趣味は電⾞、⾶⾏機、⾳楽、料理、お酒、読書、ゲーム(最近
    はPC)、インターネット

    View Slide

  3. Copyright © 2014 Sansan, Inc. All rights reserved. 3
    > ⾃⼰紹介
    l ⼀般社団法⼈LOCAL理事
    l ⽬的: 北海道の技術者コミュニティの活動を⽀援し、盛り上
    げる
    l 活動
    l オープンソースカンファレンス北海道の運営
    l LOCALが⾏うイベントの企画運営
    l イベント⽀援
    l 学⽣交通費⽀援制度
    l 会場確保やスタッフなどイベント運営の補佐

    View Slide

  4. Copyright © 2014 Sansan, Inc. All rights reserved. 4
    > アジェンダ
    l 監視システムの⼊れ替え
    l サーバーレスを⽀える権限管理と監視
    l デプロイの改善
    l ログの改善
    l インフラの⽇常
    l PRやSlackへのコメント
    l Infra as Code(Chef, Terraform)
    l 脆弱性への対応

    View Slide

  5. Copyright © 2014 Sansan, Inc. All rights reserved. 5
    > インフラの体制
    ⼆名

    View Slide

  6. Copyright © 2014 Sansan, Inc. All rights reserved. 6
    > 監視システムの⼊れ替え
    これまではNagiosを使っていましたが
    2017年1⽉中にMackerelへ完全移⾏しました

    View Slide

  7. Copyright © 2014 Sansan, Inc. All rights reserved. 7
    > EightとMackerel
    l Eightでは、監視サービスにMackerelを使⽤しています
    l 機能追加早いし、ブログ読みやすいし、Meetupも活発
    l はてなによる安⼼感ある

    View Slide

  8. Copyright © 2014 Sansan, Inc. All rights reserved. 8
    > EightとMackerel
    l 監視対象
    Amazon EC2 Elastic Load
    Balancing
    Amazon Lambda
    DynamoDB
    Amazon RDS
    ElastiCache
    Amazon Redshift
    Amazon
    CloudSearch
    Amazon SQS
    Amazon Kinesis

    View Slide

  9. Copyright © 2014 Sansan, Inc. All rights reserved. 9
    > サーバーレス化
    Eightでのリコメンドアーキテクチャを
    バッチからサーバーレス化することで
    刷新しリアルタイムに処理できるようにしました

    View Slide

  10. Copyright © 2014 Sansan, Inc. All rights reserved. 10
    > リコメンド

    View Slide

  11. Copyright © 2014 Sansan, Inc. All rights reserved. 11
    > サーバーレス化
    旧:⽇次バッチ
    新:リアルタイム・ストリーミング・アーキテクチャ
    データ加⼯
    データ収集 レーティング
    データ
    キャッシュ
    リコメンド
    ⽣成
    配信
    ユーザ⾏動
    24時間
    リアルタイム
    データ加⼯
    ⾏動ログ
    ユーザ⾏動 レーティング
    データ
    リコメンド
    ⽣成
    キャッシュ 配信

    View Slide

  12. Copyright © 2014 Sansan, Inc. All rights reserved. 12
    > サーバーレスを⽀える権限管理と監視
    Eightでのリコメンドアーキテクチャを
    バッチからサーバーレス化することで
    刷新しリアルタイムに処理できるようにしました
    権限管理や監視はどのようにしたか紹介します

    View Slide

  13. Copyright © 2014 Sansan, Inc. All rights reserved. 13
    > サーバーレスなシステムの管理
    l ピタゴラ装置の監視をどうやるか
    l 各サービスが連携して動作する
    l 全体像を⾒た上でどこがつまるとまずいのかアプリケーションエ
    ンジニアと認識を合わせる必要があった
    l 監視項⽬を出してもらって実際の設定を調整した
    l 権限管理がわりと⼤変
    l どこにロールを挟み込めるのか確認
    l どのようなアクションをしたいのかアプリケーションエンジニア
    からヒアリング

    View Slide

  14. Copyright © 2014 Sansan, Inc. All rights reserved. 14
    > サーバーレスと権限管理
    l 権限
    l 何のサービスが
    l 何のアクションを
    l どのリソースに対して⾏いたいのか設定する
    14
    新:リアルタイム・ストリーミング・アーキテクチャ
    データ加⼯
    データ収集 レーティング
    データ
    キャッシュ
    リコメンド
    ⽣成
    配信
    ユーザ⾏動
    リアルタイム

    View Slide

  15. Copyright © 2014 Sansan, Inc. All rights reserved. 15
    > サーバーレスと権限管理
    l 権限(例)
    l Lambdaが
    l DynamoDBのDescribeStream, GetItemなどなどを
    l ○○テーブルたちに⾏いたい
    15
    新:リアルタイム・ストリーミング・アーキテクチャ
    データ加⼯
    データ収集 レーティング
    データ
    キャッシュ
    リコメンド
    ⽣成
    配信
    ユーザ⾏動
    リアルタイム

    View Slide

  16. Copyright © 2014 Sansan, Inc. All rights reserved. 16
    > サーバーレスと権限管理
    l 権限管理
    l つまりは、⼈やグループだけでなく
    l アプリケーション動作に必要なロールを管理するということ
    l Eightでは、Terraformを使って権限を管理している
    16

    View Slide

  17. Copyright © 2014 Sansan, Inc. All rights reserved. 17
    > サーバーレスを⽀える権限管理と監視
    l サーバーレスなものたちの管理⽅法はまだ決まってない
    感じが強い
    l デプロイ系
    l 監視など
    l ⼿探り感はあったが必要な監視やデプロイツールを考える過程
    でのチーム内ディスカッションはいい経験だった
    l ほかチームでのアーキテクチャ選定時に、⾃分たちのチームで
    の知⾒を広めることができてよかった
    l ほかチームもサーバーレス化の検討をしていていい影響を与え
    られた
    l Serverless Confで発表してもらおうと思っています
    17

    View Slide

  18. Copyright © 2014 Sansan, Inc. All rights reserved. 18
    > デプロイの改善
    l デプロイの問題点
    l 拘束時間が⻑い
    l 安全でない部分がある
    l ⼿間がかかる
    l 良くしていけるところがたくさんあった

    View Slide

  19. Copyright © 2014 Sansan, Inc. All rights reserved. 19
    > デプロイの改善
    l 改善のための施策
    l asset_sync+S3+Cloudfrontの導⼊
    l 進⾏中
    l デプロイ時間 12分→4分(ステージ)
    l Blue-Green Deploymentの導⼊
    l 進⾏中
    l ⾃動PR作成botの導⼊
    l 運⽤開始済み
    l 設定ファイルのメンテコスト削減
    l KMSの利⽤促進

    View Slide

  20. Copyright © 2014 Sansan, Inc. All rights reserved. 20
    > デプロイの改善
    l 改善のための施策
    l asset_sync+S3+Cloudfrontの導⼊
    Amazon S3 CloudFront
    Instances
    Client
    Mobile Client

    View Slide

  21. Copyright © 2014 Sansan, Inc. All rights reserved. 21
    > デプロイの改善
    l 改善のための施策
    l blue-green deployment
    l 我らが⽗、Martin Fowlerが提唱(March 2010)
    l https://martinfowler.com/bliki/BlueGreenDeployment.html

    View Slide

  22. Copyright © 2014 Sansan, Inc. All rights reserved. 22
    > ログの改善
    l ログの問題点
    l 出⼒される量が多い
    l ログレベルが統⼀されていない
    l 良くしていけるところがたくさんあった

    View Slide

  23. Copyright © 2014 Sansan, Inc. All rights reserved. 23
    > ログの改善
    l 改善のための施策
    l 事前調査
    l 第⼀弾の削減
    l ⼈海戦術
    l 統⼀フォーマットの決定とLTSV化
    l 実際に1台で収集してみる
    l Elasticsearch+Kibanaに投⼊
    l やっぱりまだ多い…
    l 第⼆弾の削減
    l 分類中

    View Slide

  24. Copyright © 2014 Sansan, Inc. All rights reserved. 24
    > インフラの⽇常
    l Infra as Code(Chef, Terraform)
    l 脆弱性への対応
    l PRやSlackへのコメント

    View Slide

  25. Copyright © 2014 Sansan, Inc. All rights reserved. 25
    > Infra as Code(Chef, Terraform)
    l インフラに関連するコード
    l Chef: EC2のミドルウェアまわりや設定など
    l Terraform: AWS(VPC, IAM, Cloudfront等)
    l Lambda: CloudWatchのAPIを叩いてMackerelへPOST
    l PRでレビューしてもらって本番適⽤

    View Slide

  26. Copyright © 2014 Sansan, Inc. All rights reserved. 26
    > 脆弱性への対応
    l 対応の⽅針はCSIRTから出ている
    l vulsで週次スキャン
    l CVSSスコアに応じて発⾒⽇から数⽇〜⼀ヶ⽉程度で適⽤
    l 再起動が伴うパッチの場合は、深夜メンテと同時に対応

    View Slide

  27. Copyright © 2014 Sansan, Inc. All rights reserved. 27
    > PRやSlackへのコメント
    l ⼀応PRはほぼすべて⽬を通しています
    l その上で、パフォーマンス的に気になる点や不思議なコミッ
    トについてはコメントと絵⽂字 をつけています

    View Slide

  28. Copyright © 2014 Sansan, Inc. All rights reserved. 28
    > PRやSlackへのコメント
    l 最近気になること
    l チーム間にあると思われている壁の存在(⼼理的)
    l 個⼈的にはそんなものないと⾔ってしまいたい
    l ⼼理的安全性と組織学習
    l 「チームの能⼒は個々⼈の総和を超える」
    l 「早く成功するために、頻繁に失敗しよう」
    l 学習する組織を⽀えるもの: ⾃らを動かす⼒、複雑性を理解す
    る⼒、共創的な対話する⼒
    l 「神よ 願わくばわたしに、変えることのできない物事を受け⼊
    れる落ち着きと、変えることのできる物事を変える勇気と、そ
    の違いを常に⾒分ける知恵とをさずけたまえ」

    View Slide

  29. Copyright © 2014 Sansan, Inc. All rights reserved. 29
    > PRやSlackへのコメント
    l 何を考えてコメントしているか
    l ポジティブにコメントをする。良いことは良いと⾔う。
    l 「今のプロセスが不完全であると理解し、よりよい⽅法をみ
    んなと協⼒して⾒つけたいと思うこと」
    l →これらの⼀部は、「チームが機能するとはどういうこと
    か」に書いてある
    l http://hokkai7go.hatenablog.jp/entry/2017/02/07/090
    655

    View Slide

  30. Copyright © 2014 Sansan, Inc. All rights reserved. 30
    > まとめ
    l インフラは⼆名しかいないので⾃分たちで理想を描いて
    やっていくしかない
    l ディスカッションして、よりよくしていけるのは楽しい
    l 他社事例があるものから学びつつ、初の事例も楽しく深
    掘りできている

    View Slide

  31. Copyright © 2014 Sansan, Inc. All rights reserved. 31
    > まとめ
    と、まあ若⼲脱線し始めたあたりで発表はおわりです

    View Slide

  32. Copyright © 2014 Sansan, Inc. All rights reserved. 32
    > Sansanでは
    ⼀緒に働いてくれる⼈を募集中です!

    View Slide

  33. Copyright © 2014 Sansan, Inc. All rights reserved. 33
    > 最後にエンジニアとデザイナーの話
    .NET
    Ruby
    infra
    iOS Android
    R&D
    Data Analyst
    エンジニアの勢⼒図こんな感じです。
    各開発部⾨及び他1部署にデザイナーはいます。

    View Slide

  34. Copyright © 2014 Sansan, Inc. All rights reserved. 34
    > エンジニア・デザイナー補助制度
    書籍購⼊ 環境整備補助 ソフトウェア購⼊補助
    端末購⼊補助 勉強会参加補助 有料カンファレンス
    参加補助

    View Slide

  35. View Slide