0からのインフラ日誌

30代インフラエンジニアがWebインフラ・開発の備忘録を書き溜めていきます

BINDからRoute53に乗換えた後の運用費用を見積もってみた

  • BIND使ってるけどRoute53安いらしいし使いやすそう、なによりbind脆弱性対応から開放されたい、、、
  • ただ従量課金て聞くし実際いくらかかるのか怖い、、、
  • という事で費用見積の仕方をまとめてみた。

Route53とは

Route53の特徴

  • 高可用性
    • 高い。全世界に分散配置されたネームサーバ4台に登録。
    • SLA100%(停止した場合に使用量を払い戻し。違約金等は無し?)
  • 高速
    • 分散配置されたDNSサーバの内、ユーザーから最も論理的に近いサーバを自動選択
  • コスト
    • 従量課金
  • 操作性
    • GUIコンソール提供
    • API提供有り
  • 保守運用

課金体系

  • ホストゾーン数課金+クエリ数課金で計算。クエリ数が金額の大部分を占める。
    • ホストゾーン課金
      • 0.50 USD/月,1ホストゾーン (ホストゾーン数<=25の場合)
      • 0.10 USD/月,1ホストゾーン (25<ホストゾーン数の場合)
    • クエリ数課金
      • 0.40 USD/100万クエリ (月の総クエリ数<=10億クエリの場合)
      • 0.20 USD/100万クエリ (10億クエリ<月の総クエリ数の場合)

費用の求め方

ホストゾーン数の求め方

  • bindのzoneファイル数をカウント

クエリ数の求め方

  • named.confのloggingタグに以下を追記(以下設定だと10Mずつ30世代保管)
    logging{  
    ・・・  
      channel query_log {  
        file "/var/log/named/nsquery.log" versions 30 size 10m;  
        severity info;  
        print-category yes;  
        print-severity yes;  
        print-time yes;  
    };  
    category queries { query_log; };  
    ・・・  
    }  
  • BIND再起動
  • /var/log/named/nsquery.log.xxxという形でクエリログファイルが作成される。
  • 指定したログディレクトリの開始、終了時間、リクエストログの行数を元に単位時間あたりのクエリ数を求める。
    • 収集時間
      • nsquery.logの最も新しいもの、古いもののクエリログの時間を確認
    • 収集時間帯のクエリ数
      • cat /var/log/named/nsquery.log* | wc -l

参考

Javascript入門⑤

ドットインストールの「Javascript入門」の学習メモです。 http://dotinstall.com/lessons/basic_javascript_v2

  • 本日は以下を学習しました。
    • #13 ローカル変数を使おう
    • #14 即時関数を使ってみよう

ローカル変数を使おう

  • 以下のように関数の中で定義した変数は、関数の外では使えない。
    例だと、結果は、greetはコンソールに正常出力されるが、msgはundefinedでエラーとなる。

    function hello(name){
      var msg="hello "+ name; //ローカル変数
      return msg;
    }
    var greet=hello("Tom");
    console.log(greet);
    console.log(msg);

  • 関数もデータ型であるので、変数に入れることが可能。

    var hello = function hello(name){
      var msg="hello "+ name; //ローカル変数
      return msg;
    }

    この時、関数名を以下のように省略する事が可能(無名関数と言う。)

    var hello = function(name){
      var msg="hello "+ name; //ローカル変数
      return msg;
    }

即時関数を使ってみよう

  • 関数定義後に即呼び出したい場合の記法。 例)通常ならこう書く所・・・

    function hello(name){   console.log("hello"); } hello("Tom");

    短縮する事が可能。

    (function hello(name){   console.log("hello"); })("Tom");

  • ローカル変数として外からのアクセス拒否し、安全性を保つ意味でも使われる。

    var x=10;
      y=20; console.log(x+y);

    このままだとx,yは好きにアクセス出来てしまうので、以下のように変更(x,yへのアクセス不可)。

    (function (){
      var x=10;
        y=20;
      console.log(x+y);
    })();

Javascript入門④

ドットインストールの「Javascript入門」の学習メモです。 http://dotinstall.com/lessons/basic_javascript_v2

  • 本日は以下を学習しました。
    • #10 for文を使ってみよう
    • #11 alert、confirm、promptを使おう
    • #12 関数を使ってみよう

for文を使ってみよう

ループ処理(for文)

  • 以下のように記述する。(下記は0から9までをconsole出力するプログラム)

    for (var i =0; i<10;i++){
      console.log(i);
    }

