尋常でないもふもふ

a software engineer blog

infra

ECS + Fargate + gRPCを使ったマイクロサービス構成

バックエンドサーバは機能毎にマイクロサービスとして分割し、サーバ間通信には gRPC を使ってモダンな感じにしたい。 最初のインフラ構想 まず Node.js アプリケーションをコンテナベースにして、Code Pipeline + CodeBuild + ECR + ECS + Fargate で継続的…

ioredisで謎のエラー

ioredis で謎のエラーがでてハマった。 [ioredis] Unhandled error event: ParserError: Protocol error, got "J" as reply type byte. Please report this. at handleError (/Users/jnst/go/src/github.com/Translimit/park-server/node_modules/redis-pars…

DockerのHEALTHCHECKをwgetでやる

Docker には HEALTHCHECK というコンテナが正常稼働しているか確認する機能がある。 何をもって『正常』と判断するかはコンテナを稼働する人が指定する。Nginx みたいな Web サービスのコンテナの場合は公式サンプルにもある通りcurl を死活監視のためのコマ…

node_redisでscanコマンド

ググってもサンプルがでてこないので悩んだ。 node_redis では、個別にコマンドの実装があるわけではなく、send_command 関数を共通で使う実装 になっている。 公式ドキュメントの SCAN – Redis をみると SCAN cursor [MATCH pattern] [COUNT count] という…

Docker Machineをつかう

インストール Homebrew Cask で管理されてるので Cask 経由でインストールするのが楽。 https://github.com/caskroom/homebrew-cask/blob/master/Casks/docker-machine.rb $ brew install caskroom/cask/brew-cask $ brew cask info docker-machine docker-m…

MacでDynamoDB Localを試す

インストール brew からインストールできます。 $ brew install dynamodb-local データとログディレクトリ 下記ディレクトリに保存されます。 Data: /usr/local/var/data/dynamodb-local Logs: /usr/local/var/log/dynamodb-local.log 起動 実行ファイルは /…

2分でわかるTerraform

AWS のようなクラウドサービスによってインフラ構築がとても手軽に行えるようになりました。手動でインスタンスを起動して、サーバ設定を行い、Web サービスをインターネットに公開します。 では、手動で行った構築手順はどのように残していますか?どのよう…

Jenkinsのログインシェルを変更する

Jenkins をインストールすると jenkins ユーザーが作成されるが、su コマンドを使っても jenkins ユーザーには切り替えできない。 これはデフォルトのログインシェルが /bin/false に設定されているから。 # cat /etc/passwd | grep jenkins jenkins:x:498:4…

Ansibleでファイルの編集

Ansible で設定ファイルの編集をしたいとき用です。 3つのモジュールが用意されています。 lineinfile(1行だけ編集したい人向け) replace(複数行編集したい人向け) ini_file(INI形式のファイルを編集したい人向け) ユースケース Amazon Linux では最…

Ansibleで変なエラー

事象と原因 brew でインストールした ansible を再インストールしたら動かなくなった。 $ ansible-playbook -i hosts simple-playbook.yml --syntax-check Traceback (most recent call last): File "/usr/local/Cellar/ansible/1.7.2/libexec/bin/ansible-p…

DockerでJenkinsを構築

単に Docker で Jenkins 動かしたいなら公式の がすぐ動くし、Dockerfile も読める。 以下は CentOS や Amazon Linux 上で動かしたい人用の最小構成。 Dockerfile FROM centos:centos7 # Change timezone RUN ln -sf /usr/share/zoneinfo/Japan /etc/localti…

Vagrantfileのテンプレート

# -*- mode: ruby -*- # vi: set ft=ruby : # Vagrantfile API/syntax version. Don't touch unless you know what you're doing! VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "ubuntu/trusty64…

Vagrantの使い方

インストール 公式の Download Vagrant - Vagrant からダウンロードしてインストール。 つかう Ubuntu 14.04 を構築 $ mkdir vagrant-sample $ cd vagrant-sample $ vagrant init -m ubuntu/trusty64 -mは生成される Vagrantfile を説明コメントが除かれたミ…

DockerHubのUbuntuのタグの違い

Ubuntu を使う場合、多くの人は最新の LTS(Long Term Support)である 14.04 を選択するはず。 でも DockerHub の Ubuntu 公式のリポジトリをみると 14.04 でもタグが複数あってどれを選ぶべきなのか迷うので、確認してみた。結論は「同じもの」だった。 14…

Jenkinsの結果がUNSTABLEになる

Jenkins でビルドに JUnit を連携させてる場合に、UNSTABLE で終了した。 原因は mocha のテストに console.log() を記述したままになっていたからだけど、なぜそうなるのかわかりにくかったため書いとく。 Jenkins ジョブのコンソール出力 (略) Build ste…

Redis のクライアント操作

$ redis-cli keys * #キーの一覧を取得 get <key> #キーから値を取得 mget <key> #キーから値を取得(Set用) ttl <key> #有効期限を取得</key></key></key>

Mac に MongoDB インストール

Homebrew でインストール。 $ brew install mongodb 確認 $ mongo --version MongoDB shell version: 2.4.6 MongoDBクライアントの場所 /usr/local/opt/mongodb/bin/mongo 起動スクリプトの場所 /usr/local/opt/mongodb/bin/mongod 設定ファイルの場所 /usr/…

Ubuntu 12.04 LTS に Jenkins をインストール

ローカル環境(Windows7)の VirtualBox に入れた Ubuntu 12.04 で Jenkins 環境をつくる。 Jenkins のインストール Ubuntu の apt で確認するとバージョンは 1.424.6+dfsg-1 だった。 $ apt-cache show jenkins Jenkins の公式サイトをみると最新は 1.533 …