サーバサイド

mysqldump と mysqlpump どちらが速くバックアップできるか比較してみた

こんにちは。エンジニアの阿久津です。
今回はMySQLの mysqldumpmysqlpump という2つのコマンドでバックアップを実施しどちらが速く処理するのか比較してみましたので、それを記事にしたいと思います。

mysqldumpとは

従来のMySQLデータベースのバックアップ/リストアに用いられるコマンドです。

mysqlpumpとは

MySQL5.7から追加された新機能で、 mysqldump の次世代となるコマンドです。

機能紹介

1. 並列処理(並列ダンプ)

複数のデータベース・テーブルを並列処理でバックアップすることができます。
MySQLサーバからデータを収集するために複数のスレッドを作成し、そのスレッドがそれぞれMySQLサーバへ接続してデータをまとめるためにキューに取得したデータを挿入する仕組みになっています。
オプションを何も利用せずにデフォルトで mysqlpump を利用すると、スレッド数は2つ、キュー数は1つでダンプ処理が走ります。
–parallel-schemas オプションと –default-parallelism を使うと、スレッド数とキュー数を調整しながら、ダンプを実施できるみたいです。

続きを読む

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 に関しての性能や新機能などの検証は行わないので
ご容赦のほどをお願い致します。

続きを読む

Redash と Superset を比較検証してみた

こんにちは。SREチーム エンジニアの阿久津です。
今回は Redash と Superset という2つのツールを比較検証してみましたので
それについて記事にしたいと思います。

ツールについて

両者はオープンソースのダッシュボードツールです。
簡単に言うと、DB等のデータを可視化(表やグラフ)してくれるツールになります。

■Redash

公式サイト : https://redash.io/

■Superset

公式サイト : https://superset.incubator.apache.org/index.html

比較したこと

  1. データソース連携
  2. データ操作
  3. グラフ
  4. ダッシュボード
  5. 比較まとめ

続きを読む

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

こんにちは、岩橋です。

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

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

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

新卒2年目になるわたしがコードレビューで指摘された3つのこと

こんにちは、もうすぐ新卒入社して2年目になる高嶋(@__1016t)です。
わたしはコードレビューで、基本的なコードの書き方やPHPでつかえる便利機能など、たくさん勉強してきました。
今回はその一部をまとめてみました。

1. インデントをそろえる

インデントとは?

ソースコードの見た目を整えてくれるもので、
ifやforなど波カッコ{}で囲まれるブロック内の各行をtabキーやスペースで字下げすることをいいます。

続きを読む

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

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

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

目次

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

興味を持った背景

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

続きを読む

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

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

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

目次

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

Headless Chromeとは?

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

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

続きを読む