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

start golang project in java engineer team

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Yohei Takeda Yohei Takeda
November 25, 2018

start golang project in java engineer team

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

Avatar for Yohei Takeda

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/