5章大規模開発での並行処理

ここまででGoのプログラムの中で並行処理を利用するよくあるパターンを学んできました。今度はこれらのパターンを組み合わせて、大きく、構成可能で、スケールするシステムを書けるようにする慣例のほうに目を向けてみましょう。

この章では、単一のプロセス内の並行処理をスケールさせる方法を議論し、また1つ以上のプロセスを扱うときどのように並行処理が関係してくるかを見ていく事になります。

5.1 エラー伝播

並行処理のコード、特に分散システムのコードでは、システム内で何かがおかしくなりやすく、また同時になぜそれが起きたのかを理解するのが難しいものです。問題がシステムをどう伝播し、ユーザーへどのように提示されたのかを慎重に考えることであなた自身、あなたのチーム、そしてユーザーまでを、ありとあらゆる苦痛から遠ざけてくれるでしょう。4.5 エラーハンドリングではゴルーチンからエラーをどのように伝播させるかという点を議論しましたが、エラーはどのような形式になっているべきか、あるいはエラーを大きくて複雑なシステム内でどう伝えるかという点についてはあまり触れませんでした。エラー伝播の原理について、ここで少し考えてみましょう。次の段落では、並行処理システム内でのエラーハンドリングに対する一部の開発者による強い仮定を持った考え方を紹介しています。

多くの開発者がシステムの流れにおいてエラー伝播は二の次であると誤解しています。システム中でのデータの流れに関しては慎重に考慮するにもかかわらず、エラーは黙認されて大した考えもなしにシステムスタックの上位になんとなく渡されて行き、結局ユーザーのところで全部まとめて表示されます。Goでは開発者にコールスタックのフレームごとにエラー処理を強制することでこの悪しき習慣を正そうと試みました ...

Get Go言語による並行処理 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.