はじめに
こんにちは!NIFTY Tech Talk運営の碇川(いかりがわ)です!
2023年4月19日(水)に開催した「落ちないシステムの作り方〜NIFTY Tech Talkとニフクラエンジニアミートアップのコラボレーション企画!〜」にて司会進行を務めさせていただきました。
今回のNIFTY Tech Talkはニフクラエンジニアミートアップとのコラボレーション企画で開催しました!
業務で扱っているシステムが安定して稼働するための工夫やノウハウを、クラウドサービス「ニフクラ」の提供者である富士通クラウドテクノロジーズ株式会社(以下、FJCT)と、多彩なクラウドサービスを扱って、様々なWebサービスを開発しているニフティ株式会社が「落ちないシステムの作り方」について語っていただきました!
イベント概要
「NIFTY Tech Talk」は、ニフティ株式会社の社員が主催する、技術に関するトークイベントです。
このイベントでは、ニフティグループの社員が業務を通じて学んだ知見や経験をLT形式で発信しています。
今回のテーマは「落ちないシステムの作り方」として、業務で扱っているシステムが安定して稼働するための工夫やノウハウを、現場社員がLT形式で紹介していただきました!
今回の登壇内容は以下のようになっています。
- 落ちないシステムって何?可用性の基本と仮想環境のでの可用性の高め方
- 「高可用性と高い信頼性を持つシステム」を実現するためにアプリケーションエンジニアができる事って何だろう?
- 安定稼働するポータルサイトの作り方
- 月1億PVのニュースサイトを落とさない技術
また、今回のTech Talkのアーカイブ動画をYouTubeにアップロードしております。是非ご覧ください!
内容レポート
各セッションの内容について、紹介していきます!
落ちないシステムって何?可用性の基本と仮想環境のでの可用性の高め方
1つ目のLTは、FJCTの奥山さんです。
ハードウェア的な側面での落ちないシステムの基本的な考え方について語っていただきました。
まずは落ちないシステムを高可用性なシステムと定義し、高可用性なシステムを作るためにはどうしたら良いかわかりやすく説明していただきました。

また、仮想環境における可用性向上の具体的な手法として、VMwareHAについて紹介していただきました。
VMware HAは、仮想化環境において仮想マシンの可用性を高めるための機能です。
仮想マシンが障害を起こした場合に自動的に他のホスト上に仮想マシンを移動させることで、システムの停止を最小限に抑えることができるそうです!

最後に、クラウド環境における可用性の考え方についても触れられていました。
クラウド利用においては、高い可用性を確保するだけでなく、物理機器の故障やメンテナンスに対する注意やSLAの理解、責任の明確化が重要です。
これらのポイントを留意し、リスクを最小限に抑えながらクラウド環境を活用することが重要であると、説明していただきました。

ニフクラでの高可用性を保つための取り組みについても紹介していただきました!

「高可用性と高い信頼性を持つシステム」を実現するためにアプリケーションエンジニアができる事って何だろう?
続いては、同じくFJCTの北條さんです。
FJCTのアプリケーションエンジニアとして、様々な観点で高可用性と高信頼性を実現するためにどうすれば良いか、FJCTでの取り組みとともに話していただきました。

具体的にいくつかピックアップして紹介していきたいと思います!
まず、モジュール性と疎結合についてです。
紹介されている通り、疎結合な設計を行うことは、システムの強化に不可欠です。
この設計手法により、システム全体が密結合でなくなり、モジュール間の依存性が低くなるため、変更や修正が容易になり、保守性や拡張性も向上します。
また、FJCTの一部プロジェクトではDDDやクリーンアーキテクチャの考え方を取り入れていることも紹介されました。

続いて、スケーラビリティです。
スケーラビリティは現代のアプリケーション設計において欠かせない要素であると説明していただきました!
またFJCTでは、コンテナ環境を前提としたアプリケーション開発を行なっており、容易に水平スケーリングできるような環境が整っているプロジェクトもあるそうです。

一部抜粋して紹介させていただきましたが、それ以外でも様々な観点で、アプリケーションエンジニアとしての高可用性・高信頼性の実現について、FJCTでの取り組みを通じで解説していただきました!
安定稼働するポータルサイトの作り方
続いて、ニフティ株式会社の会員システムグループ第1開発チームでニフティのトップページを開発・運用を担当されている、渡邊さんに登壇していただきました!
ユーザーが日常的に利用しており、安定稼働が必須なニフティのトップページを落とさないようにするためにどのような工夫をしているか語っていただきました。

