Developers Summit 2017
New Relicを使ったDevOps時代のパフォーマンス監視と障害分析入門 Degica¶
browser mobile synthetics amp infrastructure alerts insight
apmだけじゃなくていろいろある
APMを効果的に使うためのヒント
1apdexとアラートを適切に設定する
2リリースしたら、デプロイ履歴をチェック
3キートランザクションを活用する
4レスポンスタイムのパフォーマンスが気になったらばらつきも確認
5サービスマップを見て、障害の場所を切り分ける
11月に出たinfrastructureが今推し
変更管理やIT資産管理(インストールパッケージの管理)などもできる
ニューレリックはマーケティングやデータビジネスにも利用される
ドミノピザがもう電話ではなくネット注文ばっかりになった
MLBはもうストリーミングでの利益が大きい
Develop Release Manage Supportがcustomerを可視化できているか
エンジニアに聞かなくても、部署ごとに必要なデータが見れたらいい
しかしながら、できたとしてもやらない、理解できるが問題は人
ここにの取り組み:データに対してのマインドセットを全面的に変える
無理やりサイネージを社内設置
データコンテストを社内で実施、こんなデータ見てみたい
エンジニアが働きたい場所で働けるために、チームに必要なこと サイボウズ¶
kintoneは大阪に7人、大阪に4人、さらにそれぞれで週3だったり在宅だったり
全会議室にテレビ会議がついてる
サイボウズにあったもの、なかったもの
VPNで社外から社内のPCにリモートデスクトップ
持ち出しPCのICカード認証
グループウェア Github/Slack
ウルトラワーク:アマゾン届くから在宅勤務します
選択的人事制度:働く時間と場所を自分できめる
とりあえずやって、だめなところを改善していく
強いチームをつくるために多様性を認める
公明正大:嘘つかない、ごまかさない、質問責任、説明責任
ワークスタイル変革の3要件:ツール、制度、風土が揃っていた
ありがちな障壁:チームの作業効率低下、情報漏洩リスク、心身の悪影響、マネジメントの難易度上昇
メンバーと対面でコミュニケーションできない、質問しても返答待ち
チームビルディングに悪影響、会議に参加できない、情報格差ができる
持ち出しPCをなくす、公衆無線LAN、クラウドサービスのアカウントがとられる
特別扱いされて周囲の目がきになる、出世に影響、自己管理できない、メリハリ
在宅しはじめると働きすぎる事がよくある
成果で評価する必要がある、職種によっては評価が難しい、マイクロマネジメントできない、マネージャーの自己変革が必要
どれも越えなければならない壁
チームによってスタートラインが違う、越えるべき壁も違う、変革の3要素を軸にひとつづつ越えよう
チームの作業効率:ツール、風土
情報漏洩:ツール、制度
心身の影響:制度、風土
中央にマネジメントで解決していこう!
ありがちな勘違い:働く場所の自由化は社員のQOLのためだけ、福利厚生の一環、みんな一緒が一番良い
働く場所の自由化が会社にもたらすもの:生産性の向上、災害への対応、人材の確保
ちょっとした理由で休まないといけないのはもったいない、
台風で出社が大変だと疲れてパフォーマンスが出ない
視野を広げて生産性について考えてみよう
もう電車おくれたり、台風だったら大体の人が会社に誰も来ない
災害でオフィスが単一障害店になる、出社しないといけない理由を減らす
人材の確保、少子高齢化、人は絶対に減る、在宅を必要とする人の受け皿になる
Uターンや在宅の申し出はチャンス、うちにはむりではなく向き合おう
ヤフーのサービス開発を10倍早くした社内PaaS構築の今とこれから¶
AWSなどIaaS利用者、HerokuやGAEなどPaaS利用者、CloudFoundryなど
なぜPaaSを導入したのか?
アーキテクチャ:Apache apache_module
開発ツール:emacs gcc jail cvs
パイプライン:scp & apache restart
10年前:コンピュータは高価なので、開発者がんばる
アーキテクチャ:OpenStack LAMP KVS
開発ツール:OpenStack
パイプライン:CI/CD
・・・使う道具は変わったけど、思想がかわってない
今までのクーロンとかキャッシュとか大変なのを解決したい
バッチをFaaS+MQにする、SCPやめてKVSにする・・・
でもサーバーは増やしたりするのは難しい。。。
バージョンアップとかセキュリティ対応が多すぎる問題
膨大なサーバーのソフトウェア更新が大変すぎる
→セキュリティ更新とかは別の人が選任でやりゃいいじゃん
ただし社内の全チームでそれができるわけないよね
でも横断でやるにしても大変すぎるよね
でもサーバー群に一気にやれると楽だよね
ここでPaaSの出番!!!!!
物理:ネットワーク、ハードウェア、OS、ミドルウェア、ランタイム、アプリ
IaaS:ミドルウェア、ランタイム、アプリ
PaaS:アプリケーションのみ
で、YahooではCloud Foundryを使っている droplet
Bluemixとか、そういうのが全部これで動いてる CloudFroundaryはピポタルさんのを使ってる(?)
必要なものはソースコードと設定ファイルのみ
CI/CDはconcourceでやってる
GHEからconcourceでcheck test deployされる
ドッカーじゃなくてビルドパックを使ってる
PaaS導入の旅:2016先行サービス、2017本格導入、2018拡大
共通のアーキテクチャを全社展開するのは難しい
組織毎に対応策を見つける、組織内エバンジェリストをつくって広めていく
今までは独自技術で開発スピードアップをしていた、独自技術の多くはCFで動かない
なので、既存システムと組み合わせて使っていく
Minimum viable product, pivot agile, metrics
グランブルーファンタジーを支えるインフラの技術 Cygames¶
ログデータの取り組み、1日5TB
リアルタイム通信の高速化:Nginx/Lua L7ロードバランサ
タグシステムと運用
月間300億PV、ヤフーが15億らしい
秒間アクセス8万/秒、15Gbps(CDN除く)
BIG-IP→(websocket)→Nginx→Node→Redis
(HTTP)→Apache→MySQL MHA Cluster
I/Oアクセラレータ Fusion-IO
ネットワークIRQのマルチコアスケーリング
オンプレだとこういう最適化が可能になる
ログデータの取り組みCS最優先
DBインサート180GB/day
テキストログ4.8TB/day (gzip 625GB)
リリース当初のログシステム、Log-Aggrで深夜に1回
ディスク容量不足で種類ごとに収集サーバーを分散させる
ログ転送遅延、欠損などが発生するように、CSに影響
DBのログもディスク枯渇するように、レスポンス遅延
→S3にログを集約することにした
Stalker GoでS3ログ転送エージェントを開発
Porter 非同期MySQLログ転送
PHPからTSVでS3とSQSに転送、Auroraに転送してCSに活用
S3を使うことでいろいろな解析ツールと連携できるように
Kibanaでログから地理情報でISPとかで調べれるようにしてる
「グラブル、重い」でTweet数をグラフ化してアラートにしてる
チャット、マルチバトル、ダメージや特殊効果ステータス共有
Websocketでクライアントサーバ間を持続的接続
Node.jsで実装している
同じルームIDを持つものたちでメッセージが共有される、
バランシング管理サーバモデル、Pub/Subメッセージモデル
サーバのGIPを教えてくれる管理サーバ
メッセージをキュー化して別のサーバーでも同じルームIDで同期
メッセージキューのボトルネック
RedisでPub/Subしてると、Redisが遅延しはじめる
→Pub/SubをやめてNginx/Luaで同一RoomIDのものに接続するように
LuaだとWebAPIで分散先を無停止で追加・削除できるように
Consistent Hashingでバランシングしている
これによってNginxで1台19000TCPセッション
CPU使用率がげき下がりしたのでサーバーの数をへらしたらTCPが枯渇してTime Waitするようになった。。。
サーバ情報インベントリシステムの開発
デプロイ先のサーバリストの抽出をできるように
デプロイステータスなどの情報もここで定義される
Elasticsearchにサーバ情報を登録
CLIでホスト情報を取得できる
データセンターがどこか、環境がどこか、バランサに含まれるか、newrelicが入ってるか、などもタグ情報に含まれる
デプロイやオペレーションの効率化が成功、オペレーションミス防止、ツールとの連携もできる
枯れた技術を採用する、安定稼働を目指す、冗長化分散化はシステムで、他のプロジェクトへの展開を容易に
ボトルネックを作らない、コア技術は自分たちで実装する
新しいビルドターゲットとしてのweb Mozzila¶
$ emcc -o index.html hello.c
WebAssembly(wasm):高速で高効率な実行、ポータブル、安全
全てをWASMでつくる:ゲーム、VR AR、CAD
WASM+UIをWEB:ゲームエンジン、エミュレーター
速度向上:VPN、音声/動画コーデック、画像処理
emscriptenでC/C++からwasmを生成する
LLVMで作られたクロスコンパイラ
MEMFS:メモリ上のファイルシステム
NODEFS:node.jsで使用するファイルシステム
IDBFS:IndexedDBに書き込むファイルシステム
JavaScriptと連携する方法
externするとjsから呼べる
Cを使うとほとんどいじらずにwebassemblyになる
ソケットをwebsocketにするとかは必要
emmake makeってするとCCにemccが入る
ビジーループはemscripten_set_main_loopに変える
Makefile:ifeq ($(CC), $(EMSCRIPTEN)/emcc)
webassemblyはDOM操作できない
wasmにしたあとはprintfデバッグしかない
パフォーマンスチューニングはもう大変
Rustでもwasmを出力できる
事業成長にコミットするエンジニア組織への道のり¶
一生のうち数回使うのをライフイベント
日常的に使うものをライフスタイル
当時は共通化したアーキテクチャで全体最適を狙っていた
開発プロセスはV字モデルを採用
企画者→社員(管理者)→開発者
リクルート全体でエンジニア採用を本格化
いろんなタイプのエンジニアが増えた
調整したくない、マネジメントしたい、コードだけ書いてたい
Will中心で仕事を組み立てていくことが迷ってしまう
思ってた仕事と違う、やりたいことができない・・・
社員エンジニアの価値とは?
売上最大化利益最大化させること、事業成長に負けないように技術的成長をする
組織規模が小さい、事業規模が小さいと事業にコミットすればいい
そうでないと組織課題も解決していかないといけない
事業会社におけるエンジニア像:技術で課題を解決、プロダクト志向
技術x熱意xプロダクト理解=プロダクト志向のエンジニア
事業の成長に対して、エンジニアリングでコミットする
大規模かつサービスレベルが高いと挑戦しにくい
新規で新しいことを始めることにした
事業に適切なものを選ぶことができるのがいい
人材の考え方がかわってきた、ユーザーに近いところで価値をだす人が重要に
人事制度の変更、テックリード制の導入
チャレンジ事例を切り口に採用をする
大きなものを小さく分割して新しくしやすくする
当時悪だと思っていたものが、とても良い効果がでるように
組織が大きくなれば考え方が散らばるのは当たり前
変化を楽しもう、多様性を許容しよう
新規事業が対峙する現実からエンジニアリングを俯瞰する リクルートテクノロジー i2key¶
どんなに開発チームがよくても、プロダクトバックログがクソだと意味がない
そこの部分をリーンスタートアップを使って良い感じにする
従来のプロダクトバックログ、仮説検証型のバックログ
ビジネスからエンジニアリングを見る
System of Engagement, Bimodal IT, BusinessCapability
SoRとSoEが共存していく
とっかかりポイント:どこで売上が発生しているか
エンジニアが書いたコード上で売上がたつSoE
エンジニアが成長のエンジンになりやすい
エンジニアのビジネス貢献が可視化しやすい
内製はこういうモデルが成果だしやすい
憧れのエンジニア文化がある会社はこのモデルが多め
エンジニアが書いたコード上で売上がたたないSoR
純広告を売ってるようなモデルの場合
CVR改善しても売上直結じゃない
パワーバランスが営業>マーケ>プロダクト
CTOがいれば均衡をたもてるはず
商品開発で寄与しなければ安定運用やQCDになる
トラブルだけが目立つようになる
出来て当たり前、減点主義のパラダイム
QCDSのがんじがらめになってエンジニアは壁をつくる
放置していると組織としての慣性は社内受注みたいな関係に向かう
DevOpsで言われている同じ責任や目標を持たねばならない
そこで、アライメントマップを使うのはどうかな?
ビジネス成果とIT成果をそれぞれ照らし合わせる
狩野モデル:魅力品質、性能品質、当たり前品質
ビジネスフェーズごとの検証がある
仮説検証プロセスを回すためにはDevOps系のプラクティスみればいい
予算計画のリズムから開発のリズムになってしまう
新規事業なのに年次計画駆動になるバイアス
年次プロセス以外で資金調達する方法がない
部でバジェットをもって各新規がそこにプレゼンしていく
MVP Canvasで仮説検証の学びに対するコストの
脱予算経営の方法だれかたのむ
BtoBのSaaSだとキードライバがどこかわかってない
仮説検証の速度を上げる、デプロイ回数を増やす
当たり前品質や性能品質はそのままでなければならない
プロセスタイムの削減、リードタイム削減
リソース効率、フロー効率は相関関係にある
フロー効率をあげてから、リソース効率を上げるのが理想
待ち行列理論:100%の利用率の高速道路は駐車場
まずはマルチタスクやめることをする
GitFlowがRelease Branchがマルチタスクをうんでる?
GithubFlowにしよう!
スプリントのエンジニア工数比率のポートフォリオの合意構成
50%で機能追加、20%改善、15%既知バグ回収、15%新規バグ回収
エンジニアの改善のモチベーションを奪ってはいけない
善のエネルギーをへしおってダークサイドに落ちてしまう
時を超えた越境への道 ギルドワークス代表¶
仮説検証型のアジャイル開発で意思決定を上手にする
正しいものを探す、正しいものを作る
Golden Circle:Why -> How -> What
当事者よりも当事者らしい目的を持つ
チームのレビューが顧客へのデモよりはるかに厳しい
忠誠を誓う相手を目的にする
目的のために、役割を選ばない
目的のために、あらゆる人を巻き込む
目的のために、あらゆる手段を取る
目的のために、目的を問い続ける
コードの1行1行に事業戦略をこめる(おすすめしない)
越境=引力、全体をありたい方向に引っ張る力
越境の方向:安定した世界 混乱の世界
越境のための視点、越境のための技術
プロジェクト>プロダクト>事業>組織
同じ高さで言い合うと戦いになってしまう
そしてその視点を行き来できることが重要
リーン原則と、アジャイル原則
指し示す指を見るのではなく、指の先にあるものを見る
プラクティスにとらわれるのではなく、目的をみる
越境すると自分の振る舞いが常に問いただされる
現場をかえるか、自分がかわるか
自分の向かう先だけは自分で変えられる、その先は越境した人のもの
Energized Work:プロフェッショナルは励まされ動機づけられた時に本気だす
だから、越境をenergizeしたい
テック企業人事大集合¶
エンジニアが生き生き働く環境はエンジニアが自ら創る
Frindge81 アドテク
どんな人と働いているか?が重要
技術の目線があっていない人が何人あつまっても技術の高め合いが起こらない
ジンジニアって何してるの?、中途新卒、イベント、開発合宿(優勝でシリコンバレー)
サイボウズ、昔は離職率28%だった。深夜に牛丼食ってまた仕事とか。
ワークスタイル改革3点セットを実行した:ツール、制度、風土
人事制度の方針:100人いれば100通りの人事制度があってよい
siscoのテレビ会議システムを使っている
セキュリティポリシーは遵守
よく聞く懸念:フレックスで社員が遅い、リモートでさぼる、会議やりづらい
→さぼってると思われたくないから、リモートするとより仕事しちゃう
公明正大を最重要の行動指針にしている
カフェ負担:外勤メンバーが世界最高の成果を上げるための投資(高いコーヒー買うのは粛清)
働き方の選択によって給料に変化がない:アウトプットで評価
10時間から6時間になる場合はマネージャーと話し合って評価を変える
ペパボ、福岡100、東京200、アルバイト70、エンジニア95
平均勤続4.1年、年齢32、残業16時間
Slackで残業時間が10とか20とかで通知がくる
人事が現実見ない、考えない、反応しないみたいなことで大問題に
エンジニアをひとくくりに考えた対応をしない、一人一人と対話する
「いるだけで成長できる環境」というコンセプト
何かに追い立てられる環境だと折れてしまう
無理なく自然な成長を支援していく
エンジニア発信のツールを全社で使うことにした
全員がGithubを使う、毎日のタスク管理や採用時の応募など
職種や等級で資格や検定を会社が負担
ルーキー>パートナー>アドバイザー>シニア>プリンシパル>チーフ
あの人がどう評価されているかとかも全部オープンになる
エンジニアのキャリア形成におけるフリーランスの位置づけとは レバテック¶
初年度手取り1.5倍ぐらいだった。青色申告をして税金対策できてる。
発信する人に情報が集まる
必要とされるために、ブランディングは考えてる
勉強には時間を費やしてる