woshidan's blog

そんなことよりコードにダイブ。

AWS Web Servicesを使ったサーバーレスアプリケーション開発ガイドを読みました

Amazon Web Servicesを使ったサーバーレスアプリケーション開発ガイド作者: 西谷圭介出版社/メーカー: マイナビ出版発売日: 2018/03/16メディア: 単行本(ソフトカバー)この商品を含むブログを見る 上の本を読みました。全体的に Lambdaになれました Vueに…

Rackの概要、RackミドルウェアとRackアプリケーションの違いについて

この記事はRubyアドベントカレンダーの14日目の記事です。 最近Rackにさわることがあったのでこの記事では Rackの概要 RackミドルウェアとRackアプリケーションの違い についてまとめます。 Rack概要 RackはWebサーバとRuby及びRubyのフレームワークとの間で…

負荷試験のアプローチとWeb系でクラウドサービスを利用している場合のそれぞれのアプローチに対する感想について

この記事はソフトウェアテストアドベントカレンダーの8日目の記事です。 以前、担当しているサービスの負荷試験を行ったのですが、負荷試験やパフォーマンステストとふわっといった時、いくつかアプローチの種類があるようなので今回の記事ではそれらの簡単…

いまさらRSpecに少し慣れてテストをすっきり書く方法について少し覚えた話

いまさらRSpecをさわってきて慣れて覚えた話もメモしておきます。 TL;DR letで宣言した変数の初期化用パラメータで置き換えたくなったパラメータもletで宣言しておくとよさそう shared_context や shared_examplesでまとめるのがちょうどいいくらいの事例と…

ペアワイズ法について簡単にまとめて手を動かしてテストケースが削れるのを眺めてみた

この記事はソフトウェアテストの小ネタアドベントカレンダーの2日目の記事です。 この記事では、大量にあるテストケースをある程度不具合検出率を担保しつつ効率よく削るための手法であるペアワイズ法についてその概要をまとめ、組み合わせが小さい場合につ…

いまさらRSpecを触ってみて最初のうち戸惑っていた部分の話

この記事はRuby on Rails Advent Calendarの1日目の記事です。 実は、この夏からはじめて仕事で本格的に RSpec を触ることになり、少し慣れてきたところで最初に感じたことをメモしておきます。 RSpecの構文は慣れない人にはこんな風に映ることもあるんだー…

OPTIONSメソッドが気になったのでCORSとプリフライトリクエストについて少し調べました

