タグ

ブックマーク / blog.mmmcorp.co.jp (2)

  • goroutineの最適な数について考えた|デロイト トーマツ ウェブサービス株式会社(DWS)公式ブログ

    株式会社MMMの柳沼と申します。好きなリージョンは東京リージョンです。 弊社ではGo言語をプロダクションで使っています。 Go言語の特徴のひとつに、 goroutine を使って並列処理を容易に書ける、ということがあります。しかし、並列処理って同時にいくつ走らせればいいのか?について考えました。 まだ試行錯誤している最中で、内容に間違い・もっとこうするといいよ!などがあれば教えていただけると助かります。m(_ _)m また、実際goroutineを使った処理を実装するときはsync.WaitGroupを使うことが多いと思うので、記事内でもちょこちょこ使っています。 よく見るやり方 CPU数を使う、というのを割りとよく見ます(たぶん)。 func main() { fmt.Println("Start") loop("A") fmt.Println("Finish") } // ヘビーな処理

    masutaka26
    masutaka26 2018/11/02
    "goroutineの数はついCPUのコア数で制限してしまいますが、処理の内容・CPU・IOを鑑みて、実際に計測しながら最適な数を見つけるのが良いと思います。"
  • AWS Batchで非同期ジョブシステムが簡単に構築出来た話|デロイト トーマツ ウェブサービス株式会社(DWS)公式ブログ

    前田です。 受託開発でAPIGolangで開発中ですが、機能要件の中で時間がかかる処理をさばく必要があり、非同期処理をどう実装しようか検討した結果、AWS Batchを使って実装しようということになりました。 AWSのマネージドサービスで非同期タスクとして実行出来るのは、たとえばAWS LambdaなどがありますがAWS Lambdaと異なる点は、「5分以内という制限がない」「Dockerイメージで実行させるので制限が少ない」というメリットがあります。 今回は特に「処理時間が長くなる場合がり、確実に処理を終了させなければならない」という要件があり、AWS Batchサービスがぴったりだということになりました。 実際にAWS Batchを構築した際、初めての構築ということもありハマった箇所もあったのですが、普通であればジョブインスタンスを立てて、など色々検討しなければいけないことが大幅に削

  • 1