kaakaa Blog

この世は極楽 空にはとんぼ

builderscon2018 - 2日目

概要

まとめ

  • デザイナーとの協働の話では相手方の思考を想像できるようになること。Content Model ≒ DDDというのは面白かったし、こういう同じ認識での言葉の違いというのには敏感にならなきゃいけない。難しい。
  • サイボウズさんの話では、会社内でも誰がどこまで知っているかというのはなかなか想像できないものなので、会社としてこういうポリシーを公開できるのは外から見てもすごいけど、中の人から見ても素晴らしいことのように思う。
  • Nomadの話ではk8sがLong Running Jobに特化しているという視点に目から鱗。CIとは確かにユースケースが違うのかも(今は改善されてるかもしれないけど)。Nomad頑張れ。

  • 昨日に引き続き、会場内飲み物禁止は辛い...
  • 1コマ目は自宅の水道検査で参加できず...面白そうなの揃ってただけに非常に残念...

デザイナーとうまく協働する方法

  • @yhassy - フリーランスデザイナー
  • UX: 需要・ニーズが増えている。これからも増える予想。
  • デザインは重要
    • デザインとはどこまで?
    • 重要とは誰にとって?
    • => 認識の齟齬
  • 各々のコミュニティに籠って閉じこもってしまう
    • => 完成間近で最終的に何のために作っていたのか分からなくなる
  • 問題
    • エコーチャンバー化に気づいていない
    • 当たり前という先入観 (周りとの認識の乖離)
    • 察して欲しいという受け身の態度
  • 同業者に伝えるのは簡単。コミュニケーションの共通のパスが多くある。
  • 言語化/明文化
  • 例: Content Model ≒ DDD
    • 同じ概念が分野によって言葉が変わる
  • センスという言葉で言語化を放棄する傾向は無くしていかなきゃいけない
  • やるべきこと
  • 日常使う言葉の違いに目を向ける。ガイドラインを作る。
  • ニュアンスの共有。"良い" とは何か。
  • マズローの5大欲求
  • 価値に基づく評価

    • 課題を解決しているか
    • ユーザーへ提供する価値は
    • プロジェクトメンバーが納得する施策
  • Q: PMとデザイナの役割分担が難しい。キックオフでどこまで伝えるべきか。伝えすぎるとデザイナが釣られてしまう。

    • A: デザイナが会社のビジョンをどれだけ言語化できるか、などデザイナのベースを知ることが重要。
  • Q: 中途入社の人などとの価値観の共有はどうすれば良いか。メルカリ・バリューの人。
    • A: チームの価値観を明文化してるか。なぜここにいるかを定義できているか。相手に伝えるかどうかというより、自分たちがちゃんと明文化できているかを見直すところから。

業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠

  • サイボウズ・内田さん @uchan_nos
  • OSSが無いと生きていけない
  • OSSの原則 = 問題があれば自己解決
  • 業務時間のパッチは..
    • 社外公開して良い?
    • 誰に許可を取れば良い?
    • 何名義で公開?
    • CLAの署名は..?
    • => あなたの会社で決まってますか?
    • => モチベーションが低下するかも
  • 業務で使っている趣味OSSに対するパッチは?
    • 業務時間を趣味OSSに使って良い?
    • パッチの著作権は誰のもの?
    • 会社のコードを混ぜたく無い
  • OSSポリシー
  • OSS推進室

    • 2018/08設立
  • Q: CLA

    • A: 最初は法務に確認。二人目からはリストに載っているからそれで確認する
  • Q: 労務管理上気をつけていることは?
    • 社員の裁量。
  • Q:
    • A: サイボウズAPIを叩くようなものは、個人のものであることをディスクレームする

1日70万ビルド: DockerとNomadが支えるCI/CDプラットフォーム

  • k8sが世界制覇しそう。でも、Circle CI 2.0ではNomadを使っている。
  • Nomad
    • Client/Server
    • スケジューラ
    • C-S間の通信はConsul
  • LXC + 自前ツールの限界(CircleCI)
    • Clojureで作ったスケジューラ捨てたい
    • PostgreSQLをqueueとして使用...
    • Docker 1.10からパッチ当てるのが無理になってきたので、アーキテクチャ刷新を決意
  • Nomad選んだ理由
    • Batch Jobにフォーカスしていた
      • 1ビルド = 1 Nomad Job
    • k8sはサービス管理にフォーカス
    • 他のサービスを選ばなかった理由
      • k8s: Long running jobに特化
      • Mesos: 情報少ない
      • Docker Swarm: 出たばかり
  • Circle CI 2.0が高速になった話
    • タスク内のステップを、順番にLXCにsshでつないで同期的に実行していた
    • 1.0の頃はアーキテクチャ的にSSHでホストにつなぎ、それが落ちると並列で動いているジョブが全てfailになっていた
      • スケールするほどジョブのエラー率が上がる
    • 2.0ではsshでなくgRPCに置き換え、並列にタスクを実行できるようになった
  • Nomadを使ってみてわかったこと
    • Single Binaryで運用しやすい。スケールしやすい。開発環境でもテストしやすい。
    • βだけど安定してる。たまにクラスタが壊れる。
    • 効率よいスケジューリングでAWS使用量も減った。
    • あまり使われてない
  • 運用ノウハウ
    • Consul AgentとNomad Clientが入ったマシンを起動するだけでスケールアップする
      • ホストマシンの情報などは書かなくてもよい。簡単!
    • スケールダウン。Nomad Clientを落とすだけ。簡単。
      • ただ、クライアントがDrainモードになりジョブを他のNodeに移そうとする。Migrationしないで欲しい...
      • 設定ないのでパッチ当てて運用中
    • GCのせいでクラスタが壊れる...
      • 5分ごとにserver/clientで自動でGC走る
      • 負荷高くてジョブ実行ができなくなる...
      • Nomad ServerにログインしてRaftトランザクションを削除して回避(workaround)
      • ジョブ終わりにCGを起動するようにして問題は怒らなくなった
    • Nomad Server on k8s
  • Circle CIではHashicorpプロダクトをほとんど使っている
  • Hashicorp日本法人設立

  • Q: Drainモードの対処について、パッチはアップストレームに送らない?
    • A: まだマージされてないみたい。プロダクトでは0.6を使っており、v0.8にあげれば治るかも。プロダクトの問題でv0.8に上げられてない。
  • Q: クラスタ環境でのロギングはどうしてる?
    • A: 特に対策はしてない。Datadog, Splunkを使って管理しているぐらい。CircleCI2.0 Enterpriseだと顧客が自分でロギングをする必要があり、それが問題だと認識されている。
  • Q: k8sをサービス運用に使ってるが、全体的にk8sに移行しない理由は?
    • A: 移行も可能ではあると思う。バッチ処理についてk8sが進化していれば考えるかも。ただ、Nomadの運用容易性を捨てたくないという気持ちもある。
  • Q: Nomadがβ版であることに関して懸念はないのか?
    • A: 懸念はあった。他のツールとの比較で使えるのがNomadぐらいしかなかった。使ってみて安定していたので選択した。今はNomadが殺されることが心配。殺されないためにもユーザー増やしたい。
  • Q: Circle CI EnterpriseではNomadのコンフィグをどのように配布してる?
    • A: インストール方法はTerraformで一発環境構築 or shellでインストールしていく。shellスクリプトのヒアドキュメントで簡単にできるぐらいシンプル。
  • Q: PostgreSQLをキューに使っていたとは?
    • A: 1レコードにビルドのレコードを格納し、プランに応じてレコード実行可能かを判定して、取り出して実行していた(?)