PowerPoint Presentation

Similar documents
ナビタイムサービスにおける、Amazon ECS を活用したシステム移行 ~『乗換NAVITIME』での移行事例 ~

_DockerとAmazon_ECSでDevOpsを進化させる_public

Startup_on_AWS_usecases_StartupDay

10年オンプレで運用したmixiをAWSに移行した10の理由

AWS のコンテナ管理入門(Amazon EC2 Conatainer Service)

GitLab + Dokku で作る CI/ CD 環境 Kazuhiro NISHIYAMA 第 78 回 Ruby 関西勉強会 2017/07/29 Powered by Rabbit 2.2.0

PowerPoint プレゼンテーション

AWS における ベストパートナーを見つける 7 つの方法 相澤恵奏アマゾンウェブサービスジャパンアライアンス技術本部テクニカルイネーブルメント部部長パートナーソリューションアーキテクト #AWSInnovate 2019, Amazon Web Services, Inc. or its affi

PowerPoint Presentation

IIJ Technical WEEK アプリ開発を楽にするRuby PaaS「MOGOK」について

AWS Deck Template

2. Docker の基本的な操作 1 docker hub の参照 2 DockerHub の Explorer リンクからアプリケーションを参照 3 アプリケーション検索 4 tag について 3. docker 基本コマンド 1 docker の

PowerPoint プレゼンテーション

サーバーレスアプリケーションのための CI/CD パイプライン構築 

目次 1. Serverspec とは 1.1. Serverspecとは 1.2. Serverspecで出来る事 2. セットアップ 2.1. 必要なもの 2.2. インストール 3. デモ 3.1. デモ環境について 3.2. テスト対象サーバーの登録 3.3. サンプルテストの中身 3.4.

利用者

C# 開発者必見、Docker コンテナへの継続的デプロイメント on AWS ~CodeCommit, CodeBuild, CodePipeline, CloudFormation, ECR, ECS を活用した CI/CD ~

Mobile Access簡易設定ガイド

Docker/Kubernetes実践コンテナ開発入門

クックパッドのテスト自動化

Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり

利用約款別紙 SkyCDP for AWS 基本サービス仕様書 この仕様書は SkyCDP for AWS の基本サービスに関する内容 方法について記述したものです 尚 SkyCDP for AWS オプションサービスをご利用のお客様は各 SkyCDP for AWS オプションサービスのご契約内容

目次 1. はじめに 本書対象者 PALRO のアプリケーションについて Ubuntu 8.04LTS の入手について Linux 上での開発環境の構築 事前準備 Ubuntu のインストール..

FUJITSU Cloud Service for OSS 「コンテナサービス」 ご紹介資料

【AWS Tech 再演】Amazon EC2 Systems Manager によるハイブリッド環境の管理

内容環境... 3 対応 OS の変更... 3 関連アプリケーションの追加... 4 機能追加... 5 グラフ機能... 5 稼働率... 8 サービス一括削除 自動復旧エスカレーションコマンド AWS カスタムメトリックス監視 NRPE 任意監視... 11

PowerPoint_template_v1.3.pptx / パワーポイントテンプレート

TeX LiveのCIテスティング

PowerPoint プレゼンテーション

よくある問題を解決する~ 5 分でそのままつかえるソリューション by AWS ソリューションズビルダチーム

Presentation Title Here

自己紹介 指崎則夫 ( さしざきのりお ) SCUGJ 運営スタッフ Microsoft MVP

Enterprise Cloud + 紹介資料

実践 Infrastructure as Code

スライド 1

Red Hat Enterprise Linuxのcron(8)デーモンにデフォルト定義されたtmpwatch命令の動作による、WebOTXのトラブル対処方法

CLUSTERPRO MC ProcessSaver 2.3 for Windows 導入ガイド 第 5 版 2018 年 6 月 日本電気株式会社

Nintendo Switch(TM)向け プッシュ通知システム 「NPNS」

aws_summit_abematv_fresh

DMM における会員基盤プラットフォームへのAWS導入から活用事例の紹介

タイトルを1~2行で入力 (長文の場合はフォントサイズを縮小)

FUJITSU Cloud Service for OSS 「ソフトウェア カフェテリア」 ご紹介資料

スライド 1

QNAP TurboNAS Container Station 設定手順書

