Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
NIKKEI Tech Talk #4 日経電子版BCP環境の紹介/nikkei-tech-talk-20230216-2
Search
日本経済新聞社 エンジニア採用事務局
February 16, 2023
Technology
0
1.6k
NIKKEI Tech Talk #4 日経電子版BCP環境の紹介/nikkei-tech-talk-20230216-2
Nikkei Tech Talk #4 で発表した際の資料です
https://nikkei.connpass.com/event/272705/
セッション2 日経電子版BCP環境の紹介
日本経済新聞社 エンジニア採用事務局
February 16, 2023
Tweet
Share
More Decks by 日本経済新聞社 エンジニア採用事務局
See All by 日本経済新聞社 エンジニア採用事務局
re:Invent2023 コンテナ関連・セキュリティ関連で 良かったセッション/nikkei-tech-talk15-1
nikkei_engineer_recruiting
0
360
海外カンファレンス初心者が行く re:Invent 2023 〜やってよかったこと・もっとこうすればよかったこと〜/nikkei-tech-talk15-2
nikkei_engineer_recruiting
0
380
日経ID 基盤刷新プロジェクト Melissa/nikkeiid-authlete
nikkei_engineer_recruiting
1
820
NIKKEI COMPASSの Stripe決済フローと決済高速化の方法/20231205-compass
nikkei_engineer_recruiting
1
490
FRONTEND CONFERENCE OKINAWA 2023 スポンサーセッション発表スライド/frontend-okinawa
nikkei_engineer_recruiting
1
3.4k
NIKKEI Tech Talk #13【日経×Cloudflare×Vercel×Fastly】Edgeコンピューティングとフロントエンド /nikkei-tech-talk-13
nikkei_engineer_recruiting
0
130
日経のサービスの信頼性を支える負荷試験基盤/nikkei-tech-talk11
nikkei_engineer_recruiting
0
270
できる!アクセシビリティ向上/droidkaigi2023-day2
nikkei_engineer_recruiting
0
2.9k
iOSとAndroidで定期購入の意図しない解約を防ぐ/droidkaigi2023-day1
nikkei_engineer_recruiting
0
1.5k
Other Decks in Technology
See All in Technology
Google Cloud の AI を支える裏側のインフラを垣間見る!
maroon1st
0
340
NgRx Signal Store
rainerhahnekamp
0
150
ChatGPT for IT Service Management (IT Pro)
dahatake
7
1.5k
エンジニアのキャリアをちょっと楽しくする3本の軸/Three Pillars to Make an Engineer's Career More Enjoyable
kwappa
0
2.6k
レガシーをぶっ壊せ。AEONで始めるDevRelの話 / Qiita Night 2024-2-22
aeonpeople
3
1.3k
非同期推論システムによるコスト削減と信頼性向上
koki_nishihara
0
210
KubeConにproposalを送りたい人へのアドバイス
sat
PRO
3
240
リテール金融(キャッシュレス・ネット銀行・ネット証券)の競争環境と経済圏
8maki
0
510
反実仮想機械学習とは何か
usaito
PRO
11
4.1k
生産性向上チームの紹介
cybozuinsideout
PRO
1
870
ワールドカフェI /チューターを改良する / World Café I and Improving the Tutors
ks91
PRO
0
120
チームでロジカルシンキングに改めて向き合っている話 〜学習環境と実践⽅法〜
sansantech
PRO
2
2k
Featured
See All Featured
Fontdeck: Realign not Redesign
paulrobertlloyd
76
4.9k
The Illustrated Children's Guide to Kubernetes
chrisshort
31
46k
[RailsConf 2023] Rails as a piece of cake
palkan
23
3.9k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
34
8.9k
Web Components: a chance to create the future
zenorocha
305
41k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
659
120k
Ruby is Unlike a Banana
tanoku
96
10k
Debugging Ruby Performance
tmm1
70
11k
Fantastic passwords and where to find them - at NoRuKo
philnash
37
2.5k
Being A Developer After 40
akosma
57
580k
For a Future-Friendly Web
brad_frost
172
9k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
17
1.4k
Transcript
#nikkei_tech_talk NIKKEI Tech Talk #4 日経電子版 BCP 環境の紹介 株式会社 日本経済新聞社
千葉 尚彬 1
#nikkei_tech_talk アジェンダ 1. 自己紹介 2. 日経電子版 BCP 環境の紹介 a. 取り組みの概要
b. BCP 環境の構成 c. データレプリケーション d. BCP 環境の維持・管理 e. BCP 環境の検証 3. まとめ 2
#nikkei_tech_talk 自己紹介 - 名前: 千葉 尚彬(Chiba Naoaki) - 所属: サブスクリプション事業
デジタル編成ユニット API・バックエンドチーム - 経歴: - 以前は SIer に所属 - 主にCloud Native と呼ばれる分野を担当 - 本格的なバックエンド開発は日経に入社してから - 技術ブログ記事: - GKE + Locust で構築された社内負荷試験基盤「 Cage」を改善した話 - 日経の次世代アプリケーション基盤「 Vessel」の紹介 この猫は旅先にいた猫 (飼っているとかではない) 3
#nikkei_tech_talk 取り組みの概要 4
#nikkei_tech_talk 社会インフラとしてのメディアたるには 「緊急時」ほど情報ニーズは高い - 東日本大震災、新型コロナ、ウクライナ侵攻 ... 「緊急時」において常に情報を提供できるか? - 東日本大震災のときは、多くの現地市町村が Web
サイトがダウン [1] あらためて「緊急時」について考えると・・・ - 世界情勢の変化、大災害、サイバー攻撃、 etc… ⇒ 緊急時というのが何か、いつ来るかやはりわからない [1] https://www.iij.ad.jp/interview/09.html 5 しかし、社会インフラとしてあるためには、 何かが起きても対処できるようになる必要がある
#nikkei_tech_talk BCP Business Continuety Planning(事業継続計画) - `企業が自然災害、大火災、テロ攻撃などの 緊急事態に遭遇した場合において、 ....、平常時に行うべ き活動や緊急時における事業継続のための方法、手段などを取り決めておく計画のことです。
`[2] - 一般の企業では操業回復を早め損害を最小化するために計画する - 日経のBCPとして日経電子版を緊急時にも 稼働させることが必要 - 日経電子版のBCPは弊チームのみによる ものではないが今回は弊チームが担当する 範囲でのBCPについて紹介 [2] https://www.chusho.meti.go.jp/bcp/contents/level_c/bcpgl_01_1.html 6
#nikkei_tech_talk BCP 環境の構成 7
#nikkei_tech_talk 現在の稼働環境及びBCPの前提・要件 現在の稼働環境 - 日経電子版は AWS の東京リージョンで稼働している - AWS東京リージョンはある程度離れた複数のDCで構成されている 前提
- (とは言っても)関東全域が被災し、東京リージョンも利用できない場合 要件 - 物理的に離れた場所(他リージョン)で稼働 - 新規記事の入稿、既存記事も含めた記事表示(簡易電子版)を実現 8
#nikkei_tech_talk BCPの対象コンポーネント 9
#nikkei_tech_talk BCP対象コンポーネントの役割 10 コンポーネント 役割 API Gateway 認証・認可、リクエスト受付、 レート制限 検索
API 検索用 Elasticsearch から記事を返却 記事格納システム 記事管理システムから記事データを受 け取り格納
#nikkei_tech_talk データのレプリケーション 11
#nikkei_tech_talk レプリケーション - RDS Amazon Auroraを活用したレプリケーション機構を構築 レプリケーション手法 メリット 採用したコンポーネント Aurora
Global DB レプリケーション遅延が少ない AWS推奨 記事 DB Cross Region Replication (CRR) 小規模インスタンスタイプが使える (Aurora Global DB の場合、 db.r5 以上) API クライアント管理 DB 12 クライアント DB ではそこまでマシンパワーが必要ないので CRR を採用
#nikkei_tech_talk レプリケーション - RDS 2 段階のフェイルオーバー - 障害発生直後では API クライアント管理
DB は昇格させない - 基本的に API クライアントの認証・認可ができればいいので、書き込める必要はない - 一度昇格させたあとに、元の構成に戻すのが結構大変 - 障害が長期化し、BCP 環境でも新しく API クライアントを作成する必要が出てき て、初めて昇格させる 13
#nikkei_tech_talk 余談: Aurora Global DB の Headless 運用 - Aurora
Global DB の場合、セカンダリクラスターに一台もインスタンスが いなくてもデータがレプリケーションされる - この機能を活用することで、コストを抑えつつ可用性を向上 - もちろん、インスタンスがある場合と比べると フェイルオーバー時の切り替え作業時間は伸びるので、 その部分とのトレードオフ - 現状、開発環境の記事 DB でのみ Headless 構成を採用 14 画像: https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/images/aurora-global-db-headless-secondary.png インスタンスが0
#nikkei_tech_talk レプリケーション - S3 S3 Cross Region Replication を利用 -
記事画像以外にも紙面画像や制御情報をレプリケーションしている 15 東京リージョン のバケット 他リージョン のバケット レプリケーション 制御情報 紙面画像 記事画像
#nikkei_tech_talk BCP 環境の維持・管理 16
#nikkei_tech_talk アプリケーションデプロイの自動化 東京リージョンと同じ様に、他リージョンでもアプリケーションを簡単に デプロイできる仕組みを構築 - 既存のアプリケーションは GitHub Actions + 設定テンプレートで自動化済み
- 設定テンプレート: Elastic Beanstalk 向けのよく設定される項目が記載済みのファイル - 他リージョン向けの設定テンプレートを新たに作成し自動化へ対応 17
#nikkei_tech_talk BCP 対象コンポーネントの管理に Terraform を導入 - BCP 対象のコンポーネントは古くから存在しており、IaC 化されていなかった -
一方で、BCP 対象コンポーネントのような重要なコンポーネントは IaC 管理したい - 変更内容のレビュー、ヒューマンエラー回避、共通の変更を全ての環境にもれなく反映 ⇒ BCP 環境構築時に Terraform を導入 18
#nikkei_tech_talk 余談: 進む Terraform 活用 - 東京リージョンにある BCP 対象コンポーネントも Terraform
で 管理されるようになってきた - Terraform Registry を介しておすすめの DB Parameter をデジタル部署 全体に共有 - BCP 環境構築時に既存の DB Parameter を改めて見直し Terraform Module 化 - 現在では他案件、別 AWS アカウントでも活用中 19
#nikkei_tech_talk BCP 環境の検証 20
#nikkei_tech_talk 障害訓練の実施 - API・バックエンドチームだけではなく Web 、記事管理システム等 関連システム全体で定期的に実施 - フェイルオーバー ->
動作確認 -> フェイルバックの一連の作業を実施 - 訓練後、チームレベル及び全体レベルで振り返りを実施 21
#nikkei_tech_talk 振り返りの内容及び改善活動 切り戻し先環境の正常性確認のために、 E2E テストを実行する手順があるが、 もっと手軽に実行できるようにしたい チーム内でも手順書の理解にムラがある BCP 環境構築に携わっていない人が ちゃんと手順を実行できるか怪しい
22 - E2E テストを実行する GitHub Actions を 作成 - GitHub のページからクリックひとつで実行 できるようになった - 共有会を開催し、手順書の内容を改めて インプット - 次の訓練では共有会参加者に主作業者 として手順を実行してもらう
#nikkei_tech_talk まとめ 23
#nikkei_tech_talk まとめ - 緊急時においても報道を続行する仕組みとして、API・バックエンドチーム における電子版の BCP 環境を紹介 - AWS の機能を活用したデータのレプリケーション
- Terraform を利用したコンポーネントの管理 - また、障害訓練を繰り返し実施することで、BCP 環境及びその運用の改善 を続けている 24