Gin vs Laravel

Gin vs Laravel
GinLaravel
2022年9月19日 更新

自己紹介

早速ですが、自己紹介をお願いしてもよろしいでしょうか。

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ベースの開発あんまり勧めしないです。