ブックマーク / tech.mirrativ.stream (6)

  • 【Go】time.Time.AddDateの注意点と対策 - Mirrativ Tech Blog

    こんにちは、バックエンドエンジニアの藤井脩紀です。 今回の記事では日付計算に潜む罠についてお話しさせていただきます。 なお今回はGoでの事例をご紹介しますが、原理的には他の言語やライブラリでも同様の事象が発生する可能性があります点にご注意ください。 time.Time.AddDateの注意点 突然ですがここでクイズです。 来月が何月か知りたいので以下のようなコードを書きました。 このコードを実行したのは10月だとします。 結果は何になるでしょう? // AddDateの引数は順に年、月、日でそれらの値を加算したtime.Timeを返してくれます fmt.Printf("%d月\n", time.Now().AddDate(0, 1, 0).Month()) 「え、11月でしょ?」と思う方もいらっしゃるかもしれませんが正確には異なります。 焦らさずに書きますが答えは「11月か12月のどちらか

    【Go】time.Time.AddDateの注意点と対策 - Mirrativ Tech Blog
  • Goのtestingパッケージにコミットした話 - Mirrativ Tech Blog

    Illustrated by egonelbre. The Go Gopher was designed by Renee French. こんにちは、バックエンドエンジニアの藤井脩紀です。 今回はGoにコントリビュートすることができたのでそのお話をさせていただきたいと思います! 概要 早速コミットの内容からですが、並列実行されるテストで環境変数を設定できなくするというものです。 コード的にはtestingパッケージのT.SetenvとT.Parallelを組み合わせて呼び出すとpanicを起こすようにするという変更になります。 (正確にはもとからそういった実装になっていたのですがカバーされていないケースがあったのでその対応をしました) testing: T.Setenv can be called after T.Parallel · Issue #55128 · golang/go ·

    Goのtestingパッケージにコミットした話 - Mirrativ Tech Blog
  • RubyメインでなくてもRubyKaigiから色々学べた話 - Mirrativ Tech Blog

    インフラ・ストリーミングチームの @udzura です。(一ヶ月経ってしまいましたが)9月8日から9月10日まで、三重県でRubyKaigiがありました。 rubykaigi.org 久しぶりのオンサイト会場での開催ということで、大いに盛り上がり、感想ブログなどもたくさん書かれています。 今回は、Rubyをメインで使っていない会社であるミラティブのエンジニアの立場から、RubyKaigiのトークは勉強になるという話をします。 ミラティブの技術スタックとコミュニティについて ところで、以下に、ミラティブのEngineer's Handbookから、技術スタックについての紹介ページを引用します。 エンジニアハンドブックより引用 この通り、実はRubyはアプリケーション開発のメインは使っていないのです*1。 ですが、今回は、後述する通り私がRubyKaigiのCfPに通過したため、「社内外へ積極

    RubyメインでなくてもRubyKaigiから色々学べた話 - Mirrativ Tech Blog
  • Cloud Buildによる内部向けGoバイナリのリリース自動化 - Mirrativ Tech Blog

    インフラ・ストリーミングチームの近藤 (id:udzura) です。 ミラティブのインフラ運用では、監視・自動化などさまざまなツールにGo言語を利用しています。ツールはコマンドラインツールとして提供して、バージョンごとにリリースを作成して各環境にデプロイしています。リリースの作成にはGitHubのRelease機能を利用しています。 今回は、GitHub Releaseの作成をGoogle Cloud Build(以下、単にCloud Build)で自動化したことについて、実装内容と効果を書いていきます。 なぜ Cloud Build を採用したか ミラティブの開発はGitHub Enterprise Cloudを利用しています。対応するCI/CDのサービスとしてはGitHub ActionsやCircleCIなど*1数多くありますが、ミラティブにおいてはGCPの利用箇所が多く、既存GCP

    Cloud Buildによる内部向けGoバイナリのリリース自動化 - Mirrativ Tech Blog
  • 接続が途切れないストリーミングサーバの無停止アップデートを実装してみました - Mirrativ Tech Blog

    こんにちは ハタです。 最近 SO_REUSEADDR / SO_REUSEPORT を使ったストリーミング配信サーバの無停止アップデート(Hot Deploy)を実装してみたので紹介したいなと思います ことの経緯 HTTPサーバによる Hot Deploy の仕組み ストリーミング配信サーバへの応用 SO_REUSEADDR/SO_REUSEPORT を使った実装例 Hot Deploy の組み込み Hot Deploy 実装時に気をつけたこと その後 We are hiring! ことの経緯 ミラティブでは以前から何度か紹介したとおり自前の配信基盤設備を持っています。 配信基盤のミドルウェアも内製であり、機能追加やライブラリの更新などがあるたびにミドルウェアのバージョンアップ作業(メンテナンス)も自社で実施しています ストリーミング配信サーバといっても、何か特別な事はなく一般的なHTT

    接続が途切れないストリーミングサーバの無停止アップデートを実装してみました - Mirrativ Tech Blog
  • ミラティブのサーバサイドをGo + Clean Architectureに再設計した話 - Mirrativ Tech Blog

    こんにちは、テックリードの夏です。 今年4月にCTOからテックリードに肩書が変わり、ガリガリコードを書くようになりました。 背景については、こちらをご覧ください。 www.wantedly.com 普段はプロダクト側の機能開発と、サーバ側の基盤開発を半々ぐらいの割合で仕事しています。 一口にサーバ側の基盤開発といっても定義が曖昧なのですが、基的にはこんな感じのタスクをやっています。 インフラコストの最適化 不正なアクセスからの防御 障害の再発防止 新技術の導入やアーキテクチャの整備 今回はこのうち「新技術の導入やアーキテクチャの整備」の中で、サーバサイドをGo + Clean Architectureで再設計したことについてお話したいと思います。 背景 ミラティブは2015年春頃に開発が始まり、同年8月にサービスがリリースされ、2020年8月で5周年を迎えました。 その過程で組織やプロダ

    ミラティブのサーバサイドをGo + Clean Architectureに再設計した話 - Mirrativ Tech Blog
  • 1