More Related Content
PPTX
Git & GitHub & kintone でウルトラハッピー! PDF
Wantedly - 世界一"いいね!"される 求人サイトの作り方 PDF
SIerは如何にしてGitHub Enterpriseを導入するにようになったか PPTX
GitとCIとかチャットとかをオンプレで運用する話 PDF
KEY
PDF
ホームディレクトリに埋もれた便利なコードをさがせ! PDF
GitHub + Circle CI で幸せになろう What's hot
PDF
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜 PDF
会社にGitHub Enterpriseを導入してみた話 PDF
大容量ファイルもGitで管理。 Git LFSの使い方 PPTX
PDF
PDF
PDF
PDF
Github codespaces すごく良い。もうこれで 十分なんじゃという話 PPTX
GitLabを骨までしゃぶりつくす@ゆるUniStudy#7 PPTX
やさしいGitの内部構造 - yapcasia2013 PDF
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」 PDF
PDF
Git勉強会 2016 Gitで卒論を管理しよう回 PDF
PPTX
Git & GitHub を使いこなしてハッピーになろう! - WordBench 名古屋 & concrete5 名古屋 合同勉強会 PPTX
PDF
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces PDF
PDF
Circle ciで結果をslackに通知してみる PDF
Viewers also liked
PDF
PDF
Golang, make and robotics #gocon PDF
PDF
Jenkins study 7 2013-01-28 PDF
PDF
PPTX
PPTX
PDF
PDF
cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi... PPTX
Gunosy Go lang study #6 net http url KEY
Chrome osとgo言語からgoogleの今後を妄想してみる PPTX
PDF
PDF
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version) PDF
PDF
PDF
PDF
PDF
2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会 Similar to Eureka go 2015_12_12
PDF
泥臭い運用から、プログラマブルインフラ構築(に行きたい) PDF
ゲームのインフラをAwsで実戦tips全て見せます PDF
PDF
Windows 開発者のための Dev&Ops on AWS PDF
PDF
なぜソーシャルゲームはクラウドなのか? ~AWSの成功事例を紐解く~ PPTX
PPTX
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ PDF
Jenkinsとhadoopを利用した継続的データ解析環境の構築 PPTX
作られては消えていく泡のように儚いクラスタの運用話 PPTX
Jenkinsとhadoopを利用した継続的データ解析環境の構築 PDF
PDF
Gaming cicd-pipeline gaming-technight-2 PDF
AWSクラウドデザインパターン(CDP) - Eコマース編 - PDF
JAWS-UG Meets Windows (JAWS Days 2017) PDF
[AWS Summit 2012] クラウドデザインパターン#1 CDP概要編 PDF
PDF
華麗なるElastic Beanstalkでの環境構築 PDF
Awsではじめるgluster fs 20120726-public PDF
Eureka go 2015_12_12
- 1.
- 2.
自己紹介
• Matsuo Kenji(@_yokoninaritai)
• eureka, Inc.
• インフラチームのマネージャー兼、情シス的な仕事してます。
• 元料理人で、上場したベンチャー企業2社でインフラと開発やってました。
• 入社していま6ヶ月です。
• 猫好きです。
- 3.
目次
• pairs serverconfiguration
• Blue-Green Deployment
• nginx + go application
• EC2 on MySQL
• Stress Tool
• Monitoring
• Analysis
- 4.
- 7.
• ansible +serverspec
• nat server
• Terraform
• MHA
• apache + php → nginx + golang
• capistrano → blue - green deploy
• RDS → EC2 on MySQL and Aurora
• zabbix → mackerel
• etc…
- 8.
Infrastructure as Codeを心がけました。
SPOF を無くすように心がけました。
コストを抑えれるように一部でスポットインスタンスおよび、
リザーブドインスタンスを利用してます。
security には細心の注意を払う必要があったので、
できるだけpublicに出てるサーバを減らした。
- 9.
- 10.
- 11.
高速化のポイント
• ami作成の自動化
• github上でp-r merge後、buildサーバへ通知
• build → ami作成 までを実行
• deploy 時は、先ほど作成した ami を使って deploy
• amiの使い回し
• ミドルウェアに変更が入らない場合は、使いまわし。
• deployに必要なインスタンス起動回数が2 => 1回へ減る
• 1日1回、毎朝3時に作りなおす
- 12.
- 13.
- 14.
• pairs 側は、pull型 deploy を検討中です。
• マイクロサービスについてはECSを使った
Blue-Green Deployment を検討中です。
- 15.
- 16.
- 17.
• application はsupervisor を使ってデーモン化しました。
• nginx -> golang application は unix domain socket を
利用しました。
• graceful restart を実現する為に、Einhorn を利用しま
した。
- 18.
unix domain socketにした理由
nginx-> golang application を tcp で接続していたら、
golang application間のコネクションが大量に発生して、
サーバのtcp のリソースが枯渇した。
TCP localhost:9000->localhost:26732 (CLOSE-WAIT)
TCP localhost:9000->localhost:27743 (CLOSE-WAIT)
TCP localhost:9000->localhost:27172 (CLOSE-WAIT)
TCP localhost:9000->localhost:26834 (CLOSE-WAIT)
TCP localhost:9000->localhost:27014 (CLOSE-WAIT)
TCP localhost:9000->localhost:27745 (CLOSE-WAIT)
TCP localhost:9000->localhost:27747 (CLOSE-WAIT)
TCP localhost:9000->localhost:27749 (CLOSE-WAIT)
TCP localhost:9000->localhost:27752 (CLOSE-WAIT)
TCP localhost:9000->localhost:27756 (CLOSE-WAIT)
TCP localhost:9000->localhost:27758 (CLOSE-WAIT)
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
Gatling ?
• Scalaで書かれている負荷テスト tool です。
• http://gatling.io/#/download からダウンロードして解
凍すれば使えます。
• recorder を使って簡単にシナリオ作成ができます。
- 32.
- 33.
- 34.
- 35.
- 36.
- 38.
- 39.
- 41.
- 42.
go application の監視
golang-stats-api-handlerでメトリクスを取得
mackerel-plugin-gostatsを作成
gostats.cpu_num.gomaxprocs4 1449332314
gostats.goroutine_num.goroutine_num2537 1449332314
gostats.cgo_call_num.cgo_call_num 8133023 1449332314
gostats.memory.memory_alloc 55116600 1449332314
gostats.memory.memory_total_alloc 668213200288 1449332314
gostats.memory.memory_sys 244588504 1449332314
gostats.memory.memory_lookups 7882769 1449332314
gostats.memory.memory_mallocs 12301923213 1449332314
gostats.memory.memory_frees 12301325814 1449332314
gostats.memory.memory_stack 6619136 1449332314
gostats.heap.heap_alloc 55116600 1449332314
gostats.heap.heap_sys 174587904 1449332314
gostats.heap.heap_idle 93872128 1449332314
gostats.heap.heap_inuse 80715776 1449332314
gostats.heap.heap_released 43384832 1449332314
gostats.heap.heap_objects 597399 1449332314
- 43.
- 44.
- 45.
- 46.
• fluentd →bigquery
• embulk → bigquery
BigQuery は安くて早い
- 47.
BigQuery を使うポイント
• BigQueryはupdate/delete ができないのでview table
を作成。
• WHERE句には何を書いてもテーブルをフルスキャンして
しまうので、daily/monthlyのtableを作成。
• data を極力減らすように送る際に加工する。
• data をロストしても後でリカバリできるように、S3にも
ログファイルをあげてます。
- 48.
- 49.
re:dash?
• 「Open SourceData Collaboration and Visualization Platform」です。
• 多くのデータソースに対応しており、クエリの定期実行や権限制限・APIといった機能
が豊富なことに加え、アップデートも活発なため最近注目を浴びています。
• データソースは、PostgreSQL(Redshift), MySQL, BigQuery, Graphite, MongoDB,
Elasticsearch, InfluxDB, Presto, Hive, Impala, URL, Google Spreadsheets, Python
コードに対応しています。
• AWSやGoogle Compute Engineの場合はセットアップ済みのイメージが用意されてる
ので、それを利用すると楽です。
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
変更した箇所
• public /app server / database の 3つに変更した。
• vpc間のピアリング接続することで通信が可能。
• nat serverを作成してpublicとprivateの境界はっきりさ
せた。
• gateway serverの台数が減らせた。
- 58.
- 59.
• build -deploy のスクリプトが シェルで書かれたがなぜ
かよくエラーでハマる。
• かなり秘伝のタレ化してて の処理が入ってる。
• この処理いらないと思ってけしたら動かなくなった…
- 60.
- 61.
- 62.
- 64.
- 65.
- 67.
- 68.
- 69.
- 70.
- 71.
• PRIMARY KEY(`user_id`,`record_time`), KEY
`idx_user_id` (`user_id`)
• えっ idx_user_id 不要だと思うんですけど。
不要なindex
- 72.
• user_information tableが 600G !!!
• 各ユーザへのお知らせを1ユーザ毎に保存…
• そもそも不要なデータが消えてない…
• しかも圧縮されてない…
• ユーザが増えれば死ぬ未来しかみえない…
増え続けるデータ
- 73.