古いバージョンの MySQL を yum でインストールをする

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

MySQL の特定のバージョンをインストールしたい!
だけど yum でさくっとインストールしようとしたら、マイナーバージョンが上がっていて同じにならない。。
なんてことよくありますよね。そうです。先週の私です。

そこで今回は古いバージョンの MySQL を yum インストールする手順を記載したいと思います。

手順

1. 依存関係解決のために、最新のリポジトリを追加する

まずは最新のリポジトリをインストールしましょう。

続きを読む

PHP_CodeSniffer+GitHub+CircleCIでコードレビューの自動化

こんにちは。サーバーサイドエンジニアの@akane_256です。

今日は、PHP_CodeSniffer+GitHub+CircleCIを使って、PHPのコードレビュー(コーディングルールの徹底)を一部自動化したことについて書きたいと思います。

目次

  • 興味を持った背景
  • 今回やったこと
  • 利用ツールについて
  • 実装の流れ
  • ハマったところ
  • まとめ

興味を持った背景

開発が進むにつれて、他の人が書いたコードと自分が書いたコードで、統一感を保つのが難しくなってきたな、という実感があったのとコーディングルールにあっていないコードを自動で見つけられたら便利だよね、と同僚と話す機会があったので試してみました。その他にも、下記のようなメリットがあるのではないかと考えました。

続きを読む

エンジニアインターン運営の裏側

こんにちは。サーバサイドエンジニア兼QAエンジニアの斉藤(@saik1010)です。

本日は、今年の1月9〜1月12日に開催したエンジニア職インターンシップの運営について、お話しさせて頂こうと思います。

当日の様子はWantedlyでもご覧になれますので、合わせてご確認頂ければと思います!

取り組んだテーマ

例年、対象サービスに機能追加をするというテーマ設定で行ってきましたが、少しマンネリ化してきたこともあり、今年は新しいテーマを模索していました。
そこで、弊社エンジニア・デザイナーでいくつかのチームに分かれ、社内コンペを実施してテーマを決定することに。

続きを読む

Redmineをしっかり活用してチーム運用改善したら、チーム力がグンと上がった話

こんにちは、SREチーム エンジニアの西脇(@yasuhiro1711)です。今日は、チーム運用改善の話をしたいと思います。これからチーム運用をしていく方々に少しでも響けばいいな、参考事例になればいいな、と思って書いておきます。ちなみに、テーマを変えて続編も書く予定ですので楽しみにしてもらえればと思います。

チームに課題が出て来た

私のSREチームはこれまでは2人と少数精鋭でした。そこに昨年全く違う背景を持つメンバーが入って来ました。(ちなみにSREチームに改名した件も近々どこかで書こうと思います。)最初は仕事のやり方を変えずにやっていたものの、仕事が増えて連携する場面が増えると、2人のときの阿吽の呼吸だけではどうしても回らなくなることが増えてきました。他にも思考のすれ違いなど幾つか課題が出始めました。項目にするとこんな感じです。

  • 少数メンバーのため、人に依存したタスクが多かった。
  • チームメンバー同士での現状把握が出来ていない。
  • タスクの可視化や優先度の把握が不十分。
  • ロードマップの優先度付けも弱い。

それぞれこれまでやれてなくて出て来た課題なので、向き合って進めればいいのですが、
さて、どうやって解決していくのが楽しいか。やるなら楽しく進めたいものです。

そうだ!

うちはRedmineを使ってるので、
Redmineをフル活用すれば、「あーして、こうして」、結構いいかも。

と思いつきました。思いついたら吉日。即日動きました。

続きを読む

JavaScriptの非同期処理Promise・async awaitを学んでみた

こんにちは、サーバーサイドエンジニアの菅原です。

今回はJavaScriptの非同期処理について今更ながら学んでみました。昔ながらのCallback、ES6から追加されたPromise、ES7から追加されたasync await、さらにはRxJsについても調べてみました。

背景

昨今はUXの需要の高まりから非同期処理を書くことが多くなり、リアルタイム性やチャット機能、パフォーマンス改善のためにも非同期処理のコードを書くことが増えています。ただ非同期処理のJavaScriptのコードは処理が増えるごとにコールバック地獄と呼ばれる可読性が損なわれる危険性があることも事実です。

今回は以下のプログラミング条件から非同期処理について簡単なコードを用いての紹介と補足でRxJsを用いた非同期処理を紹介していきます。

続きを読む

Headless Chrome でブラウザテスト自動化入門

こんにちは。サーバーサイドエンジニアの@akane_256です。

