Sansan Builders Box

Sansanのものづくりを支える技術やデザイン、プロダクトマネジメントの情報を発信

re:Invent 2019 に参加したら Chaos Engineering を実践したくなったという話

はじめに

こんにちは。
Sansan事業部プロダクト開発部に所属しておりますインフラ領域のリードエンジニア兼プロダクトマネージャーの岩下です。

先日12月に開催されました re:Invent 2019 に今回も参加させていただきました。
相変わらず圧巻としか言いようのない規模でしたが、前回より15000人ほど増え、65000人ほどの人々が参加されていたと Keynote で発表されていたことを覚えています。

f:id:rriifftt:20200128112158j:plain
Monday Night Live の様子

参加にあたって、以下の2点を個人的なテーマとして設定してみました。

  • 今取り組んでいることは正解なのか答え合わせをする
  • レベルアップのためのインプットを得る

上記を念頭に置きつつ事前にイベントカタログを眺めてみると、 Resiliency という単語が目に付いてしまう自分に気づきます。
昨年発生した AWS の AZ 障害の経験から Chaos Engineering の実現性を模索していたという背景もあり、この手のセッションには必ず参加しようと心に決めたのでした。

結果どうだったかといういうと、表題の通り Chaos Engineering の実践に本気で向き合おうと考えるに至っています。

Chaos Engineering とは

Chaos Engineering とはシステムの一部に偶発的な障害を発生させ、復旧作業を行うことでシステムや組織の不備を洗い出し、システムの信頼性を向上させる取り組みとして知られているように思えます。
Netflix 社が2015年に公開した文書 Principles of Chaos Engineering から広く認知されはじめたものと認識しておりますが、この文書によると Chaos Engineering は以下の様に定義されています。

経験に裏打ちされたシステムベースのアプローチは、分散システムの混沌な状態を大規模に対処し、現実的な条件に耐えるシステムの高い信頼性につながります。 私たちは、制御された検証においてそれを観察することによって、分散システムの動作について学びます。私たちはこれをカオスエンジニアリングと呼んでいます。

以上より、とりあえず破壊しても壊れないシステムを構築しよう!という意味ではなく、学びを得ることに軸足を置いているということがわかります。
本質が何であるのか、そのヒントを自分は re:Invent で得られたように思います。

続きを読む

タイムゾーン対応で振り返る 既存プロダクトのグローバル化

プロダクト開発部 Globalプロダクトグループの天貝です。

私の所属の正式名称は Globalプロダクトグループ ですが、開発部では グローバルチーム と呼ばれています。海外のユーザからのフィードバックをもとに、海外のユーザに今以上に価値を訴求できるようなプロダクトを目指して開発を行っています。外国籍のエンジニアも所属しており、勉強会やコードレビューも英語で行っています。 

今回は、昨年8月にリリースしたタイムゾーン対応を振り返りながら、

  • 今後注意すべきこと
  • 勉強になった議論・判断
  • 苦労したこと
  • 気づいたこと・学んだこと

と、タイムゾーン対応から学んだ既存のプロダクトをグローバル化する難しさや今後意識することを書こうと思います。

Sansanが抱えるグローバル化の課題

Sansanのユーザのうち海外で使ってくださっているユーザの割合はまだまだ少ないです。これは海外のユーザにとって違和感のあるUI/UXであることが要因の一つに挙げられます。
Sansanは『まずは』日本国内ユーザ向けに、と作られたプロダクトのため、UXを改善するためには対応しなければならない課題がたくさんあります。これらに向き合い、改善していくのが今のグローバルチームのミッションです。

タイムゾーン対応とは

以前、海外のユーザからこのようなフィードバックがありました。

  • 自分が指定した時間にリマインドやメールが送られない
  • 画面で表示される時間が現地の時間じゃない

これらの問題はSansan上の日時が日本時間で扱われていることが問題であり、ユーザの環境に合わせて日時を変換する必要があります。この問題を解決するのがタイムゾーン対応プロジェクトです。

f:id:samagai:20200124101106p:plain
Sansanのユーザ情報設定画面で、タイムゾーンが設定できるようになりました。画面やメールに表示される日時やメール送信・リマインド通知時に設定する日時にタイムゾーンが適用されます。

