01_バックエンド

Lambda@Edgeを利用して画像リサイズ機能を実装した

こんにちは。フォトウエディングの撮影スタジオ検索サイト「Photorait(フォトレイト)」を担当しているエンジニアの武田(@takedajs)です。

Photorait(フォトレイト)では入稿された画像をリサイズしてから保存し、公開側に合った大きさの画像を表示しています。動的に画像をリサイズする機能をまだ導入していないので、検証も兼ねて実装してみました。

Lambda、API Gateway、ImageMagickを利用した画像リサイズ機能を書いた記事が過去に投稿されていますが、今回の記事では、Lambda@Edgeとsharpを利用した画像リサイズ機能の実装について書きました。

やってみよう!AWSでWEBサーバー環境構築(Lambda|API Gateway|シリーズ第4回)

続きを読む

Google Ads Scripts(旧:GoogleAdwords Script)設計時に注意すべき3つのポイント

こんにちは。サーバーサイドエンジニアの杉浦です。
私がGoogle Ads Scripts(旧:GoogleAdwords Script)の開発を始めてから、約半年が経ちました。
今回は、これからGoogle Ads Scriptsの開発をされる方向けに、設計に必要なTipsをご紹介しようと思います。

開発時に考慮すべきこと

どのアカウントの情報を取得・操作するか

Google Ads Scriptsは、MCCアカウントに対して設定することも出来ますし、各アカウントそれぞれに設定することも出来ます。
そのため、1つのアカウントの情報取得したいのか、複数のアカウントの情報を取得したいのかを開発の前に決める必要があります。

例えば、このような構造をしたアカウントを運用していたとしましょう。

このとき、
1. アカウントA~Eのデータを取得したい⇒MCCアカウント①にscriptを設定
2. アカウントC~Eのデータを取得したい⇒MCCアカウント②にscriptを設定
3. アカウントAのデータだけを取得したい⇒アカウントAにscriptを設定
4. アカウントA・C・Eのデータを取得したい⇒MCCアカウント①にscriptを設定 かつ 特定のアカウントが判断できる要素を設定
となります。

特定のアカウントを指定するためには、アカウントIDを指定したり、ラベルで判断することが出来ます。アカウントIDを指定する場合、対象のアカウントが変更される度にScriptを修正しなくてはなりません。個人的にはアカウントにラベルを設定し、そのラベルが貼られているアカウントをデータ抽出対応とすることをお薦めいたします。

続きを読む

Google Ads Scripts入門③

こんにちは。サーバーサイドエンジニアの杉浦です。
前回は、Google広告(旧:GoogleAdWords)のデータをキャンペーンパフォーマンスレポートを使って取得する方法をご紹介しました。
今回は、アカウントパフォーマンスレポートから、前日にCVの上がったアカウント一覧をメールで送信する方法をご紹介します。

前提

Google広告を運用しているGoogleアカウントがあること

入門内容

アカウントパフォーマンスレポートより、下記項目を取得し、HTMLメールを送信することを目標とします。
Google広告画面でのイメージとしては、対象MCCアカウントの「アカウント>掲載結果」に表示される項目を取得します。

  • アカウントID
  • アカウント名
  • コンバージョン
  • 表示回数
  • クリック数
  • 費用
  • CTR
  • CPC

続きを読む

Google Ads Scripts入門②

こんにちは。サーバーサイドエンジニアの杉浦です。
前回は、Google広告(旧:GoogleAdWords)のデータをGoogle Ads Scripts (旧:Google AdWords Scripts)を使ってスプレッドシートに出力する方法をご紹介いたしました。
今回はGoogleAdWordsAPIを使って、キャンペーンパフォーマンスレポートから取得したデータを出力する方法をご紹介します。

前提

Google広告を運用しているGoogleアカウントがあること

入門内容

キャンペーンパフォーマンスレポートより、下記項目を取得することを目標とします。

  • アカウントID
  • アカウント名
  • 表示回数
  • クリック数
  • コンバージョンアクションが「購入」のコンバージョン数

続きを読む

Google Ads Scripts入門①

こんにちは。サーバーサイドエンジニアの杉浦です。
今回は、Google広告(旧:GoogleAdWords)のデータをGoogle Ads Scripts (旧Google AdWords Scripts)を使ってスプレッドシートに出力する方法をご紹介したいと思います。

Google Ads Scriptsとは

Google Ads Scriptsはブラウザベースの IDE で、シンプルな JavaScript を使うことで Google広告 データを取得したり、制御することが出来ます。
Google広告のデータをエクセルでレポートにしている方が多いかと思いますが、Google Ads Scriptsを使うとレポートの作成を自動化することも可能です。
詳細は公式HPをご参照ください。