ループ処理の特別処理(while,forで使用可能)

  • ループ処理を抜ける(break)
    • 以下記述だと、0,1,2,3,4はコンソール出力されるが、5でループが終了する。

      for (var i=0;i<10;i++){
        if(i===5){
          break;
        }
        console.log(i);
      }

  • ループ処理を1回スキップ(continue)
    • 以下記述だと、0,1,2,3,4のコンソール出力の後、5がスキップ。
      さらに6,7,8,9がコンソール出力される。

      for (var i=0;i<10;i++){
        if(i===5){
          break;
        }
        console.log(i);
      }

alert、confirm、promptを使おう

ポップアップメッセージ表示(alert文)

  • 以下のように記述する。メッセージ出力のみ。

    alert("hello");

ポップアップ確認メッセージ表示(confirm文)

  • 以下のように記述する。確認項目への返答が求められる。

    var answer=confirm("are you sure?");
    console.log(answer);

  • 以下のように変数としてif文に組み込むことも可能。

    if (confirm("本当に削除しますか?")){
      //削除処理
    }

ポップアップ応答メッセージ表示(confirm文)

  • 以下のように記述する。応答が求められる。

    var name= prompt("お名前は?");
    console.log(name);

  • 以下のように初期設定も可能。

    var name= prompt("お名前は?","名無しさん");

関数を使ってみよう

  • 関数(function)
    • 複数の処理をまとめて名前をつけたもの。
    • 繰り返し行うような処理をまとめておき、1つの処理群を使いまわしすることが出来る。
    • 基本的な記述方法は以下。

      function 関数名(引数){
        処理
      }

    • 以下記入例

      function hello(name){
        return "hello"+name;
      }
      var greet=hello("Tom");
      alert(greet);

Javascript入門③

ドットインストールの「Javascript入門」の学習メモです。 http://dotinstall.com/lessons/basic_javascript_v2

  • 本日は以下を学習しました。
    • #07 真偽値と三項演算子を使おう
    • #08 switch文を使ってみよう
    • #09 while、do ... whileを使ってみよう

真偽値と三項演算子を使おう

真偽値

  • 文字列の場合
    • 空文字はfalse、それ以外はtrue
  • 数値の場合
    • 0、NaNのみfalse、それ以外はtrue
  • オブジェクトの場合
    • nullはfalse、それ以外はtrue
  • null、undefinedの場合
    • false

真偽値で判定する条件文

if(x){
  真の場合の処理
}

三項演算子

以下は同じ意味。後者の記述を三項演算子と呼ぶ

var a,b,c
if(条件){
  a=b;
} else{
  a=c;
}

 

a=(条件)? b:c;

switch文を使ってみよう

switch文

  • 以下のように記述する。各case以外の場合はdefaultケースの内容が実行される。

    var signal="red";
    switch (signal){
      case "red":
        console.log.("stop");
        break;
      case "green":
        console.log.("go");
        break;
      case "green":
        console.log.("slow down");
        break;
      default:
        console.log.("wrong signal");
        break;
    }

while、do ... whileを使ってみよう

  • ループ処理(while文)
    • 以下のように記述する。(下記は0から9までをconsole出力するプログラム)

      vai i=0;
      while(i<10){
        console.log(i);
        i++;
      }

  • ループ処理(do...while文)
    • 以下のように記述する。(下記は0から9までをconsole出力するプログラム)

      vai i=0;
      do{
        console.log(i);
        i++;
      } while(i<10)

  • whileとdo...whileの違いはループ文の処理を1度回すか回さないか。
    • while
      • ループ判定が最初に来る。条件に合わなければループ文はスルー。
    • do...while
      • ループ判定が後に来る。条件にあわなくてもとりあえず一度ループ文を回してから考える。

Javascript入門②

ドットインストールの「Javascript入門」の学習メモです。 http://dotinstall.com/lessons/basic_javascript_v2

本日は以下を学習しました。 ・#04 数値を使ってみよう ・#05 文字列を使ってみよう ・#06 if文を使ってみよう

数値を使ってみよう

数値

  • 以下のような実数が使える。
    • 10 / 2.5 / -1.5

演算子

  • 算術演算子
    • 「+」「 -」「 *」「 / 」「%(余り)」
  • 代入を伴う演算子
    • +=
      以下は同じ意味。

      x = x + 5
      x += 5;

  • 単項演算子
    • 「++」「--」

      x = 6;
      x ++; (この時 x = 7)

文字列を使ってみよう