タイムゾーンとは

普段日本で生活をしていてタイムゾーンを意識する機会はほとんどないと思います。まずは、そもそもタイムゾーンってなに?タイムゾーンが設定できるとどんな良いことがあるの?を簡単に説明します。

タイムゾーンとは共通の標準時間を使う地域のことであり、UTC(協定世界時)との時差で表されます。日本の場合は UTC+0900 であり JST と呼ばれます。
また、サマータイムという制度を導入している地域は季節によってUTCとの時差が変わります。時差だけでなくサマータイムの情報を持っているタイムゾーンをサービスに導入することで、その地域に住んでいるユーザごとに正しい時間を提供できるようになります。

続きを読む

DSOCで行なっているメタデータ管理について

初めまして。DSOC Data Direction Groupの有山と申します。
現在、Data Direction Groupでは私を入れて主に2名のメンバーがデータエンジニアとして職務と向き合っています。
ところで、データエンジニアの仕事とはどういうものを想像するでしょうか。Data Direction Groupでは以下の業務を行うべき職務と定め、実行しています。*1

  • データ分析基盤の設計・構築・保守・運用・改修
  • 多部署との連携や調整
  • BIツールを用いたダッシュボード作成
  • メタデータ管理

その中でも今回はメタデータ管理についてこのブログで解説していこうと思います。

概要

メタデータ管理の内容について

そもそもメタデータとはどういうデータでしょうか。
一般的には「データに関するデータ」として説明され、データそれ自身が付加的に持つデータと理解されます。
テーブルの中に格納されるデータを例にとると、例えば以下のような項目がメタデータと考えられます。

  • データのスキーマ(形式/データ型など)
  • データのファイルサイズ
  • データの作成日付
  • 格納されるテーブル名
  • そのテーブルのカラム

このように、データそれ自身について説明してくれるデータのことをメタデータと呼び、データの管理をする上でとても重要な情報だと言えます。
メタデータ管理とは、このメタデータを収集、管理することで、日々扱っているデータを適切にマネジメントしていく業務と定義しています。

取り組みを始めた経緯

この取り組みは、主に以下の背景、課題、要望を理由にスタートしました。

  • サービスのスケールに比例して、DBのテーブルやS3バケットなど、作成しなくてはならないリソースが常に増えていく。
  • 増えていくリソース全てに対して、その使われ方、どういうデータを格納しているかを把握して開発やデータ管理に役立てたい。
  • 検証で作った一次テーブルなど、不要となったリソースは即時削除したい。
  • 作成したリソースに対する、エンジニアへの管理の意識づけをより徹底したい。

*1:データエンジニアの職務について、同グループ所属の千葉がこちらの資料でも説明しています。https://speakerdeck.com/sansanbuildersbox/construction-of-business-card-data-analysis-infrastructure-and-future

続きを読む

新卒エンジニアが書籍購入支援制度を活用して入社後9ヶ月で読んだ本

こんにちは。DSOC開発部の湯村です。
私は今年の4月に新卒として入社しました。学生時代はキノコの遺伝子を破壊する研究をしていて、プログラミングは入社する1年半前くらいに趣味で始めた程度でしたが、今はGEESと呼ばれるSansan、Eightから名刺画像をデータ化するシステムをRailsで作っています。

Sansanの社内制度にGeek Seekというものがあり、書籍などの購入費用が補助されます。
入社してからは、業務での経験に加えて、この制度を活用して購入した本を読むことで、エンジニアとしての成長を加速させていきました。
ということで今回は、他の新卒エンジニアと比較しても知識も経験も少ない私が、入社してからの9ヶ月で業務に必要な知識を身につけるために読んだ本を紹介したいと思います。
エンジニアを目指す方にも参考にしてもらえると幸いです。

続きを読む

SansanにJOINしました〜入社1週間で感じたこと〜

こんにちは!Sansan事業部 プロダクト開発部の古川です。
ふるしんとお呼びください。
私は2019年12月16日にSansanにJOINし、大阪オフィスでSansanプロダクトのAndroidアプリの開発に従事しています。

