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

THEFRUGALARCHITECTから学ぶトレードオフアーキテクチャ.pdf

 THEFRUGALARCHITECTから学ぶトレードオフアーキテクチャ.pdf

re:Invent2023で発表されたTHE FRUGAL ARCHITECTについて解説と考察を行っています。

Tsukasa Kawamura

January 25, 2024
Tweet

More Decks by Tsukasa Kawamura

Other Decks in Technology

Transcript

  1. © 2023 NTT DATA Corporation © 2023 NTT DATA Corporation

    Dr. WarnerのKeynoteで発表された THE FRUGAL ARCHITECTから学ぶトレードオフアーキテクチャ 2023年12月18日 株式会社NTTデータ 川村 吏
  2. © 2023 NTT DATA Corporation 4 自己紹介 ・名前:川村 吏(かわむら つかさ)

    ・所属:株式会社NTTデータ 社会基盤ソリューション事業本部 ・業務: 2015年中ころ~2019年初頭まで:オンプレミス環境(VMware、Xen、Hyper-V等)を中心とした、基盤設計、構築、運用等 2019年初頭~2020年10月:パブリッククラウド(AWS中心、Azureも少し)へのリフト、シフト、新規開発における提案、基盤設計、構築 2020年11月~:NTTデータ社へ中途入社 公共機関向けシステムのクラウド移行に関するコンサル、提案、設計、構築など ・好きなAWSサービス: S3、CloudFront、Route53 ・趣味: 猫、Disney、グラス収集、紅茶、料理、etc…
  3. © 2023 NTT DATA Corporation © 2023 NTT DATA Corporation

    5 アジェンダ 1. 概要 2. BLEAとは 3. CDK vs CloudFormation 4. BLEAを利用することで確保されるセキュリティ対策の詳細 5. 実施したこととカスタマイズ要素 6. まとめ
  4. © 2023 NTT DATA Corporation 6 © 2023 NTT DATA

    Corporation 6 01 THE FRUGAL ARCHITECT
  5. © 2023 NTT DATA Corporation 7 THE FRUGAL ARCHITECTとは? THE

    FRUGAL ARCHITECT=倹約的なアーキテクト コストを意識した持続可能なモダンアーキテクチャを構成するための法則
  6. © 2023 NTT DATA Corporation 8 THE FRUGAL ARCHITECTが生まれた背景 •

    クラウドの進化 ハードウェアの制約が取り払われ、いつでも必要なリソースを手に入れることができる 制約が取り払われる一方で、コストを念頭に置くことが薄れてしまっている • コストを減らすことはサスティナブルにつながる • クラウドに移行するだけが最適なのではない 移行して、クラウドに最適化すること、コストを最適化することが主体である
  7. © 2023 NTT DATA Corporation 9 7つの法則 • LAW 1.

    Make Cost a Non-functional Requirement. →コストを非機能要件に取り込むこと • LAW 2. Systems that Last Align Cost to Business. →コストをビジネスにあわせて調整可能にすること • LAW 3. Architecting is a Series of Trade-offs. →アーキテクチャはトレードオフの連続であること • LAW 4. Unobserved Systems Lead to Unknown Costs. →観測と測定ができないシステムは未知のコストを生み出す • LAW 5. Cost Aware Architectures Implement Cost Controls. →コストを意識したアーキテクチャはコスト管理を実現する • LAW 6. Cost Optimization is Incremental. →コスト最適化は段階的に行う • LAW 7. Unchallenged Success Leads to Assumptions. →挑戦を伴わない成功は思い込みにつながる
  8. © 2023 NTT DATA Corporation 10 © 2023 NTT DATA

    Corporation 10 01 LAW1:Make Cost a Non-functional Requirement
  9. © 2023 NTT DATA Corporation 11 LAW1. Make Cost a

    Non-functional Requirement. コストを非機能要件に入れることとは? 可用性、拡張性、セキュリティ、保守、コンプライアンス、移行など、非機能要件は様々もののコストは見落とされやすい。 設計から開発、運用に至るまで、コストを適切に意識する必要がある。 コストへの影響を早期かつ継続的に考慮することで、機能、開発期間などバランスの取れたシステムが設計できる。 考察 セキュリティやコンプライアンスなどコストをかけざるを得ないものはあるが、可用性や拡張性などはトレードオフ可能な部分。 担当するプロジェクトにおいて、どの程度コストがかかるのか、アーキテクチャとセットで考える必要がある。 どの部分にコストがかかるのか、それは本当に必要なものなのか、ビジネス上コストをかける必要があるのか、代替手段はないのかなどを要件 を決める段階で検討する必要がある。
  10. © 2023 NTT DATA Corporation 12 LAW2. Systems that Last

    Align Cost to Business. コストをビジネスにあわせて調整可能にすることとは? ビジネス上の利益に沿ってコストが増減できるアーキテクチャとすること。 例えば、Eコマースのビジネスを展開しているシステムにおいて、注文数が増えることにより、インフラコスト、運用コストが増えるようなアーキテクチャに なっていれば問題ない。これは、注文数が増えることによって、コストが増加するが、売上も同時に上がるため。 考察 従量課金というクラウドのメリットを最大限活かしているか、更にそれがビジネスの増減に自動でスケールする構成となっているかという点がポイント となる。また、ビジネス上の決定と技術的な調整が常にできる状態でなければならない。 これを実現するためには、進化可能なアーキテクチャを取ることが要求される。技術的な制約がビジネスの発展を邪魔する(技術的負債) 事はできる限り避ける必要がある。これが、モダンアーキテクチャを構成すべき理由の一つだと思う。
  11. © 2023 NTT DATA Corporation 13 LAW3. Architecting is a

    Series of Trade-offs. アーキテクチャはトレードオフの連続であるとは? アーキテクチャにおいて、あらゆる要素はトレードオフが伴う。可用性や、パフォーマンスなどは相互に影響し合う関係性である。 技術的なニーズとビジネス上のニーズの適切なバランス、リスク許容度と予算にあったポイントを見つけることが重要 何に対してコストを支払う価値があるのかを見極める必要がある。 考察 可用性をとると、コストやパフォーマンスを犠牲にする、パフォーマンスを優先すると可用性、コストを犠牲にする、コストを優先すると、 パフォーマンスや可用性を犠牲にするなど、あらゆる項目はトレードオフである。システムで提供するものがどのようなビジネス上の特 性があるのかを常に考え、コンポーネントごとに非機能要件を検討し、何を優先し何をトレードオフするのかを考える必要がある。 例えば、システムダウンを引き起こすとビジネス上クリティカルな影響があるのであれば、複雑性やコストを犠牲にし、災対までつくり こむ、ビジネス上数分間ダウンしても特に売上に影響が出ないのであれば、可用性やパフォーマンスを多少落としコストを優先する などの選択ができる。この選択ができるようにするには、機能ごとに分割したアーキテクチャをとっておき、選択、調整、変更が可能 なアーキテクチャとする必要がある。
  12. © 2023 NTT DATA Corporation 14 LAW4: Unobserved Systems Lead

    to Unknown Costs. 観測と測定ができないシステムは未知のコストを生み出すとは? システム上監視や測定を実施してない場合、実際に何にコストがかけられているのかが把握できない。 コストに関する指標をエンジニアとビジネス上の決定を下す人に見えるようにする必要がある。 考察 我々自身コストが見えていないと無駄に使ってしまう傾向がある。たとえば、家計でも同じで、電気代、食費はどのくらいかけているのか、把握する だけで自身の行動が変わる。売上とコストを適切にモニタリングすることで、機能の改善や廃止を含めた適切な判断ができる。 システム全体のコストも重要だが、機能単位で効果的な使い方ができているのか、ビジネス上の判断を行うために、指標を定義し、コスト、リクエス ト数などの収集と確認をすべき。
  13. © 2023 NTT DATA Corporation 15 LAW5. Cost Aware Architectures

    Implement Cost Controls. コストを意識したアーキテクチャはコスト管理を実現するとは? コストを意識したアーキテクチャをとると、モニタリングに応じた調整や改善が常に可能な状態となるため、自然とコスト管理が できるようになる。これを実現するためには、コンポーネントを分解し階層化、層ごとにコストと非機能要件を検討し、トレードオ フができるようになる。 考察 コンポーネントごとに、ビジネス上の特性を理解し、要件とコストのトレードオフを図ることが大切である。本質は、そのコンポーネント に対してビジネス上の判断が下った際に、調整が容易にできること、それができるアーキテクチャ、モニタリングをしておくことが大切で ある。
  14. © 2023 NTT DATA Corporation 16 LAW6. Cost Optimization is

    Incremental. コストの最適化は段階的に行うとは? コストの最適化は、継続的に行う必要がある。導入後もシステム全体を再検討し、段階的な最適化が必要である。 考察 システムは設計開発が主体ではない、運用が始まってからが本番である。そのため、運用が 始まってからでも、継続的にシステムを分析モニタリングし、コストの削減箇所を常に探る。その ためには、継続的なモニタリングと改善をサイクルに入れる必要がある。
  15. © 2023 NTT DATA Corporation 17 LAW7. Unchallenged Success Leads

    to Assumptions. 挑戦を伴わない成功は思い込みにつながるとは? 大きな失敗などを伴わずに収めた成功は、成功例として過信してしまう傾向がある。 過去にこの方法で成功した、やったことがあるだけでは、最適とは限らない。 考察 我々が陥りやすい罠。常に最良の選択がなにか、費用対効果、効率などさまざまな新しい選択肢を模索する必要がある。開発 手法、開発言語、アーキテクチャ等々常に我々は最新の情報を把握し、最適なものを提供する必要がある。 また、運用を意識する必要がある。コストの殆どが運用のコストであるため、開発時のコストはもちろん意識する必要があるが、運 用時のコストを常に念頭に入れるべし。 Most Dangerous Phrase “We’ve always done it this way.”
  16. © 2023 NTT DATA Corporation 18 まとめ トレードオフなアーキテクチャを構築する 1. お客様のビジネス特性を理解すること

    2. ビジネスにおける売上と、システム上のメトリクスを常に関連付けてモニタリングすること 3. お客様のビジネス特性に合わせて、トレードオフな非機能要件を構成すること 4. 進化可能なアーキテクチャをとること 5. モニタリングしたデータに基づき、ビジネス上の判断を行い、その判断を容易にシステムに反映できるようにすること 6. これまでの経験や常識を疑うこと Resiliency Availability Scalability CI/CD Microservice Cost Complexity… アーキテクチャの構成にはトレードオフがもとめられる。その機能において、何を優先し、何を犠牲にするのか。 そのためには、ビジネス上の需要な要素を理解し、最適なアーキテクチャを選択する必要がある。 その選択が適切なものかどうかは常にモニタリングし続け、改善し続けなければならない。
  17. © 2023 NTT DATA Corporation 19 最後に ワーナーは、すべてのエンジニアはAWSのサービスを購入する決定を下しているという意識をする必要があると述べていました。 システムを構成する技術要素やパラメータは、そのシステムによる問題解決やお客様への価値提供につながるべきです。 AWSは、様々なサービスや、サービスにおけるトレードオフな選択を用意しています。(例:様々な開発言語、コンテナワークロー

    ド、可用性や性能に関するオプション などなど)我々は、お客様が実現したいことを叶えるために、適切にサービスを構成し、ト レードオフをしながら構成要素を決定していく必要があります。我々がコストにかかる決定の一貫を担っていること、そしてそのコスト については必ずビジネスの要素とシステム上のメトリクスをモニタリングし、改善し続けること、そのためには進化可能なアーキテクチャ を取る必要があるのです。これを常に意識してお客様のビジネスに貢献できるような、開発者となっていこうと思います。