久しぶりにAWS Lambda を使用しました。 概要 通信容量の削減および表示速度の向上を目的とした画像のリサイズをLambda@Edgeで行います。 Lambda@Edgeとは Lambda@Edge は、Amazon CloudFrontの機能で、アプリケーションのユーザーに近いロケーションでコードを実行できるため、パフォーマンスが向上し、待ち時間が短縮されます。Lambda@Edge では、世界中の複数のロケーションでインフラストラクチャをプロビジョニングまたは管理する必要はありません Amazon Web Services 環境の構築(パッケージ) Node.js バージョンは 14 を使用 EC2 等の Amazon Linux 上で npm install します。 Node バージン14 インストール $ curl -o- https://raw.githubusercon
技術部の久須 (@hkusu_) です。クックパッドではモバイル基盤グループにて Android 版クックパッドアプリの開発・メンテナンスに携わっています。 普段の業務とは少し異なるのですが、画像リクエストに応じリアルタイムに画像を変換してレスポンスするという仕組みを AWS の Lambda@Edge を用いて実現してみたので、構築した環境の内容やコードを紹介したいと思います。画像変換の内容はコードの実装次第で大概のことは実現できそうですが、今回のコードの内容はスマホ向け WEB サイトやモバイルアプリ向けの画像配信を想定し、通信容量の削減および表示速度の向上を目的とした画像のリサイズ(主に縮小)と WebP 形式への変換です。 注意:実運用している段階ではないので参考にされる場合はご注意ください。ちなみにクックパッドには本番環境とは切り離された調査・検証用の AWS 環境があり、今回の
画像アップロード時のシーケンス図 今回は大量のuploadが同時に来ることを想定していないのと画像処理はしないものとしています。ここは単にRailsがS3に受け取った画像をuploadして保存したS3のkeyをDBに保存するだけです。このとき、S3に保存するkeyがURLの一部になるので推測不可能なハッシュ値で保存するようにしておきます。もちろん、Railsを通すのでアプリケーション側での認証が可能です。 ちなみに、この部分もオフロードしたい場合は、S3のpresigned URLを発行し、そのURLに対してuploadしてもらうのが良さそうだと料理画像判定のためのバックエンドアーキテクチャを見て作った後に思いました。 画像取得時の処理シーケンス 画像取得時のシーケンス図 署名付きURLは、画像リストの取得時にCloudFrontが使う秘密鍵と同じ鍵でURLを署名してクライアントに返します
Amazon Web Services ブログ Amazon CloudFront & Lambda@Edge で画像をリサイズする 多くの画像に対してリサイズを行ったり、新しいデザインレイアウトにウォーターマークを付与したり、ブラウザのサポートのためにフォーマットの最適化を行ったことはありませんか? 画像毎に事前処理を行う必要なく、必要に応じてその場ですぐに画像を自動生成できないかとおもったことはありませんか? Lambda@Edge はそれらを可能にし、ユーザーの利便性を向上させ、帯域使用量を削減します。 Lambda@Edge の準備: AWS Lambda はサーバーのプロビジョニングや管理の必要なしにコードを実行できます。 そして利用量に応じて支払いを行います 。 つまりコードが実行されていないときは無料です! Lambda は自動スケーリングするとともに耐障害性を兼ね備えていま
2020-05-29Sentryをちゃんとセットアップしたら、想像以上にできるやつだった話(フロントエンドのエラー監視) はじめにこんにちは。エンジニアリング事業本部の@1010realです。 今年初めからスマートショッピングに入社して、既存サービスの管理画面のリプレースや運用・新規機能開発におけるフロントエンド開発を全般的に行っております。 今回はWebフロントエンド開発における本番環境のエラートラッキング及びそのバグフィックスについて、Sentryを用いて効率的に行う方法を紹介しようと思います。 内容としては、Webフロントエンドに限らず、バックエンドやアプリなど、Sentryが対応しているPlatformであれば、参考にできる内容となっています。 目次はじめに目次Sentryについてなぜこの記事を書こうと思ったかちゃんとセットアップってどういうこと?導入手順 最初のエラーをトラッキン
こんにちは。プラットフォーム技術戦略室の青木です。 今までLaravelのアプリケーションを nginx + PHP-FPM でデプロイしていて、ある人に「PPMの方がダントツに早いで!」と聞きましたので今回初めて触ってみようかと思います。*1 Laravel https://github.com/laravel/laravel PPM https://github.com/php-pm/php-pm Terraform https://github.com/hashicorp/terraform AWS Fargate https://aws.amazon.com/jp/fargate/ PPMって何? PHP-FPM 改めてPPMについて 作ったアプリをDockerImage化する 1. Laravelの構築 2. Dockerfile作成 & Build 3. ローカルで起動し、動作
GitHub Actionsでdocker buildすることが多い。このときのキャッシュをどうするかという話題。 基本 GitHub Actionsでdocker buildしてAmazon ECRにdocker pushする、典型的な.github/workflow/docker-push-to-ecr.ymlはこういう感じ。 name: Push to Amazon ECR on: push: branches: [ 'main' ] jobs: docker: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: docker/setup-buildx-action@v1 - name: Configure AWS credentials uses: aws-actions/configure-aws-c
laravelのキューにjobを入れる方法を記載していきます。 queueの作成とjob実行の流れ、 まずコンテナに入り、 php artisan make:job QueueTest を実行しましょう。 そうすると、 App配下にJobsフォルダができて、その中にQueueTest.phpができています。 これから、あるページにアクセスしたり、あるボタンを押したりしたときに このQueueTest.phpのhandle()に入ってくるようになります。 今はQueueTestという名前ですが、 実際はメール用のQueueならQueueEmail.phpや通知用のQueueNotice.phpとなり、そこにjobが入ってくるというイメージです。 これはまずおいといて、 例えばfollowなんかをされたりしたときに通知を送りたいなと思ったら、 まずこのqueueTestをインスタンス化します。
先日、現在開発をしているサービスのQueue workerの一部をAzure Container Appsに移行しました。とても使いやすいのでメインのAPIの移行準備として、Github Actions使用したB/Gデプロイの実験をしてみました。 サンプルコードの準備 今回実験用にデプロイするのは、クイック スタート: Azure Container Apps にコードをデプロイする で使用している、 Azure Container Apps Album APIを使いたいと思います。 このAPIはnodejsで実装されていて、静的に保持したデータを返すAPIが一つだけ定義されています。まずは手元の環境で実際に実行してみます。 自身の環境でGithub Actionsを実行したいので、 Azure Container Apps Album APIを fork してpullします。 Docke
はじめに 概要 注意点 定期実行 アクティブ化のワークフロー 非アクティブ化のワークフロー おわりに 採用アナウンス はじめに エキサイト株式会社 バックエンドエンジニアの山縣です。 私たちのチームでは、Azure Container Appsを使用して、バックエンドサーバーを構築しています。 Azure Container Appsでは、主にリソース使用量によって課金されます。 そのため、開発環境やステージ環境など、常時稼働しないようなコンテナアプリでは、 使用しない深夜帯や休日に稼働を停止して、リソースを使用しないようにするのが望ましいです。 本記事では、GitHub Actionsを使用したリビジョンのアクティブ化 / 非アクティブ化について紹介します。 概要 Azure Container Appsのリビジョンは、レプリカ数が0だったり、非アクティブな状態だったりすれば、課金される
この記事は GRIPHONE Advent Calendar 2021 18日目の記事です。 本記事はGitHub Actions上で動作するDocker Compose上のPHPUnitを、actions/cache@v2とBuildxの組み合わせで高速化することを狙った記事です。 PHPerの皆さまなら誰もがお世話になっているだろうDocker、便利ですがイメージのプルやビルドに時間がかかりますよね。開発環境であれば大きな問題にはなりませんが、GitHub ActionsのようなCIでは早く結果を見れるようにしたいものです。 私たちのプロジェクトのGitHub Actions上で動いているPHPUnitも、結果が出るまでに約6分間もかかってしまっていました。これではいかんと、さまざまな仕組みを使い結果的に2分弱まで短縮することができましたので、そのやり方を公開したいと思います。 従来の
docke-composer build時間掛かるし、コーヒーでも飲んでたら終わるだろうって思ってたら終わってなかった・・ $ docker-compose build Building ocroboticspagecreater [+] Building 31.6s (9/27) => [internal] load build definition from Dockerfile => ERROR [ 4/22] RUN apt-get -y update ------ > [ 4/22] RUN apt-get -y update: #8 0.696 Get:1 http://deb.debian.org/debian bullseye InRelease [116 kB] #8 0.791 Get:2 http://deb.debian.org/debian-security bu
Docker Composeは複数のDockerコンテナを効率的に管理・運用するためのツールです。ローカルでの開発ではもちろん、CI/CD環境でのテスト実行にも利用されます。この記事では、Github Actions上でDocker Composeをキャッシュを効かせて実行する方法について解説します。 1. Github ActionsでのDocker Composeの利点 Docker Composeを使用することで、データベースなどの依存サービスを持つアプリケーションのテストが簡単になります。Github Actionsでもこの利点はそのまま活かせます。 今回は、データベースにMySQLを利用し、Go言語で書かれたプログラムをテストするケースを紹介します。 Goのコードとテストは、DBに接続してpingを送るだけの内容となっています。 package main import ( "fm
この記事は、「HIKKY開発者ブログ」より移動されたリバイバル記事となっています! 今後も専門的な記事をピックアップしていきますので、興味がある方はぜひご覧ください。 開発者ブログの人気記事 HIKKYに入社しました!いいところですよ。 【Virtual Market】Vket Quest会場の移植をしてみて:前編 HIKKYでのWebGL開発模様 それではリバイバル記事スタートです! HIKKY のバックエンドエンジニアのあったんです。 今回は github actions の docker-compose のビルド時にキャッシュを利用しようとして苦戦した結果うまくいかなかったので、メモを残します。 CircleCI ではCircleCI を利用する際は、DLC(docker layer caching)を利用することで特にキャッシュの仕組みを意識しなくても簡単にキャッシュを導入すること
皆さんこんにちは。虎の穴ラボの辻村です。 この記事は「虎の穴ラボ 夏のアドベントカレンダー」17日目の記事です。 目次 目次 対象とする読者 前提 開発・実行環境 ホスト環境 Docker環境 既存環境調査 アプリケーションサーバー OSバージョンに基づく対応イメージ特定 Amazon Linux 2の場合 CentOSの場合 ライブラリ確認 まずはコンテナ作成 ライブラリバージョン突合 依存ライブラリリストの見方 Rubyのバージョン突合 Dockerfile記述例 Bundlerのバージョン突合 Dockerfile記述例 サーバーのタイムゾーン突合 Dockerfile記述例 サーバーの言語設定突合 Dockerfile記述例 所属グループ突合 Dockerfile記載例 その他使用ミドルウェア、ライブラリ突合 DBサーバー バージョンを確認 キャラクターセット、照合順序設定、タイム
この記事は、Speee Advent Calendar5日目の記事です。 昨日の記事はこちら! tech.speee.jp はじめに 背景 課題 ワークフローを再利用する 使用方法 使用例 共通化前のワークフローファイル 共通化後のワークフローファイル 共通化後のディレクトリ構成 今後の課題 結論 さいごに はじめに DX事業本部 開発基盤グループの秋吉です。 Speee では GitHub Actions を積極的に活用しており、開発する上で必要な様々な作業を自動化しています。 一方で、リポジトリや環境数が増加するにつれて同じような GitHub Actions のワークフローファイルが増加していました。 したがって、ワークフローに対して共通の変更を加える場合であっても、全リポジトリ・全環境のワークフローファイルをそれぞれ手動で編集する必要がありました。 GitHub Actions の
こんにちは!コンサル部のinomaso(@inomasosan)です。 GitHub ActionsのCI/CDはVM上でワークフローが実行されるため、同じイメージであってもキャッシュを利用することなく最初からビルドが実行されます。 ワークフローが実行されるたびに、ベースとなるイメージのダウンロードやファイルコピーが実行されてしまうと、デプロイ時間が伸びてしまうので改善が必要です。 そこで今回は前回作成したGitHub Actionsワークフローに、Dockerレイヤーキャッシュを追加していきます。 どのActionsを追加するか 今回はdocker/build-push-actionというDockerイメージのビルドからプッシュ + キャッシュをいい感じに実行してくれるActionsを利用していきます。 上記ActionsのCacheのドキュメントに、以下のサンプルコードがあるので、こち
本記事は、Microsoft Azure Tech Advent Calendar 2022 22 日目の投稿です。 はじめに Azure Container Apps はサーバーレス プラットフォームでコンテナー化されたアプリケーション実行を実現するサービスです。 この記事では、Azure Container Apps のデプロイ方法に関して、現在サポートされているもの、現在はプレビュー段階のものを紹介しつつ、一部実際にデプロイを行ってみます。 準備 デプロイするサンプル アプリケーションとして、以下のプロジェクトを利用します。 コンテナーイメージを作成する必要があるので、以下のような Dockerfile を用意しておきます。 FROM node:12.18.1 ENV NODE_ENV=production WORKDIR /app COPY ["package.json", "pa
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く