Upgrade to Pro — share decks privately, control downloads, hide ads and more …

start golang project in java engineer team

Yohei Takeda
November 25, 2018

start golang project in java engineer team

goでプロダクトを作りたい!と思う方は昨今たくさんいると思いますが、実際に会社で導入するとなると色々ハードルが高いところもあるのではないでしょうか。 弊社もそんな会社の一つでしたが、なんとかgo導入に踏み切りました。その過程を、泥臭いような話も含めて紹介したいと思います。

Yohei Takeda

November 25, 2018
Tweet

More Decks by Yohei Takeda

Other Decks in Technology

Transcript

  1. ストアシステム ( MDCMS ) 情報流通プラットフォーム 出 版 社 ・ 著

    者 ソリューション コンテンツ 海外市場 国内市場 子供向 市場 デジタルコンテンツ 配信エンジン ( md-dc ) ビューア ( MDViewer ) 創作 流通 販売・読書
  2. ストアシステム ( MDCMS ) 情報流通プラットフォーム 出 版 社 ・ 著

    者 ソリューション コンテンツ 海外市場 国内市場 子供向 市場 デジタルコンテンツ 配信エンジン ( md-dc ) ビューア ( MDViewer ) 創作 流通 販売・読書
  3. 22 取り組んだ内容 Golangを導入してみよう! • Not Java. Then what? • Golang,

    Node.js, Python ◦ 流行り、クラウドサービスとの相性からこの3つへ • パフォーマンス、開発のしやすさからGolangを導入へ!
  4. 27 メンバーの選定 “順応できる”を優先。 変化に寛容なメンバーで最初は始める • リーダー陣以外は新卒2,3年目のメンバーが多い • 宗教論争は避けねばならない → Javaを愛し過ぎてる人を入れない

    ◦ 幸運にもこれはあまり意識しなかった ◦ 現場レベルではあまりgolangに反発はなかった • あまりたくさんの人は入れない。物ができてきたら増やす
  5. 28 教育 総じて、、大したことはやってません! やったこと • Golang標準のチュートリアル ( https://tour.golang.org ) •

    必要に応じてクラウドサービスのSDKを使ったチュートリアル • あとはひたすら実践! ◦ その分ソースコードレビューは結構細かくやっていると思う
  6. 29 教育 総じて、、大したことはやってません! やらなかったこと • 独自の教育コンテンツ作成 • array, sliceと向き合い過ぎる ◦

    メンバーがどハマりするだろうなーってポイントは一旦置いておく • pointerと向き合い過ぎる ◦ メンバーがどハマりする(以下略
  7. 35 気付き • build生成物(docker image)が大きい… ◦ build時にのみ必要なモジュールも入れてしまっていた ◦ Docker multi-stage

    buildで解決!1GB → 20MB! • goroutineをまだ明示的には使ってない ◦ 普通のwebアプリの業務ロジック・あまりパフォーマンスが 気にならないバッチ処理ではそんなに考える必要ないのかも ◦ とはいえ必要になる時も来るかもなので知識はつけとく
  8. 36 気付き • 最初は過剰なフレームワーク・仕組みは使うべからず ◦ 「gRPCとか使わないの?」は棄却。社外システムからの呼び出しも 多く、影響範囲の大きい改修になってしまう ◦ micro過ぎるservicesにはしない!多分当社はk8sは要らない •

    話題のerror handling。どうしたら良いかは始めないと分からない ◦ 依存する外部リソースの種類、その性質などで何したいかは変わる ◦ ある程度実装してみて初めてパターンが見えてくる
  9. We’re Hiring ! • Gopher (Lead) Engineer • Frontend (Lead)

    Engineer • Engineering Manager • Product Owner https://www.mediado.jp/mediado/recruit/