Remixを使い始めた話

こんにちは、23卒の新卒エンジニアのfujinoです。今回は弊社のサービスでReactのフレームワークであるRemixを使い始めた話をしようと思います。

背景

弊社では今までVue.jsのフレームワークであるNuxt.jsを用いてフロントエンドを実装していました。 これは、採用当時は生のhtmlが使えるのが良いと思っていたことや、Vue.jsの経験のあるフロントエンジニアがチームにいたことが理由でした。

しかし、最近ではTypescriptとの親和性や、コミュニティの大きさなどの理由からReactの方が勢いがあるように感じます。 弊社でも少し前からReactに移行することを決定し、現在進行形でNuxt.jsからReactへの移行プロジェクトを進めています。

Reactの主要なフレームワークとして、Next.jsとRemixが挙げられます。 両者の違いとして、Next.jsはSSG(Static Site Generation)やSSR(Server Side Rendering)をサポートしているのに対して、Remixは基本的にSSRのみをサポートしています1 今回私が参加したプロジェクトではSSGが不要な案件だったため、Remixの方が使わない機能が少なくとっつきやすいと感じました。 そこで、このプロジェクトではRemixを採用することにしました。

このように社内のRemixへの移行実績が増えてきたので今回は改めて振り返ってみようと思います。

k8sからマルチコンテナ構成のCloudRunに移行できるか検証してみた

こんにちは、henzaiです。今回はSREのyoshizawaがCloudRunのマルチコンテナ構成について検証を進めてくれたネタがあったので、それを紹介したいと思います。

検証のモチベーション

弊社ではアプリケーションの実行プラットフォームとして主にGoogle Kubernetes Engine(GKE)とCloud Runを使用しています。1 主にGKEには常にリクエストを受け待つようなサーバー類をデプロイし、Cloud Runにはイベント駆動系の処理をデプロイしています。

最近ではよくある構成かなと思うのですが、一方で弊社の組織規模においてk8sの運用を続けていくのはコストが掛かりすぎるという課題感もあり、Cloud Runへの全面移行も選択肢の1つだよねというのが現状の認識です。

そこで、k8sからCloud Runに移行を進めるうえでマルチコンテナ構成によって何が可能になるか、何が課題になるかを知りたいというのが今回の検証のモチベーションになります。

実は検証はプレビュー時代におこなっていたのですが、現在はGAになっています。 GAになるにあたって、コマンド類が使いやすくなっていたのでその点についても触れようと思います。

コンテナ中でVCS Stampingが失敗する話

こんにちは、garsueです。最近、手元の開発環境を一新していて遭遇したちょっとした小ネタを紹介します。同じ問題に遭遇する人もいそうな気がするので参考になれば幸いです。

事象: DockerにマウントしたGoのプロジェクトでビルドがコケる

当社の開発環境では開発中のコードをDockerのコンテナにマウントしてコンテナ中でビルドしています。その際に一部のコンテナで以下のエラーとともにビルドが失敗していました。

error obtaining VCS status: exit status 128
Use -buildvcs=false to disable VCS stamping.

VCS StampingはGo 1.18から追加された機能で、Gitなどのバージョンコントロールシステムからリビジョン番号などを取得してバイナリに埋め込む機能です。

エラーの詳細としては exit status 128 としか表示されておらず、なぜ失敗しているのか上記のエラーだけではパッとはわかりませんでした。

なお、単にエラーが起きないようにするだけならエラーメッセージにあるようにビルドオプションに -buildvcs=false を追加すればいいだけです。大抵の場合、開発途中では不要かと思います。1

OpenTelemetryを活用してGCP × Python × マイクロサービス構成のObservabilityを高める

こんにちは、マネーフォワード ケッサイのデータチームで与信審査システムやデータ基盤の開発をしているkamillleです。 今回はOpenTelemetryとGoogle Trace, Loggingなどを組み合わせてCloud Run, Functions上で動くPythonアプリケーションのObservabilityを高めている取り組みの中から、外部のドキュメントなどに情報が記載されておらず対応に苦労したポイントをご紹介したいと思います。

GCPにデプロイするPythonアプリケーションへのOpenTelemetry導入に関してはGoogle CloudのドキュメントやGMOさん、キャディさんのブログに詳しく書かれているため割愛します。

Google Cloud のドキュメント

GMO さん: GCP Cloud Trace を使ってみた

キャディさん: Python プロジェクトに OpenTelemetry を導入する

なお、今回利用しているサンプルコードはGitHub上で mfkessai/opentelemetry-python-sample-app としてパブリックに公開しているため、参考になればと思います。

Cloudflare WorkersからTinyGoでビルドしたWabAssemblyバイナリを呼び出す

こんにちは、マネーフォワード ケッサイのテックリードをやっておりますgarsueです。

最近、CDNのエッジで動くサーバレス環境が充実してきましたね。

代表的なものとしてはCloudflare WorkersやfastlyのCompute@Edgeなどがあります。CloudflareではKey-Valueストアもあり、S3やGCSのようなオブジェクトストレージまで揃いつつあるようです。

そんな流れに乗って、Cloudflare Workersを使ってGoで実装した計算ロジックをエッジで動かせるか検証してみました。今回はその結果をレポートします。

TL;DR

  • アップロードサイズ制限があるのでTinyGo使って小さいwasmバイナリを作る
  • wrangler.tomlで type = "CompiledWasm"のモジュールとしてwasmバイナリをアップロードする
  • wasmのエントリポイント内でJavaScriptの名前空間にJavaScriptの関数としてセットする