なぜGoがWebアプリ開発に適しているのか
このエントリはGoプログラミング実践入門を読んで、5分でもわかるように序章を軽くまとめたものです
大規模なWebアプリケーション開発用の言語が必要とする要素
- スケーラビリティ
- モジュール性
- 保守性
- 高速性
Goが上記をカバーしている
スケーラビリティ
アプリケーションの処理能力を素早く簡単に増強して処理できるリクエストの数を増やすことのできる能力
スケーラビリティの側面
- 垂直方向=単一のマシンでCPU数を増やして処理能力を向上
- Goのゴルーチンで効率的に高速に実行
- 水平方向=マシンの台数を増やして処理能力を向上
- Go Webアプリケーションの多数のインスタンスの上にプロキシを置く
- 動的依存性のない静的なバイナリとしてコンパイルされることを利用し、Goが組み込まれていないシステムへ分散
モジュール性
交換可能なコンポーネントを使って設計することで、機能の追加・削除・変更が容易になり、アプリケーションに対する要求変化に応えやすい
- 関数でインターフェースを引数としてとれるため、新規コード追加でも既存の関数に対してそのインターフェースが要求するメソッドを実装することで、その関数をそのまま使える
- 関数プログラミングのような機能(関数型、値としての関数、クロージャ)が数多く実装されているため、関数から別の関数を生成させることができる
近年話題の「マイクロサービス」中心のアーキテクチャとも親和性が高い
保守性
保守が容易なことは、機能改善・修正の際に時間がかからない・デグレを生みにくい
高速性
C言語の実行速度に近づける思想
- コンパイル型のため、インタプリタ型言語よりは一般的に速い
- ゴルーチンによる並列実行のサポート