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

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

SRE NEXT 2020にブース出展しました #srenext

こんにちは。SREの田中です。

クラウドワークスは、2020年1月25日に開催されたSRE NEXT 2020でブース出展を行いました。 SRE NEXTは2020年に初開催された、SRE (Site Reliability Engineer) のためのコミュニティーベースのカンファレンスです。 クラウドワークスはシルバースポンサーとして協賛いたしました。

f:id:kangaechu:20200127150546p:plain
SRE NEXT 2020 ブース

当日はたくさんの方にご訪問いただき、本当にありがとうございました。 また、様々な心配りをしていただいたスタッフの方々にも深く感謝しています。 ブースでいろいろな方とお話させていただく中で、クラウドワークスに興味を持っていただいたり、使っているテクノロジースタックについてお話をさせていただく中で新たな気づきを得たりと、スポンサーになって本当によかったなと思っています。

続きを読む

新規プロダクト開発におけるPhaseごとの技術選定あれこれ

f:id:APPLE4869:20191225135543p:plain

はじめに

このブログはクラウドワークスのアドベントカレンダーの最終日の記事です。(今年もクリスマスイブをアドベントカレンダーで使ってしまった・・・。)

クラウドワークスの副社長をやってます @shuzonariata です。

現在自分はエンジニアリングDivの管掌役員やその他事業管掌もしているのですが、新規事業の開発の責任者も行っています。新規事業では、クラウドワーカーの新しいマッチング体験を実現するプラットフォームサービスを作っています。

そこで今回のアドベントカレンダーでは、そんな新規プロダクト作りの裏側で、どんな技術選定をしてきたか、なぜその考えに至ったか、どんな結果になったか、そんな経緯をまとめてみることにしました。(ちなみに新規サービスは2020年の年始には公に発表できると思います。乞うご期待)

※なおこのブログは新規事業のチームメンバーで、プロダクトマネージャーでありUXデザイナーの@takuto0516との共著です。

続きを読む

チームにプロダクトオーナーが加わり変化したこと

この記事は クラウドワークスアドベントカレンダー2019 18日目の記事です。

フロントエンドグループ・トリュフチームの @eighty8 です。

私たちのチームでは、crowdworks.jp におけるデザインガイドラインの作成と、UIコンポーネントカタログの実装をメインで行なっており、既存のUIを大きく崩さずレガシーなデザインやHTML構造を刷新していくことを目指しています!(いずれはデザインシステムに発展させていきたい!

チーム発足から一年弱が経過しましたが、このたび待望だったプロダクトオーナー(以降PO)も加わり、プロジェクトを推し進める上で大きな原動力となっています!

クラウドワークスにおけるPOの役割

【POのミッション】

・プロダクトや担当機能のROI最大化
・ミッション遂行に向けたチーム管理
・施策の優先順位の決定/意思決定

【業務内容】

・開発テーマ設定/KPI設定
・開発のプロセスに責任を持ち、機能企画からリリース・運用を推進
・実行/実装にむけた工数およびスケジュール管理
・KPIモニタリング、データ分析
・ユーザーインタビュー等による定性調査/分析
・スクラムチームの運営/改善

この記事では、PO不在のチーム発足当初からPOが加わるまでの間にあった問題と、加わった後でどのようにチームが変化したかを書いていきたいと思います。

続きを読む

そういえばRails5へ移行しましたのご報告

Railsをアップグレードするということ

じゅんてつです。 Rails4更新時にはご報告の記事が書かれていたのにも関わらず、Rails5更新は記事を挙げておりませんでした。今更ながら記事をしたためてみました。ひとえに多忙だったり、Rails4更新のように世間的に宣言して更新をしていなかったからかと思います。

f:id:juntetsu-tei:20191213185333p:plain

さて、今年はRails6がリリースされたように大きな動きのあったRails界隈ですがいかがお過ごしでしょうか。

Rails4更新のときのように特に大きな告知はしておりませんが、CrowdWorksでは、Rails4.2からRails5.2へのアップグレードに取り組んでいました。Rails6がでたところ今さら感も漂いつつあるかもしれませんが、CrowdWorksはサービス全体がRails5.2で稼働していますことをここにご報告いたします🎉

根幹となるフレームワークを古いまま使い続けることは、洗練された記法が使えなかったり、高速化最適化が進んだモジュールが使えなかったり、周辺gemの対応についていけずに置いていかれるリスクなどが負債となって積み上がっていきます。また、セキュリティの問題が修正されなくなるリスクもあるため長い目でみてユーザーに不利益になり、生きたサービスを開発し続けるためにはフレームワークのアップグレードが不可欠と感じています。

CrowdWorksがやったこと

稼働中のサービスのRailsをアップグレードするということは、単に bundle update するだけでは終わりません。ましてやCrowdWorksのような30万行を超えるサービスの中心となるフレームワークを更新していくことにはいくつもの課題があります。10万行超のRails4更新時は「車を走らせながらエンジンを取り替えるようなもの」と課題の大きさを比喩していたようですが、今回はさらに規模が大きくなっており「旅客機を飛ばしながらエンジンを空中で取り替える〜」と比喩してもいいのではないかと思います。

稼働したサービスを止めずにRailsのアップグレードをするにあたって、Rails4とRails5が並列に存在できる環境を構築しました。これによってHTTPリクエストを振り分け、カナリアリリースの体裁をとることが可能になり、問題が発生した際は即座にRails4へ切り戻しができたり、ユーザー影響を最小限に留めることができ安全に新しいバージョンへ移行することができるようになりました。安全なリリース方法を模索した結果、カナリアリリースを採用しましたが、もちろんリリースに至るまでに多大なる努力を行っています。自動テストの充実や、手動テストでの網羅的な確認、シナリオテストでのパターン網羅、ミドルウェアやインフラ構成に着眼した個別の確認など、思いつくあらゆる軸で対応を行いました。

このような取り組みのお陰で大きな障害を出すこともなくユーザーへの影響も最小で移行しています。 Rails5更新に関する記事は、メインミッションとしたメンバーが少数という事情や、技術的な話は世の中の多くの会社の方が記事にしていただいてるところもありますので、特筆する内容が思い浮かびましたら記事にしたためたいと思います。

© 2016 CrowdWorks, Inc., All rights reserved.