前提

Google広告を運用しているGoogleアカウントがあること

入門内容

続きを読む

Redis 4のUNLINKでサーバー負荷を抑えてみる(Redis Cluster)

Redis4.0のUNLINKを使ってみる

こんにちは、サーバーサイドエンジニアの菅原です。
今回は今更ながらRedis4系から追加されたUNLINKコマンドについて調べて検証してみました。

背景

Webアプリケーションのパフォーマンスを向上しようとするときRedisは強力なツールです。
ですがRedisを運用する注意点としてRedisの容量の懸念が見込まれます。
キーがどんどん積み上がるとRedisの容量を大きく圧迫し、そうなるとRedisはキーの検索に時間を要するのとキーを削除するときもサーバーに負荷がかかりサーバーダウンしてしまうことも考えられます。

setした時に設定したexpireが切れたキーも完全に消えることは確証されなく、
ゴミのデータが残る場合があるのでDELコマンドで定期的に掃除が必要になります。
しかしRedis3までのDELコマンドは一度に指定されたキーを全てアクセスして削除しようとするのでその間はRedisは他の処理を受け付けないため
Redisに膨大なサーバー負荷がかかり、Redisが落ちてしまったり、クラスターダウンの影響にも繋がります。
今回はその問題を解決するためにRedis4系で新たに追加されたUNLINKコマンドについて紹介します。

続きを読む

ELKで始めるElasticStack6入門 (Elasticsearch, Kibana, Logstash)

こんにちは、サーバーサイドエンジニアの菅原です。
今回はElasticStack6について学んでみたのでその知見を共有したいと思い記事にしました。

はじめに

検索エンジンElasticsearchの検証をしている中でELKと呼ばれるElasticStackの製品について学んでみましたのでそのELKの実行までの流れを記載していきます。

環境

  • Mac OS
  • Elasticsearch 6.2.4
  • Kibana 6.2.3
  • Logstash 6.2.3

入門内容

ゴール:ELKの使い方、及び導入からビジュアライズまでの流れを確認する

ELK

  1. Logstashでデータを扱う

  2. LogstashからElasticsearchにデータを加工し投入する

  3. KibanaでElasticsearchで投入したデータを可視化する

続きを読む

【入門】circleci/go-ecs-ecrを使って、CircleCI からAWS ECS にデプロイしてみる

こんにちは、SREチーム、エンジニアの西脇(@yasuhiro1711)です。今日は、circleci/go-ecs-ecrを使って、CircleCI からECS にデプロイをしてみたいと思います。(参考リンクには非常にお世話になりました。ありがとうございます。)

今回は題材にちょうど合う、CircleCIを通じて、AWS ECS/ECR にデプロイするGoアプリケーションがあったのでこれを利用していきます。勉強の題材にとてもよかったです。(しかし注意として、今回利用の「circleci/go-ecs-ecr」は、2018年6月現在、すでに更新されていないため、現在のCircleCIとAWS環境に自分で合わせないと動作できない可能性もあります。ご注意ください。)

最終的に目指すのはこのような設計です。(ECSクラスタ部分は図としては詳細には書いておりません。)

設計

今回の構成では、GitHubにユーザからpushがされると、CircleCIがそれを自動検知し、build実行を始めます。すると最新のソースがECRのレジストリに登録されて、ECSにて定義更新等が走り、EC2内のDockerコンテナにデプロイされる仕組みです。

続きを読む

Ansible で Node.js を 10系 にアップデートするよ

こんにちは。SREチーム インフラエンジニアの綿引です。

2018/4/24 に Node.js 10系がリリースされましたね。
(私の誕生日です。)

そこで今回は Node.js のアップデートを Ansible を用いて実施する
という記事を書きたいと思います。

Node.js のアップデート方法に関しては、
1. 既存の Node.js(過去に yum でインストール)をアンインストール後、
2. Ansible の shell モジュール を用い Node.js を rpm でインストールする
という形にしました。

10 系を使うものの Node.js に関しての性能や新機能などの検証は行わないので
ご容赦のほどをお願い致します。

続きを読む

やってみよう!AWSでWEBサーバー環境構築(Lambda|API Gateway|シリーズ第4回)

こんにちは、岩橋聡吾です。

やってみよう!AWSでWEBサーバー環境構築、久しぶりの続編です。
第4回は「AWS Lambda」「Amazon API Gateway」を使ったサーバーレスな画像リサイズAPIをクラウド上に構築して見たいと思います。

アーキテクチャ・設計概要

今回は以下のようなアーキテクチャで、Clientが指定した任意のサイズの画像を返却するAPIを構築していきます。
スクリーンショット 2018-03-23 14.53.29
続きを読む