LaravelはWebアプリケーションを開発する上で必要な機能が揃っているよくできたフレームワークですが、フルスタックがゆえに、遅い・重いイメージを持たれている方も多いのではないでしょうか?
APIサーバーをLaravelで開発し、Amazon ECS上で運用してきた中で、これまでに取り組んできた負荷対策についてお話しします。
ざっくり、以下のような内容を考えています。
• まずは負荷テストをしてボトルネックを明らかにする
• とにかくキャッシュ
• キャッシュし過ぎたせいか、Redisへの接続数が激増
• 一部のキャッシュをAPCuに逃す
• Read Replica / Write Master
• AWS Fargate にて php-fpm が悲鳴をあげる(11: Resource temporarily unavailable)
• AWS Fargate から EC2 へ変更
• Capacity Provider によるスケーリング戦略
プロポーザル提出時点で、取り組んでいる最中の対策も含みますが、当日(2020/3/21)までには対策を完了し、整理してお話しできるように頑張りますので、期待していてください!
既存で動いているWebサービス内でWebメディアをやることになりました。
その中で0からCMSの機能を開発するには少し開発リソースが足りなかったので、ヘッドレスCMS「microCMS」でAPI連携して開発工数を削減した話をします。
10年近く勤めた大手IT企業を辞め、ファイブニーズという二次流通専門の酒屋にジョブチェンジしました。
入社直後に経験した数々の苦労や失敗談等々を交えつつ、
私が大手IT企業で培ったチート能力を発揮して、化石状態にあった酒屋のITをいかにして改善したかの
事例を共有させて頂きます。
トピック一覧
-ベンダー製独自フレームワークをLaravelでリプレースし、開発生産性を10倍以上に改善
-AWSの機能をフル活用したセキュリティ、運用性、パフォーマンスを劇的に向上
-Java中心のキャリアを積んできたエンジニアがPHP/Laravelを初めて触っての感想
-大手企業と中小企業それぞれのよさについて
-IT系と事業系の常識、働き方の違いについて
-中小事業会社のエンジニア採用戦略
弊社Hameeでは過去5年に渡りQiitaにてアドベントカレンダーに参加しています。
私は1年目から取りまとめを担当しており、2018年のアドベントカレンダーではスポンサーをやるまでになりました。
・どんなキッカケで開始されたのか
・アドカレを行なうメリット、デメリット
・5年やってみて見えてきたもの
・これからやってみようと思う人と団体にアドバイス
このあたりを中心にお話できればと思います。
みんなアドカレやろうぜ!
プッシュ通知の配信は、ReproやOneSignalといったサービスを利用する事が一般的です。
しかし、リミアではサーバ側の入稿及び配信システムを内製化しました。
内製化した理由、プッシュ通知の仕組み、開発したシステム、それを使った業務改善事例について説明します。
このセッションを聞く事で、プッシュ通知の仕組みや改善事例について把握できるだけでなく、静的型付言語が使われている場所にPHPを導入する参考事例を知る事ができます。
中学生の頃にMSXというパソコンのCPUであるZ80のプログラミングを体験していました。
その約25年後、2016年にPHPで書かれたゲームボーイエミュレータのコードを読んで衝撃を受けました。ゲームボーイのCPUはZ80ベースであり、エミュレータで実装されていたのはまさにZ80の命令だったのです。この体験で、エミュレータがハードウェア仕様をソフトウェア的に表現したものであることを理解しました。
そしてさらにその3年後。名著「CPUの創りかた」で紹介されているCPU、TD4を実装し衝撃を受けました。そこに見たCPUは電気回路として表現された状態機械でした。
このトークではPHPでTD4のエミュレータを実装し、マシン語実行環境、エミュレータの対象、そして電気回路としてのCPUがどの様に動作するのかを解説し、CPUの魅力をみなさまにお伝えします!
昨年のデプロイ戦略に続き、今年はAWS Lambdaへのデプロイ一本でお話します。
PHP以外の言語では、サーバレスの話題が多くなっていますが、PHPではまだまだ実例が少ないと思います。
本トークでは、Brefを利用し、既存のLaravelプロジェクトを明日からでもLambdaで動かすために必要なポイントを解説します。
LaravelをLambdaで動かすことにより、PHPerはよりコードに集中できるようになり、スケーラブルなシステムを構築可能です。コストも大幅に削減できます。
明日からサーバレスの世界に踏み出しましょう。
開発初期段階ではテーブル構成の変更が激しく、マイグレーションファイルの管理が混沌となっていました。
開発段階はカジュアルに、スムーズにテーブル構成を変更して高い開発をしたい!
そんな要望に応えるためLaravel開発者のDX(開発者体験)を爆上げする、
Laravelのマイグレーションファイル生成サポートツール「laravel-dacapo」を開発したお話をします。
Laravelはあらゆる規模や用途のアプリケーションに対応する柔軟なフレームワークです。
柔軟さ故に機能は幅広く、全体に精通するのは容易ではありません。Welcome画面の次に何を学ぶべきなのか解らず戸惑った方は多いのではないでしょうか。
このセッションではLaravelの全体像をユースケースやレイヤー毎に分類することで、これからLaravelを学び始める方やプロジェクトに導入しようとしている方へ学習や検討の指標を提供します。
RDBはアプリケーションの心臓部です。たった1つのSQLがサービス全体に深刻な負荷を与えることも珍しくありません。
SQLを意識せずコードが書けるのはEloquentの大きなメリットですが、実際のSQLを書けない分だけトラブルシューティングは難しくなります。
意図せぬ負荷は避けたいが、普段はSQLを意識せずコードを書きたい。
この両立は可能でしょうか?データベースエンジニアの立場からお話しします。SQLの知識の有無は問わない内容です。
RDBはアプリケーションの心臓部です。たった1つのSQLがサービス全体に深刻な負荷を与えることも珍しくありません。
SQLを意識せずコードが書けるのはEloquentの大きなメリットですが、実際のSQLを書けない分だけトラブルシューティングは難しくなります。
意図せぬ負荷は避けたいが、普段はSQLを意識せずコードを書きたい。
この両立は可能でしょうか?データベースエンジニアの立場からお話しします。SQLの知識の有無は問わない内容です。
GitHub 上で PHP の関数やクラスにマウスをあてるとポップアップが表示され、該当の引数の数や、サマリを表示したりマニュアルに飛べたりする Chrome 拡張機能の GitHub PHP Function Jumper の開発の苦労話からどのように作ったのか、 Chrome Web Store への公開、そして今後の展望をノンストップでお届けします。
https://chrome.google.com/webstore/detail/github-php-function-jumpe/pmgmgaejgbjiooiklinoelilmnldlhcf
GitHub 上で PHP の関数やクラスにマウスをあてるとポップアップが表示され、該当の引数の数や、サマリを表示したりマニュアルに飛べたりする Chrome 拡張機能の GitHub PHP Function Jumper の開発の苦労話からどのように作ったのか、 Chrome Web Store への公開、そして今後の展望をノンストップでお届けします。
https://chrome.google.com/webstore/detail/github-php-function-jumpe/pmgmgaejgbjiooiklinoelilmnldlhcf
恥ずかしいお話ですが、自分は最近までテストコードをちゃんと書いたことがありませんでした。。。
LTではLaravelを新規に導入したタイミングで一念発起し、テスト駆動開発を始めたお話です。
テスト初心者でも、テスト駆動開発は始められるんだ!と、
自分と同じような状況の方にとって、少しでも励みになれればと思います。
▼あらすじ
・テスト駆動開発したいなーと、思ったきっかけ
・0か100じゃなくて、少しづつ始めることが大切
・テスト駆動開発始めてみた感じたこと
慣れ親しんだフレームワークでいろんな案件に挑戦するのも良いですが、
エンジニアとしては、新しい技術で案件に挑戦したくなるものですよね。
LTでご紹介させていただきたいのは、
Laravelを社内標準に追加させてもらった際に
社内であれこれ相談・説得したり、実際にサービスを作ったりしたお話です。
▼あらすじ
新しいフレームワークを新しく導入するには色々とハードルを超えないといけませんでした。
特にクライアントのサービスで導入するには
以下のチェックポイントをクリアして、ディレクターに納得してもらう必要がありました。
・導入することによりクライアントに与える事ができるメリットを考える
・工数がオーバーしないか確認する
・技術相談できる相手がいるか確認する
これらのポイントをどのようにクリアしていったのか...!?
Laravelを導入して、組織はハッピーになれたのか...!?
去年、私は『新卒2年目がLaravelコントリビュート出来た理由とその面白さ 』というタイトルで、
初めて登壇をしました。
その時には、面白そうだからという理由で登壇をしました。
すると、仲間が増えて、登壇も気づいたら5回目?
そんな、エンジニアとして人生が変わっていった過程と、その理由を話します。
みんなも恐れず、アウトプットしていこう!
『Laravel5系』ってひとくくりにするのは間違ってるってお話します。
■結論
Laravel6.xからセマンティックバージョニングになったよ
Laravelが6になってから、めっちゃバージョン上がってない!?
って思った人はたくさんいると思います。
でもそれは、5までと違って、6からはバージョニングが変わったからです!
■内容
・セマンティックバージョニングって?
・今起こってるバージョンアップって?
・どんなの増えてる?
・セマンティックバージョニングにしないって過去のドキュメントにあった気がすr
注)この話はフィクションです。きっと。
■対象
・今最新を使っている人(メインターゲットです)
・これからやる人
・もうやって、あるある話を聞いて涙したい人
皆さん、バージョンアップしてますか?
PHPや、Laravel、古くなってきたからバージョンアップしよう。
よくある話ですね。
でも、何も考えずにプログラムを書くと、あとで痛い目を見ます。
これは、本当にあったかはわからない、バージョンアップで悲しみを背負った人の話。
■内容
・vendor配下をいじった報い
・コードをコピペで拡張した悲しみ
・Laravelを見捨ててPHP上げたらLaravelがお亡くなりに
・テストコードなんてなかった
・このライブラリはもう居ない
・消えた機能
・見つからない変更点
・再度襲いかかるコピペの悲しみ
・見えない終わり
・把握できない予算、見積もり
・PHPのアプデは簡単だったという圧力
・本当はマイナーバージョンアップではない誤解
・把握できないバージョンアップの利点
注)この話はフィクションです。きっと。
■対象
・今最新を使っている人(メインターゲットです)
・これからやる人
・もうやって、あるある話を聞いて涙したい人
皆さん、バージョンアップしてますか?
PHPや、Laravel、古くなってきたからバージョンアップしよう。
よくある話ですね。
でも、何も考えずにプログラムを書くと、あとで痛い目を見ます。
これは、本当にあったかはわからない、バージョンアップで悲しみを背負った人の話。
■内容
・vendor配下をいじった報い
・コードをコピペで拡張した悲しみ
・Laravelを見捨ててPHP上げたらLaravelがお亡くなりに
・テストコードなんてなかった
・このライブラリはもう居ない
・消えた機能
・見つからない変更点
・再度襲いかかるコピペの悲しみ
LaravelとVue.jsはセットで使われることが多いと思いますが、MPAに関連する内容というものは中々目にしないように感じます。
このセッションでは、私が実際の業務を通して、
LaravelとVue.jsを使用してMPAを作って感じた課題、それをどう解決していったのかをお話します。
このセッションを聞くと、LaravelとVue.jsでMPAを作るときに、Vue.jsのコードを書く上で快適で柔軟な対応を取る1つの指針になるでしょう。
また、私自身がまだ見えていない課題の領域へ、一歩踏み出す足掛かりになるかもしれません。
※このセッションは、Laravelの資源を利用する形でVue.jsでのフロントエンドの開発を快適にするため、Vue.jsの要素が強めです。