Gin vs Laravel
自己紹介
早速ですが、自己紹介をお願いしてもよろしいでしょうか。
Laravelさん:
自分はPHPベースで作ったWebフレームワークです。
お掛け様で、現在は最も人気なフレームワークの一つ知られています。
自分の中に、ベストプラクティス例が入っています、MVC構造の代表的な存在になっています。
PHP言語の特性を生かすのはもちろん。各機能のモジュール化、開発およびテストに対する高い充実性、また、高い安全性を持っていることなどによって、IT工業化時代に適したフレームワークと誇りを感じます。
Ginさん:
自分はGolangベースで作ったWebフレームワークです。
Laravelと比べるとまだ若くて、色々機能はライブラリとの組み合わせは必要です。設計はMVCに限られていません、開発者自由にサービスのアーキテクチャを作らせれると思います。
自分は簡単に言うと、Golangのhttpライブラリのルーターのハンドリングツールになります。
Golangはコンパイラ言語なので、その実行速度および並行処理の恩恵を受けて、GoをベースにしたWeb開発では一番使われているフレームワークになっています。
リソース面
ご存じの通り、お二人方が、Webサーバーの開発にすごく強いイメージです。
Webサーバーのリソース面に何か区別ありますでしょうか。
Laravelさん:
PHP言語の性能と関わります。リソースの要求は結構高いと思います。
例として、
===============
8GB RAM
4 Core Processor(CPU)
100GB HDD(ストレージ)
OS (Linux系尚可)
===============
また、環境を揃える必要があり、主にPHPの環境構築になります。
Ginさん:
Golangはコンパイラ言語として、実際にデプロイするのはバイナリのファイルです。
バイナリファイルの実行環境は要求されていなくて、AWSみたいなクラウドサービスの最小限のEC2でもスムーズに動けます。
例として、
===============
1GB RAM
1 Core Processor(CPU)
20GB HDD(ストレージ)
OS (Linux系尚可)
===============
また、環境を揃える必要がなく、バイナリ実行になります。
ツールやライブラリ
開発担当するエンジニアたちが、どんなツールを提供しているでしょうか、また、ライブラリ管理の心得はあるでしょうか。
Laravelさん:
ArtisanとComposerは誇りを思っているツールです。
Artisanのコマンドで、ファイルの自動生成、データ管理、テスト実行にすごく便利になります。また、Artisanのドキュメントも強力的です、活用によって、プロジェクトの進捗を大幅に進むことができるだろう。
Composerはライブラリの管理ツールです、packagistというサイトで管理していまして、継続的に運営している時、バージョンアップ対応はスムーズに行えます。
最後、XDebugというPHPツールと合わせると、開発にすごく効率的ではないかと思います。
Ginさん:
Golangベースの開発は現在がgoモジュールベースで開発をお勧めしています。
Laravelみたいなartisanやcomposerがないです。Golangベースの開発は現在がgoモジュールベースで開発をお勧めしています。
ライブラリなどはほぼ開発者自分で探す必要があります、必要とされているライブラリは基本的にgithub.comに存在しています。
幸い、フレームワークの高い実行速度を誇れるので、エンジニアたちは技術の共有が頻繁に行なっています。また、関連のライブラリも次々と出ています。
Debugツールもライブラリ頼りになっています。今の主流はdelve+airになっています。
開発コスト
実際に開発を進められて、どんなところでコストかかるでしょうか。
Laravelさん:
PHP言語の入門レベルは低く、また、オブジェクト指向にすごく向いている言語なので、エンジニアたちがコードを書くのは楽でしょう。
自分の中の構造は複雑かもしれないですけど、ドキュメントは結構充実なので、手順通りにやれば、ベストプラクティスになることでしょう。
また、高いカスタマイズできますので、プラグインとか、自作のライブラリに色々関連付けて、開発のコストを抑えることができるでしょう。
Ginさん:
Golangという言語なので、言語自体はレベル的にPHPより高いと思います。
仕組み的に、LaravelのMVC構造に合わない場合もあるでしょう。
ですが、型安全性を重視しています。最初、ルールとか、アーキテクチャーを作るのは大変だろうけど、その後のコードは綺麗に作れて、読めやすさは負けないだろうと思います。
また、コードの一貫性を保つことができて、レビューや引き続きのコストを抑えることができるだろう。
運営
実際にサービス運営し続けるとき、お二人は何かアドバイスあるでしょうか。
Laravelさん:
高いセキュリティ性が持っているのはサービスの運営に強いです。
機能の拡張開発にも強く、サービス継続的な発展に役にたつだろうと思います。
ですが、やっぱりPHPのパフォーマンスに制限されていまして、リソース面は随時確保する必要がありまして、ユーザー数増える場合、サーバの台数を増やす必要があります。
Ginさん:
直接バイナリファイルを実行しているので、安定性とセキュリティー性も安心できます。
アーキテクチャーの設計は開発初期に任せられているので、継続的な運営開発はここ次第です。
少ないリソースで、高いパフォーマンスできます。これは自分がWebフレームワーク界で、一つ席あるの理由と思います。
最後
それでは、最後に、まとめる言葉をお願いしてもよろしいでしょうか。
Laravelさん:
自分は開発者にとって、結構なものを揃えているWeb開発のツール箱と認識してください。
Web開発に興味ある型、複雑なアーキテクチャーを考えたくない、スタートアップの企業は効率を求めているので、自分を採用した方がいいと思います。
また、継続的に運営によって、高いパフォーマンスを出したいですが、コストを抑えるため、GoのGinさんに移すことが可能でしょう。
Ginさん:
自分のことはあんまり初心者に勧めしないです。逆にLaravelさんにした方がWeb開発意味あると思います。
コードを書くのは自信を持っている方、アーキテクチャーなどの仕組みもちゃんと理解している方、高いパフォーマンス求めるサービスを構築したい方はいれば、自分を使う方がおすすめです。
さらに、自分の方がRestful式に強いので、開発コスト面から見ると、フロントエンドも開発することがあり得るので、初期資金が限られている場合、Goベースの開発あんまり勧めしないです。