ブックマーク / blog.cybozu.io (32)

  • Kubernetesのネットワークプラグインを自作した話 - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは、インフラ刷新プロジェクトNeco」の@ueokandeです。 日はインフラ刷新プロジェクトで開発したKubernetesネットワークプラグインについてお話します。 Necoでは現在のアーキテクチャを刷新して、機材管理やアプリケーションのデプロイを簡単にするために、オンプレミス環境でKuberneteを運用できる仕組みづくりに取り組んでます。 その成果物の1つである、Kubernetesネットワークプラグイン「Coil」についてご紹介します。 github.com Kubernetesは管理者がプラグインを選択・作成することで、実行環境や要件に合わせて自由にカスタマイズできます。 ネットワークプラグインもコンテナの実行環境に合わせてカスタマイズ可能です。 サイボウズが自社データセンターでKubernetesを運用するために、Kubernetesネットワークプラグインを作成しま

    Kubernetesのネットワークプラグインを自作した話 - Cybozu Inside Out | サイボウズエンジニアのブログ
    amy385
    amy385 2018/12/20
  • KubeCon + CloudNativeCon North America 2018 現地レポート 3日目 - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは、Necoプロジェクトのsatです。カンファレンス最終日、3日目のレポートです。 0日目から2日目のレポートはこちらです。 blog.cybozu.io blog.cybozu.io blog.cybozu.io 2日目までは執筆者各人がその日に参加したセッションの中からいくつか面白かったものを選んで書くというスタイルでしたが、最終日の今日は少し毛色を変えて1日目と3日目に合計4つのセッションがあったRookというソフトウェアを集中的に紹介したいと思います。Rookとは分散ストレージソフトウェアの一つであるCephをkubernetesによって管理するためのオーケストレーターです。 Cephについてご存じないかたは、記事を見る前にCephの概要について述べた以下の記事をごらんください。 blog.cybozu.io Intro: Rook - Jared Watts, Upbo

    KubeCon + CloudNativeCon North America 2018 現地レポート 3日目 - Cybozu Inside Out | サイボウズエンジニアのブログ
    amy385
    amy385 2018/12/14
  • 分散ストレージソフトウェアCephとは - Cybozu Inside Out | サイボウズエンジニアのブログ

    はじめに こんにちは、Necoプロジェクトのsatです。Necoプロジェクトではサイボウズのクラウド基盤であるcybozu.comのストレージに関する様々な要件を満たすために分散ストレージソフトウェアCephを導入する予定です。記事ではCephとは何者かについて紹介いたします。Cephが持っている機能は膨大な数にのぼるため、ここでは一部の機能に絞って紹介したいと思います。 概要 Cephはオープンソースの分散ストレージソフトウェアです。2004年以前からカリフォルニア大学で開発され、2006年にオープンソース化されました。現在ではRed Hat社をはじめとするさまざまな企業、あるいは個人によって活発に開発されています。Cephは例えばOpenStack のストレージ機能(Cinder, Swift, やGlanceなど)の選択肢の1つとして使われています。 Cephは複数台のマシン上のス

    分散ストレージソフトウェアCephとは - Cybozu Inside Out | サイボウズエンジニアのブログ
    amy385
    amy385 2018/12/13
  • KubeCon + CloudNativeCon North America 2018 現地レポート 1日目 - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは、Necoプロジェクトの mitz です。 続いて1日目のレポートになります。Co-Located Eventが終了し、いよいよイベント番を迎えました。前日のレポートはこちら blog.cybozu.io 私も昨日は Kubesec 2018 Enterprise SummitというKubernetesにおけるセキュリティに絞ったイベントに参加していました。 KubeCon + CloudNativeConはどこの開催でもCo-Located Eventがありますので、準備運動という意味でも0日目から参加する ことをおすすめします! 最終的には CNCF channel にほぼ全てのセッションが公開されるので乞うご期待です。 www.youtube.com イベント全体の雰囲気や、数多くのセッションの中で印象に残った発表などを簡単に紹介していきます。 Keynote Keyno

    KubeCon + CloudNativeCon North America 2018 現地レポート 1日目 - Cybozu Inside Out | サイボウズエンジニアのブログ
    amy385
    amy385 2018/12/13
  • データセンター内で使う BGP の基礎知識 - Cybozu Inside Out | サイボウズエンジニアのブログ

    Neco プロジェクトの ymmt です。記事では Neco のネットワークの実装を理解するために必要となる範囲で Border Gateway Protocol (BGP)の基礎知識を解説します。 BGP はインターネット全域の経路制御に使われているプロトコルで、非常に複雑なルーティング要件を実装可能ですが、記事では詳説しません。対象読者は 「BGP? 知ってる知ってる、インターネットのあれでしょ!」 という程度のソフトウェアエンジニアです。 以下、社内向けの解説文書からコピペしているので文体が変わります。悪しからずご了承ください。 ルーティングプロトコル BGP の概念 BGP の特徴 iBGP の動作 データセンター内での BGP 利用 まとめ ルーティングプロトコル ルーティングプロトコルとは、簡単に言えば目的の IPv4/IPv6 アドレスへパケットを送り届けるのにどのような

    データセンター内で使う BGP の基礎知識 - Cybozu Inside Out | サイボウズエンジニアのブログ
    amy385
    amy385 2018/11/01
  • 分散ユーザー管理システム「etcdpasswd」の紹介 - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは、アプリ基盤チーム兼Necoプロジェクト所属の @ueokande です。 日はNecoで開発しているUNIXユーザーの管理ツールである「etcdpasswd」を紹介します。 github.com etcdpasswdは、etcdをバックエンドに持つ分散型のユーザー管理システムです。 etcdpasswdは自律型の分散システムで、一時的にホストがダウンしても、次回起動時にetcdのユーザーを参照して同期します。 etcdpasswdはLDAPのようなNSS (Name Service Switch) が外部サービスに問い合わせるのではなく、etcdpasswdが各ホストにある /etc/passwd を更新します。 なぜetcdpasswdなのか 現在のcybozu.comデータセンターでは、各ホストのユーザー追加・更新は、MySQLでユーザー管理されており、管理者が適用したタ

    分散ユーザー管理システム「etcdpasswd」の紹介 - Cybozu Inside Out | サイボウズエンジニアのブログ
    amy385
    amy385 2018/10/05
  • 業務利用しているOSSの休日個人開発は業務か? - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは、OSS推進室長の岡田(@y_okady)です。 先日公開したOSSポリシーについて、たくさんのご意見をいただきました。ありがとうございます! その中の一つに、労務管理上の懸念についてのご指摘がありました。上長からの指示がなくても、業務利用しているOSSの休日個人開発は業務にあたるのではないか、というものです。 僕としては、OSSガイドラインの導入にあたっては社員が無意識の時間外労働をしないよう会社側に留意してほしい、そのことは会社のリスク管理と、社会全体の労働者保護につながることであるし、労務管理について理解することは社員人にとっても有益であろう、というあたりかしら— Kazuho Oku (@kazuho) 2018年9月11日 これについて、社員のオープンソース活動を支援する役割を担う「OSS推進室(OSPO)」で話し合って見解をまとめたのでご紹介したいと思います。 技術

    業務利用しているOSSの休日個人開発は業務か? - Cybozu Inside Out | サイボウズエンジニアのブログ
    amy385
    amy385 2018/09/13
  • サイボウズのオープンソースソフトウェアポリシーを紹介します - Cybozu Inside Out | サイボウズエンジニアのブログ

    OSS準備室長を務めていた ymmt (@ymmt2005) です。 過去形なのは、OSS準備室は 7 月末で解散したためです。 OSS準備室では、サイボウズ社員がオープンソースソフトウェアに関する活動を行いやすくすることを主な目的として、会社の基方針を「OSSポリシー」という文書にまとめる作業を行いました。 完成したOSSポリシーはCC0 (いかなる権利も保有しない、いわゆるパブリックドメイン)で広く他の企業の方々にも活用いただけるよう以下で公開しました。記事ではその内容と、サイボウズにおけるオープンソース活動のこれまでとこれからを紹介いたします。 OSSポリシー(日語) (GitHub) OSS Policy (English) (GitHub) オープンソースについて オープンソースソフトウェア(Open Source Software, OSS)とは、オープンソースの定義に基

    サイボウズのオープンソースソフトウェアポリシーを紹介します - Cybozu Inside Out | サイボウズエンジニアのブログ
    amy385
    amy385 2018/09/08
  • ASTを活用してコードの自動修正に挑戦してみよう - Cybozu Inside Out | サイボウズエンジニアのブログ

    どうも!アプリケーション基盤チームの@yokotaso です。 単純だけど、大量のソースコードの修正が必要な場合、みなさんはどうやって修正していますか? Junit4からJunit5の移行調査をしていたときに、例外を検証する@Testの expected がJunit5では消えていることがわかりました。 社内のコードを調べたところ、修正が必要な箇所が1000箇所くらいということがわかったので、ASTを活用した自動修正ツールを作ってみました。 今回は自動修正ツールを使った大量修正の話を紹介します。 ASTとはなにか? ASTとはプログラミング言語のソースコードの構造をツリーとして表現したもです。 今回はJavaの話なので、javaparserを使って話していきます。 例えば次のようなテストコードがあったとします。 @Test(expected = IllegalArgumentExcepti

    ASTを活用してコードの自動修正に挑戦してみよう - Cybozu Inside Out | サイボウズエンジニアのブログ
    amy385
    amy385 2018/09/07
  • 分散システムの耐障害性テストの取り組み - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは、Necoチームの池添(@zoetro)です。 サイボウズが提供するクラウドサービスcybozu.comでは、アーキテクチャを刷新すべく「Neco」というプロジェクトを実施しています。 そのプロジェクトでは、サーバのライフサイクルを管理するsabakanや、Kubernetesクラスタを構築するためのCKE(Cybozu Kubernetes Engine)などの分散システムを開発しています。 安定してサービスを提供するためには、このようなインフラを支える分散システムの耐障害性が重要になってきます。 記事では、我々のチームが分散システムに対してどのような耐障害性テストを実施しているのかを紹介します。 耐障害性を高めるために 機材故障 サイボウズの管理するデータセンターでは1,000台規模のサーバを扱っており、日常的にハードウェアの故障が発生します。 例えば、以下のような機材故障

    分散システムの耐障害性テストの取り組み - Cybozu Inside Out | サイボウズエンジニアのブログ
    amy385
    amy385 2018/09/06
  • Go言語向けFailure Injectionツール: gofail - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは、Necoチームの池添(@zoetro)です。 gofailは、etcdの開発チームがつくったFailure Injectionのためのツールです。 Go言語で書かれたプログラム中に故意にエラーを発生させるポイント(failpoint)を埋め込み、任意のタイミングでプログラムの挙動を変えることができます。 公式ドキュメントに記載されていない項目が多々あるので、詳しい使い方を紹介したいと思います。 なお、記事は2018年8月時点のソースコードを対象に解説しています。 gofailのインストール gofail をインストールします。 $ go get -u github.com/etcd-io/gofail/... failpointの埋め込み プログラム中にfailpointを埋め込むためには、Go言語のプログラム中に gofail というキーワードから始まるコメントを記述します

    Go言語向けFailure Injectionツール: gofail - Cybozu Inside Out | サイボウズエンジニアのブログ
    amy385
    amy385 2018/09/04
  • セキュリティキャンプ全国大会 2018 集中開発コース 「Linux開発者を目指そう! 」テーマのレポート - Cybozu Inside Out | サイボウズエンジニアのブログ

    はじめに こんにちはNecoチームのsatです。日はNecoチームの話ではなく、私が先週講師として参加した「セキュリティキャンプ全国大会 2018」というイベントの参加報告をいたします。このイベントの中でもとくに私が受け持った集中開発コース「Linux開発者を目指そう!」テーマについて述べます。 セキュリティキャンプ全国大会とは、お盆の時期に全国の学生が一か所に集まって、5日間その道のプロと一緒にセキュリティ技術について学ぶイベントです。イベントそのものについての詳細は以下リンク先をご覧ください。 www.ipa.go.jp 「Linux開発者を目指そう!」コースの概要 「Linux開発者を目指そう!」コースは受講者が実際にLinuxカーネルの部品を開発、追加することによってLinuxカーネルの開発についての理解を深めてもらうためのものです*1。今回は2人の学生がこのテーマに取り組みまし

    セキュリティキャンプ全国大会 2018 集中開発コース 「Linux開発者を目指そう! 」テーマのレポート - Cybozu Inside Out | サイボウズエンジニアのブログ
    amy385
    amy385 2018/08/22
  • さようなら ImageMagick - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは、アプリケーション基盤チームの青木(@a_o_k_i_n_g)です。 一般的な Web アプリケーションがそうであるように、サイボウズのグループウェアにも画像をサムネイルで表示する機能があります。サイボウズでは日々数万件やそれ以上のサムネイルを生成しており、それらは全て ImageMagick によって生成されていました。 そこで得た知見はこちらの記事で公開されています。 blog.cybozu.io しかし現在、サイボウズから ImageMagick は消え去りました。その理由と、我々が取った代替手段について紹介します。 ImageMagick を外した理由 言うまでもなく ImageMagick は優秀なツールで、画像変換に関する何らかのサービスやツールを作る場合には採用の第一候補になることでしょう。あらゆる画像フォーマットに対応し、出力画像をきめ細かに制御できる膨大なオプシ

    さようなら ImageMagick - Cybozu Inside Out | サイボウズエンジニアのブログ
    amy385
    amy385 2018/08/21
  • サイボウズ版 MySQL パフォーマンスチューニングとその結果 - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは、アプリケーション基盤チームの青木(@a_o_k_i_n_g)です。先日親知らずを抜歯した時、つらすぎたので MySQLJOIN のことを考えて心の平静を保っていました。 サイボウズの製品のひとつである kintone はニーズに応じて自由に業務アプリのようなものを手軽に作ることができ、データの検索条件やソート条件も細かくカスタマイズ可能で、様々なレベルでのアクセス権も設定可能という非常に便利なツールです。 しかしその機能を支える裏側では複雑なクエリが発行され、MySQL に多大な負荷をかけています。サイボウズのクラウドには数十テラバイトに登る MySQL データがあり、数千万件オーダーのテーブルを複数 JOIN するクエリが毎秒のように実行されるという、エンジニア魂が滾る環境です。 現在サイボウズでは性能改善に力を入れており、僕もその業務に従事しています。例えば2018年

    サイボウズ版 MySQL パフォーマンスチューニングとその結果 - Cybozu Inside Out | サイボウズエンジニアのブログ
    amy385
    amy385 2018/08/08
  • QAがテスト設計プロセスの見える化に取り組んだ話 - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは。東京品質保証部 QAの矢引です。 今回は、今年の上半期に行った、試験設計プロセスの見える化の活動について紹介します。 製品チーム横断でQAのカイゼンを支援するチーム「SPITz」 サイボウズでは、製品ごとに開発チームが分かれており、QAメンバーがそれぞれの開発チームで活動し、担当製品のテストプロジェクト全般を担当しています。 QAの仕事内容についてはこちらの記事でもご紹介していますのでぜひご覧ください。 blog.cybozu.io また、上記の活動とは別に、品質保証部内のQA全般のカイゼンを支援するチーム「SPITz」( Software Process Improvement in Test の略)があり、有志のメンバーが活動しています。 これまで、探索的テストの情報収集やTPI NEXTの情報収集・試験的導入などを行いました。 背景 サイボウズではリリースに関する品質の基

    QAがテスト設計プロセスの見える化に取り組んだ話 - Cybozu Inside Out | サイボウズエンジニアのブログ
    amy385
    amy385 2018/08/06
  • Necoのネットワーク - アーキテクチャと設計編 - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは。「Neco」の @ueokande です。 サイボウズでは、cybozu.comのアーキテクチャ刷新プロジェクトNeco」を実施してます。 その思いについては以下の記事からどうぞ。 アーキテクチャ刷新プロジェクトNeco」の紹介 運用部長を退任して Neco プロジェクトに専念します 今回は、Necoにおけるネットワーク設計についてお話します。 ネットワークの方針 ネットワークの耐障害性は必須の条件です。 Necoでも同様で、ネットワーク機材の単一障害点が無いネットワーク構成にする必要があります。 具体的には以下のような要件です。 ホストマシンのNICを二重化して、片方のNICが故障しても通信が行えること ネットワークスイッチを冗長化して、スイッチが故障してもスイッチ下のホストが停止しないこと スイッチを冗長化する方法は、以下のような選択肢があります。 STP (Span

    Necoのネットワーク - アーキテクチャと設計編 - Cybozu Inside Out | サイボウズエンジニアのブログ
    amy385
    amy385 2018/07/05
  • ファイルシステムサイズの拡張時にデータベースアクセスがスローダウンする問題の解決 - Cybozu Inside Out | サイボウズエンジニアのブログ

    はじめに こんにちは、技術顧問のsatです。 サイボウズでは、ファイルシステムサイズ拡張時にデータベースアクセスがスローダウンするという問題に長年悩まされてきました。記事では運用部の藤田と深谷がこの問題を解決した流れについて報告いたします。問題を解決するために2人はLinuxカーネルを修正しました。修正は社内に閉じたものではなく、執筆当時の最新 Linuxカーネルであるv4.17にマージされています。 問題 以下の操作の後にデータベースへのアクセスが一時的にスローダウンする ブロックデバイスのサイズを拡張する 上記デバイス上にあるファイルシステムのサイズを拡張する 原因 linuxカーネルはブロックデバイスのサイズ変更(縮小および拡張)時に、当該デバイス上にあるファイルシステムのページキャッシュ(後述)を無効化する*1 解決方法 ブロックデバイスのサイズ拡張時にはページキャッシュを無効

    ファイルシステムサイズの拡張時にデータベースアクセスがスローダウンする問題の解決 - Cybozu Inside Out | サイボウズエンジニアのブログ
    amy385
    amy385 2018/06/28
  • CoreOS Container Linuxにおいてリアルタイムプロセスを実行できない問題 - Cybozu Inside Out | サイボウズエンジニアのブログ

    はじめに こんにちは、技術顧問の武内です。 記事はサイボウズの次期インフラ開発チーム(Necoチーム)が遭遇した、CoreOS Container Linux (以降 CoreOS)においてリアルタイムプロセスを実行できないという問題について、次のようなことを記載したものです。 どういう問題なのか どのように根原因を突き止めたのか 今後どのように対処するのか 問題要旨 来なら成功するはずのroot権限におけるリアルタイムプロセスの実行が失敗する 根原因 CoreOSではカーネルのリアルタイムグループスケジューリングという機能が有効になっている 同機能が有効な場合、cpu cgroup配下のプロセスはデフォルトではリアルタイムプロセスを実行できない systemd環境下で生成されたプロセスは何らかのcpu cgroupに所属させられる 対処方法 リアルタイムプロセスが属するcpu c

    CoreOS Container Linuxにおいてリアルタイムプロセスを実行できない問題 - Cybozu Inside Out | サイボウズエンジニアのブログ
    amy385
    amy385 2018/06/22
  • ざっくりわかった気になるモダンGC入門 - Cybozu Inside Out | サイボウズエンジニアのブログ

    どうも!@yokotaso です! 2018/05/26のJJUG CCC 2018で「ざっくりわかった気になるモダンGC入門」というタイトルで登壇させていただきました。 現在開発中の新しいGCアルゴリズムをざっくり理解することをテーマに発表しました。 発表練習用に作ったカンペの内容を公開します。ブックマークコメントでもツイートでも感想を書いていただけると喜びます! 発表資料は、speakerdeck にあります。はじまり〜はじまり〜 はじめに 今日はざっくりわかった気になるモダンGC入門というお話をさせていただきます。 現在開発中のGCアルゴリズムの全体像を理解してもらうことを目的としたセッションです。よろしくおねがいします。 さて今日のアジェンダですが、まず簡単にこれまでのGCを復習した後に新しいGCが必要になってきた背景について少し話します。 次にShenandoahGC、ZGC、E

    ざっくりわかった気になるモダンGC入門 - Cybozu Inside Out | サイボウズエンジニアのブログ
    amy385
    amy385 2018/05/30
  • サイボウズのログ基盤 2018年版 - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは。アプリケーション基盤チームの @ueokande です。 今日は、サイボウズの新しくなったログ基盤についてお話しします。 サイボウズのログ基盤の進化 リプレイス前のログ基盤 サイボウズのログ基盤はサービスの成長に合わせて、常に進化し続けてます。 そんななか2017年の夏に大きなリプレイス作業がありました。 サイボウズのサービスを支えるログ基盤 from Shin'ya Ueoka 以前のログ基盤は、ログを収集するホストがあり、各ホストからログを収集してました。 しかしログの転送システムが単一障害点であったり、スケーラビリティに欠けるのでサービスの成長に追いつかず、性能的にも限界に達してました。 また以前のログ基盤では、ログの解析がしにくく、ログはあるけどビジネスに役立てにくい状況でした。 そのため今後のサービスの成長や、より安定したログ基盤を運用できるように、ゼロから刷新するこ

    サイボウズのログ基盤 2018年版 - Cybozu Inside Out | サイボウズエンジニアのブログ
    amy385
    amy385 2018/03/20