PHP– tag –
-
“Logs in Context + Infinite Tracing + カスタム属性”でNew RelicのObservabilityを爆上げする
こんにちは、インフラチーム テックリードの櫻井です。 今回はアプリケーションモニタリングのために導入しているNew RelicにLogs in ContextとInfinite Tracingとカスタム属性を導入して、システムのObservabilityを向上させたことについて紹介したいと思います。 【Observability(可観測性)とは】 まずObservability(可観測性)とは処理時間やエラーなどシステム内部の状態がどれだけ可視化されているかを示す指標です。 Observabilityが高ければボトルネック解消や障害発生時の迅速な対応が可能になり、より... -
proc_open()の標準入出力を使ってコンテナ上でコマンドを実行する
新卒1年目、バックエンドを担当している永井です。最近色々学ぶことができたのでここに共有したいと思います。また、このブログで少しでも誰かの役に立てたら嬉しいです。 (本ブログに出てくるコードは正しく動かないです。説明用に伝えたいことしか書いていないのでご了承ください。) 【背景】 SSRF対策の一環でコンテナ上でコマンドを実行するようにしていました。そこで、コンテナ経由で実行したコマンドの標準入出力を扱ったので、その手法を紹介します。 https://developers.prtimes.jp/2023/06/13/prevent... -
JWTに用いる署名アルゴリズムは何が適切かPHPで検証してみた
こんにちは、PR TIMESで学生インターンをしている田中湧大です。 今回は、PHPでパフォーマンスの観点から署名アルゴリズムについて検証してみたのでその紹介をしたいと思います。 【検証しようと思った背景】 現在、PR TIMESでは各マイクロサービスが独自のsessionを発行しており、様々な問題が発生しているため、認証基盤をJWTを用いたものに置き換えようと改善を進めています。 その過程でJWTに署名するアルゴリズムを選択する必要がありました。 PR TIMESのサービスはPHPで実装されています。なのでPHP上で候補... -
インターン生がSmartyのバージョンアップに取り組んだ話
こんにちは、PR TIMESの開発本部でインターンをしている三宅です。インターンではレガシーなPHPのコードと向き合い続けながらプロダクト開発とそれを支える技術について学んでいます。今回は、インターン中に取り組んだPR TIMESで使われているSmartyのバージョンアップを行ったことについて書いていきます。 【なぜ、Smartyのバージョンアップを行ったのか】 当時PR TIMESで使われていたSmartyのバージョンが2系が使用されていました。しかし、Smarty2.xのメンテナンスは終了しており、PR TIMES全体で取り組んでい... -
GitHub Actions上でPHPUnitを並列に動作させて、CI実行時間を1/4にしました
こんにちは、普段PR TIMES STORY(以下STORY)の開発リーダーをしている岩下(@iwashi623)です。 今回は年末のコードフリーズ期間中に、CI実行時間の改善に取り組んだ件について話していこうと思います。 【背景】 STORYではバックエンドのPull Request作成をトリガーにして、CircleCi上でTestを実行していました。Testの実行時間は11〜13分ほどでした。 常々、このTestの実行時間が長すぎて開発体験の質が落ちているような気がしていました。 Testの実行時間が長すぎると何が問題になるのでしょうか? 以下がSTORY... -
Zero Downtime Migration from self-managed Elasticsearch to AWS OpenSearch at PR TIMES
Hello, I’m Duc, currently working on moving our on-premise Elasticsearch server to AWS OpenSearch Service. In this post, I will share how the old Elasticsearch server was replaced by a new one whose core is AWS OpenSearch Service. 【Introduction】 At the time I'm writing this blog, most of processes that require data from Elasticsearch have been replaced by the new AWS OpenSearch Service. But if we look back over the last few months, PR TIMES's search engine system was bas... -
PR TIMESにおけるメール送信機能をリファクタリングしました
こんにちは、開発本部のソンです。最近、PR TIMESのPHPバージョンアッププロジェクトに参加していて、PR TIMESにおけるメール送信機能のリファクタリングを行いました。これを通して、クラス設計やテストしやすいコードの書き方など様々な技術を身に付けました。 この記事では、なぜメール送信機能のリファクタリングを行ったかと、それを実装した話について書きたいと思います。 【なぜメール送信機能のリファクタリングを行ったのか?】 PR TIMESのPHPバージョンアップを行うにあたって、レガシーコード上の多く... -
シンボリックリンクを活用した無停止デプロイとファイル削除を実装しました
こんにちは、インフラチームテックリードの櫻井です。 今回は prtimes.jp のデプロイ改善の一環としてシンボリックリンクを使った無停止デプロイと rsync --delete によるファイル削除とデプロイスクリプトの速度改善を行ったので紹介します。 【シンボリックリンクを使った無停止デプロイ】 まず初めにシンボリックリンクを使った無停止デプロイについて紹介します。 今まで prtimes.jp のデプロイは実際に稼働しているアプリケーションのディレクトリにデプロイサーバーから直接 rsync コマンドを実行し、ファイ... -
企業ページの表示速度を改善しました
こんにちは、バックエンドエンジニアの江間です。 ある日、一通のメッセージが届きました。 ネタバレをすると、ある API が実行している SQL がスロークエリになっており、そのレスポンスが返ってくるまで DOM のレンダリングが行われていない事が原因でした。 この記事では、 New Relic Application Performance Monitoring (APM) を使ったスロークエリの特定と、それを実際にどうやって解決したのか、更に速度改善を行ってAPIの平均レスポンスタイムを約5.78倍にした話についてを書いていきます。 【まずは当た... -
PHPの改善 !== PHPのバージョンアップ
こんにちは、今日もがんばってるuzullaです。PR TIMESでPHP等と向き合い続け、色々なことを日々やっています。 さて、PHPコードの改善というと新しいバージョンのPHP対応と言われて久しいですが(私の感想)、今日のエントリのオチからいえば「PHP5でもよいプログラムは書ける」です。 【】 PR TIMESに入った当初「PHPのバージョンが古いからダメだ」というムードがありました(まあ、良くはないのだが)。それに対して私は「なぜ?」となったのを覚えています。 PHP7や8になって増えた機能は非常に多岐にわたり魅力...
12