STORES Product Blog

こだわりを持ったお商売を支える「STORES」のテクノロジー部門のメンバーによるブログです。

バックエンド

Go と GraphQLで作る組織管理基盤

こんにちは。プロダクト基盤グループの inari111 です。STORES の各プロダクトへ導入する共通基盤を開発しています。 私の部署内で2つ目の基盤プロダクトとなる組織管理基盤を作ったのでご紹介します。 社内では「maja(マヤ)」と呼ばれています。 この記事…

STORES 予約 をモジュラモノリス化しました!

STORES 予約 は 10 年モノの 45 万行、380テーブルある大きなモノリスの Rails アプリケーションです。 業種にとらわれない汎用的な予約システムであり、それらに対応するように複雑なコードベースになっています。また、ここ 1~2 年はプロダクト間連携を進…

CircleCIのslowest tests大改善

こんにちは! STORES でWebエンジニアをしている hsm_hx です。 6月に STORES に中途入社し、ネットショップやレジを中心に機能追加や改善・運用をするチームでバックエンドやフロントエンドの開発を担当しています。 STORES ネットショップの開発チームでは…

サービス間でのpub/sub通信と一貫性

STORES でサーバーサイドエンジニアをしている片桐と申します。 STORES は元々別々の会社であったプロダクトが集まってできた会社です。各プロダクトのサービスは元々それぞれ独立したアプリケーションとして動いており、STORES プラットフォームとしてこれ…

STORESで異動した話

STORESで異動した話 * 本記事は STORES Advent Calendar 2023 25日目の記事です こんにちは、STORES でバックエンドエンジニアをやっている id:ahogappa です。 今年の10月からブランドアプリチームからネットショップチームへ異動したのですが、同じ STORES…

Passkeys を完全に理解するために Rails で実装してみた with Remix

昨今 Passkeys が各サービスで導入されており、勢いを感じています。Passkeys の実際の挙動や導入する時の開発コストを知りたく、ガチャガチャ触ってみよう!ということで完全に理解するために Rails で実装してみた with Remix 編をやっていきます!

SRE チームがバックエンドチームと合流した話

はじめに こんにちは、エンジニアの shibuya です。STORES では2023年アドベントカレンダーを連載しており、その中の12/08分の記事となります。 STORES のネットショップ部門では 元々 SRE チームと バックエンドチーム、フロントエンドチームが分かれていま…

開発者向けAPIのリリースに向けて検討したこと

* 本記事は STORES Advent Calendar 2023 15日目の記事です こんにちは。STORES ネットショップ のエンジニアをしております、takeuchiです。 STORES ネットショップ では2021年10月から開発者向けAPIを提供開始しました。 officialmag.stores.jp この記事で…

オーダーデータの再設計と移行

* 本記事は STORES Advent Calendar 2023 14日目の記事です STORES でバックエンドエンジニアをやっている @ucks です。 Advent Calendar やろうぜとなって取り敢えず参加表明したものの、全然ネタが思い付かず。 どうでも良いことを書いてやろうと思ってた…

STORES はKaigi on Rails 2023に参加しました!みんなの感想ブログ

STORES はKaigi on Rails 2023に16名で参加&スポンサーをしました! こんにちは、 STORES のかつまたです。Kaigi on Rails 2023お疲れさまでした! STORES はゴールドスポンサーとして協賛しました。オフラインでの参加も可能なイベントということで STORES…

STORES 決済 の MySQL をバージョンアップしました

こんにちは! STORES 決済 のバックエンドエンジニアをしているしまだ(mii)です。 先々週はバックエンドのみんなで JJUG CCC*1 に参加してきました。お祭りのようでとても楽しかったです。 気付いたらアドベントカレンダーの時期になっていたので、9月に実…

STORES ネットショップおよび STORES POSレジで使用している MongoDB を 4.4 から 5.0 にバージョンアップしました

こんにちは。リテール開発本部の鈴木雄一郎(u16suzu)です。 最近、私が所属する業務改善Gでは、 STORES ネットショップと STORES POSレジ のバックエンドで使用している MongoDB のバージョンアップを行いました。この記事では、今回の MongoDB のバージョン…

Kaigi on Rails 2022で気になったセッションは?『ふりかえりKaigi on Rails 2022』文字起こしレポート

2022年10月24日に『ふりかえり Kaigi on Rails 2022』と題してイベントを開催しました。イベントでお話した内容を文字起こしレポートでお届けします。 自己紹介 kwappa:そろそろ「ふりかえりKaigi on Rails 2022」を始めます。みなさん、こんにちは。 みん…

AWS Security Groupの棚卸とその後の運用

STORES 決済 バックエンドエンジニアの nannany です。 この記事は STORES Advent Calendar 2022 の 22日目の記事です。 概要 システムを運用していくと、過去使っていたけれど現在は使っていない AWS Security Group (以下、Security Group)がどうしても出…

Goのマイナーアップデートを追っている方法の紹介

こんにちは。 テクノロジー部門プロダクト基盤本部の大橋(@nal_6295)です。 この記事は STORES Advent Calendar 2022 の7日目となります。 はじめに このプロダクトブログで過去2回、Goの社内勉強会を実施していることについて書いてきました。また、その中…

