Go

サービスのパフォーマンステストがうまくいかないときに確認すべきポイント

この記事は、CYBOZU SUMMER BLOG FES '24 (クラウド基盤 Stage) DAY 14 の記事です。 クラウド基盤本部 Cloud Platform 部の新井です。 Cloud Platform 部では現在、現行クラウド基盤上で動作している製品を、Kubernetes ベースの新基盤に移行させるための様…

Go でマルチスレッドプログラミングする際に最低限知っておくべきこと

Go

この記事は、CYBOZU SUMMER BLOG FES '24 (クラウド基盤 Stage) DAY 10 の記事です。 こんにちは。クラウド基盤本部の野島です。Go は goroutine やチャネルなどの仕組みが備わっており、簡単にマルチスレッドなプログラムを書くことができる言語だと言われ…

ネットワークコネクションの切断と Go の HTTP/2 クライアントのタイムアウト

Go

こんにちは、クラウド基盤本部の向井です。 幸いにも cybozu.com を運用しているデータセンター内のネットワークは(担当チームの尽力により)安定していますが、ネットワークコネクションは常に切断されるリスクがあることを念頭においておく必要があります…

構造化ログと実装 -Goのslogによる実践-

Go

この記事は、CYBOZU SUMMER BLOG FES '24 (クラウド基盤本部 Stage) DAY 4の記事です。 クラウド基盤本部Cloud Platform部の pddg です。cybozu.comのインフラ基盤移行まだまだがんばっています。 今回の記事は、社内向けに書いていた「構造化ログとは何か・…

23新卒エンジニアがチーム開発研修で学んだこと

こんにちは! 2023年新卒エンジニアの伴野・谷・和渕です。 サイボウズでは、2023年エンジニア新人研修の集大成として、チームに分かれてソフトウェア開発を行う実践演習が行われました。この記事では、各チームがどんな成果物を作成したのかを、チームごと…

今日から分散トレーシングに対応しないといけなくなった人のための opentelemetry-go 入門

Go

こんにちは。SRE/データストアチーム の飯塚です。 私たちのチームではデータベースを代理で操作したり情報を取得したりするサービスをいくつか作り、それをプロダクトチームが利用できるように gRPC 経由で提供しています。ところで、ある日突然「分散トレ…

protolintの自作pluginによるprotoファイルのレビュー負荷軽減のための取り組み

こんにちは。cybozu.com Cloud Platformチームの pddg です。Cloud Platformチームでは現在、精力的に cybozu.com のインフラ基盤の移行に取り組んでいます*1。その取り組みの一環として、gRPCを用いたスキーマファーストな開発を推進しています。 今回はス…

サイボウズサマーインターン2021 報告 〜 Kubernetes基盤開発コース

こんにちは、Necoチームの鈴木、石井、そしてストレージチームのsatです。 サイボウズは毎年サマーインターンシップを開催しています。去年に続き、今年もCOVID-19の影響でフルリモート開催でした。 インターンには様々なコースがありますが、本記事ではその…

Goの静的解析ツールをgolintからstaticcheckに移行した話

こんにちは、@ueokandeです。 つい先日Go 1.16がリリースされましたね。 サイボウズではGoで書かれたプロダクトやツールなどが数多く存在しており、[GitHubで公開][cybozu-go]しているものも多数あります。 自分の所属する[Yakumoチーム][yakumo]でも、Kuber…

複雑怪奇な nginx を Go と Docker でユニットテストする

全国の nginx 職人のみなさま、こんにちは。野島(@nojima)です。 私の所属するYakumoプロジェクトでは、nginx を Go と Docker によってユニットテスト1しています。 手元で簡単に実行でき、ブランチへのpushのたびにCIでテストされるので、非常に便利です。…

テナントがArgoCD Applicationを任意に作れるようにする

こんにちは Necoの@dulltzです。 皆さんはマルチテナントでGitOpsするためにどのような構成をとっていますか? 我々はArgoCDを利用しています。 以前、@zoetroからArgoCDについての紹介がありました。 blog.cybozu.io 上の記事でもテナント*1に対しArgoCDを…

Go 製ソフトウェアでメモリ使用量の多い関数を特定する

みなさんこんにちは.SRE チームの内田(@uchan_nos)です. この記事では Go 製ソフトウェアのどの関数がどれだけメモリを消費しているかを調べる方法を説明します. Go 製ソフトウェアのヒープメモリの消費量を調べる方法はたくさん解説されているものの,…

分散システムの耐障害性テストの取り組み

こんにちは、Necoチームの池添(@zoetro)です。 サイボウズが提供するクラウドサービスcybozu.comでは、アーキテクチャを刷新すべく「Neco」というプロジェクトを実施しています。 そのプロジェクトでは、サーバのライフサイクルを管理するsabakanや、Kuber…

Go言語向けFailure Injectionツール: gofail

こんにちは、Necoチームの池添(@zoetro)です。 gofailは、etcdの開発チームがつくったFailure Injectionのためのツールです。 Go言語で書かれたプログラム中に故意にエラーを発生させるポイント(failpoint)を埋め込み、任意のタイミングでプログラムの挙動…

さようなら ImageMagick

こんにちは、アプリケーション基盤チームの青木(@a_o_k_i_n_g)です。 一般的な Web アプリケーションがそうであるように、サイボウズのグループウェアにも画像をサムネイルで表示する機能があります。サイボウズでは日々数万件やそれ以上のサムネイルを生成…

Go でいい感じのコマンドを作れるツールキットの紹介

SRE の @ymmt2005 です。最近は systemd が好物です。 今回は GitHub でサイボウズが公開している Go 言語のプロジェクト群、特にいい感じのコマンドを作れる github.com/cybozu-go/cmd について紹介します。 SRE チームでは最近 Go でツールを開発する機会…

アーティファクトの管理について、あるいは go-apt-cacher / go-apt-mirror の紹介

誰も本名で呼んでくれないので社内でもハンドルで通そうと ymmt と呼ぶよう社内に本部長命令を出したお願いしている @ymmt2005 です。 今回はサイボウズ社内でどのようにアーティファクトを管理しているか紹介します。アーティファクトというのはソフトウェ…

NAT をやめて、透過 SOCKS プロキシを導入した

以下の記事内容について、奥一穂氏(@kazuho)より、「connectのエラーコードが信頼できなくなるといった欠点もあるのに透過 SOCKS プロキシが汎用的に良いように読めてしまう」というご指摘をいただきました。確かに、下記内容は当社が抱えていた複数の課題…