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

NIFTY Tech Talkコラボ 安定稼働するポータルサイトの作り方

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

NIFTY Tech Talkコラボ 安定稼働するポータルサイトの作り方

Avatar for ニフティ株式会社

ニフティ株式会社 PRO

April 28, 2023
Tweet

Video


Resources

落ちないシステムの作り方 (NIFTY Tech Talkとニフクラエンジニアミートアップのコラボレーション企画)

https://nifty.connpass.com/event/279053/

More Decks by ニフティ株式会社

Other Decks in Programming

Transcript

  1. Copyright © NIFTY Corporation All Rights Reserved.
 渡邊 大介
 
 入社   2019年4月(5年目)


    
 担当業務 自社WEBサービスの運用開発
 
 趣味   映画、ドライブ、バドミントン
 自己紹介

  2. Copyright © NIFTY Corporation All Rights Reserved.
 ニフティトップページについて
 
 


    1
 安定稼働するための工夫
 2
 キャッシュをほとんど効かせられない状況下での負荷軽減方法
 3

  3. Copyright © NIFTY Corporation All Rights Reserved.
 ニフティトップページ
 • 20世紀から存在する月間3,000万PVのポータルサイト

    • 多くのコンテンツを展開している ◦ 接続会員向け(宝箱、ニフくじ、メール、ニフティ ポイントクラブ) ◦ その他(ニュース、検索、天気、占いなど) • ユーザーが日常的に使うサービスのため、安定稼働は 必須
  4. Copyright © NIFTY Corporation All Rights Reserved.
 ニフティトップページ(PC)の環境
 • AWS

    Lambdaを使ったサーバーレス構成 • Terraformによるインフラ管理 • フロントエンドにNext.js,TypeScriptを採用 • バックエンドにGo言語を採用 • GitHubによるコード管理、自動テスト・デプロイ
  5. Copyright © NIFTY Corporation All Rights Reserved.
 安定稼働するための工夫(インフラ)
 • APIの管理にはTerraformを採用

    • コード管理することで変更の追跡やバージョン管理が容易になる • 構文チェックや現在の状態と変更点を比較する機能がデフォルト で搭載 • アプリケーションのデプロイにServerless Frameworkを採用
  6. Copyright © NIFTY Corporation All Rights Reserved.
 安定稼働するための工夫(インフラ)
 • Lambdaで動くため自動でスケールが可能

    • サーバー作業が不要になり、アプリケーション開発に専念するこ とが可能に • 本番環境以外の環境整備 ◦ 開発環境 ◦ ステージング環境 ◦ 障害対応を擬似的に行うロールプレイング環境
  7. Copyright © NIFTY Corporation All Rights Reserved.
 安定稼働するための工夫(デプロイ)
 各ブランチと各環境の対応付けを実施
 開発環境#1

    featureブランチ developブランチ 本番環境 masterブランチ PR#1
 開発環境#2 ラベル付与 ラベル付与 ステージング環境 マージ時 PR#2
 PR#3
 マージ時 施策A 施策B 開発環境#1 ラベル付与 PR#4
 施策C releaseブランチ
  8. Copyright © NIFTY Corporation All Rights Reserved.
 安定稼働するための工夫(GitHub)
 • pre-commitを導入し、commitの段階でフォーマット

    や構文チェックを実行 • GitHub Actionsを使ってPRを出したタイミングでイ ンフラの変更確認や単体テストを実行するワークフ ローを整備 • デプロイはすべてGitHubで行う ◦ リリースで問題が発生したらGitHubからリバート
  9. Copyright © NIFTY Corporation All Rights Reserved.
 • TypeScriptを採用し、型安全性とメンテナンス性の向上 •

    単体テストを追加し、機能の動作保証 • 開発ルール ◦ データ取得処理はデータ層に分離 ◦ コンポーネントとロジックを分離(カスタムフック化) ◦ エラーログ出力 安定稼働するための工夫(アプリケーション)

  10. Copyright © NIFTY Corporation All Rights Reserved.
 自社サービスの情報を表示する機能
 • ポータルサイトという性質上、自社サービスの情報を表示する機能が多く存在する

    • リリースする上での課題 ◦ 速報性の高いサービス(ニュース、地震情報など)を提供しているため、長めの キャッシュを効かせることが困難 ◦ ほかサービスへの負荷を最低限に抑えなければいけない
  11. Copyright © NIFTY Corporation All Rights Reserved.
 まとめ
 • サーバレスを活用して運用負荷の軽減

    • 機械的にチェックできるところは積極的に自動化する • 可用性の高いサービスを活用して負荷軽減する