Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。この本では、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...
サーバアプリケーションの配置はますます複雑になっています。いくつかのPerlスクリプトをコピーするだけでインストールが完了する時代は終わりました。今日、ソフトウエアは多くの種類の要求を抱えています。 インストールするソフトウエアやライブラリの依存物("Python >= 2.6.3とDjango 1.2に依存する") 実行するサービスへの依存("MySQL 5.5とRabbitMQのキュー"が必要) 特定のOSに対する依存("64-bit Ubuntu Linux 12.04でビルドとテストをした") リソースの要件: 利用可能なメモリの最少量("1GBのメモリが必要") 特定のポートへのバインド("80と443を使う") 例えば、比較的シンプルなアプリケーションの配置を考えてみましょう。Wordpressです。典型的なWordpressのインストールでは、 Apache 2 PHP 5
図1. ビジネスステークホルダーと重要な設計判断についてコミュニケーションするためのハイレベルなアーキテクチャスケッチ。 もののあいだを設計する あとになって考えてみると、このシステムのアーキテクトは「目に見える」ものに注目しすぎていたことがわかる。ユーザインターフェイス、ドメイン固有コンポーネント、データ管理、永続化、... しかし、アーキテクチャ上の問題はコンポーネント内ではなくコンポーネント間で発生していた。基盤となる技術インフラを含む他のシステムとのインターフェイスやインタラクション、インテグレーションで問題は発生した。アーキテクチャ仕様はこれらも辛うじて触れていたため、実際に問題が発生するまで、アーキテクトと開発者がそこに注目することはなかった。 これ対して、達人アーキテクトはもっと「もののあいだにあるもの」に注意を払っている。コンポーネントのあいだにあるもの、標準データ型の裏に
カリフォルニア州エルセガンドに本拠をおくカスタムアプリケーション開発会社のTechEmpowerが,"Java 8のすべて(Everything about Java 8)" と題するブログ記事を公開している。まもなく来るJava 8において,開発者が直面する変更点を包括的にとりまとめたものだ。ここではその記事の概要を紹介する。詳細な内容についてはTechEmpowerのブログ記事を参照してほしい。 インターフェースの改善 インターフェースでstaticメソッドが定義できるようになった。例えばjava.util.Comparatorには,次のようにstaticなneutralOrderメソッドが追加されている。 public static <T extends Comparable<? super T>> Comparator<T> naturalOrder() { return (Com
あるアプリケーションの作業にとって、スループットは最も重要なターゲットです。1つ例を挙げると、長時間実行されるバッチ処理のジョブです。ガベージコレクションが実行されている間、バッチジョブが時々1、2秒止まっても、ジョブ全体がすぐに完了すれば問題ありません。 人間が直接対話するアプリケーションから金融取引システムまで、実質的な他のすべての作業では、システムが1、2秒か、数ミリ秒以上反応しない場合、大変なことになり得ます。金融取引では、しばしば一貫した停止時間と引き換えに、スループットを犠牲にするだけの価値はあります。物理的に利用可能なメモリ量によって制限されるアプリケーションを持ったり、footprintを維持しなければならなかったりすることもあります。そのような場合、停止時間とスループットの面の両方で、パフォーマンスをあきらめなければなりません。 以下のトレードオフは度々起こります。 大部
この他にも "サービスを受けるのを待つ人が,キューの中に立っている平均時間はどれくらいか?" といったような疑問に,Littleの法則で答をだすといった内容のゲームは,他にもたくさんあります。 図1. Littleの法則 同じようにLittleの法則は,スレッドプールサイズの決定にも使うことができます。私たちがしなければならないのは,リクエストの到着率と,サービスに必要な平均時間を測定することです。そうすれば,これらの値をLittleの法則に挿入して,システムの平均要求数が計算されます。その数値がスレッドプールのサイズよりも小さければ,その結果に従ってプールのサイズを小さくすることが可能なのです。逆に計算結果がスレッドプールのサイズよりも大きい時には,問題はもう少し複雑になります。 実行中のリクエストより待ち状態のリクエストの数が多い場合,まず最初に判断しなければならないのは,もっと大きな
JVMはプロファイリングを利用してコードの最適化を行います。対象は頻繁に利用されるコードパスのみですが,徹底的に行うことで大きな効果を上げています。JITコンパイルされたコードに関しては,現在では多くの場面において (その割合も増えつつあります) C++の実行速度を凌駕しています。 このような事実にも関わらずJavaが今でも低速なプラットフォームとして認識されているのは,おそらくは初期バージョンのJavaプラットフォームでの経験が,歴史的な負のバイアスとして働いているためでしょう。 早まった結論を出す前に,客観的な見地に立って,最新のパフォーマンス結果を評価するようにお勧めします。 2. Java コードの1行にはそれ自体で意味がある 次の短いコード行を考えてみてください: MyObject obj = new MyObject(); Java開発者ならば誰でも分かるように,このコードはオ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く