PHP
はじめに 現状の非同期処理の構成 ECS Task Protectionとは? Laravelでの実装例 ⚠️ 注意点 基底クラス: BaseProtectedJob ポイント 継承先のクラスの実装例 ポイント サービスクラス: ECSTaskProtectionService ポイント 補足 アプリケーション以外で考慮す…
はじめに こんにちは、サーバーサイドエンジニアの佐野きよです。 最近、EC2 + Cron + Laravelで動いていたバッチサーバーをECSのタスクスケジュールへ移行しました。 その際に何点か注意したいポイントがあったので、同じ轍を踏まないようにこちらで共有し…
概要 こんにちは、サーバーサイドエンジニアの佐野きよです。 システムの安定運用のために、データベースのメンテナンスやバージョンアップは欠かせません。しかし、これらの作業には数分から数十分程度のダウンタイムが伴うことがあります。 私たちのシステ…
はじめに カスタムルールを作成した背景 作成したカスタムルール 補足 一旦変数に入れられるケース インスタンス化直後にメソッドチェーンされないケース カスタムルールのテスト MustCallExpireAfterRuleTest.php NoMissingExpireAfter.php MethodCallWitho…
はじめに 事象 原因 レプリケーション遅延による影響だった stickyオプションは同一リクエスト上でしか有効にならない 対処方法 類似ケース まとめ さいごに はじめに こんにちは。サーバーサイドエンジニアの佐野きよ(@Kiyo_Karl2)です。 ヤプリの一部の…
はじめに 【前提】Laravelのジョブの失敗時の挙動について すべてのリトライに失敗したらエラー通知させる方法 リトライしたい例外をcatch リトライさせるためだけの独自例外をつくる まとめ さいごに はじめに こんにちは。サーバーサイドエンジニアの佐野…
この記事は Yappli Advent Calendar 2024 の8日目の記事です。 はじめに 発生した事象の詳細と原因 なぜ本番環境でのみ発生していたのか? testssl.sh 本番 ステージング どのように解決したか まとめ さいごに はじめに こんにちは。サーバーサイドエンジニ…
はじめに Rerun failed testとは? 実装ポイント 前提 環境 config.ymlの実装 circleci tests runを利用する before after ハマりポイントその1 - junit.xmlが出力されないケースの考慮 ハマりポイントその2 - テスト再実行時に persist_to_workspace ステッ…
こんにちは!SREグループの三橋です。 普段はNew Relicのことばかり書いている私ですが、本日はLaravel Worker x SQSのお話しをします。 弊社ではちょうどPHPアプリケーションのコンテナ化対応に取り組んでおり、その対応の中でLaravel WorkerとAmazon SQSを…
はじめに こんにちは。サーバーサイドエンジニアの佐野きよ(@Kiyo_Karl2)です。 ヤプリではコード品質維持のため、CI(継続的インテグレーション)を取り入れており、GitHubへのプッシュをトリガーに自動テストや構文/フォーマットチェックなどが実行されます…
はじめに こんにちは。サーバーサイドエンジニアの佐野きよ(@Kiyo_Karl2)です。 PHPでは、declare(strict_types=1);をファイルの先頭に記述することで厳密な型チェックを有効にすることができます。これにより暗黙の型変換がされなくなり、関数やメソッドの…
サーバーサイドエンジニアの田実です! 今回はPHPのモックライブラリである mockery/mockery がどのようにして動いているのかを紹介します。 本記事は PHP Advent Calendar 2023 の5日目の投稿になります! コードリーディング 今回紹介するmockery のバー…
サーバーサイドエンジニアの田実です! SPAはMPAよりもユーザ体験が上がる可能性がある*1一方で、開発・運用が複雑になりがちです。APIスキーマの設計・管理、フロントエンドのルーティングの管理、認証認可・CORSなど、データを取得して表示するだけの簡単…
サーバーサイドエンジニアの田実です! 2023年3月に開催された PHPerKaigi 2023 のパンフレット記事に PHPをバージョンアップするための技術と戦略 というタイトルで寄稿させていただきました*1。技術要素に依らず汎用的な内容で、パンフレット記事だけにし…
サーバーサイドエンジニアの田実です! ヤプリの一部のサービスはPHPで実装されており、それぞれのサービスは品質向上を目的として静的解析ツールである PHPStan を導入しています。 PHPStanにより多くの不具合を事前に検知することができるのですが、PHPSta…
サーバーサイドエンジニアの田実です! YappliのサービスではコンテンツデータをSQLite3で管理しています。SQLite3を使っている理由や課題の詳細は以下の記事に書いています。 tech.yappli.io コンテンツデータ以外にもアプリやアカウントのデータもコンテン…
サーバーサイドエンジニアの田実です! ヤプリではスマホアプリをノーコードで開発できる Yappli のプロダクトだけではなく、アプリや外部システムと連携可能な顧客管理基盤である Yappli CRM というプロダクトも提供しています。Yappli CRMのバックエンドの…
サーバーサイドエンジニアの田実です! タイトルの通り、完了まで1週間かかっていた日次バッチ処理を6分に短縮して1500倍以上高速化したので、今回はその改善について紹介したいと思います。 587459秒 = 6.7日かかっていたバッチが… 改善して6分程度に! …
サーバーサイドエンジニアの田実です! YappliのPHPアプリケーションに symfony/panther を使ってJavaScriptの処理を含めた自動テストを導入したので、 導入の背景とインストール方法などを紹介をしたいと思います。 ※この記事は PHP Advent Calendar 2022 …
サーバーサイドエンジニアの田実です! Yappliでは一部のネイティブAPIのアプリケーションや社内用管理画面、マイクロサービスなどをPHPを使って構築しています。 今回はYappliにおけるPHPのテストと現状の課題について紹介したいと思います。 詳細はこちら…
サーバーサイドエンジニアの田実です! PHP Conference Japan 2022 に参加・登壇してきました!今回はそのレポートになります! 登壇してきたよ 今回は業務に全く関係ない話ですが登壇してきました! speakerdeck.com プログラミング言語のソースコードをい…
サーバーサイドエンジニアの田実です! Yappliではインフラ・アプリケーションの監視、メトリクスの計測にNewRelicを使っています。 今回、YappliのサーバーサイドアプリケーションにNewRelicを適用したので紹介したいと思います。 Go x gRPCなアプリケーシ…
サーバーサイドエンジニアの田実です。 もうすぐ PHPerKaigi 2022 が始まりますね! 今回も面白そうなセッションばかりで非常に楽しみです。 phperkaigi.jp ヤプリは PHPerKaigi 2022 にダイアモンドスポンサーとして協賛しています!! ヤプリは創業期からP…
こんにちは、エンジニアの尾宇江です。 goでプルリク作ってリリース作業を改善してみた。のエントリーに引き続き、Goを使ったちょっとした改善をした話です。 最初に 書いたコードをcommitした後、「あープリントデバッグで仕込んでたvar_dump消し忘れた」っ…
サーバーサイドエンジニアの田実です! ヤプリではPHPとGoを使っています。ということで(?)、PHPからGoを呼び出す方法について紹介します。 なおこの記事はGoからPHPを呼び出す方法の姉妹投稿(?)となっております。 ※この記事は PHP Advent Calendar 2…
サーバーサイドエンジニアの田実です! ヤプリではGoとPHPを使っています。ということで(?)、GoからPHPを呼び出す方法について紹介します。 なおこの記事はPHPからGoを呼び出す方法の姉妹投稿(?)となっております。 ※この記事は Go Advent Calendar 20…
こんにちは。サーバーサイドエンジニアの武井です。他社で稼働していたサービスをYappliのサービスに統合いたしました。統合から1年以上経過しましたので当時を振り返っての経験をお話ししたいと思います。 何を統合したか これは会社の沿革にも書いてあるこ…
サーバーサイドエンジニアの田実です! PHP Conference Japan 2021でYappliの改善事例を紹介してきました! 今回はその登壇・参加レポートになります。 セッションの内容 独自フレームワークPHPアプリケーションの改善戦略というタイトルで発表しました!*1 …
PHPのカバレッジを100%にした話 はじめまして、2月入社の尾宇江です。オーイェーって呼んでほしいです。 すでに、Yappliの新CMSはGo言語でフルリニューアルされているのですが、 一部にはPHPで書かれているリポジトリも残っております。 今回そのリポジトリ…