クラウド コンピューティングのコストを削減する 12 のプログラミング ヒント

クラウド コンピューティングのコストを削減する 12 のプログラミング ヒント

翻訳者 |李睿

校正 |孫淑娟

クラウド コンピューティングのコストを削減するには、開発者を含むチーム全体の取り組みが必要です。ここでは、開発者がクラウドでソフトウェアをより安価に実行するためのヒントをいくつか紹介します。

開発チームの士気を高めるには、自分たちが構築したアプリが広く普及するのを見ることほど効果的なものはありません。少なくとも毎月のクラウド請求書が届くまでは、素晴らしい気分です。一部の開発者は、コンピューティング コストの管理は DevOps チームの責任であると考えています。プログラマーはソフトウェアを書いてリリースし、コストについては他の人に任せます。これ以上ひどいことはないだろう。

賢明な開発者は、自分たちが開発するアプリケーションが会社の収益に大きな影響を与えることを知っています。大量のコードを記述するとアプリケーションの実行速度が遅くなる場合は、アプリケーションを実行するためにさらに多くのクラウド コンピューティング リソースが必要になります。より優れたアルゴリズムを選択し、よりコンパクトなコードを記述することは、速度の向上につながるだけでなく、適切に記述されたコードの実行コストも削減します。

開発者は必ずしもこの関連性を認識しているわけではありません。自分のマシンでコードを書くのは簡単ですが、マシンを購入するには、メモリやディスク容量を増やすために余分なお金を支払う必要があります。 2TB のディスク容量がある場合、開発したコードがどれだけの容量を消費しているかはおそらく気付かないでしょう。新しいアルゴリズムの実行に 2 倍の時間がかかる場合、その数ミリ秒の増加に気づく人はいるでしょうか?しかし、コンピューティングの量が倍増すると、クラウド コンピューティングのコストが増大することはほぼ確実です。

最新のクラウド プラットフォームは、リソースの使用率を単一の費用に変換することに優れています。優れたクラウド開発者は、コードを書くときに、よりスマートな決定を下す力があることを理解しています。プロファイラーを実行して問題を特定したり、メモリフットプリントを削減するために必要なデータを保存しないようにしたりするだけの簡単な作業です。

ここでは、開発者がプロ​​グラミングを簡素化して、アプリケーションをよりスリムに、より高速に、より安価に実行できるようにする 12 の方法を紹介します。

1. より速いコードを書く

ほとんどの開発者はコードの最適化に多くの時間を費やしません。アプリケーションがラップトップ上で高速に実行される場合、時間が経つにつれて 20 パーセント、30 パーセント、あるいは 300 パーセント遅くなっても気付かないでしょう。プログラムは、まだ一瞬で応答し、動作しています。しかし、サーバー上で何百万回も発生すると、その数は膨大になります。注意深く分析することで、遅いセクションを特定できます。これらをオーバーライドすると、アプリケーションに必要なインスタンスの数を減らすことができます。

2. メモリ使用量を減らす

使用されるメモリの量は、クラウド インスタンスの価格設定において重要なパラメーターです。多くの場合、メモリ使用量が 2 倍になるとコストも 2 倍になります。開発者は、データをメモリ内に保持しないようにすることで、メモリフットプリントを削減できます。 Java のストリーム クラスなどの一部のストリーミング アルゴリズムは、大きなデータ ファイルをすべてメモリにロードせずに処理するように設計されています。 Apache DataSketches プロジェクトは、すべてのメモリを使い果たすことなく、複雑なビッグ データ統計のおおよその回答を生成します。もう 1 つの利点は、メモリ使用量を削減することでアルゴリズムを高速化できることです。ある時点で、オペレーティング システムは仮想メモリを使用してデータをディスクにオフロードし始めます。これによりクラッシュは防止されますが、アプリケーションの速度は大幅に低下します。

3. 低解像度の画像や動画を使用する

低解像度の画像やビデオを使用すると、さまざまなメリットが得られます。まず、そのような画像や動画を保存するコストがさらに削減されます。第二に、データ移行コストが削減されます。 3 番目に、アプリケーションはユーザーにとってより高速に感じられます。すべての静止画像は最初から最小化する必要があります。また、ある時点で視覚品質が低下し、ユーザーに見えるようになるため、最小化は簡単ではありません。適切なトレードオフを見つけることは、プログラマーが行う必要のある設計上の決定です。アップロードされた画像を使用する一部のアプリケーションでは、画像を受信した後に、より小さいサムネイルや解像度を下げたバージョンの画像を作成することもできます。この目的のために、ImageMagik のようなツールキットや WebP のような形式が開発されました。

4. 不要なデータをダンプする