Amazon API GatewayでCORSを有効にするとOPTIONSメソッドが追加されるのが気になったので、CORSについて少し調べました。 CORSとは オリジン間リソース共有Cross-Origin Resource Sharing (CORS) は、追加の HTTP ヘッダーを使用して、あるオリジン (ドメイ…

AWSによるサーバーレスアーキテクチャを読みました

3連休はサーバレスをやるぞ! と決めていたので、2ヶ月くらい積ん読してた気がする本をようやく読みました。 AWSによるサーバーレスアーキテクチャ作者: Peter Sbarski,吉田真吾,長尾高弘出版社/メーカー: 翔泳社発売日: 2018/03/14メディア: 単行本(ソフト…

試して理解 Linuxのしくみを読みました

有名な本を読みました。感想がてら特に面白かったいくつかのトピックについてまとめてしめます。 [試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識作者: 武内覚出版社/メーカー: 技術評論社発売日: 2018/02/23メディア: 単行本(ソフ…

AWS DevDay Tokyo 2018 LT大会に「AWSを用いたWebサービスの負荷試験のTips」というテーマで参加してきました

9月にLTのCFPの公募があり、これはいい勉強になるだろうということで応募したら通ったのでわたわたしながら準備していました。 speakerdeck.com 以下、とっちらかっていますが、自分用のメモ兼補足です。 JMeterが同時に1000スレッドを立ち上げたらフリーズ…

JAWS-UG 初心者支部#14「AWS Night school & LT」 LT大会 に「 IAMロールの使用と必要なポリシー」というテーマで参加してきました

結構前なのですが、仕事ともう一個のLTでバタバタしていていまさらになりますががが。 speakerdeck.com 自分がはじめてIAMさわったとき、IAMのポリシーってたくさんあってどれがどれだかわからないぞって気持ちが強くて。。 IAMのポリシーにつく形容詞には …

Hadoop3.1.1でs3a://ファイルシステムを利用する場合の環境構築をしてみる

今日はHadoopのファイルシステム(特に、s3を利用するもの)についてすこしおさらいしてから表題の環境構築をしてみます。 Hadoopのファイルシステム Hadoopは抽象化されたファイルシステムの概念を持っていて、その実装に HDFS Hadoop上で利用される分散ファ…

Hadoop 3.1.1をインストールしてPseudo-Distributed Modeで動かしてみる

Javaと環境変数のセットアップ $ sudo yum install java-1.8.0-openjdk [ec2-user@ip-172-31-16-244 ~]$ sudo update-alternatives --config java There are 2 programs which provide 'java'. Selection Command -----------------------------------------…

Hadoop 3.1.1をインストールしてLocal Modeで動かしてみる

今日は https://qiita.com/Esfahan/items/39fd1e2f8b755eacec65 http://www.atmarkit.co.jp/ait/articles/0902/27/news129_2.html http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html あたりを参考にしつつHadoop…

Linuxにrbenvをインストールし、rbenvでRubyを入れ、mysql2のgemを入れるまでのメモ

ちょっとたくさんのインスタンスからMySQLにクエリを投げたいことってありますよね? というわけで今日はRubyでMySQLに接続するコードを書く前段階として表題のEC2上で環境構築の素振りをします。 TL;DR rbenvおよび、rbenvのプラグイン ruby-buildはGitHubか…

CSVからCSVを作るためのシェル芸のいくらかについてメモ

列の順番を入れ替えたい awkを使えばよい。 aaa,ddd,fff,bbb,ccc,eee のような行があったとき、 aaa,bbb,ccc,ddd,eee,fff のように列を入れ替えたいとすると $ echo 'aaa,ddd,fff,bbb,ccc,eee' | awk -F ',' '{ print $1 "," $4 "," $5 "," $2 "," $6 "," $3…

Capistranoでぺらいち未満のWebサイトをデプロイしてみます

今日はRubyで書かれたビルド・デプロイ作業の自動化フレームワークのCapistranoにさわってみます。 Capistranoでできること 最初に、入門 Capistrano 3 ~ 全ての手作業を生まれる前に消し去りたいを読めばいいという話ではあるんですが、Capistranoでできる…

Terraformで検証用インスタンスを立ち上げるのに使う最低限の作業についてメモ

検証用の環境作るとき、微妙に設定をいじって立て直す、その後複数台で動かしたい、みたいな場合はTerraformでやったりします*1。 そのとき、共通でやる作業についてメモしておきます。 共通 変数設定など アプリごとにパスフレーズなしの認証鍵を使い捨てで…

ecs_deployのecs_auto_scalerにPRを出すときに環境構築をがんばったよ、というお話

先日、 ecs_auto_scaler にPRを出してマージされてしばらく運用して問題なさそうので今日はちょっと自慢をします。 ecs_auto_scaler そのものについては前回の記事でふれたのでそちらをご参照ください。 woshidan.hatenablog.com 複数のサービスが連携させて…

ecs_deployによるECSのオートスケーリングとAWSのECSによるオートスケーリングの違いについて

今日は会社で管理しているOSSの一つ、ecs_deployに関連する話をECSの復習がてらします。 TL;DR ecs_deploy gemでは、ECSへのデプロイに関するCapistranoタスクの定義とECSのオートスケーリングを行うスクリプトが入っている ECSのオートスケーリングはAutoSc…

ssh-agentでsshコマンドで認証鍵の指定を入れなくていいようにしたりログイン先のサーバに認証鍵の情報を転送したりする

TL;DR ssh-agent bash で ssh-agent を起動して ssh-add /path/to/secret_key することで ssh コマンドで認証鍵の指定やパスフレーズの入力が省略できる ssh-agent はOpenSSHの認証エージェントで、認証エージェントの「転送」により、ローカルで動いている…

CloudWatchにさわってみたときのメモ(カスタムメトリクスのパブリッシュ、アラームの設定)

とりあえず今日はCloudWatchの復習で。 CloudWatchはAWSのモニタリングや監視のためのサービスで、EC2など各種AWSのサービスを動かすと自動的にCPU利用率などのメトリクスを取得してくれる他、AWS CLIなどを利用してカスタムメトリクスを送ることも可能です…

EC2インスタンスをECSの特定のクラスタに所属させる

今日は、EC2インスタンスをECSの特定のクラスタのコンテナインスタンスとして登録するために必要なものについてまとめておきます。 EC2インスタンスがECSのコンテナインスタンスになる仕組み ECSのコンテナインスタンスはecs-agentが動作していて、ecs-agent…

IAMのロール、EC2インスタンスやECSのタスクに対するロールについてメモ

今日はIAMのロールについて復習しようと思います。 TL;DR 特別な作業をする時だけふだん使わない権限を一時的に使いたいときは、IAMロールの出番 IAMロールの使い方 IAMロール自体を作成し、 誰がそのロールを利用できるのか、を記述した信頼ポリシー と 「~…

Terraformで外部の設定ファイルから設定を読み込む(file, template_file, template_cloudinit_config)

今日はとりあえずTerraformのTemplateプロバイダーを少しさわってみようと思います*1。 TerraformのTemplateプロバイダーには、データリソース*2として template_file template_cloudinit_config リソースとして template_dir*3 がありますが、今回は templa…

terraformのmoduleの基本的な使い方を試しました

あれもこれもやらなくては~と思っていたらどれにも手がついておらず結構ガッカリですが、ひとまず今日はterraformのmoduleの基本についてまとめておきます。 TL;DR terraformがビルドに使うのはカレントディレクトリにある.tfファイル moduleで他のディレク…

Application Load Balancer(ALB)のコンポーネントについてメモ

先週、CLBではできなくてALBでできるようになったいくつかのことについてメモしました。 今週は、その記事に出てきたリスナーグループ、ターゲットグループといったALBの各コンポーネントに対し、そのコンポーネントを作成することで何を設定しているのかに…

ALBでできるようになったコンテントベースルーティングとALBと連携したECSの動的ポートマッピングについて

ELBとCLBとALBの違い AWSのロードバランサで検索すると、ロードバランサを指す言葉に、ELB, CLB, ALBの3種類がでてきます。 この3種類の違いは、 ELB ... Elastic Load Balancing. サービス名。ELBの提供しているロードバランサのリソースにCLBとALBがある C…

AWSのAuto Scalingグループの概要について(概念に関する用語とスケーリングポリシーの種類)

今週はAuto Scalingグループの概要について調べました。 Auto Scalingグループ EC2 AutoScaling と Auto Scalingグループ はなんのためにあるのか EC2のインスタンスは起動時間に対して料金が請求される従量制の課金形式となっています。 なので、1日の負荷…

いままでのECSの起動モード(EC2起動モード)のネットワーク設定(bridge ネットワークモード)とFargate起動モードを利用した場合のネットワーク設定関連で嬉しいことについて

2017年11月14日にAWSがAmazon ECSのTask Networkingを発表*1し、その恩恵を受ける Fargate 起動タイプが2018年7月4日に東京リージョンでサービス開始となりました*2。 自分の職場でも一部サービスでFargate(with awsvpcモード)の採用が始まったのをレビュー…