9.5K Views
March 09, 23
スライド概要
"良い開発者体験"にむけた国内/海外のアーキテクチャLT会 AWS編 での発表資料です
https://findy.connpass.com/event/274860/
経済ニュースアプリのSREの仕事をしています。
70人の開発者体験を支える NewsPicksのAWS アーキテクチャ 株式会社ニューズピックス 安藤 裕紀 "良い開発者体験"にむけた国内/海外のアーキテクチャLT会 AWS編 - 2023.3.09(木)
00 自己紹介 安藤裕紀 / Yuki Ando NewsPicks SRE SREチームのマネージャー兼テックリード 好きなAWSのサービス:ECS、Cost Explorer 、CDK ©NewsPicks Inc. All Rights Reserved.
00 目次 1. NewsPicksについて 2. NewsPicksのAWSアーキテクチャ 3. 全面コンテナ化への挑戦とアーキテクチャ選定理由 4. 開発者体験への効果と今後の改善点 ©NewsPicks Inc. All Rights Reserved.
01 NewsPicksについて ©NewsPicks Inc. All Rights Reserved.
01 ソーシャル経済メディア NewsPicksについて タイトルタイトルタイトルタイトルタイトルタイトルタイト ルタイトルタイトルタイトル テキストテキストテキストテキストテキストテキストテ キストテキストテキストテキストテキストテキストテキ ストテキストテキストテキストテキストテキストテキスト テキストテキストテキストテキストテキストテキストテ キストテキストテキストテキストテキストテキストテキ ストテキストテキストテキストテキストテキストテキスト テキストテキストテキストテキストテキストテキストテ キストテキスト ©NewsPicks Inc. All Rights Reserved.
01 サービスのユーザー数・プレミアム会員ともに成長中 ©NewsPicks Inc. All Rights Reserved.
01 NewsPicksはエンジニアの開発者体験を重要視しています NewsPicksエンジニア向け採用サイト※1の 「働く環境/福利厚生」の1stビューに 「最高の開発者体験の追求」を掲げています 「Findy Team+ Award 2022」において、 NewsPicksが「エンジニア組織の生産性指標が高い 企業」として選出されました※2 ※1 https://tech.newspicks.com/ ※2 https://tech.uzabase.com/entry/2022/10/25/151838 ©NewsPicks Inc. All Rights Reserved.
02 NewsPicksのAWSアーキテクチャ ©NewsPicks Inc. All Rights Reserved.
02 NewsPicksはAWSを活用しつつも、サーバー数は多かった システム概略図 (〜2021) AWS Cloud Application Integration, Management & Governance Analytics services EC2インスタンスが100台以上 SQS SNS Parameter Store Redshift Glue Data Pipeline EC2 instances スマホアプリ Auto Scaling group Database services 社内・法人向けシステム … … Aurora Web newspicsks-server DynamoDB ElastiCache ECS containers Lambda functions feed services … … search batch billing services … ©NewsPicks Inc. All Rights Reserved. Storage S3 S3 Glacier
02 2年かけて、現在ユーザー向けのサービスはコンテナ化がほぼ完了 システム概略図 (2023〜) AWS Cloud ECS containers Analytics services web services … スマホアプリ Application Integration, Management & Governance bff services … SQS SNS Parameter Store Database services Redshift Glue Data Pipeline 社内・法人向けシステム (コンテナ化予定) api services … Web batch services … … Aurora DynamoDB ElastiCache ECS containers Lambda functions feed services EC2 instances search (ECS&OpenSearch Service化予定) ©NewsPicks Inc. All Rights Reserved. … … billing services … Storage S3 S3 Glacier
03 全面コンテナ化への挑戦と アーキテクチャ選定理由 ©NewsPicks Inc. All Rights Reserved.
03 ユーザーに価値を届けることを重視するNewsPicksの文化 開発者は、ユーザーに価値を届けるプロダクト開発に集中したい 開発者はフルサイクルを自走する過程でインフラの問題解決にもオーナーシップを持ちたい SREは、そんな開発者の体験を高める仕事に集中したい ©NewsPicks Inc. All Rights Reserved.
03 EC2でレガシーな運用を行っていたことによる課題 分類 課題 内容 開発者にとって インフラに関する認知負荷、 作業負荷 ● サーバーの構成を把握して、SSHして作業する必要がある ● ログの回収・調査など、複数台のサーバーから集めないといけない インフラの設定変更の リードタイム ● インフラの設定変更はSREチームに依頼が必要でリードタイムを要する 結果、プロダクト開発のリードタイムにオーナーシップを持ってユー ザーに価値を届けるということが難しくなる インフラの運用作業の工数 ● 設定のコード管理がされていないため、影響調査に時間がかかる ● AMIの作成と反映は作業の自動化がしづらく、手間がかかるので 作業が億劫になり、頻繁に実施できない ● 開発環境の増設が簡単にはできない。(subnetやSGの設定など…) ● EC2でプロビジョニングしているリソースに無駄があっても、プロセスごとのメモ リ使用率などがわからないので、削減余地が見えづらい ● EOLやAWSのメンテナンスなど、サービスや開発者の要件とは関係ない作業 にリソースがとられる セキュリティの問題 ● 脆弱性管理はGitHub Dependabotによるライブラリのみが対象 ● OS・ミドルウェアの定期的なバージョンアップがされていない SRE (インフラ担当) にとって ©NewsPicks Inc. All Rights Reserved.
03 コンテナ化して、プロダクト開発/運用のコア業務に集中したい 運用の責任範囲のコンテナ化によるBefore/After アプリケーション アプリケーション ライブラリ ライブラリ ミドルウェア ミドルウェア よりアプリケーションに近い 運用に集中 (コンテナランタイムや ログ管理・モニタリングに マネージドサービスを利用) コンテナ化 OS OS ハードウェア ハードウェア AWS利用者による運用 一部AWSによる運用 データセンター ©NewsPicks Inc. All Rights Reserved. データセンター AWSによる運用
03 Infrastructure as Codeによって誰でもインフラを触れるようにしたい AWS Cloud Development Kit (AWS CDK) AWS CDK(TypeScript)の採用 開発者がインフラを自分で開発して、プロダクト 開発に大きな裁量を持って自走できるようにする ために、NewsPicksではAWS CDKを全面採用 [AWS Black Belt Online Seminar] AWS Cloud Development Kit (CDK) https://d1.awsstatic.com/webinars/jp/pdf/services/2020 0303_BlackBelt_CDK.pdf ©NewsPicks Inc. All Rights Reserved. NewsPicksの開発者は普段からDynamoDBやSQS をアプリケーションから利用していて、AWSの SDKやサービスの開発知識を持っているので、 TerraformなどのDSLよりも、プログラミング言 語からSDKを使う感覚で利用できるCDK with TypeScriptの方が読みやすく書きやすいと判断
03 EC2インスタンスからコンテナ化することで、やりたかったこと AWSのマネージドサービスを利用して、運用コストを削減できること ○ ログはサーバー外で一元管理・参照できる( CloudWatch Logs,S3) ○ EC2インスタンスのメンテナンスや EOLに対応する必要がなくなる ○ アプリケーションに必要な最低限のリソースで運用できるようになる ○ セキュリティ対応の範囲を限定し、バージョンアップも楽になる インフラの設定がすべてコードで管理できるようになること ○ インフラの影響調査が楽になり、変更反映のリードタイムが短くなる ○ 開発環境の増設など、開発者のニーズに合わせた横展開も容易になる ○ CI/CDやプッシュ通知の AutoScalingなどサービス運用に適した自動化ができる ○ 開発者もインフラにコントリビュートできるようになる ©NewsPicks Inc. All Rights Reserved.
03 もっとも多くの開発者が開発し、コードベースの大きい newspicks-serverとbatchを対象にコンテナ化 システム概略図 (〜2021) AWS Cloud Application Integration, Management & Governance SQS SNS Parameter Store Analytics services Redshift Glue Data Pipeline EC2 instances スマホアプリ Auto Scaling group Database services 社内・法人向けシステム … … Aurora Web newspicsks-server DynamoDB ElastiCache ECS containers Lambda functions feed services … … search batch billing services … ©NewsPicks Inc. All Rights Reserved. Storage S3 S3 Glacier
03 CDKを利用したAWSインフラストラクチャのIaC化 AWS CDK(TypeScript)で Infrastructure as Code(IaC)を実現 Constructという概念がありインフラの構成を部 品化して再利用できるので、 開発環境や開発者サービスを横展開しやすい TypeScriptの型を利用したインフラ設定における 型制約の利用や、単体テストが書けることで、 開発者体験とインフラ品質が両立できる ©NewsPicks Inc. All Rights Reserved.
03 ChatOps + Step Functionsによる安全なリリースの自動化 ChatOpsでリリースの心理的安全性を向上 ECSサービスを本番/Canaryで用意し、ALBの Target Groupで数%をCanaryにルーティング Canaryで事前E2Eテスト・リリース判断ができる 上に、ロールバックもボタン一つで自動化 詳細は 「NewsPicks ChatOps」 で検索して ブログ記事をどうぞ ©NewsPicks Inc. All Rights Reserved.
02 コンテナ化の中で、最も中核となるバックエンドAPIだけはonEC2 システム概略図 (2023〜) AWS Cloud ECS containers Analytics services web services … スマホアプリ Application Integration, Management & Governance services ECS onbffEC2 … SQS SNS Parameter Store Database services Redshift Glue Data Pipeline 社内・法人向けシステム (コンテナ化予定) api services … Web batch services … … Aurora DynamoDB ElastiCache ECS containers Lambda functions feed services EC2 instances search (ECS&OpenSearch Service化予定) ©NewsPicks Inc. All Rights Reserved. … … billing services … Storage S3 S3 Glacier
02 既存ワークロードを移行すると、Fargateでは料金が上がったため EC2からECSに移行した際、コンピューティング にFargateを選択すると同等のパフォーマンスを 出すのにコストが +40% かかった NewsPicksではコンテナ化で +40%のコスト増は 許容できなかったためECS on EC2にした メリットや実際の運用など、詳細はブログと発表 資料がありますのでご覧ください https://tech.uzabase.com/entry/2022/12/01/175423 https://www.docswell.com/s/integrated1453/K6Q8X K-operation-of-ecs-on-ec2 ©NewsPicks Inc. All Rights Reserved.
04 開発者体験への効果と今後の改善点 ©NewsPicks Inc. All Rights Reserved.
03 諸々の課題の改善・解決 分類 課題 コンテナ化後 開発者にとって インフラに関する認知負荷、 作業負荷 ✅サービスの構成をAWSマネジメントコンソールで把握できるようになった ✅開発者はログ回収・調査のためにSSHしなくて良くなった。CloudWatch Logs でログ調査できるようになり、サーバーの構成を意識する必要がなくなった インフラの設定変更の リードタイム ✅インフラの設定変更がコード化されたので、開発者自身がリポジトリのコード を読んで、インフラ設定変更のPRが出せるようになった。開発者のプロダクト 開発の自走力が向上し、問題解決の幅が広がった インフラの運用作業の工数 ✅すべての設定がコード化されているため、サーバーに SSHして設定調査しなくても本番 環境の設定を信じられる。変更をする際の工数が大幅に減った ✅AMIの管理から開放されたので、nginxやfluentdなどミドルウェアの設定変更を気軽に できるようになった。開発者の要望に対応するリードタイムも短縮した ✅開発環境の増設が簡単にできるようになり、開発規模の変化に柔軟になった ✅ECSタスク・コンテナ単位のリソースモニタリングができるようになり、リソース効率の最 適化・コスト削減の判断がしやすくなった ✅EC2インスタンスのEOLやAWSのメンテナンスなどにほぼ対応不要になった セキュリティの問題 ✅ECRの脆弱性スキャンにより、OSやミドルウェアに対しても継続的な脆弱性管理を行 えるようになった(運用面には課題があるため別製品を検討中) ✅ミドルウェアやライブラリのバージョンアップを実施する作業負荷が減った コードを修正しデプロイするだけなので、定期的に実施できるようになった SRE (インフラ担当) にとって ©NewsPicks Inc. All Rights Reserved.
03 開発者によるインフラへのコントリビュートが、次々と😊 SREチームへのCDK/インフラのPRレビュー依頼のSlack ©NewsPicks Inc. All Rights Reserved.
03 コンテナ化後のNewsPicks開発者の声🥰 CloudWatch Logsやコンテナ環境のリモートデバッグをできるようにした反応 ©NewsPicks Inc. All Rights Reserved.
04 ● まとめ よかったこと ○ コンテナ化・IaC化によって、SREチームの生産性や開発効率が上がり、 よりサービスやプロダクト開発のためになるテーマに注力できるようになった ○ CDKによるIaC化で開発者自身でのインフラへのコントリビュートが容易になり、 「ユーザーのためにできることはなんでもやる」文化のNewsPicksで、 開発者がプロダクト開発のフルサイクルを自走して活躍できる幅が広がった ● 今後やっていきたいこと ○ インフラのモニタリング精度を上げてリソース効率とコストの最適化を進めたい(円安なので) ○ まだ他にEC2で動いているサービスをすべてコンテナ化・IaC化したい ○ より開発者体験を高めて、SLOモニタリングの啓蒙やセルフサービス化など 信頼性を高める活動への支援も提供していきたい ©NewsPicks Inc. All Rights Reserved.
ご清聴ありがとうございました! NewsPicksではエンジニアを積極採用中です! https://tech.newspicks.com ©NewsPicks Inc. All Rights Reserved.