多くの開発者は、将来必要になった場合に備えて大量の情報を保存します。テーブルに無限の列を入力し、行を削除することはありません。ハードウェアがあり、ディスク ドライブに十分なスペースがある場合は、追加データにコストはかかりません。しかし、クラウド コンピューティングではすべてのサービスに対して料金が発生します。では、このすべてのデータは将来本当に必要になるのでしょうか?ユーザーはそんなに詳細な情報を必要としているのでしょうか?古いデータの一部をダンプすると、データの保存とフィルタリングにかかる​​コストを節約できます。

5. ディスクストレージを制限する

クラウド インスタンスでローカル ディスクを使用することはリスクが高く、コストもかかります。ローカル ディスク領域は通常、オペレーティング システムを効率的に実行し続けるのに十分な速度になるように設計されています。多くの開発者は、1TB 以上のストレージを備えたパーソナル コンピューターでコードを作成します。クラウド ストレージがこれほど安価で簡単に利用できることはめったにありません。クラウド コンピューティング プロバイダーは通常、保存するデータのサイズに基づいて料金を請求するため、最適なアプローチは、使用するストレージ スペースをできるだけ少なくすることです。したがって、開発者は、アプリケーションによって作成される一時ファイルや、必要なシステム ライブラリおよびパッケージを最小限に抑える方法を検討する必要があります。

6. ログをクリーンアップする

ログ ファイルは、開発中に問題を特定したりソフトウェアをデバッグしたりするのに最適です。しかし、コードが本番環境に導入されたら、そのすべてを保持する必要はありません。余分な情報はすべて、ローカル ディスクまたはオブジェクト ストレージを詰まらせてしまいます。ログ記録システムを設計するときは、ログを頻繁に削除するように構成します。多くのログ パッケージ (Log4j など) は、最小限の数のログを保持し、定期的に削除するように設定できます。

7. サーバーレスにする

サーバーレス プランでは、コードが実行されているときのみ課金されるため、負荷が断続的な場合には大幅なコスト削減が可能です。ユーザーが継続的にアクセスするアプリでも、開発者が予想するよりもデッドタイムが長くなることがあります。多くのサーバーレス料金プランは、メモリを節約しながら、無駄のないコーディングと非常に高速なパフォーマンスを提供することを目指しています。課金方式では、応答時間をミリ秒単位で計算し、プロセッサが使用されている時間に対してのみ課金されます。開発者は応答時間を直接追跡し、コードの変更が応答時間に与える影響を確認できるため、フィードバックは即時に得られます。サーバーレス アプローチは、小規模なプロジェクトや実験的なプロジェクトに適しており、月額数セント程度のコストで済む場合がよくあります。アプリケーションが特定の機能をたまにしか実行しない場合は、サーバーレスを使用するのが合理的です。

8. 古いデータをアーカイブする

データが古くなるにつれて、アクセスされる頻度はますます少なくなります。これは、古いデータを低コストのストレージ デバイスに移行するアプリケーションを設定することで予測できます。一部のクラウド プラットフォームでは、データの転送に数分、場合によっては数時間かかる、いわゆる「コールド ストレージ」に対して、はるかに低い料金を請求します。 Wasabi や Backblaze などの他のクラウド プラットフォームは、Amazon S3 オブジェクトのアーカイブ ストレージに特化しており、主要なクラウド プラットフォームよりもはるかに安価です。場合によっては、データの移動に対して料金が請求されないこともあります。需要がなくなったらデータをオフロードすると、コスト効率が非常に高くなります。

9. CSSレイアウトを簡素化する

いくつかのフレームワークによって生成された HTML タグを見たことがあるなら、レイアウトがいかにおかしくなるかがわかるでしょう。これは常に DIV タグ内にネストされた DIV タグであり、生成と配信にはコストがかかります。また、Web デザイナーは、CSS をより賢く使用してよりシンプルなレイアウトを作成するだけで、帯域幅の料金を 30 パーセント削減できると述べています。

10. 静的ウェブサイトを作成する

React などの一部のフレームワークでは、特にサーバー側レンダリングなどの機能を使用する場合、大量の計算能力が必要になります。このコードはすべて、毎月のクラウド コンピューティング料金に追加されます。反対の考え方は、キャッシュからそのまま提供される HTML、CSS、JavaScript の変更されないチャンクから構築された静的サイトを作成することです。コンテンツ配信ネットワークを使用すると、キャッシュをユーザーの近くに移動することで、配信をさらに高速化できます。さまざまなフレームワークがこの静的な哲学を採用しています。 Jekyll、Hugo、Gridsome、Pelican は、すべてをコンパクトで不変のファイルセットにまとめるツールのほんの一例です。 AJAX 呼び出しを使用してページにパーソナライゼーションを組み込むことは可能ですが、サイトの大部分はサーバーにほとんど負荷をかけません。

