Yappli Tech Blog

株式会社ヤプリの開発メンバーによるブログです。最新の技術情報からチーム・働き方に関するテーマまで、日々の熱い想いを持って発信していきます。

Laravel

【Laravel】ECSのTaskProtectionを利用して長時間実行Jobを安全に終了できるようにする

はじめに 現状の非同期処理の構成 ECS Task Protectionとは? Laravelでの実装例 ⚠️ 注意点 基底クラス: BaseProtectedJob ポイント 継承先のクラスの実装例 ポイント サービスクラス: ECSTaskProtectionService ポイント 補足 アプリケーション以外で考慮す…

バッチ処理をECSタスクスケジュール化するときに注意したいポイント

はじめに こんにちは、サーバーサイドエンジニアの佐野きよです。 最近、EC2 + Cron + Laravelで動いていたバッチサーバーをECSのタスクスケジュールへ移行しました。 その際に何点か注意したいポイントがあったので、同じ轍を踏まないようにこちらで共有し…

ダウンタイム発生時にLaravelの長時間実行Jobを安全に制御する手順

概要 こんにちは、サーバーサイドエンジニアの佐野きよです。 システムの安定運用のために、データベースのメンテナンスやバージョンアップは欠かせません。しかし、これらの作業には数分から数十分程度のダウンタイムが伴うことがあります。 私たちのシステ…

LaravelのSanctumで一部のアクセスで401エラーが発生してしまった原因と対処法

はじめに 事象 原因 レプリケーション遅延による影響だった stickyオプションは同一リクエスト上でしか有効にならない 対処方法 類似ケース まとめ さいごに はじめに こんにちは。サーバーサイドエンジニアの佐野きよ(@Kiyo_Karl2)です。 ヤプリの一部の…

Laravel Worker x SQSの組み合わせで少しハマったこと

こんにちは!SREグループの三橋です。 普段はNew Relicのことばかり書いている私ですが、本日はLaravel Worker x SQSのお話しをします。 弊社ではちょうどPHPアプリケーションのコンテナ化対応に取り組んでおり、その対応の中でLaravel WorkerとAmazon SQSを…

Alpine.jsと管理画面での利用例

サーバーサイドエンジニアの田実です。 顧客管理サービスである Yappli CRM の社内用管理画面ではjQueryが使われています。jQueryは簡易的なDOM操作やインタラクティブなデザイン、アニメーションを実装するには便利なツールである一方で、要件が複雑になる…

Inertia.js によるSPA実装の効率化とその仕組み

サーバーサイドエンジニアの田実です! SPAはMPAよりもユーザ体験が上がる可能性がある*1一方で、開発・運用が複雑になりがちです。APIスキーマの設計・管理、フロントエンドのルーティングの管理、認証認可・CORSなど、データを取得して表示するだけの簡単…

Yappli CRMの開発者体験を3ヶ月で爆上げした

サーバーサイドエンジニアの田実です! ヤプリではスマホアプリをノーコードで開発できる Yappli のプロダクトだけではなく、アプリや外部システムと連携可能な顧客管理基盤である Yappli CRM というプロダクトも提供しています。Yappli CRMのバックエンドの…

実行時間に1週間かかっていた日次バッチ処理を6分に短縮した話

サーバーサイドエンジニアの田実です! タイトルの通り、完了まで1週間かかっていた日次バッチ処理を6分に短縮して1500倍以上高速化したので、今回はその改善について紹介したいと思います。 587459秒 = 6.7日かかっていたバッチが… 改善して6分程度に! …