play.google.com


入社してまだ1ヶ月足らずですが「こっ、この会社…できる…!!」と、エンジニア目線で感じたことがたくさんあったので記事にしておこうと思います。
もちろんエンジニア以外の職種の方にも共通のことは言えると思います!

入社2日目にはコードを書いてた

入社するとどこの会社でもまずは研修がありますよね。
Sansanの場合は毎月多くの方が入社されるため、研修を非常に効率化しています。
「いつでも人を迎え入れる準備ができている」とも言い換えられますね。

業務で利用するPC(私の場合はMac)も事前にアンケートがあり、初日に出社すると既に机の上にキッティングされた状態でありました。

そして入社2日目にはAndroid Studioなどの環境構築も終え、コードを書き始めていました。

中途入社の場合は「受け入れの部署に任せる」といったことが多いので「まぁ1週間くらいは仮のPC使っといてよ」ということを、過去には普通に経験しています。

Sansanは「エンジニアとして入社して、エンジニアとして素早く能力を発揮できる環境」が用意されています。
これはエンジニア以外の職種でも同じことが言えるのですが、意外と素晴らしいことなのだと感じました。

技術書を買うのに躊躇しなくなった

技術書って高いですよね。
普通に数千円します。

簡単に言うと「本買ったりセミナーに行くための支援が年間数万円あります」です。

私はこれまで個人的に技術書を買うための予算が確保できず、泣く泣く見送ることが多くありました。
その度に「あぁ…また成長の機会を失った…」という感覚に陥っていました。

しかしSansanでは「専門的知識・技術を必要とするメンバーの学習を支援し、個々の技術・知識の促進をはかる」という目的のもとGeekSeekという制度が運用されています。
こちらの記事でも少し触れられています。
buildersbox.corp-sansan.com


Geek Seekの中にGeek Seek Skillというものがあります。
「技術 or デザインなど専門書籍購入・オンライン学習受講・資格取得・資格受講料の支援をする制度」です。

この制度を利用することで技術書を難なく購入することが可能となります。
買うだけ買っておけばいつでも読めますからね!

積ん読が溜まり過ぎなくなった

Geek Seek Skillで技術書を好きなだけ買っても、積ん読になってしまったら意味がないですよね。

積ん読になってしまったら意味がないですよね。

大事なことなので二度言いました。

弊社では、毎日いろいろなところで「ランチ勉強会」があります。
Geek Seek Skillで購入した本をこのランチ勉強会の時間を使って皆で一緒に読み進めることで、積ん読を作らない&仲間と議論できるので高い習熟効果を得られます。

ちなみにこのランチ勉強会も会社からランチ代の補助が出ます。
Geek Seek Workshopという制度です。

この勉強会は部署を跨いで行われることも多いので、部門間の連携にも寄与していると思います。

まとめ

私が驚いたのは、人事からのフォローがどちゃくそ厚いということです。
入社直後からたくさんフォローをいただき、定期的に「大丈夫? その後どうです? 入社前後でギャップとかあります?」的なことを聞いてくれたりします。

また、「エンジニアがエンジニアとして過ごせる環境」が整備されています。
私にとってはオアシスのような環境が揃っているなと感じました。



Sansanではたくさんの仲間を募集しています。
私と一緒に積ん読を潰しませんか?

jp.corp-sansan.com

ECS Capacity Auto ScalingをTerraformで実装する

はじめに

DSOCインフラチームの藤田です。昨年からプレイしているデス・ストランディングがまだ折り返し地点にも至っていなかったことを知りました。原因は一生懸命国道を作りすぎたためだと思います。

今回は昨年のre:Inventで発表されたECS Capacity Auto ScalingをTerraformで実装してみた結果を共有します。

ECS Cluster Auto Scaling とは

一言でとても乱暴に説明すると、ECS on EC2においてEC2のオートスケーリングを考えなくても良くなります。今回はTerraformで実装した部分にのみフォーカスするので詳細は割愛します。以下リンクで詳しく説明されています。

dev.classmethod.jp

aws.amazon.com

またこちらではキャパシティの計算方法や、スケールインの挙動などが詳しく説明されています。

aws.amazon.com