11. コンピューティングとストレージを外部化する

ブラウザがより強力になるにつれて、一部のフレームワークでは、より多くの計算をクライアントに直接移動することが容易になります。適切に記述された JavaScript または WebAssembly コードは、ユーザーのマシンにさらに負荷をかける可能性があります。一部の開発者は、クラウド層を認証用のビジネス ロジックを備えたデータベースだけに縮小しています。代わりに、開発者は静的 HTML と、JSON を出力する埋め込みプロシージャを備えた PostgreSQL サーバー側バージョンを使用してすべてを実行します。ブラウザには、HTML Web Storage 標準や W3C Indexed Database API など、情報をローカルに保存するためのより高度なオプションもあります。もはや短い文字列とクッキーだけではありません。このデータはインターネットを経由しないため、より迅速に取得でき、ユーザーは自分のデータがハッキング可能な集中型データベースに保存されていないことを知ることができます。ユーザーのマシン上でデータを無料で保存できる場合、なぜデータの保存と開示に料金を支払う必要があるのでしょうか?

12. コストエンジニアを任命する

開発者の中には、データベースの処理を専門とする人もいれば、適切に設計されたフロントエンドで美しい印象を与えることを好む人もいます。クラウドのコストが非常に柔軟になったため、一部のチームでは、コードのコストと効率を管理するために「コスト エンジニア」を正式に任命しています。コスト エンジニアの最優先事項は、アプリケーション コードをよりクリーンに、より高速に、より軽量に、そしてより安価に実行することです。このタスクをコスト エンジニアの仕事の一部にし、開発チームの役割と責任の一部としてコード コストを管理することの重要性を説明するメッセージを送信します。

オリジナルリンク: https://www.infoworld.com/article/3661809/12-programming-tricks-to-cut-your-cloud-bill.html

<<:  Tanzu、OpenShift、Ezmeral: 競合する 3 つの Kubernetes 製品

>>:  大企業が取り組んでいるコンテナ技術とは一体何でしょうか?

推薦する

少女がWikipediaを使って高品質の外部リンクを作成

1. 百科事典のリソースを収集して整理します。 1. 百科事典のリソースを収集する: 検索エンジンの...

Google ウェブマスター ツールのクロール エラーを修正する方法

クロール エラーは、Google ウェブマスター ツールの中で最も人気のあるツールの 1 つです。 ...

ユーザーのニーズに基づかないSEOはフーリガンだ

5月4日頃、百度は大規模なアルゴリズムのアップグレードとアップデートを実施しました。百度のアルゴリズ...

2host-512M (xen) メモリ/50g ハードディスク/G ポート/無制限/月額 7 ドル

2009 年に設立された 2host は、現在 3,700 を超える顧客にホスティング サービスを提...

最初のエッセイサイトは大量のトラフィックがあり、コラム設定はこれに大きく貢献しています

Diyifanwen.com の最適化に関する記事をいくつか読みましたが、この Web サイトのトラ...

工業情報化部の幹部らが華雲データグループを視察

2019年3月27日、工業情報化部弁務局長の傅静波氏、情報ソフトウェア部副部長の董大建氏は江蘇省工業...

最新ニュースを活用してソフト記事を宣伝する方法

インターネットマーケティングで私たちがやっていることは、常に自分自身を変え、常に新しい方法で自社のウ...

実例: 新しく作成したウェブサイトのタイトルと説明を変更した場合の影響

今日は、初心者ウェブマスターの友人全員に最近の実践事例を共有したいと思います。これはランキング最適化...

Kubernetes でのコンテナ検出について理解していますか?

1. 概要コンテナ検出は、コンテナ内のアプリケーション インスタンスが適切に動作しているかどうかを検...

メールマーケティングをより効果的にする方法

重要なインターネット マーケティング手法としての電子メール マーケティングは、これまでインターネット...

Vultr クラウド サーバーはどうですか? Vultr India (ムンバイ) データセンターの簡単な評価

Vultrはどうですか? Vultr クラウド サーバーはどうですか? Vultr India クラ...

QR コード決済には隠れた危険が潜んでいます。なぜ QR コードをスキャンするとすぐにお金が盗まれるのでしょうか?どうすれば防げますか?

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています「QRコー...

インテリジェントな音声機能を備えたモバイルクラウドは、顧客の効率を60%向上させます。

今日の急速な経済発展により、あらゆる分野で競争が激化しています。企業にとってのあらゆるビジネスチャン...

これらの10の小さな実験に頼って、JVMの3つの主要なパラメータタイプを数秒で理解します。

[[343690]]著者 |悟空兄弟ソース | Wukong チャット アーキテクチャ (ID: P...