安定稼働するための工夫として最初に挙げていたものは、APIの管理にはTerraform、アプリケーションのデプロイにはServerless Framewortkを採用しているということです。
こういった、IaCツールを使うことでコードでの変更の追跡や、バージョン管理が容易になります。
構文チェックなどの機能がデフォルトで搭載されていることがTerraformの魅力ですね!

また、Lambdaを使ったサーバレス構成で動作しているため、サーバー内での作業が不要となり、アプリケーションの開発に専念することが可能になっています!

続いて、ソースコードの管理やデプロイ周りの工夫点です。
pre-commitを用いた構文チェックの自動化や、GitHub Actionsを用いた単体テストやデプロイの自動化など、CI/CDが実現されています。
こうすることで、リリース時のオペミスを防ぐことができ、安全なリリースを行うことができるようになっています!

こちらのLTは資料を公開しておりますので、こちらも是非ご覧ください!
月1億PVのニュースサイトを落とさない技術
最後に、ニフティ株式会社の会員システムグループ第2開発チームで、@niftyニュースの開発・運用を担当されている中村さんに登壇していただきました!

まず、ニュースサイトの特性について簡単に紹介していただきました。
SEO対策のための頻繁な更新あり、Googleから不定期な大規模な更新があると、そこに合わせた改修が必要となります。
また、瞬間的にPVが跳ね上がることもあり有名人のニュースなどが流れるとアクセスがスパイクしてしまいます。定常的なPV数も一般的なサービスと比較すると大規模となっています。

このような特性の中で、どんな時でも安定したレスポンスを返したい!ということが、目的となっています!
今回は以下のような3つの観点でニュースサイトを落とさないための工夫について話していただきました。

まずは、リリースの自動化です。
ニフティニュースは先ほど紹介したニフティのトップページ同様、リリースフローを自動化しています。
ニフティニュースでは、サーバレス構成ではなく、ECSを使ったコンテナ環境で動作させる構成のため、CodePipelineによるリリースの自動化を行なっています。
また、CodePipelineの機能の一つである、Blue/Greenデプロイによって寸断なく自動でデプロイされます。

続いてはコンテナとクラウド技術についてです。
ニフティニュースでは、ECSを使用しており、オートスケーリングが容易となっています。
この機能により、突発的にPV数が跳ね上がったとしても、開発者が手をいれる必要なくシステムが自動でスケーリングし、安定してサービスを提供することができます!

また、一部の機能ではニフティトップページ同様、サーバレスアーキテクチャを採用しております。
そのため、運用の手間をかけることなく高い耐障害性を実現することができます。

最後にCDNの活用についてです。
CDNは、世界中に配置された多数のサーバーからコンテンツを配信し、ユーザーに高速で安定したアクセスを提供することができます。
AWSではAmazon CloudFrontというCDNがあり、ニフティニュースではこちらを利用しています!
こういったCDNを活用することにより、キャッシュを利用してコンテンツを近くのサーバーに保存し、ユーザーへ高速で安定した配信が可能となります。
これにより、遅延を軽減し、コンテンツの読み込み時間を短縮することができます。

中村さんの発表は、月1億PVのニュースサイトを落とさないための技術でした!
リリースの自動化やコンテナとクラウド技術の活用、CDNの活用など、多角的なアプローチが紹介されていました!
これらの取り組みにより、ニフティニュースは高い安定性とパフォーマンスを維持しながら、ユーザーに最適なニュース体験を提供しています。
こちらのLTは資料を公開しておりますので、こちらも是非ご覧ください!
まとめ
本記事では、落ちないシステムの作り方の各発表内容を紹介しました!
安定稼働のためには自動化、スケーラビリティ、監視、セキュリティなど多岐にわたる要素が重要であることがわかりました!
また、クラウド技術や最新のツールの活用が安定稼働に大きく貢献していることがわかりました!
今回のイベントは、NIFTY Tech Talkとニフクラエンジニアミートアップのコラボ企画で開催させていただきました。
インフラからアプリケーションまでの様々な観点で、システムの安定稼働について考えることができました。
いつもとは異なる開催形式で一味違ったNIFTY Tech Talkでしたが、楽しんでいただけたでしょうか?
今後もコラボイベントをやっていきたいと思います!
次回のTech Talkもお楽しみに!