<< 目次 >> 1 PDF コンバータのインストール ライセンスコードの入力 PDF にフォントを埋め込みたい場合の設定 PDF オートコンバータ EX で使用しない場合 PDF コンバータ単体で使用する場合の説明 PDF コンバータのアン

AKB48のモバイルサイトを 他社DCからAWSにECSを用いて移管した話 株式会社シーエー モバイル 庭木 勝也 坂本 佳久

Red Hat OpenShift上でのInterstage Application Serverの動作手順(Java EE 7編)

PHP 開発ツール Zend Studio PHP アフ リケーションサーハ ー Zend Server OSC Tokyo/Spring /02/28 株式会社イグアスソリューション事業部

PlayStation(TM)Network とコンテナ, CICD

MATLAB® における並列・分散コンピューティング ~ Parallel Computing Toolbox™ & MATLAB Distributed Computing Server™ ~

Red Hat OpenShift上でのInterstage Application Serverの動作手順(Java EE 6編)

FUJITSU Cloud Service K5 PFバッチ基盤オプション ご紹介資料

独立型 Content Engine のソフトウェ ア アップグレード

PHP 分科会 '12/01 OpenSource 協議会 System i 2012/01/26

IBM Bluemix で WordPress 無料の WordPress 環境を構築する 1

クラスタ環境でのデータベースのアップグレード

Alibaba Cloud [ ナレッジドキュメント ] AWS EC2 から Alibaba Cloud ECS へのマイグレーション手順 (Linux 版 ) AWS EC2 から Alibaba Cloud ECS への マイグレーション手順 (Linux 版 ) Ver

+ Octopress + GitHubPages でブログを作成 Name: さりんじゃー

IIJ GIO, SaaS, MOGOK

スライド 1

AWS Mobile Deep Dive - 入門から実践までの最短コース 〜 ライブコーディングで学ぶ AWS を活用したモバイルアプリの開発 〜

24th Embarcadero Developer Camp