今日は、Headless Chromeを使ったブラウザテストの自動化(入門)について書きたいと思います。

目次

  • Headless Chromeとは?
  • 興味を持った背景
  • 今回やったこと
  • 実際のソースコード
  • まとめ

Headless Chromeとは?

  • Chrome59(2017/6月頃)から搭載された機能
  • ChromeをGUIなしでコマンドラインから実行できる
  • DOMのノードを取得したり、画面キャプチャを撮ったりできる
  • ツールと組み合わせて自動テストに使ったりする

ブラウザを開いて、特定のページを開き、自分で目視確認しなくても、
あらかじめ作ったプログラムをコマンドから実行をすれば
自動でキャプチャをとったり指定の要素を取得したりすることができます。

続きを読む

作業ミスを減らすFirefoxアドオンを公開

結婚写真を撮影できるスタジオ検索サイト「Photorait」担当エンジニアの武田(@takedajs)です。

先日、自分が担当しているPhotoraitでスタジオを探し実際に結婚写真を撮影してきました。自分が携わってるサービスをユーザとして使うのは、感慨深いですね!一つ夢が叶いました涙

さて本題です。
最近Firefoxの大きなバージョンアップ(Firefox Quantum)があり、ページ読み込み速度の大幅な改善などありましたが、その一方で最新の開発手法(以下、WebExtensions)ではないFirefoxアドオンが利用できなくなりました。僕の場合、利用していたFirefoxアドオンが全て利用不可に。。。マジか。。。

そこで今回は、最新のFirefoxでも利用できる、作業ミスを減らすFirefoxアドオンを開発し公開しましたので紹介します!ターゲットユーザが少ないと思うので、かなりニッチなアドオンです笑

続きを読む

MySQLからRDSへの移行手順と暗号化の注意点

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

既存のシステムを刷新する際やリニューアルなどを行う時など
インフラ構成をいろいろ考えるかと思いますが、
DB のクラウド化を検討された方も中にはいらっしゃるのではないでしょうか。

メリット・デメリットはあるかとは思いますが、まずは現状のシステムから
移行可能かという点が気になるかと思います。

そこで本日はオンプレや EC2 インスタンスにインストールした MySQL から、
AWS の RDS の MySQL に移行する方法を試してみたので書いていきたいと思います。
またせっかくなのでRDSの暗号化も一緒にやってみたいと思います。

手順

今回は EC2 にインストールした MySQL から RDS に移行したいと思います。
実施した手順としては以下です。

1. RDS パラメータグループ作成
2. RDS インスタンス作成
3. EC2 レプリケーション事前準備
4. EC2 mysqldump エクスポート
5. RDS mysqldump インポート
6. EC2 → RDS レプリケーション構築
7. アプリケーション向き先変更
8. EC2 → RDS レプリケーション解除

では早速構築していきます。

続きを読む

Apacheで403 Forbiddenが表示された時のチェックポイント5選

SREチーム エンジニアの阿久津です。
今回はApacheの403 Forbiddenが表示された時のチェックポイントについて記事にしたいと思います。

環境

  • Vagrant 1.9.5
  • CentOS Linux release 7.1.1503 (Core)
  • Apache 2.4.6

前提

  • 設定ファイル
     /etc/httpd/conf/httpd.conf

  • DocumentRoot
     /var/hoge

  • テストページ
     /var/hoge/index.html

事象

テストページを表示しようとすると403 Forbiddenが表示される。

Forbidden

続きを読む

AWS Route53の「マルチバリュー応答」試してみました

はじめに

こんにちは。SREチーム エンジニアの西脇(@yasuhiro1711)です。
2016年6月より AWS Route53にてマルチバリュー応答ができるようになりました。

Amazon Route 53 announces support for multivalue answers in response to DNS queries

できるようになってからかなり日が経ってしまいましたが、少し試してみたのでその記録となります。

このニュースの何が驚きだったかというと、

  • これまでも、Route53ではバリュー(Aレコード)に複数登録することで、DNSラウンドロビンは利用可能であった。
      ※ここでは、「DNSラウンドロビン」という言葉に集約しますが、「Routing Policy」次第で色々な機能があります。

  • マルチバリュー応答の機能により、バリュー(Aレコード)の登録IPの一つ一つに対して、「Routing Policy」を設定できるようになった。

この設定の組み合わせにより、ELBなどの導入がコスト面や設計の面でできない場合にでも、Route53を利用してある程度柔軟に負荷分散(限定的な)ができるようになりました。

では、マルチバリュー応答を試していきましょう。

続きを読む