RSpecのテストコードを実行時に書き換えて実行速度を改善した話

CTOの藤村です。つい最近まで STORES ブランドアプリ のチームでRailsを書いていました。 STORES ブランドアプリ のRailsリポジトリではdatabase_cleanerを(strategy = truncationで)使ってテスト中のデータベースをリセットしており、このことがテストコ…

Go の勉強会を始めて1年が経ちました

はじめに こんにちは。テクノロジー部門プロダクト基盤本部の@NAL_6295です。 プロダクト基盤本部では、ID基盤を開発・運用しており、Go を採用しています。 参考までに、ID基盤のアプリケーションアーキテクチャについて書いた記事を紹介します。 tech.hey.…

STORES 予約 のリファクタリング(後編)

STORES 予約 で Webアプリケーションエンジニアをしています。ykpythemindです。 STORES 予約 では機能開発する際に積極的にリファクタリングを行っています。 前回 は支払い方法API部分のリファクタリングを途中まで紹介しました。後編ではより踏み込んだリ…

OpenID Connect フレームワーク fosite にコントリビュートしました

こんにちは。プロダクト基盤本部 基盤グループの inari111 です。 私の部署は STORES 各プロダクトへ導入する ID 基盤の開発をしています。 今回は ID 基盤内で使われている OpenID Connect フレームワーク ory/fosite にコントリビュートしたことについて書…

STORES 予約 のリファクタリング(前編)

STORES 予約 で Webアプリケーションエンジニアをしています。ykpythemindです。 STORES 予約 では機能開発する際に積極的にリファクタリングを行っています。今回は実際の例からその手法を前後編に分けて紹介します。 想定読者はWebアプリケーション開発を…

モックしないテストも書く話

STORES 予約 でwebアプリケーションエンジニアをやっております。ykpythemindです。 皆さん、Webアプリケーションのテストを書いていますか。 モック(mock)を使っていますか。 今回は自動テスト上で、偽物だけではなく(要所で)本物を使おうよという話を書…

業務の中で出会った default gem のアップグレードによる CVE 対応と rubygems 3.2.0 未満の不具合の話

こんにちは! CTO 室所属エンジニアの id:hogelog です。 もういくつ寝るとクリスマスというわけで毎年クリスマスのお楽しみ、新バージョンの Ruby がリリースされます。次バージョンの Ruby 3.1 では { foo:, bar: } のようなハッシュのショートハンドや改…

マイクロサービス化を進めていたが、切り戻してモノリスで開発しているお話

はじめに この記事はhey Advent Calendar16日目の記事です。 STORES 予約 開発チーム @arrow_make です。 昨年度まで進めていたマイクロサービス化を止めてモノリスで開発するに至った過程について書いていきます。 STORES 予約 におけるマイクロサービス化 …

Go で実装した ID 基盤のアプリケーションアーキテクチャ

こんにちは。hey 株式会社 プラットフォーム本部 基盤グループの inari111 です。 私の部署は STORES 各プロダクトへ導入する共通基盤を開発しており、1つ目のプロダクトとして ID 基盤を Go で実装しました。 この記事では、その Go アプリケーションのアー…

「GraphQL スキーマで支えるレジアプリ開発」というタイトルで話しました

hey で STORES(EC)や STORES レジのバックエンドエンジニアをしております、知花です。 先日“hey Talk” Engineers 新プロダクト「STORES レジ」を支えるエンジニアリングというイベントにて「GraphQL スキーマで支えるレジアプリ開発」というタイトルで、…

Rails開発でやっておくと良かったCI設定集

STORES 予約 でwebアプリケーションエンジニアをやっております。ykpythemindです。 Rails開発で、どのようなアプリケーションでも抑えておくとチーム開発が少し楽になるポイントがあります。今回はいくつか実例を載せながら紹介します。 アプリケーションの…

STORES Rails アプリを Zeitwerk 有効化するまでの道のり

こんにちは、ヘイ株式会社でエンジニアをしている id:hogelog です。 2021年6月に入社し CTO 室という部署に所属しつつなんだかあちこちの部署に首を突っ込むような役割をしています。まだ入社したばかりで把握してないものも多いですが、ビジネスの勢い、人…

STORES ECでのMongoDB(Mongoid)とSTIの使い方紹介

はじめに hey のECとかレジのバックエンドエンジニアをやっている @ucks です。 前回は、Mongoid の基本的な使い方と MongoDB を利用した開発のメリットを紹介しました。 今回はもう少し踏み込んで、STORES (以下、区別のため STORES EC と表記)、STORES レ…

POSレジの長期プロダクト開発

STORES, STORES レジでバックエンドエンジニアをしている @charlie です。 先日 STORES から新しいプロダクト STORES レジ がリリースされました。 プロジェクト発足からリリースまで開発に実は1年9ヶ月かかっています。 全体像は @ide も公開しているので読…

MongoDB(Mongoid)を利用したRails開発のメリット

はじめに はじめまして、hey でECとかレジのバックエンドエンジニアをやっている @ucks です。 STORES (以下、区別のため STORES EC と表記) と STORES レジでは、Webアプリケーションフレームワークに Ruby on Rails 、 データベースに MongoDB 、 ODM (RDB…