Oracle Un お問合せ : Oracle Data Integrator 11g: データ統合設定と管理 期間 ( 標準日数 ):5 コースの概要 Oracle Data Integratorは すべてのデータ統合要件 ( 大量の高パフォーマンス バッチ ローブンの統合プロセスおよ

インテル® Parallel Studio XE 2019 Composer Edition for Fortran Windows : インストール・ガイド

自宅でJava言語の開発環境を作る方法

Slide 1

PowerPoint プレゼンテーション

XAMPP で CMS のお手軽 テスト環境を手に入れよう 2011/5/21 上村崇 1

1. はじめに (1) 本書の位置づけ 本書ではベジフルネット Ver4 の導入に関連した次の事項について記載する ベジフルネット Ver4 で改善された機能について 新機能の操作に関する概要説明 ベジフルネット Ver4 プログラムのインストールについて Ver4 のインストール手順についての説明

PowerPoint プレゼンテーション

ESMPRO/JMSS Ver6.0

IBM API Connect 開発者ポータル構成ガイド 1章

~ アドレス収集くん ~ セキュリティ対策御説明資料

Transcription:

FiNC を支えるインフラ技術 ECS と DevOps

自己紹介 名前 : 中村郷史 ( なかむらさとし ) 所属 : プロダクト本部技術開発部 SREグループ 担当 : Technical Lead in SRE 社歴 : 2017 年 1 月ジョイン 約 1 年半 よく使っているAWSのサービス ECS CloudFormation

人の行動を変え 健康を実現するヘルスケアカンパニー < O u r V i s i o n > 一生に一度のかけがえのない人生の成功をサポートする

健康寿命 という言葉はご存知ですか?

人の支えがなければ 生きられなくなってしまう 年齢のことを言います

寝たきりの原因 その他 26% 脳卒中 24.1 % 厚生労働省 国民基礎調査より 関節疾患 7% 骨折 認知症 21% 9% 衰弱 13%

生活習慣の改善 に必要な三要素 栄養 運動 休養 1 2 何をすべきか分からない 継続できない

Mission すべての人にパーソナルコーチを

FiNC のサービス 広告 有料課金 EC FiNC インタラクティブコミュニケーション

ライフログがたまるほど あなたにフィットするパーソナルトレーナー AI アプリ

FiNC アプリ ライフログの記録 動画コンテンツ SNS 歩数 睡眠時間が自動で記録体重 食事 生理日なども モデルやアスリート 栄養士 / トレーナー等によるヘルシーレシピ フィットネス等の動画 家族や友達 著名人 専門家と楽しくコミュニケーション

FiNC のシステム マイクロサービス アーキテクチャ

マイクロサービスとは 決済機能 ライフログ機能ランキング機能チャット機能 API API 主機能 API アカウント管理機能企業管理機能 AI 機能 ライフログ機能ランキング機能チャット機能グループ機能 決済機能 AI 機能アカウント管理機能姿勢解析機能企業管理機能 主機能 グループ機能 API API 姿勢解析機能 マイクロサービス アーキテクチャ モノリシック アーキテクチャ

なぜマイクロサービスか? ヘルスケアの中で様々なサービスを提供するというビジネス構想があったから FiNC インタラクティブコミュニケーション

アジェンダ なぜ ECS にしたのか ECS Tips ECS 事件簿

アジェンダ なぜ ECS にしたのか ECS Tips ECS 事件簿

ECS 以前の構成の振り返り EC2 Ansible Capistrano

EC2 時代の問題点 スケール性能サーバの起動 構築からサービスに組み込まれる時間 余剰リソース余剰 CPU メモリの有効活用 多様な構成管理 OS 言語 フレームワーク バージョン等 異なる設定管理非同期処理 DB 設定 環境設定

なぜ ECS にしたのか スケール性能コンテナ ( サーバ ) 増強の速さ リソース最適化 1 台のサーバリソースを使いきれる ( 最大 70コンテナ稼動 ) 多様な構成管理 異なる設定管理 SREが中央管理するのではなく 開発側に委譲

なぜ ECS にしたのか スケール性能コンテナ ( サーバ ) 増強の速さ リソース最適化 1 台のサーバリソースを使いきれる ( 最大 70コンテナ稼動 ) 多様な構成管理 異なる設定管理 SREが中央管理するのではなく 開発側に委譲

構成管理ファイル 多様な構成 OS 言語 フレームワーク バージョン等初期 :Ansible(Ops) 移行期 :Dockerfile(Ops) 現在 :Dockerfile(Dev) 異なる設定 非同期処理 DB 設定 環境設定初期 :Capistrano(Ops) 移行期 :Envfile(Ops) 現在 :Envfile(Dev) Envfile 環境変数によってデプロイフロー使い分けているファイル

ECS 移行期間 方法 移行期間約半年 移行方法 Route53 RoutingPolicy: Weighted EC2 99% ECS 1% => 5% => 30% => 100% 1 日放置 エラー リソース確認

トラフィック推移

ECS に移行した結果 スケール性能急激なトラフィックに耐えられるようになった 余剰リソース集約率向上 => 1コンテナインスタンスに平均約 20タスク 多様な構成開発者がSREに依頼することなく変更が可能 異なる設定開発者がSREに依頼することなく変更が可能

アジェンダ なぜ ECS にしたのか ECS Tips ECS 事件簿

発表内容の全体像 CI/Monitoring Jenkins ECS Cluster gateway Build Test Deploy Utility Amazon ECR S3 Lambda function Batch Jenkins worker Task Definition RDS Amazon CloudWatch doker pull docker exec Application ALB RedShift

Tips1 DB マイグレーション実行方法

デプロイフロー Build Test Deploy docker run package install db create test code (image upload) migration ECS TaskDefinition update ECS Service update

どうしたか? アプリケーションクラスターと 同じクラスターを作る

デプロイフロー デプロイフロー 1. utility クラスターのサービス更新 Build Test Deploy 1 ECS 2 gateway 2. 画像アップロード 3. migration 4. Applicationクラスターのサービ Utility 3 S3 ス更新 4 RDS EC2 rails console の実行 Application ALB

Tips2 テスト高速化

ある日 テストめちゃくちゃ遅いんですけど

デプロイフロー ( 再掲 ) Build Test Deploy docker run package install db create test code (image upload) migration ECS TaskDefinition update ECS Service update

テストフロー 開発者 1 GitHub テストフロー 1. 開発者が GitHub に push/merge 3 4 5 6 2 ECS S3 2. イメージをpull 3. コンテナを起動 Build Test Deploy 4. 必要パッケージをインストール Amazon ECR 5. db create 6. テストコード実行 Task Definition ECS Cluster Service

どうしたか? 環境に変更がない場合はビルド処理をスキップ

環境構成チェック方法 対象ファイル ディレクトリをSHA256に変換 インストール Dockerfile Gemfile マイグレーション db/migrate

テストフロー ( 改善版 ) 開発者 1 GitHub 2 6 テストフロー 1. 開発者が GitHub に push/merge 4 5 7 8 3 ECS S3 2. config check 3. ECRからインストール済みイ Build Test Deploy メージを pull Amazon ECR 4. コンテナを起動 5. 必要パッケージをインストール Task Definition 6. config check 7. db create 8. テストコード実行 ECS Cluster Service

実測値 15 分 -> 5 分

Tips3 オートスケール方法

スケールイン / アウト (ECS) ECS publish metrics スケールイン / アウト 1. unicorn worker num task1 1 2 get metrics 2. lambda function 3. 1. をCloudWatchに送る 4. トリガー発動 task2 4 3 Lambda function publish metrics Auto Scaling ScaleIn/Out Amazon CloudWatch

スケールアウト (EC2) EC2 publish metrics 1 Amazon CloudWatch スケールアウト 1. CPU Utilization 2. Scale Out task1 task2 2 Scaleout Auto Scaling

スケールアウト (EC2) EC2 Amazon CloudWatch スケールアウト publish metrics 1. CPU Utilization 1 2. monitoring 3. draining/terminate task1 3 2 monitoring task2 draining/terminate

Tips4 バッチ処理実行方法

EC2 時代 cron で実行

どうしたか? バッチ用の Jenkins

バッチ用 Jenkins Batch Jenkins In-house-tool doker pull 4 docker exec 1 2 ECS ECS Cluster Service ジョブ例 ServieName=AAA Container=rails batch-tool bundle exec rake XXX 3 Task Definition Amazon ECR バッチ実行方法 1. タスク定義を検索 2. リポジトリとタグを検索 3. docker pull 4. コマンド実行

Tips5 Dockerfile の管理

構成管理ファイル 多様な構成 OS 言語 フレームワーク バージョン等 Dockerfile 異なる設定非同期処理 DB 設定 環境設定 Envfile

Dev が管理 管理しているもの Dockerfile Envfile( 環境変数 ) 徐々に移行 管理していないものオートスケールの設定

アジェンダ なぜ ECS にしたのか ECS Tips ECS 事件簿

問題 1 fluentd サーバ SPOF 問題

fluentd を使っている理由 awslogs( 当時 ) 30GB/ 日 x 15 サービス =450GB 450GB x $0.76=$342/ 日 x 30day = $10,260/ 月 fluentd を使った

ある日 なぜかコンテナが起動しない

原因 fluentd サーバに障害 コンテナが上がらない

fluentd の設定 ECS S3 application log access log activity log RedShift

どうしたか? コンテナホストに fluentd の中継サーバーを立てる

fluentd の中継 ECS application log access log S3 activity log RedShift

問題 2 ( ラスト ) push 通知重複問題

ある日 1 人に同じプッシュ通知が重複して届く

原因 非同期処理ワーカーが処理中にコンテナが停止してしま い 最初から処理を再開 ECS タスクの停止動作 $ kill -SIGTERM (kill -15) $ kill -SIGKILL (kill -9)

どうしたか? $ kill -USR1 停止シグナルを送ってから 停止するまで待つ コンテナ監視を社内で構築

ワーカー監視方法 monitoring Jenkins In-house-tool 1 3 ECS 2 ECS Cluster Service System Manager 1. 稼働中のタスクの最大メモリとワーカー数を確認 2. SystemManager にメモリとワーカー数を問い合わせ 3. 最大メモリ値を超えたタスクに対してユーザシグナルを送りタスクを終了

ライフログがたまるほど あなたにフィットするパーソナルトレーナー AI アプリ

採用 エンジニア採用してます SiteReliabilityエンジニア サーバサイドエンジニア (Rails) iosエンジニア Androidエンジニア https://www.wantedly.com/companies/finc/projects

エンジニアブログ Redshift ディスク使用量削減大作戦 細部カイゼン合宿が思ったより有意義だった件 マイクロサービス指向 Rails API 開発ガイド この後 AWS Summit Tokyo の話しもアップします https://medium.com/finc-engineering

Thank you