クラウドワークス エンジニアブログ

日本最大級のクラウドソーシング「クラウドワークス」の開発の裏側をお届けするエンジニアブログ

定期的にSQLを実行した結果をDatadogに送信するcyqldogというツールを作った

日々Datadogのダッシュボードを眺めながらニヤニヤしている @minamijoyo です。

定期的にSQLを実行した結果をDatadog送信するcyqldogというツールを作ったので紹介します。

f:id:minamijoyo:20171002184919p:plain

はじめに

クラウドワークスでは日々のデータ分析にAWSのRedshiftを利用しています。 Redshiftはサービスの主要なKPI集計から、ちょっとしたアドホックな分析まで、 利用者はエンジニアだけにとどまらず、プロダクトオーナーやマーケティングのメンバーも含め広く利用されており、 ひとたびシステム障害などでRedshiftが利用できないと業務に大きな影響が出ます。

そんなRedshiftを安定稼働させるためには、日々の監視が大切です。 AWSで監視といえば、まずはCloudWatchが思い浮かびますが、RedshiftのCPU使用率やディスク使用率などの基本的なメトリクスであれば取得できるもの、 ちょっと複雑なこと、例えばユーザごとのクエリ実行時間やキューの滞留数などを取得しようとすると、Redshiftのシステムビューにクエリを投げる必要があります。

クラウドワークスではインフラレイヤの監視ツールとしてDatadogを使っているので、 Redshiftのシステムビューに定期的にクエリを投げて、Datadogにメトリクスを投げつけられると幸せになれそうだなぁと思ったのがこのツールを作り始めたきっかけです。

ちなみにDatadogの公式インテグレーションにRedshiftがありますが、これはCloudWatchのRedshift関連のメトリクスを取得できるもので、システムビューまでは見てくれません。

また、RedshiftのSQLのインターフェースはPostgreSQL風なので、DatadogのPostgreSQLインテグレーションが使えそうな気がしましたが、RedshiftのシステムビューはPostgreSQLとは異なるので、Redshiftのメトリクスを取得するのにはそのままでは使えなさそうでした。

雑なシェルスクリプトを書いてもよかったのですが、監視対象のクエリが増える度にスクリプトをメンテするのやだなーというのと、 Redshiftにあんまり監視自体で負荷をかけないように、重いクエリと軽いクエリで監視間隔をコントロールしたいなぁと思って、 設定ファイルにSQLと監視間隔を書けばいいかんじにDatadogにメトリクスを送信してくれるcyqldogというツールを作ってみました。

github.com

元々Redshiftの監視のために作りましたが、データソースとしてはもう少し汎用的にPostgreSQLやMySQLでも使えるようにしてあります。 実装は個人的な趣味でGo言語です。

というわけで、cyqldogの使い方を簡単に紹介します。本稿執筆時点のcyqldogのバージョンはv0.1.3です。最新情報については上記のリポジトリのREADMEを参照して下さい。

続きを読む

KARTEを導入した結果、エンジニアがバナー設置しなくなった話

はじめまして、高校野球好き新卒エンジニアの太田(@yutoota)です。今年の夏の甲子園では、地方大会から応援していた埼玉の花咲徳栄高校が優勝して感極まりました。ちなみに母校でもなんでもありません。

唐突ですが、エンジニアの皆さんは新サービス・新機能のリリースの度にその流入を増やすことを目的とした施策(バナーの設置等)の実装を何度も行っていたりしませんか? クラウドワークスではこれらの施策の実装を主にエンジニアが行っています。軽微な変更であれば施策担当者(非エンジニア)が実装しますが、少なくともリリース作業はエンジニアが行う必要があります。

こういった実装は難易度としては低いものの、レビューやデプロイを伴うので一瞬で実装完了することができず、何度も積極的に変更できないことが悩みだったりします。非エンジニアにとっても、わざわざエンジニアに対応依頼する必要があり、「試してみたい細かな修正があるけど忙しそうだから後で依頼しよう・・・」といったケースも多いかと思います。

そんなクラウドワークスでは1ヶ月程前にKARTEという「Web接客ツール」を導入したことで、これらの問題を解決することができました。

続きを読む

突然ですが、クラウドワークスに入社しました。

以下の退職エントリーを見て、入社した hikouki です。

engineer.crowdworks.jp

去年(2016年)の12月に入社して、半年以上経ったので入社エントリーを書いて見たいと思います。

なぜクラウドワークスを選んだのか?

1. 働き方を変えたかった

エンジニアの仕事は、場所や時間、服装にも捉われず働けるはずです。

