最近のInfoQポッドキャストで、Herokuのサイト信頼性エンジニアであるJohnny Boursiquot氏は、次のようなさまざまなトピックについて説明した。なぜ、Goがファンクション・アズ・ア・サービス(FaaS)スタイルのアプリケーションを構築するのに役立つ言語であるのか。Herokuがどのようにしてサイト信頼性エンジニア(SRE)の役割を実装するのか。なぜ、教える能力がそんなに貴重なスキルであるのか。
Boursiquot氏は、Goがファンクション・アズ・ア・サービス(FaaS)スタイルのアプリケーションを構築するための生産的な言語である理由を探るところから始めた。彼は、Goランタイムの設計がこのスタイルのプラットフォームに多くの利点をもたらしたと述べた。たとえば、Goアプリケーションは静的バイナリにビルドできるので、依存関係管理の必要性が減少し、ランタイムとアプリケーションの起動時間が短く、開始およびスケーリングに優れている。 関数ベースのアプリケーションを設計するときに、Goコアの使用パターンとプログラミングイディオムを大幅に変更する必要はない。
...私にとって最大のことは、私がGoのやり方を変更する必要がなかったことです。これは、何年にもわたって学んできたのと、いくつかは同じであり、まだ適用されるプラクティスです。
FaaS開発ツールチェーンは、長年にわたって改善されてきた。 現在、多くのクラウドプロバイダーがローカルランタイムを提供している。AWS SAM LocalとAzure Functions、およびサービスシミュレーター(例: LocalStackとGCPのCloud Emulators。本番環境でのテストは、イングレスまたはAPIゲートウェイでダークローンチとカナリアリリースを実行する機能によって容易になる。
Boursiquot氏は、「サーバーレス」アプリケーションを開発しても、開発チームの運用に関する専門知識の必要性がなくなるわけではないと主張した。システムを適切に設計し、ランタイムを最大限に活用し、従量課金制のコストを制御するように設計するには、基盤となるインフラストラクチャコンポーネントの知識が必要だ。
運用が必要です。あなたのチームに運用を気にする誰かが必要です。インフラストラクチャの構成が必要です。あなたがそこに出すつもりであるものの運用性について誰かが心配する必要があり、カナリアリリースを持つことの意味、トラフィックシフトをすることの意味を理解している誰かが必要です。その考え方を持つ人が必要です。
サイト信頼性エンジニアリング(SRE)の役割は、事実上すべての組織で異なる。Heroku SREチームは、確立されたパターンと実践を彼らの役割に適合させた。彼らは「外交官」として機能し、製品チームと緊密に連携して、運用のベストプラクティスに関する知識を共有する。
…私たちは外交官のチーム、生産技術の一種のベストプラクティスのチーム、運用の卓越性のチームのようなものです。これにより、システムの中で、TLCが少し必要で、運用の観点からもう少し注意が必要なコンポーネントを特定できます。そして、私たちはそれらのチームと協力して、「さぁ、プロセスに行こう。本番の準備プロセスを通して、解決しよう、OK、今、何がありますか?今、何がないですか?あなたの悩みの種はどこですか?」
Boursiquot氏は、あなたの仕事に関係なく、教える能力は貴重なスキルであることを議論することにより、議論を締めくくった。コードを記述したり、重要な運用原則を取り入れたりすることを人々に教えることは、非常にやりがいがある。教えるエンジニアは、自分のエゴから逃れるために努力しなければならない。あなたが教えている人々のニーズに焦点を当てることにより、はるかに前進することができる。