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

20211209_カミナシレポートが辿り着いたメンテナンスモードのあり方

dmiyamoto
December 27, 2021

 20211209_カミナシレポートが辿り着いたメンテナンスモードのあり方

2021/12/9に開催された「Startup Issue Gym #3【AWS活用におけるIssue】」での登壇資料です。

dmiyamoto

December 27, 2021
Tweet

More Decks by dmiyamoto

Other Decks in Technology

Transcript

  1.  日本の就業人口の半分はノンデスク 設備・清掃 旅客・運輸 建設 福祉施設 製造業 スーパー・小売 接客業 飲食店 現場で働く3,100万人が、紙中心で非効率なオペレーションに日々追われています。

    プライベートではスマートフォンを使っているのに、職場ではなぜか紙とペン、デジカメを使う必要があるのが現状です。 日本における労働人口の割合 デスク ワーカー ノンデスク ワーカー % % 52 48 ※ 独立行政法人労働政策研究・研修機構「職業別就業者数」より当社算出
  2. カミナシ アプリ  メンテナンスモード中 Cloud Front S3 Bucket ELB ECS Cluster

    Fargate Container ・・ ・ Aurora MySQL 全HTTPリクエスト を拒否 LogInとオフライン で必要なGET処理 のみ許可
  3. カミナシ アプリ  メンテナンスモード中 Cloud Front S3 Bucket ELB ECS Cluster

    Fargate Container ・・ ・ Aurora MySQL 全HTTPリクエスト を拒否 LogInとオフライン で必要なGET処理 のみ許可 Lambda 許可分以外のHTTPリクエスト が来たらLambdaで事前設定 した内容をレスポンス
  4. カミナシ アプリ  メンテナンスモード中 Cloud Front S3 Bucket ELB ECS Cluster

    Fargate Container ・・ ・ Aurora MySQL 全HTTPリクエスト を拒否 LogInとオフライン で必要なGET処理 のみ許可 メンテナンス画面を 表示 通常操作は出来るが オフラインに作成・更 新dataが貯まる Lambda 許可分以外のHTTPリクエスト が来たらLambdaで事前設定 した内容をレスポンス
  5. カミナシ アプリ  メンテナンスモード中 Cloud Front S3 Bucket ELB ECS Cluster

    Fargate Container ・・ ・ Aurora MySQL LogInとオフライン で必要なGET処理 のみ許可 通常操作は出来るが オフラインに作成・更 新dataが貯まる Lambda 許可分以外のHTTPリクエスト が来たらLambdaで事前設定 した内容をレスポンス メンテナンス画面を 表示 全HTTPリクエスト を拒否
  6. カミナシ アプリ  メンテナンスモード中 Cloud Front S3 Bucket ELB ECS Cluster

    Fargate Container ・・ ・ Aurora MySQL 全HTTPリクエスト を拒否 メンテナンス画面を 表示 Lambda 許可分以外のHTTPリクエスト が来たらLambdaで事前設定 した内容をレスポンス 通常操作は出来るが オフラインに作成・更 新dataが貯まる LogInとオフライン で必要なGET処理 のみ許可
  7. カミナシ アプリ  メンテナンスモード中 Cloud Front S3 Bucket ELB ECS Cluster

    Fargate Container ・・ ・ Aurora MySQL 全HTTPリクエスト を拒否 メンテナンス画面を 表示 Lambda 許可分以外のHTTPリクエスト が来たらLambdaで事前設定 した内容をレスポンス 通常操作は出来るが オフラインに作成・更 新dataが貯まる LogInとオフライン で必要なGET処理 のみ許可 MySQLのinnodb オンラインDDL 併用にて対処
  8. ▪データ定義言語(DDL: Data Definition Language) データベースのテーブルなどの作成や削除、各種設定を行う言語 CREATE(テーブル新設)/ALTER(テーブル定義変更)/DROP(テーブル削除)など ▪データ操作言語(DML: Data Manipulation Language)

    既存テーブルのデータについてCRUDを行う言語 SELECT(検索)/INSERT(追加)/UPDATE(更新)/DELETE(削除)/EXPLAIN(実行計画)など ▪トランザクション制御言語(TCL: Transaction Control Language) トランザクションの開始や終了を行う言語 COMMIT(トランザクションを確定)/ROLLBACK(トランザクション取り消し)など ▪データ制御言語(DCL: Data Control Language) DMLやDDLの利用に関する許可や禁止を設定するための言語 GRANT(アクセス権付与)/REVOKE(権限破棄)など データベース言語(SQL)体系について
  9. <注意点1> show full processlist して ”Waiting for table metadata lock”が無いかcheck。

    <注意点2> MySQLのパラメーターに「innodb_online_alter_log_max_size」がある。 (ALTER TABLE中にINSERTなどの更新情報を一時保管する上限数) このサイズを超えるSQLが発行された場合、ALTER TABLEが失敗するので注意。 MySQLのinnodbオンラインDDL機能