もちろん、組織でビジョン達成を目指す上で、自由に働くことは障害になり得ると思います。

弊社でも、まだオフラインが主流で、他部署を交えたリモート会議などは難しい場合が多いです。

なので、リモートワークで短期的な利益が得られないと理解していて、長期的に、その様な社会(会社)を目指したいという意思があるのかを重要視していました。

クラウドワークスでは、週3日までリモートワークできる制度があったり、会社のビジョンと重なる部分ではあるので、その点は信用できると思いました。

2. 個人が活躍できる社会にしたい

場所や時間だけではなく、会社にも捉われない働き方が一般化すると素敵だなーと思ってます。

私も前職の頃から、個人で仕事を受けてWebサイトを作ったりしています。

受託メインのフリーランスになることも考えましたが、チームでBtoCのサービスを作ってみたかった事もあり、副業が可能で、BtoCのサービスが作れるクラウドワークスを選びました。

3. 文化の混在がない

エンジニアはエンジニアの文化があり、営業には営業の文化があります。

私の狭い経験上、文化が混在してしまうと収益に直結する職種の文化が優先されがちでした。

そのため、住み分けができており、お互いのロールを尊重し合える組織に貢献したいと思ってました。

4. ビジョンの達成を目指している

ビジョンを掲げながら、短期的な収益に目が眩んでビジョンと関係ない事業に手を出したり、ましてや、全く逆のことをやっている場合もあるかもしれません。

組織を作って事業を進める目的は、ビジョンの達成であるべきで、かなり極論なので誤解を恐れずに言うと、会社が倒産してもビジョンが達成できたのであれば、成功だと思ってます。

なので、事業とビジョンがちゃんとリンクしているかを重要視していました。

5. 余裕がある

私の場合、目の前の仕事に追われる日々を送っていると、中長期的な目線で物事を捉えられなくなります。

エンジニアの想像力やアイディアを受け入れなくても良いのであれば問題ないですが、そうでない場合は多いと思っているので、常にリラックスして仕事ができ、定時より前に仕事が終わってる状態が良いと思ってました。

半年働いてみて、実際どうだったか?

私のようなエンジニアには、ぴったりの会社だと思ってます!

基本残業はしませんが、少し残業してもフレックスを導入しているので、次の日早く帰れます。

この制度は「副業」に凄くマッチしていて、業務時間中は自社のことだけを考えて、業務時間外は違う会社のことを考えられます。

もちろん、副業の方でMTGが入ると定時より早めに帰って、次の日に残業すれば良いのです。

また、週3日は家でリモートワークするようにしていて、猫二匹とフリーランスである妻と一緒に作業しています。

それぐらい仕事に余裕(時間的、精神的に)があるので、個人で考えて業務効率を上げる改善も多く行えています。

文化の住み分けもできていて、それぞれのロールを尊重していると感じます。

良いことばかり書いてしまいましたが、肝心のコードは負債が返しきれてない部分もあります。

ただ、過去のコードは常に叩かれる存在ではあるので、愚痴を言いながら直す楽しさもあります :|

なので、ここ半年働いてみた結果としては、良い転職ができたと思ってます!

We’re Hiring!

そんなクラウドソーシングのクラウドワークスでは、事業に集中できる環境で自分の力を発揮したいエンジニアを募集中です。

www.wantedly.com

管理画面チラ見せ♡ナイト #5 に登壇しました 〜 CrowdWorksを支えるKPI管理画面をチラ見せ♡

こんにちは。CTOの @akiray03 です。 先日8月21日にSpeee Loungeで開催された、 管理画面チラ見せ♡ナイト #5 - connpass において、CrowdWorksのKPI管理画面の変遷をご紹介したので、資料を公開します。

続きを読む

AWSで動いているサービスをHerokuに移行した話

f:id:Tomato-360:20170802142647p:plain

こんにちは。好きなオーラバトラーはレプラカーンの那須(@nasum)です。ハイパー化には衝撃を受けました。

今回はAWS上で動いたサービスをHerokuに移した話を書きます。

  • 背景
    • 問題
  • 移行作戦
    • 現状の把握
    • Herokuのアドオンの調査
    • HerokuでStaging環境を作って手動テスト
    • 移行の手順書の作成
    • リハーサル
    • 移行
  • MySQLはAWSのバージニアリージョンのRDSを利用
  • 移行時のトラブル
    • 起きた問題
    • 原因と対策
  • まとめ
  • We’re Hiring!
続きを読む

© 2016 CrowdWorks, Inc., All rights reserved.