yyh-gl's icon

yyh-gl's Tech Blog

技術ネタ中心のブログです。主な扱いはバックエンド技術と設計です。

yyh-gl

1 分で読めます

featured

DeNA.go #3

初参加です!
ビールとお弁当もらいました。

そしてなんとなんと
k8sの技術書をいただいちゃいました!!!
もちろんステッカーもありましたよ👍

1. [Go活用事例]安全運転支援サービスを支える運用サイト

登壇者:@suhirotaka さん
オートモーティブ事業本部スマートドライビング部システム開発グループ

スライド

主題

管理画面をGoで作成

Railsで作ってるものをGoで作る理由

  • 実証実験時はスピード重視でRails
  • 本サービスはパフォーマンス重視でGo

順次Goに書き換えていく

Goのフレームワーク

GoのWAF(Web Application Framework)には

  • フルスタック・MVC
  • ミニマル・高速

の2種類がある

この辺の話は、僕の旧ブログ にもいろいろ書いているのでどうぞー

DeNAではフルスタック・MVCを選択

GoにおけるフルスタックなWAF

  • Beego:採用!
  • Revel:開発が止まってきている
  • Iris:プロジェクトの運用がうまくいっていないようだった

Beego

  • フルスタックのMVCフレームワーク
  • ORMまでついてる
  • セッション管理、ロガー、キャッシュなどのライブラリがいろいろついてるけど、全てモジュール化されていて、部分的に他のライブラリを使うことができる
  • Railsライクなフレームワーク
    • Railsのbefore/after_actionに相当するものもある(Prepare(), Finish())

ライブラリ

使用ライブラリはこちら

こういうの教えてくれるのめっちゃ嬉しい

  • ORM:GORM
  • ロガー:logrus
  • PDF生成:gopdf → 日本語もきれいにでるので最高にクール
  • 画像生成:gg
  • バーコード生成:Barcode

2. WebシステムのパフォーマンスとGo

(写真撮り忘れた…)

登壇者:(@karupanerura) ゲーム・エンターテインメント事業本部ゲーム事業部Publish統括部共通基盤部アライアンスシステムグループ

スライド

Webシステムにおけるパフォーマンスとは

たくさんリクエスト処理できる かつ リソース消費が少ないのが
システム全体で見たときの理想的なパフォーマンス

パフォーマンスチューニングのいろいろ

詳しいチューニング方法はこちら

この中で初めて知ったものをピックアップ↓

◎ Server Sent Events

  • HTTPコネクションを持続させる
  • WebSocketより扱いが簡単らしい

バファリングの諸注意

結局リソースを消費していることに違わないので、メモリ管理はちゃんとしないといけない

Q&A

Q. sync.Pool でメモリ効率は良いがメモリは消費していくとは?(該当スライドページ

A. Poolが居続けるからメモリ消費するよって話


Q. SetMaxOpenConnsの数ってどうやって決めるのがいい?

A. DBへのコネクションがどれくらいかとかを可視化して、そのデータに基づいて大きすぎず、小さすぎずの数を探していく(最終的には手探り)


Q. バッファリングの使い所

A. バッファリングよりシャーディングで対応できることが多い
シャーディングで対応した場合、アプリケーション(実装)がシンプルになる

最近の投稿

About

東京で働くソフトウェアエンジニアです。バックエンドがメインですが、フロントエンドやインフラもさわっています。