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

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

ビビリのためのRDS MySQL→Aurora移行

この記事は クラウドワークス Advent Calendar 2024 シリーズ3 11日目の記事です。

こんにちは。クラウドワークス SRE チームの田中(@kangaechu)です。 クラウドワークス では2024年12月に クラウドワークスのマスタデータベースをMySQL から Aurora に移行しました。今回はその移行について書きます。

クラウドワークスは、2012年にリリースされた日本最大級のクラウドソーシングサービスです。 クラウドソーシングを通じて、企業とフリーランスのマッチングを行い、業務の効率化を支援するため、仕事の公開、応募、受注、進捗管理、報酬の支払いなど、さまざまな機能を提供しています。 クライアント数は100万社、ワーカー数は670万人と、多くの方に利用していただいています。

そんなクラウドワークス のデータベースはAWSのRDS MySQLで運用されていました。 これをAuroraに移行するのですが、もし移行に失敗した場合、多くのユーザに影響を与えてしまいます。 移行に失敗したらどうしようという不安を抱えていました。

そこで、クラウドワークスで使用したビビリのためのAurora移行の方法を共有します。 これを行うことにより、Aurora化が失敗した場合でもRDSに戻すことができます。

続きを読む

Aurora MySQLとRedshiftのゼロETL統合を本番導入しようとしてダメだった

Aurora MySQLとRedshiftのゼロETL統合を本番導入しようとしてダメだった

この記事は クラウドワークスグループ Advent Calendar 2024 シリーズ2 の7日目の記事です。

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

今年の7月末に Aurora MySQLとRedshiftのゼロETL統合が本番導入出来るか検証しました という記事を投稿しました。その記事の最後で本番導入に向けて意気込んでいたのですが、本番導入を断念することになった経緯について話していきます。

検証記事の要約

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

クラウドワークスでは、MySQLのテーブルをDMS経由でRedshiftにニアリアルタイムで同期し、データ分析を行っていました。しかし、DMSでレコード件数やデータサイズの大きいテーブルを再同期する際に半日以上かかってしまう問題がありました。この問題を解決するため、Aurora MySQLとRedshiftのゼロETL統合の利用可能性について検証を行いました。検証の結果、いくつかのエラーや制約は見つかりましたが、それらは回避可能であったため、本番導入に向けて取り組むことにしました。

本番導入を阻んだ原因

MySQLのMEDIUMTEXT/LONGTEXT型を含むテーブルや無効なUTF-8文字コードを含むテーブルで同期エラーなど、さまざまな問題が発生しましたが、いずれも運用で回避できる程度のものでした。本番環境と同等のデータ量でパフォーマンス検証を行なったところ、1〜2時間で同期が完了するという好ましい結果が得られました。 本番環境にゼロETL統合の設定を適用したところ、初回の同期は問題なく完了しました。しかし、その後、テーブル同期の最新状態への追従を待っていると、同期のラグが一向に減少しない事象が発生しました。

ラグが一向に減少しない事象

ラグが増加し続ける原因を特定するため、いくつかの検証を実施しました。

  1. 再度、フルロードする
  2. Aurora MySQLインスタンスタイプを上げる
  3. 同期対象のテーブル数を減らす

1と2では特に変化が見られませんでした。3については、ラグが増加し続けるものの、ラグの増加量が減ったことを確認できました。

以上のことから、この事象は再現性があり、Aurora MySQLのスペックには関係なく、テーブル数に比例することがわかりました。ゼロETL統合の環境はクライアント側からは確認することができないため、この事象の原因をAWSサポートに問い合わせることにしました。

続きを読む

全社横断エンジニアリングの壁

全社横断エンジニアリングの壁

この記事は クラウドワークス グループ Advent Calendar 2024 シリーズ 1の3日目の記事です。

こんにちは。クラウドワークスでエンジニアをしている高橋(@suzunedev)です。

4月から、とあるプロジェクトに参画して全社横断エンジニアリングの壁に挑戦しています。個人的には複数事業部と連携しながら開発を行なっていくのは初めての試みでして、事業部の壁を超えたエンジニアリングというところから、全社横断エンジニアリングの壁と表現して、どのようなことを行なってきたかを振り返ってみようと思います。

続きを読む

生成AIでFigmaからスマホアプリUI作成を自動化して楽したかった話

こんにちは。クラウドワークスのiOSアプリ開発を担当している野村です。 今回は「生成AIでFigmaからスマホアプリUI作成を自動化して楽したい!」という取り組みについて共有したいと思います。タイトルが「楽したかった」と過去形なのは、執筆時点ではあまりうまくいかなかったためですが、デザインから実装までの流れに課題を感じているエンジニアやデザイナーにとって少しでも参考になれば幸いです。

続きを読む

脆弱性ホントにないですか?セルフペネトレーションテスト環境を構築してみた話

こんにちは!クラウドログでSREを担当している宮城です。

今回はセキュリティ勉強の一環として、セルフペネトレーションテスト環境を構築し、 Kali Linuxから自身のサービスの脆弱性を調査できるか検証してみた話について、 やった内容とその手順について紹介させていただこうと思います。

続きを読む

© 2016 CrowdWorks, Inc., All rights reserved.