オブジェクト指向言語では、クラスの責務について考えるのが面白い。業務知識を適切にオブジェクトで表現できると、ソースコードが自らの設計を説明してくれる。
自分はアプリエンジニアとして開発してきたが、直近のPJではインフラ担当になり、アプリエンジニアの責務について見直す機会があった。
アプリエンジニアとインフラエンジニアの境界は曖昧になりつつある。
例えば、アプリで使うシークレットはSecrets Manager等の管理サービスを利用するのがセキュリティ・管理上のベストプラクティスだとされている。これは従来のインフラエンジニア、アプリエンジニア単体では適切に設計できない。
DB接続がボトルネックになっている場合、クエリのチューニングが必要なのか、リードレプリカを利用するなどインフラ設計が必要なのかアプリ・インフラを横断した観点がないと優先度をつけることができない。
現在IaaSで提供される多くのサービスがフルマネージドになり、PaaSとして利用されるとインフラ設計にかかるコストが削減されていく。
クラウドで構築するには、アプリであってもインフラの設計ができるエンジニアが必要だ。