文字列

  • 表現方法

    • 「"」か「'」で囲む

      msg=" 文字列は以下のように記述です。"

    • 文字列連結の時は以下のように表現

      msg = "hello," + "world"; console.log(msg)の出力結果は「hello,world」となる。

    • 文字列+数値の連結は、文字列

      msg= "今年は" + 2014 console.log(msg)の出力結果は、「今年は2014」という文字列となる。

  • 特殊表現

if文を使ってみよう

  • 条件分岐

    if (条件){   真  } else {   偽  }

  • 条件文は以下の演算子で組み合わせ可能
    • 比較演算子
      • >= 以下
      • <= 以上
      • == 等しい
      • !== 等しくない
      • === 等しい(右辺左辺の型も等しいか確認)
      • !=== 等しくない(の型も等しいか確認)
    • 論理演算子
      • && AND
      • || OR
      • ! NOT

Bloggerからはてなブログへブログデータを楽に移行する方法

ブログデータの移行が10分で出来てしまった

Bloggerのエクスポートデータを、はてなブログでMovebleType形式で行うとうまくいくらしい。。 とりあえずやってみました。

1. Bloggerダッシュボードの左メニューにて「設定」>「その他」を選択

f:id:oshou1985:20140410211757j:plain

2. 「ブログツール」欄にて「ブログからエクスポート」を選択

f:id:oshou1985:20140410210421j:plain

3. エクスポートデータの変換①(Blogger形式→Wordpress形式)

   http://blogger2wordpress.appspot.com/

4. エクスポートデータの変換②(Wordpress形式→MovebleType形式)

   http://komono.jp/contents/software/web/wxrtomt/

5. はてなブログダッシュボードの左メニューにて「インポート」を選択

f:id:oshou1985:20140410212115j:plain

6. 「MovebleType」タブを選択の上、エクスポートデータを選択して「文字コード選択へ進む」

f:id:oshou1985:20140410212549j:plain

7. 「utf-8」で正しく文字が表示されている事を確認して「インポートする」

f:id:oshou1985:20140410212848j:plain

以上で無事データの移行は完了です!!

しかし課題がまだ残っていて、、、

  • エクスポートしたデータはHTML形式で認識されており、Markdown形式に編集できない。。。
    作り直し以外に良い方法がないものか検討中です。
  • バックアップのために、はてなブログからのデータエクスポート方法も探さないと。

Bloggerからはてなブログに引っ越してみた

引越ししました

3ヶ月程Bloggerでブログを書いていましたが、この度はてなブログへ引っ越ししました。
とりあえずテスト投稿です! まずは乗り換えの理由を少しだけ。

Blogger環境だとMarkdown対応に難あり?

遅まきながらMarkdownの使いやすさに目覚め、
ブログに導入しようとした所、Bloggerではなんと未対応とのこと。
そこで、以下をトライしてみました。

  • Markdown→HTML変換プログラム(showdown.js)の記述をHTMLテンプレートに追加
    • → 各投稿毎に毎回HTML文の編集を行う必要があり使いづらい。投稿までの負担大。
  • Markdown対応ブログエディタ(Stackedit)で直接投稿する
    • → 自分の環境だと、Markdown形式の投稿だとテンプレートのデザインが変わってしまう。
      (多分選択しているテンプレートデザインのせい?)
      HTML形式の投稿だとMarkdownの再現が不十分。

結果、僕の環境だと上手くいかず、思い切って引越しすることに決めました。
いくつかのブログを見た結果、選んだのは

f:id:oshou1985:20140409213130j:plain

綾鷹、、ではなく、はてなブログでした。

はてなブログのここが良かった

  • Markdownが使える
  • インターフェースがわかりやすい
  • 管理メニューで各サービスへのリンクが簡単(管理画面のサイドバーで各サービスが選べるのが嬉しい!)
  • 始めるまでのハードルが低い。(ブログ開設ボタンを押して2、3ステップですぐ開設。)
  • アクセス解析画面が見やすい
  • デザインがシンプル、カスタマイズ出来る ※ TumblrWordpressも候補に上がりましたが、  思い切り主観ですがTumblrより管理が簡単そうだし、Wordpressは始めるまでの敷居が高そうなので。。。

ここがあるとさらに嬉しい

いざ引っ越ししてみると、
まだ始めたばかりですが、ダッシュボードの使いやすさ、 Markdownのブログ投稿のシンプルさ、みやすさに感動です!

過去ブログについても、ただいま移行を進めてますので、しばらくお待ち下さい。。。