LayerとTierの違い
日本語に変換するとき、Layerは(物理的な)層、Tierは段という語で考えるとよい。
https://gyazo.com/07ead89ab05cf07a0243793f91a98ebdhttps://gyazo.com/294e2f989a07853408bc97030e2a3d19
辞書的な違い
Layerは物理的なものにしか使われない。地層やラザニアのような食べ物、重ね着などを表すのに使われる。これらはTierやレベルではない。物理的に互いに触れ合うものにLayerは使われる。
ソフトウェアアーキテクチャにおいて
Rockford Lhotkaの見解
論理的なLayerは、コードを整理するための手段にすぎない。典型的なレイヤーはプレゼンテーション層、ビジネス層、データ層であり、従来の3-Tierモデルと同じだ。だが、Layerはあくまでもコードの論理的な構成の話だ。これらのLayerが同一マシンの同一プロセスで実行されるのか、異なるマシンで実行されるのかには何も言及しないし、制約もない。
物理的なTierとは、コードが実行される場所のことでしかない。TierはLayer物理的な配置であると言い換えることができる。
これを元にIsomorphic Survival Guidを見る
https://gyazo.com/cb0d35340c30ae6fb2a62c940dbca540
図上部の「コンピュータの物理的な位置」がTierであり、「アプリケーションの論理的なレイヤ」がLayerであるといえる。
Azureの混乱させる記事
Tier=層、Layer=レイヤで翻訳されていて、一応Tierは物理的な配置、Layerは論理的な分離としているが、N-Tierアプリケーションとして、Layerのオープン/クローズドを語っていたりするので、非常に混乱を招く。TierとLayerを区別せずにN-Tierアプリケーションと読んでいた時代の名残り。