Webアプリケーション開発の7つの段階

これは、同志のプレゼンテーションスライドから編集した翻訳です。 ジョンは夢中になります
形式:スライド番号、概要、および(私のまれなkamenty)
  1. Webリソースになる段階
    投稿者:John Engates
  2. 規制:
    • Webアプリケーションに期待すること
    • どうして起こるの
    • 良い例
    • 質疑応答

  3. サイトに期待すること

    • 拡張性
    • ハイリターン
    • 有効性
    • 管理のシンプルさ
    • 低コスト(サービス込み)
    • 豊富なryushechekの豊富な機能
    • そして、彼は私たちに何をしますか略奪、たくさんの生地!

    これは、企業ウェブサイトの注文を検討しているクライアントディレクターの7桁のマントラです。
  4. 高可用性。 定義:
    高可用性HAは、(設計および開発)の継続性に対するある程度の信頼性を保証する設計および実装へのアプローチです。 それだけです!
    例でどのように見えるか:
    • あなたのサイトは常に稼働しています
    • ユーザーは幸せです
    • 技術的なダウンタイムのためにお金を失うことはありません
    • (そして、これは必要以上にメンテナンス費用を増やすことはありません)
    それはプロジェクトのテディールのマントラでした
  5. 本当にスケーラビリティと呼ばれるもの
    スケーラビリティ(拡張性)は、システムの期待される特性であり、快適な方法で収益を増やす能力を示します。または、必要に応じて機能を簡単に増やすことができます。
    (男はクールになりました。翻訳に本当に飽きました。要するに、スケーラビリティとは、システムが拡張および成長する能力のことです。まあ、収益性を高めるために、はい)
    ピカからのオプションはこちら

    スケーラビリティが表現しないもの:
    • 純粋に容量拡張(2MHz-> 3MHz)
    • オペレーティングシステムのようなもの(Solaris vs Linux)
    • ソフトウェア技術機能(Java-Python-Rails)
    • プラットフォーム機能(Intel-AMD)
    • コードの最適化(10行対1000、 この男は、何も解決しないと主張します
    • ストレージテクノロジー(SANとNAS)の選択は、私が推測したとおり、これらは異なるストレージインフラストラクチャです。 以下のkamentyを参照

  6. 大きな赤い文字で

    拡張性とパフォーマンス-唯一無二

  7. 例付きの写真
    美しい車、道路交換、小便器
  8. 写真
  9. 写真
  10. 写真
  11. 写真
  12. 写真
  13. 真実1:

    設計しない限り、何も増やせません。
    (オプション:スケーラブルに設計されていない限り、何もスケーリングできません。)

  14. 第二の真実:

    何かがコンストラクターとして設計された場合、問題なく成長できます。
    pikaからのオプション:システムがスケーリングするように設計されている場合でも、それはまだ痛いでしょう。

  15. 非常に興味深い画像「痛みのスケール」(前の段落のスケーリングとのしゃれ-スケール、適切に翻訳することは困難でした)
  16. 典型的な開発シナリオ

    ステージ1.開始
    • シンプルなアーキテクチャ
      -ファイアウォールとバランサー
      -いくつかのウェブサーバーがそう言った、嘘をつかなかった
      -データベースサーバー
      -内部ストレージ

    • 小さな複雑さと問題、迅速な開発、さまざまな種類の豊富な機能、すべてが高速
    • 冗長性なし(Whと労力)、低コスト-素晴らしいスタートアップ!

  17. ステージ2、すべて同じですが、もう少し
    • 成功するビジネスは法律との良好な関係の鍵です
    • ファイアウォールとバランサーを追加する
    • パフォーマンスのためにもう少しWebサーバーを追加します
    • データベーススキーマをインストールし、DBAを使用して最適化します(コンサルタント)
    • 拠点を追加
    • ストレージをSANまたはDASに転送します
    • まだシンプルで、有望なアプリケーションに適しています

  18. ステージ3-最初の症状
    • 宣伝
    • SquidまたはVanishがリバースプロキシモードでインストールされているか、非常に優れたバランサーが静的コンテンツのキャッシュに使用されています
    • 必要な数のWebサーバーを追加します(コンテンツ管理はすでに多くのバンティングを提供しています)
    • 唯一のデータベースは共有されません(個別の読み取り/書き込み操作を念頭に置いています-すべての書き込みは、読み取り用の複数のセカンダリサーバーを備えた単一のマスターサーバーに対して行われます)
    • アプリケーションのスレッドを書き換える必要がある場合があります

  19. 図「データベースサーバーの拡張性」
  20. ステージ4-痛みの増加
    • Memcacheキャッシング
    • レプリケーションはすべてに対して機能するわけではありません(書き込みの唯一の基盤-書き込みの多くの基盤-結果:レプリケーションは長時間機能します)
    • データベースの分離の必要性が認識されます(もちろん、データベースがこのメカニズムをサポートしている場合)
    • コンテンツ用の分散ストレージの認識が来る
    • アプリケーションとベースのアーキテクチャの深刻な変換が必要です(そして開発者はそのようなスキルを持っていない場合があります)

  21. ステージ5-本当にお尻の痛み!
    • パニック氏が来て、あなたと共に生き続けます。
      これをすべて前にできませんでしたか? (これのリスト:
      -アプリケーション\ビジネスモデルの完全な再考
      -そして、なぜアーキテクチャに関する決定を下す際に、システムの拡張性を計画しなかったのですか? )
    • アプリケーション機能としての割り切れないこと-他に何を使用できますか? (オプション
      -地理的原則、姓、ユーザーIDなどに基づく分離
      -ユーザークラスターの作成(ユーザークラスタリング)
    • アプリケーションの動作は各ユーザークラスターで同一である必要があります
    • ハッシュ構造またはデータベースマスターサーバーを使用して、どのクラスターに接続するユーザーを決定する

  22. ステージ6-パリッシュ、マルマルリリーフ
    • 拡張可能なアプリケーションと基本アーキテクチャ
    • 満足のいくパフォーマンス
    • 新しい機能を再度追加できます
    • コード内の何かを最適化する
    • 私たちは成長を続けていますが、今では完全に制御可能です

  23. ステージ7-未知への脱出
    • 私たちを待っているボトルネックは他にどこにありますか?
      -ケータリング、宿泊エリア
      -チャンネルとスタッフ-ホスティング業者の大きさは?
      -保護システムとロードバランサーの問題
      -データウェアハウス
      -人と問題
      -データベースの拡張性の技術的な制限-キーと値のスキームを使用してデータを保存したいですか?
    • 1つのバスケットにあるすべての卵はどうですか?
      -1つのデータセンター
      -データの1つのコピー
      -データ複製と地理的バランスの問題

  24. 良いアドバイス
    • 車輪を再発明しないで、誰かからコピーしてください
    • ただ考える
      -すべてのものはどこでも簡単になりました-それほど単純ではありません。 -A.アインシュタイン
    • 水平に考えてください...垂直に考えてはいけません...いずれにせよ(これはイディオムでしょうか?)どのくらい高価ですか? -代わりに-どれくらい速い?
    • 適切なソフトウェアと機器を使用する
    • 問題を簡単かつ簡単に解決します。
      -計画を実行に移す
      -さまざまなサービスを共有する
      -一度に多くの変更を加えないでください(これを反復と呼びます)
  25. いくつかのより良いアドバイス
    • 最適化の最適化に時間を無駄にしないでください(「時期尚早の最適化は時期尚早です」©#phpclub@undernet.org)
      -[適切に設計された]アーキテクチャを採用し、多くの場合ソリューションを微調整し、ほとんど最適化しない(またはまったくしない)
    • 適切なストレステストによるテストの拡張性
      -あなたが彼らの必要性について考え始める前に、それを習慣的な習慣にしてください。
    • 必要性を感じる前にキャッシュを使用する
    • 多くのメモリと64ビットプラットフォームが役立ちます(Force the Luck!:)
    • パフォーマンスとスケーラビリティのどちらを選択するかが問題になる前に、新機能をテストする
      -vs. 持っている必要があります。 そして、あなたは幸せになります:)

  26. サービスの変更と可用性
    • プロセスと文書の正しい定式化の必要性を過小評価しないでください
    • リリースを管理する!
      -開発-テスト-リリース
      -これらのアクションを実行するためのメソッドの可用性
    • バージョン管理システムを使用する
      -なるほど、はい:RCS、CVS、Subversion
    • リリースを追跡します(要するに、問題追跡は追跡システムを使用するための良いアドバイスです。特殊なバグ追跡システムは、tracタイプのゴミではなく、それらの開発を支援します-他のタスクがあります。制御システムを使用する場合、透過的に追跡されるコンバインでなければなりませんタイムライン、eGroupWareのようなもの。このヒントは前のものを補完します)
    • コーディング標準を使用する
    • 変更を管理する
      -計画-テスト-実装
      -これは、高可用性インフラストラクチャ(HA)にとって重要です
さらに、広告と感謝があります。
終わり

最初の翻訳はこちら
翻訳された トピックは興味深いです。 1000語以上、7500文字以上でした。 記事を作成して販売できます! :)バイヤーがいる場合。 特に新しいことは何も学びませんでした。 誰かがそれを役に立つと思うことを願っています

Source: https://habr.com/ru/post/J56212/


All Articles