Goの連載記事はじめます!
フクロウラボCTOの若杉です。ここ最近、さき(H.Saki)さんの「Goでの並行処理を徹底解剖!」の輪読会を弊社エンジニアメンバーが開催しておりました。こちらのZennの本は、Goの特徴である並行処理やそれを支えるGoランタイム、またチャネルの内部構造についてわかりやすく説明されています。
この輪読会を通してGoランタイムのおおまかな仕組みだけでなく、Goの設計思想(それに付随する哲学)みたいなものを感じることができ、Goについてまだまだ知らないことが多いと改めて実感しました。 そこでGoについての見識をより深めるため、勉強会に参加したメンバーでGoに関する記事をアウトプットしようということになりました!
これから書いていく予定の記事
下記のような記事タイトルで、Goに関する記事を今後、いくつかリリースしていきたいと考えています。
・Goの成り立ち
・Goの歴史
・Goの設計思想と哲学
・Goが好きな理由
etc…
Goを採用した背景
弊社では、2019年頃からRubyやPHPで実装された既存サービスを、Goをつかってリプレイスするという取り組みを実践している最中です。
具体的には、Amazon EC2上に構築されたレガシーなシステムを、AWS LambdaやAmazon ECS(AWS Fargate)で構成されたマイクロサービスアーキテクチャに切り出していて、サーバーサイドにGoを採用しています。
採用した背景としては、以下の3つの理由になります。
1.静的型付け言語であること
フロントエンドとのインターフェースにGraphQLを採用しているため、スキーマにて型を定義していることから、バックエンドでもそれに対応する必要がありました。
もちろん動的型付け言語でも、スキーマに合わせてオブジェクトに型を定義することはできますが、静的型付け言語の場合は、コンパイル時にそれらの型に不備があったことを検知してくれます。
つまり、コンパイルが通らない限りプログラムを動作させることができないので、素早く不備に気づくことができます。
また、静的型付け言語の中でも、比較的学習コストを抑えられるという理由からGoを選びました。
2.並行処理を導入するコスト
ゴールーチンとチャネルにより並行処理が書きやすいため、既存システムのボトルネックを解消するのに比較的コストがかからないと判断しました。また、マイクロサービスとの相性がよいのもポイントです。
3.モチベーション
これまでGoをメインで使っていなかったメンバーが多かったこともあり、Goに対するモチベーションが高かったです。
社内でGoの勉強会・輪読会などを開催
サーバーサイドをGoを採用して浸透してきているという背景もあり、社内ではGoに関する勉強会・輪読会が活発になってきました。
これまでに取り扱わせていただいた資料は以下です。
【@tenntennさんのスライド】
・プログラミング言語Go完全入門
・ガチャを作ろう
【さき(H.Saki)さんZenn】
・Goでの並行処理を徹底解剖!
これらの資料は非常に勉強になり助かっています。
ちょっとした社内のSlack BotもGoで作成するようになっていきました。
Go Conference
また、2021年のGo Conference Autumnから微力ながらスポンサーさせていただいております。
・Go Conference 2022 Spring
・Go Conference 2021 Autumn
Goはコアな技術スタック
今までフクロウラボでは開発言語に対しては信仰しすぎることなく、実現したいプロダクトやサービスの要件に応じて、道具としてなるべく適切の開発言語を採用しようという方針です。ただ、Goに関しては今後もしばらく重要な技術スタックとなりそうですので、より深く理解し、関わりを深めていければと考えています。
この記事が気に入ったらサポートをしてみませんか?