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

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

HerokuとAWSのリージョン移行した話

初めに

こんにちは。クラウドワークスのエンジニアをしているu2_cwです。

普段はクラウドワークス テッククラウドワークス エージェントの開発を行なっています。

今回は、そのサービスのアプリケーションで利用しているインフラである HerokuとAWS のリージョンを東京リージョンへ移行した際に起こった問題について共有しようと思います。

続きを読む

Aurora MySQLとRedshiftのゼロETL統合が本番導入出来るか検証しました

Aurora MySQL Zero ETL Integrations

クラウドワークスのSREチームに所属しています@ciloholicです。

2023年11月にAurora MySQLとRedshiftのゼロETL統合がGAされました。この度、ゼロETL統合が本番導入可能かを検証する機会があったので、その検証結果を記載します。

aws.amazon.com

2024年7月時点での検証結果ですので、時間経過によって内容が変わっている可能性があります。その点は十分ご注意ください。

背景

まず、ゼロETL統合の検証しようと考えた背景について軽く説明したいと思います。クラウドワークスでは、MySQLのテーブルをDMS経由でRedshiftにニアリアルタイムで同期し、データ分析を行なっています。3年前は約30億レコードでしたが、現在では古いレコードの削減を行なったため、約25億レコードになりました。

engineer.crowdworks.jp

時折ですが、Redshiftのレコードに不整合が発生すると、テーブル全体やテーブル単体を再同期してレコードを洗い替えたいときが存在します。レコード件数やデータサイズが大きいテーブルを再同期すると、テーブル単体で最大約8時間、テーブル全体で半日以上かかっていました。データ分析基盤を平日に半日以上止めることはできないため、土日に再同期するという作業が発生していました。再同期を頻繁にするわけではないのですが、気軽に再同期ができないことは運用上の課題になっていました。

DMS以外の同期方法として、RDS MySQLのスナップショットからS3へエクスポートし、Redshiftに取り込む方法も存在しました。この方法では、1回のエクスポートごとに復元スナップショットサイズ1GB単位での課金が発生します。1日に何度も同期する場合には料金が高額になるため、この同期方法は断念しました。DMS以外の同期方法を探しているときに見かけたのが、冒頭に記載したAurora MySQLとRedshiftのゼロETL統合がGAされた記事でした。

続きを読む

フロントエンド開発チュートリアルを作成し開発ハードルを下げた話

こんにちは、crowdworks.jpの開発エンジニアをしている得能です。

クラウドワークスへの入社以来バックエンド開発のみ行ってきましたが、今年に入りフロントエンド開発の機会をいただけることになり、Vue.jsを使い新規画面実装などを行いました。 その際に、今後新しくcrowdworks.jpのフロントエンド開発を行う方々がスムーズに開発業務に入れるようにフロントエンド開発チュートリアルを作成しました。今回はその取組みについてお話したいと思います。

背景

crowdworks.jpはバックエンドはRuby on Rails、フロントエンドはERB、Vue.jsで開発されており、少しずつVue.jsで開発した画面への置き換えを進めています。

Ruby on Rails × Vue.jsの実装といえば、Vue.jsで画面実装、Ruby on RailsAPIサーバーにする、がよくある構成かと思いますが、crowdworks.jpでは過去の実装を残しつつVue.jsに移行を進めているなどの理由もあり弊社特有の実装方法を確立しています。そのため、crowdworks.jpのフロントエンド開発を初めて行う方はまずそのような実装ルールを知る必要がありました。

実装方法は現在の実装コードを眺めればある程度理解できます。また、フロントエンド開発に必要な知識は社内のQiita Teamにまとめていただいており、誰もが閲覧できる状況にはなっていました。 しかし、私がいざ開発を始めてみるとコードを読み込むだけでは

  • コード上では必須ファイルの名称などが明記されておらず見逃してしまう
  • 実は共通コンポーネント、関数が定義されているが、読んだ実装コードではたまたま定義されていなかった

ということがありました。

また、Qiita Teamの資料については実装したあとから「資料あったのか〜」と感じることがいくつかありました。その資料に到達するまでの検索ワード、問いが実装の過程では思いつかなかったためと分析しています。

私の情報探索力が足りないというのも理由ではあると思いますが、一方で、これだけ見ておけば全体像を理解できると感じられるガイドブックのようなものがあれば、誰でも迷わずcrowdworks.jpのフロントエンド開発に必要な知見をスムーズに習得することができるのでは?とも感じました。

どんな形式のガイドブックが良いだろう…と考えた結果、チュートリアルの形式が良いのではないかと思い作成してみました。

続きを読む

Elasticsearch RailsからSearchkickへの移行で気づいたSearchkickの注意点

こんにちは、クラウドソーシングサービス「クラウドワークス」でエンジニアをしている神山です。クライアントとワーカーのマッチングに関わる機能の運用・改善を行うデリバードチームに所属しています。

本サービスではRails環境での検索エンジン運用に Elasticsearch Rails を使用してますが、この度 Searchkick への移行を決定し、現在移行作業中です。この移行作業を通じて、Elasticsearch RailsとSearchkickの間にはいくつか顕著な違いがあり、特にElasticsearch Railsからの移行に際して注意が必要な点がいくつか存在しました。今回はその点を中心に書きました。

続きを読む

© 2016 CrowdWorks, Inc., All rights reserved.