2017/2/24に開催したEightを支える技術という勉強会のインフラ編での発表資料です。
> &JHIUΛࢧ͑Δٕज़ ΠϯϑϥฤSansan株式会社 Eight事業部 インフラエンジニア 菅井祐太朗
View Slide
Copyright © 2014 Sansan, Inc. All rights reserved. 2> ⾃⼰紹介l Sansan株式会社 Eight事業部l インフラエンジニアl 活動(現在)l ⼀般社団法⼈LOCAL理事l 活動(以前)l Chef実践⼊⾨l Asakusa.rbl るびま(Rubyist向けWeb Magazine)編集l 最近、Go⾔語の勉強をはじめました。l 趣味は電⾞、⾶⾏機、⾳楽、料理、お酒、読書、ゲーム(最近はPC)、インターネット
Copyright © 2014 Sansan, Inc. All rights reserved. 3> ⾃⼰紹介l ⼀般社団法⼈LOCAL理事l ⽬的: 北海道の技術者コミュニティの活動を⽀援し、盛り上げるl 活動l オープンソースカンファレンス北海道の運営l LOCALが⾏うイベントの企画運営l イベント⽀援l 学⽣交通費⽀援制度l 会場確保やスタッフなどイベント運営の補佐
Copyright © 2014 Sansan, Inc. All rights reserved. 4> アジェンダl 監視システムの⼊れ替えl サーバーレスを⽀える権限管理と監視l デプロイの改善l ログの改善l インフラの⽇常l PRやSlackへのコメントl Infra as Code(Chef, Terraform)l 脆弱性への対応
Copyright © 2014 Sansan, Inc. All rights reserved. 5> インフラの体制⼆名
Copyright © 2014 Sansan, Inc. All rights reserved. 6> 監視システムの⼊れ替えこれまではNagiosを使っていましたが2017年1⽉中にMackerelへ完全移⾏しました
Copyright © 2014 Sansan, Inc. All rights reserved. 7> EightとMackerell Eightでは、監視サービスにMackerelを使⽤していますl 機能追加早いし、ブログ読みやすいし、Meetupも活発l はてなによる安⼼感ある
Copyright © 2014 Sansan, Inc. All rights reserved. 8> EightとMackerell 監視対象Amazon EC2 Elastic LoadBalancingAmazon LambdaDynamoDBAmazon RDSElastiCacheAmazon RedshiftAmazonCloudSearchAmazon SQSAmazon Kinesis
Copyright © 2014 Sansan, Inc. All rights reserved. 9> サーバーレス化Eightでのリコメンドアーキテクチャをバッチからサーバーレス化することで刷新しリアルタイムに処理できるようにしました
Copyright © 2014 Sansan, Inc. All rights reserved. 10> リコメンド
Copyright © 2014 Sansan, Inc. All rights reserved. 11> サーバーレス化旧:⽇次バッチ新:リアルタイム・ストリーミング・アーキテクチャデータ加⼯データ収集 レーティングデータキャッシュリコメンド⽣成配信ユーザ⾏動24時間リアルタイムデータ加⼯⾏動ログユーザ⾏動 レーティングデータリコメンド⽣成キャッシュ 配信
Copyright © 2014 Sansan, Inc. All rights reserved. 12> サーバーレスを⽀える権限管理と監視Eightでのリコメンドアーキテクチャをバッチからサーバーレス化することで刷新しリアルタイムに処理できるようにしました権限管理や監視はどのようにしたか紹介します
Copyright © 2014 Sansan, Inc. All rights reserved. 13> サーバーレスなシステムの管理l ピタゴラ装置の監視をどうやるかl 各サービスが連携して動作するl 全体像を⾒た上でどこがつまるとまずいのかアプリケーションエンジニアと認識を合わせる必要があったl 監視項⽬を出してもらって実際の設定を調整したl 権限管理がわりと⼤変l どこにロールを挟み込めるのか確認l どのようなアクションをしたいのかアプリケーションエンジニアからヒアリング
Copyright © 2014 Sansan, Inc. All rights reserved. 14> サーバーレスと権限管理l 権限l 何のサービスがl 何のアクションをl どのリソースに対して⾏いたいのか設定する14新:リアルタイム・ストリーミング・アーキテクチャデータ加⼯データ収集 レーティングデータキャッシュリコメンド⽣成配信ユーザ⾏動リアルタイム
Copyright © 2014 Sansan, Inc. All rights reserved. 15> サーバーレスと権限管理l 権限(例)l Lambdaがl DynamoDBのDescribeStream, GetItemなどなどをl ○○テーブルたちに⾏いたい15新:リアルタイム・ストリーミング・アーキテクチャデータ加⼯データ収集 レーティングデータキャッシュリコメンド⽣成配信ユーザ⾏動リアルタイム
Copyright © 2014 Sansan, Inc. All rights reserved. 16> サーバーレスと権限管理l 権限管理l つまりは、⼈やグループだけでなくl アプリケーション動作に必要なロールを管理するということl Eightでは、Terraformを使って権限を管理している16
Copyright © 2014 Sansan, Inc. All rights reserved. 17> サーバーレスを⽀える権限管理と監視l サーバーレスなものたちの管理⽅法はまだ決まってない感じが強いl デプロイ系l 監視などl ⼿探り感はあったが必要な監視やデプロイツールを考える過程でのチーム内ディスカッションはいい経験だったl ほかチームでのアーキテクチャ選定時に、⾃分たちのチームでの知⾒を広めることができてよかったl ほかチームもサーバーレス化の検討をしていていい影響を与えられたl Serverless Confで発表してもらおうと思っています17
Copyright © 2014 Sansan, Inc. All rights reserved. 18> デプロイの改善l デプロイの問題点l 拘束時間が⻑いl 安全でない部分があるl ⼿間がかかるl 良くしていけるところがたくさんあった
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の利⽤促進
Copyright © 2014 Sansan, Inc. All rights reserved. 20> デプロイの改善l 改善のための施策l asset_sync+S3+Cloudfrontの導⼊Amazon S3 CloudFrontInstancesClientMobile Client
Copyright © 2014 Sansan, Inc. All rights reserved. 21> デプロイの改善l 改善のための施策l blue-green deploymentl 我らが⽗、Martin Fowlerが提唱(March 2010)l https://martinfowler.com/bliki/BlueGreenDeployment.html
Copyright © 2014 Sansan, Inc. All rights reserved. 22> ログの改善l ログの問題点l 出⼒される量が多いl ログレベルが統⼀されていないl 良くしていけるところがたくさんあった
Copyright © 2014 Sansan, Inc. All rights reserved. 23> ログの改善l 改善のための施策l 事前調査l 第⼀弾の削減l ⼈海戦術l 統⼀フォーマットの決定とLTSV化l 実際に1台で収集してみるl Elasticsearch+Kibanaに投⼊l やっぱりまだ多い…l 第⼆弾の削減l 分類中
Copyright © 2014 Sansan, Inc. All rights reserved. 24> インフラの⽇常l Infra as Code(Chef, Terraform)l 脆弱性への対応l PRやSlackへのコメント
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へPOSTl PRでレビューしてもらって本番適⽤
Copyright © 2014 Sansan, Inc. All rights reserved. 26> 脆弱性への対応l 対応の⽅針はCSIRTから出ているl vulsで週次スキャンl CVSSスコアに応じて発⾒⽇から数⽇〜⼀ヶ⽉程度で適⽤l 再起動が伴うパッチの場合は、深夜メンテと同時に対応
Copyright © 2014 Sansan, Inc. All rights reserved. 27> PRやSlackへのコメントl ⼀応PRはほぼすべて⽬を通していますl その上で、パフォーマンス的に気になる点や不思議なコミットについてはコメントと絵⽂字 をつけています
Copyright © 2014 Sansan, Inc. All rights reserved. 28> PRやSlackへのコメントl 最近気になることl チーム間にあると思われている壁の存在(⼼理的)l 個⼈的にはそんなものないと⾔ってしまいたいl ⼼理的安全性と組織学習l 「チームの能⼒は個々⼈の総和を超える」l 「早く成功するために、頻繁に失敗しよう」l 学習する組織を⽀えるもの: ⾃らを動かす⼒、複雑性を理解する⼒、共創的な対話する⼒l 「神よ 願わくばわたしに、変えることのできない物事を受け⼊れる落ち着きと、変えることのできる物事を変える勇気と、その違いを常に⾒分ける知恵とをさずけたまえ」
Copyright © 2014 Sansan, Inc. All rights reserved. 29> PRやSlackへのコメントl 何を考えてコメントしているかl ポジティブにコメントをする。良いことは良いと⾔う。l 「今のプロセスが不完全であると理解し、よりよい⽅法をみんなと協⼒して⾒つけたいと思うこと」l →これらの⼀部は、「チームが機能するとはどういうことか」に書いてあるl http://hokkai7go.hatenablog.jp/entry/2017/02/07/090655
Copyright © 2014 Sansan, Inc. All rights reserved. 30> まとめl インフラは⼆名しかいないので⾃分たちで理想を描いてやっていくしかないl ディスカッションして、よりよくしていけるのは楽しいl 他社事例があるものから学びつつ、初の事例も楽しく深掘りできている
Copyright © 2014 Sansan, Inc. All rights reserved. 31> まとめと、まあ若⼲脱線し始めたあたりで発表はおわりです
Copyright © 2014 Sansan, Inc. All rights reserved. 32> Sansanでは⼀緒に働いてくれる⼈を募集中です!
Copyright © 2014 Sansan, Inc. All rights reserved. 33> 最後にエンジニアとデザイナーの話.NETRubyinfraiOS AndroidR&DData Analystエンジニアの勢⼒図こんな感じです。各開発部⾨及び他1部署にデザイナーはいます。
Copyright © 2014 Sansan, Inc. All rights reserved. 34> エンジニア・デザイナー補助制度書籍購⼊ 環境整備補助 ソフトウェア購⼊補助端末購⼊補助 勉強会参加補助 有料カンファレンス参加補助