続きを読む

技術力を底上げする、Sansanの社内勉強会補助制度

Sansan事業部プロダクト開発部の基盤チームに所属する佐藤です。Sansanでは社員が自発的に開催する社内勉強会で会社からの支援を受けることができ、月に50種類以上の勉強会が開催されています*1。各勉強会は単発のものもありますが、週に1回、1~2ヶ月継続して開催されているものが多く、中には1年半以上続いている勉強会もあります。

今回は、社内勉強会を支える制度「Geek Seek Workshop」について紹介しつつ、社内で行われている勉強会から分野や目的の異なるものをピックアップして紹介し、Sansan社内の勉強会の雰囲気や参加によるメリットを参加者の立場から多面的に伝えたいと思います。人事制度に携わる人間ではありませんが、制度を用いた社内の技術力向上のアイデアの種になれれば嬉しいです。

  • Geek Seek Workshop
    • 1人あたり1000円の補助が出る
    • 申請のハードルが低いから開催されやすい
    • 申請がオープンだから行きたい勉強会を見つけやすい
  • Geek Seek Workshopで行われた勉強会の実例を紹介
    • エンジニア/プロダクトマネージャーが中心のもの
      • アーキテクチャを考える上での事前調査:Vuejs & React.js勉強会
      • エンジニアリング以外の視点を持つ:『「ついやってしまう」体験のつくりかた』勉強会
      • 趣味的分野=コミニケーションの機会:Haskell勉強会
    • データアナリストが中心のもの
      • 業務に必要な知識を身につけ、活用する:NPS®勉強会
    • DSOC R&D Groupの研究員が中心のもの
      • 基礎力をつける:『自然言語処理のための深層学習』勉強会
    • デザイナーが中心のもの
      • UXの海外トレンドを英語と共に学ぶ:グローバルUX勉強会
  • 勉強会の雰囲気を写真を交えて紹介
    • リッチなランチを食べられる!
    • 資料発表の様子
    • リモート参加も可能
  • 個人的に感じた社内勉強会の利点
    • 実際の業務改善のための議論を行うことができること
    • 事業部内外のエンジニアと定期的にコミニケーションができること
  • まとめ

Geek Seek Workshop

1人あたり1000円の補助が出る

Sansanでは、Geek Seekと呼ばれる専門的知識・技術を必要とするメンバーを支援する一連の社内制度*2があり、その1つがGeek Seek Workshopです。社内勉強会を開催する際の懇親会費用を支給する制度で、1人あたり1000円が支給されます。勉強会はお昼の時間帯(12:00~13:00)に実施されていることが多いので、主にお弁当代に充てられています。

申請のハードルが低いから開催されやすい

申請にあたってのハードルが低いのが特徴です。勉強会の内容は学びが有るのであれば業務に直接関連する技術でなくても良く、申請すれば基本的には通ります。そのおかげなのか、結果として業務に関連する内容のものも数多く実施されています。

申請がオープンだから行きたい勉強会を見つけやすい

Geek Seek Workshopの申請は社内コミュニケーションツール(Workplace)の申請グループに投稿します。このグループは社員なら誰でも見ることができるため、現在開催中のものの中から自分が参加したい勉強会を探す事ができます。その場で参加表明をし、即参加することが可能です。*3

f:id:asato_sansan:20200119205830j:plain
実際にコメントを残し、参加に至った様子。

*1:2019年12月に社内制度(GeekSeek Workshop)を用いて開かれた勉強会を数えてみた所、54種類開催されていました

*2:他にもGeek Seek Book, Geek Seek Tools 等があります。詳しくは、 入社して2ヶ月の間に利用した社内制度 - Sansan Builders Box や 、 書籍購入支援制度'Geek Seek Book'を活用して今年購入した本 - Sansan Builders Box【Geek Seek Toolsで買われた、気になるモノ達】第1回「ErgoDox EZ (左右分離キーボード)」 - Sansan Builders Box などをご参照ください

*3:Geek Seek Books, Geek Seek Toolsの申請も同様に全て公開されているため、他の人が購入した文献やツールを参考にすることも可能です。

続きを読む

© Sansan, Inc.