Quantcast
Viewing all 122 articles
Browse latest View live

IDCFクラウド RDB の開発進んでます!

こんにちは藤城@tafujish)です。今日はいつもと趣向を変えて開発中のサービスをちょっとだけ紹介したいと思います。

そのサービスはRDBです。

ユーザーの皆様からRDBサービスについて一番多くリクエストをいただきます。ですので今回、IDCFクラウド上のコンピューティングのマシンから利用可能なリレーショナルデータベースのサービスを2018年初夏のリリースに向けて開発中です。


Image may be NSFW.
Clik here to view.
f:id:ynagaoka:20180305180209p:plain

↑こちらがIDCFクラウド RDBのアイコンとなります!

βテスト開始

現在、開発中のバージョンをβテストとして一部のユーザーにテスターとして参加してもらってます!機能や仕様など、現時点ではざっくりとした実装のため、皆さまの声を反映した造りにしていきたいと考えています。このブログを読んでいる方で、ちょっと先に試してみたいなとか、IDCFクラウドのRDBだったらこうしてほしいといった要望がある方は、βテストに参加いただけると嬉しいです。

βテスターはIDCFクラウドのアンバサダープログラム MORIO Dojo 内のコミュニティ上で募集しています。

www.idcf.jp

大まかなエントリーの流れを紹介すると、

上記サイトより、MORIO道場に参加(白帯から始めてみよう!)
↓
Facebook内クローズドコミュニティの案内が来るので参加を。(要Facebookアカウント)
コミュニティ内ではIDCFクラウドの開発メンバーと直接会話して意見が言えますので、
開発へのフィードバックなどご遠慮なくどうぞ!
↓
βテストのスレッドにて参加表明(追ってアカウントをヒアリングします)

お気軽にMorio道場にもβテストにも参加してください。

旧RDBとの違い

Image may be NSFW.
Clik here to view.
f:id:ynagaoka:20180305180015p:plain

こちらのページを見たことがある方はいらっしゃいますでしょうか。古くからIDCFクラウドをご利用いただいている方はご存知かもしれませんが、2015年にRDBサービスを提供していました(過去形)。当時はマルチマスター型で提供しており、便利な反面、マルチマスター故の課題や制限がありました。IDCF内では今も多くの環境で活用されていますが、IDCFクラウドのユーザーニーズとのミスマッチやマネージドとしての機能不足があったのだと思います。

今回の新RDBでは、旧RDBにあった課題を克服していますので、その部分を紹介します。

1) 最小限のコストで冗長化が可能に

旧RDBのマルチマスターはクラスタリングによる冗長化のため最低3台が必要で、3台分のコストがかかっていました。

一方、新RDBは2台での冗長化が可能となり、もちろん2台分のコストで実現できます。

2) クライアント(アプリケーション)側の変更は不要に

旧RDBはマルチマスターのため複数ノードへ分散して書き込みを行う場合、同じデータに書き込むと競合しデッドロックエラーとなります。そのため、アプリケーション側で考慮した作りにする必要がありました。

一方、新RDBは冗長化したとしても、Active-Standby型のため特別な考慮は不要です。

3) 障害時に自動で切り替わる仕組みを提供

旧RDBはマルチマスターのため、上述のとおりアプリケーション側の構成次第で、負荷分散や障害時の切り替えの方法も変わってきます。すべての方法に対応できる障害時の自動切替の仕組みを提供できればよかったのですが、当時は提供できませんでした。

一方、新RDBはActive-Standby型とシンプルな実装のため、障害時の自動切替の仕組みも合わせて提供します。

このように、RDBサービスとしては当たり前のような話ですがその当たり前を提供したく、今回のRDBは皆さんがシンプルに使いやすいものを目指して開発中です。

次回予告

今回は、RDBの開発が進んでいることと、旧RDBとの違いについて紹介しました。
次回は、IDCFクラウド RDBが具体的にどんなものか特徴含め紹介したいと思いますのでお楽しみに!


フロントエンジニア必見!JavaScriptのエラーログ収集方法

こんにちは、UX開発部の橋口です。

Webサービスを開発するうえで、JavaScriptは絶対的に使われる技術だと思います。
みなさんもJavaScriptでエラーの調査をする際に、クライアントで実行されるためエラーの内容やどこで発生したかが分からなかったり、問い合わせ内容の再現ができず困ったことがあるのではないでしょうか?

解決の糸口を作るためには、クライアントサイドで発生したエラーに関する情報を収集してあげる必要があります。
JavaScriptのエラーログも収集できる著名な製品もありますが、クラウド環境への導入の場合には高額になってしまったり、独自に解析する場合でも、環境などを用意するのも大変ですし管理も大変です。 そこで、今回の記事はトレジャーデータサービス by IDCFにJavaScriptのエラーログを収集する方法について紹介します。

課題

JavaScriptのエラーを収集するにあたり問題になった2つの課題と解決策をご紹介します。

JavaScriptの性質

先ほども挙げましたが、JavaScriptはクライアントサイドで実行されるスクリプトです。
最新のブラウザであればエラー発生時にスタックトレースなど調査時に有益な情報が取得できますが、閲覧してくれる方全員が最新のブラウザを使ってくれるとは限りません。

そのため、古いバージョンであっても、擬似的なスタックトレースが取得できるstacktrace.jsを今回は使用します。

収集にあたって

stacktrace.jsにはJSON形式でエラーの情報をPOSTしてくれるメソッドがありますが、今まで収集してこなかったため実際にどのぐらいのエラーが集まってくるか見当がつかず、収集側にどれだけのキャパシティを用意すべきなのか想定もできません。

そのため、今回は、キャパシティー管理が不要なうえ※1に、後日の解析が容易なトレジャーデータサービス by IDCFにエラーを収集します。
※1 全体で1.5億件、月間1,000万件まではスタータープランに入ります。詳細はこちら

実際に収集してみよう

ここまでは、課題などを上げてきました。
ここからは、実際にトレジャーデータサービス by IDCFへ収集する為の準備をしましょう。

DBの設定

まずはじめに、データベースや、テーブルを作成します。

左上から二番目のDatabasesアイコンをクリックします。

Image may be NSFW.
Clik here to view.
f:id:ynagaoka:20180323164157p:plain

新しいデータベースを作成します。

Image may be NSFW.
Clik here to view.
f:id:ynagaoka:20180323164215p:plain

新しいテーブルを作成します。

Image may be NSFW.
Clik here to view.
f:id:ynagaoka:20180323164225p:plain

writeKeyの取得

javascriptには書き込み専用のwriteKeyをセットします。 しかし、データベースやテーブルごとに制限をかけることができないので専用のアカウントを作成するのがオススメです。 writeKeyはMy profileから確認できます。

画面左下のアイコンをクリックしMy profileをクリックします。

Image may be NSFW.
Clik here to view.
f:id:ynagaoka:20180323164236p:plain

API Keysをクリックします。

Image may be NSFW.
Clik here to view.
f:id:ynagaoka:20180323164249p:plain

認証をするとAPIキーが表示されるのでwriteKeyを控えます。ない場合はCREATEを押して作成しましょう。

Image may be NSFW.
Clik here to view.
f:id:ynagaoka:20180323164258p:plain

サンプルコード

必要な情報が揃ったので実際にエラーログをトレジャーデータサービス by IDCFに送信して見ましょう。

今回はイベントリスナに window.onerrorを用いますが、 window.addEventListenerを使用することも可能です。
また、スタックトレースの部分を改行で連結しています。 今回はサンプルのためhtmlファイルに直接記載していますが、必要に応じてJavaScriptファイルにすることをおすすめします。

<html>
<head>
  <!-- Treasure Data -->
  <script type="text/javascript">
!function(t,e){if(void 0===e[t]){e[t]=function(){e[t].clients.push(this),this._init=[Array.prototype.slice.call(arguments)]},e[t].clients=[];for(var r=function(t){return function(){return this["_"+t]=this["_"+t]||[],this["_"+t].push(Array.prototype.slice.call(arguments)),this}},s=["addRecord","set","trackEvent","trackPageview","trackClicks","ready","fetchGlobalID","fetchUserSegments"],a=0;a<s.length;a++){var c=s[a];e[t].prototype[c]=r(c)}var n=document.createElement("script");n.type="text/javascript",n.async=!0,n.src=("https:"===document.location.protocol?"https:":"http:")+"//cdn.treasuredata.com/sdk/1.9.2/td.min.js";var i=document.getElementsByTagName("script")[0];i.parentNode.insertBefore(n,i)}}("Treasure",this);
  </script>
  <!-- StackTrace.JS -->
  <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/stacktrace.js/2.0.0/stacktrace.min.js">
  <!-- javascript error collector -->
  <script type="text/javascript">
var td = new Treasure({
  host: 'idcf.in.treasuredata.com',
  // 書き込み専用のwriteKeyを記載します
  writeKey: 'YOUR_WRITE_ONLY_APIKEY_IS_HERE',
  // データベース名を記載します
  database: 'DATABASE_NAME'
});
// Enable cross-domain tracking
// td.set('$global', 'td_global_id', 'td_global_id');
var callback = function(stackframes) {
  return stackframes.map(function(sf) {
    return sf.toString();
  }).join('\n');
};
var errback = function() { return null; };
window.onerror = function(msg, file, line, col, error) {
    // callback is called with an Array[StackFrame]
    var stack = StackTrace.fromError(error).then(callback).catch(errback);
    stack.then(function(stringifiedStack) {
      td.set({
        msg: msg,
        url: file,
        line: line,
        column: col || null,
        stack: stringifiedStack
      });
      // テーブル名を記載します
      td.trackEvent('TABLE_NAME');
    });
};
  </script>
</head>
<body>
  sample
</body>
</html>

実際にエラーログを収集すると、次のようにDB内のテーブルに格納されます。

Image may be NSFW.
Clik here to view.
f:id:ynagaoka:20180323164310p:plain

さいごに

IDCFクラウドでもJavaScriptエラーログを取得中です。
どの画面でどの行でどのようなエラーが発生しているかデータベースに記録されるため、リリース後に新規にエラーが発生していないか、定常的に顧客のUXを低下させるような不具合が発生していないかの確認に役立てています。
改善にとても役立つのでみなさんの作成されるWebアプリケーションでもエラーログの継続的な収集と解析をお勧めいたします。

IDCFクラウド RDB を少しですが紹介

こんにちは藤城@tafujish)です。前回の記事に引き続き 、IDCFクラウド RDB サービスについてもう少し具体的に紹介したいと思います。

blog.idcf.jp

IDCFクラウド RDB サービスとは

IDCFクラウド コンピューティング 上の仮想マシンから利用可能なリレーショナルデータベース(RDB)を提供するサービスで、現在は MySQL 提供の開発を進めています。

IDCFクラウドのクラウドコンソールから、簡単かつ短時間でセットアップされたRDBを利用することが可能になります。冗長構成で作成され監視と障害時の自動切替や自動バックアップが備わっていますので、可用性の向上やデータの保護が可能です。

では、具体的な構成を見ていきましょう。

Image may be NSFW.
Clik here to view.
f:id:ynagaoka:20180424160328p:plain

RDBマシンには、プライベートIPアドレスが割り当てられ、コンピューティングの仮想マシンから閉域かつ同一セグメントでの接続となり、セキュアで低レイテンシな接続となります。

ここでは、標準のネットワークに接続している例ですが、追加ネットワークに接続することで、階層を分けたネットワーク構成を組むことができます。また、プライベートコネクトバーチャルブリッジ経由でも接続できるため、他のクラウド環境や、データセンターなどのオンプレ環境との接続も可能です。

RDBマシンはアクティブ-スタンバイによる冗長構成になっています。アクティブのRDBマシンに書き込まれたデータは、スタンバイ側にボリュームミラーリングで同期されるためアクティブ-スタンバイ間でのレプリケーション遅延は起こりえません。

アクティブのマシンが障害等でダウンした場合は、短い断時間の内にスタンバイ側に自動で切り替わります。この切り替りはDNSベースでの提供となりますので、自動切替の機能を利用する場合は、FQDNでRDBへ接続する必要があります。

RDB サービスの特長

IDCFクラウド RDB においても、これまでのIDCFクラウドの各サービスの同様に、シンプルでパワフルなサービスをコンセプトに開発中です。

料金も使い勝手もシンプルに、性能や動きはパワフルに。 と言うことで、βテストを提供する中でよくいただいた質問の一部を紹介したいと思います。

Q)スペック変更は無停止でできますか?

A)マシンタイプのスペックアップは、コンピューティングのダイナミックスケール同様に無停止で変更することができます。ディスクサイズも同様に無停止で拡張することが可能です。

Q)すぐに冗長(スタンバイ)に切り替わりますか?

A)故意にダウンさせて1分半くらいで切り替わってます。  ユーザー側でも試せるので是非やってみてください。

Q)料金は?お高いんでしょう?

A)決まり次第公開したいと考えてますが、コンピューティング同様に、使いやすい料金で、素晴らしい性能が出せるよう鋭意開発中です!

Q)いつリリースされますか?

A)現時点で、順調に開発進んでいますので2018年初夏から変更なしです。

次回予告

以上、IDCFクラウド RDB の構成や特長の一部を紹介しましたが、あくまでβテスト中のものです。正式版リリース時に変わることかもしれませんので、リリース後に触って試してもらえるとうれしいです。 では、最終回の次回は、もう少し具体的な動作に迫りたいと思います。

リリース間近!IDCFクラウド RDB活用セミナー開催

こんにちは!ビジネス開発部の神谷です!
今回は、過去に何度か当ブログで紹介している「IDCFクラウド RDB」についての記事となります。
IDCFクラウド RDB の開発進んでます! - IDCF テックブログ
IDCFクラウド RDB を少しですが紹介 - IDCF テックブログ

ユーザーの皆様から一番多くリクエストをいただいていたIDCFクラウドのRDBですが、
ついに6月28日にリリースされます!

www.idcf.jp

オールフラッシュ性能・シンプルなUIなど、従来のIDCFクラウドの良い点はそのままに、RDBならではの工夫点も盛りだくさんとなっております。
そんなRDBですが、リリースに先駆けて東京・大阪で活用セミナーを開催いたしました!
IDCFクラウドセミナー ~データベース活用法~(東京編) - IDCフロンティア/IDCFクラウド | Doorkeeper
IDCFクラウドセミナー ~データベース活用法~(大阪編) - IDCフロンティア/IDCFクラウド | Doorkeeper

<プログラム>
・新サービス「IDCFクラウド RDB」のご説明
・「IDCFクラウド RDB」の技術説明
・「IDCFクラウド RDB」のデモンストレーション
・質疑応答
・懇親会

ここからは、セミナーの内容について軽くご紹介したいと思います!

新サービス「IDCFクラウド RDB」のご説明

まずはじめに、新サービスの説明を藤城より行いました。
Image may be NSFW.
Clik here to view.
f:id:kkamiyakenshiroh:20180703150800j:plain
▲「RDBの人」クラウド事業本部 ビジネス開発部 藤城 拓哉

「IDCFクラウド RDB」というサービスを、次の5つの観点から解説しました。

①料金
 ・予算のサイジングがしやすい価格体系(RDBマシン料金 月額上限500円)
 ・I/Oやリクエストによる従量課金はなし
②性能
 ・VMwareによる高性能な基盤
 ・オールフラッシュによる高速なディスクI/O
 ・オールフラッシュのIOPS制限なし
③ネットワークレイテンシ
 ・フェイルオーバー後でも変わらないレイテンシ
 ・クラスタ配置調整で可用性も担保
④サービス断が生じるアクション
 ・コンピューティング同様にダイナミックスケール
 ・innodb_buffer_pool_sizeもオンライン変更
⑤ハイブリッド構成
 ・スケール用や検証用などの一時利用に
 ・閉域でセキュア、高帯域、冗長化、シームレス

SlideShareにも資料を載せておりますので、詳細はそちらをご覧ください!

www.slideshare.net

「IDCFクラウド RDB」の技術説明

続いて、RDBのシステムアーキテクチャについて浅沼より説明しました。
Image may be NSFW.
Clik here to view.
f:id:kkamiyakenshiroh:20180703150819j:plain
▲クラウド事業本部 技術開発部 浅沼 敬

※浅沼の資料に関してはシステム内部情報を含むため、非公開とさせていただきます。ご了承ください。

RDBサービスの下記機能、オプションにおけるロジックなどを技術的な観点から説明しました。
・RDB作成時のホスト選択ロジック(冗長化オプション利用時)
・障害発生時のフェイルオーバー処理
・バックアップ取得
・マシンタイプ変更
・ディスクサイズ拡張

開発に関わるエンジニアから直接説明したことで、RDBの魅力である信頼性の高さが伝わったのではないでしょうか。

「IDCFクラウド RDB」のデモンストレーション

デモンストレーションでは、RDBの目玉機能の一つである無停止スペックアップをお見せしました!
・sysbenchを使ったOLTPテストをRDBマシンに対して実施 ・RDBマシンをM4(2CPU/メモリ4GB)→L8(4CPU/メモリ8GB)に無停止スペックアップ
・スペックアップ実施時のレイテンシやエラーの有無を確認

Image may be NSFW.
Clik here to view.
f:id:kkamiyakenshiroh:20180703152742j:plain
▲無停止スペックアップのデモは、RDBマシンに対する負荷状況を可視化しよりわかりやすく

この他にも、冗長化オプションで実現可能なActive/Standby構成における、切り替わりのデモも行いました!

最後に

「IDCFクラウド RDB」はRDBマシン料金が500円/月と、気軽に試せる価格設定となっております。
機能や性能、開発の思いなどお伝えしたい点は尽きませんが、まずは実際に触ってみてください。
そしてぜひ、RDBに対する感想、ご意見、機能追加のご要望をいただければと思います!
RDBを皮切りに、今後もIDCFはさらにパワフルなクラウドを提供していきます!今後もご期待ください!

今からはじめられるDRサイト準備

こんにちは藤城(@tafujish)です。RDB関連のエントリーは別の人が書いてくれたので、久しぶりにRDB以外の話をします。

最近、DR(Disaster Recovery)に関連したお問い合わせが多いため、IDCFクラウド上でのDR、つまり災害復旧を可能とする事前対策を紹介しようと思います。


ちなみに、DRBCPといったワードについては用語集をご参照ください。

そもそも、IDCFではクラウドサービスを提供するずっと前から、DRを意識したデータセンターの建設を行ってきました。
www.idcf.jp
地震や台風など天災が多い日本では、DRに対して需要が多くあり、IDCFではクラウドサービスにおいても次のようなDRを意識したサービスを提供してきました。

一方で、ドキュメントも提供しており、IDCFクラウド本の6.4章では、RPO(Recovery Point Objective)とRTO(Recovery Time Objective)の考えから構成例までを紹介しています。
また活用マニュアルでは、MySQLレプリケーションによるデータ同期を用いたDRサイトの構築手順をwordpressを例に紹介しています。
www.idcf.jp

他にもsambaによるファイルサーバーを同期する方法を紹介しています。
www.idcf.jp

と、前置きが長くなりましたが、上述のとおり事前にDRを考慮した構成にしていれば問題はないのです。しかし、既存のサイトを急にDR対応する必要がでてくることもあると思います。そのようなときに、後追いでDRサイトを準備する具体的な方法を紹介していきたいと思います。(もしこれからサイトを構築する話であれば上記ドキュメントを参考にしてください)

前提

ここでは、WEBサーバーとDBサーバーがあるような構成のサイトのDR化を検討していきます。DR化を考えたとき、3つのレベルに分けることができます。

1. データを退避する
災害時に一番困ることは、サービスが停止することではなく、データが消失することです。そのため、まずはデータを災害から保護するために退避させます。データの退避は、更新があったときや、頻繁にあるようであれば定期的に実施します。災害時にはそのデータからDRサイトを再構築し復旧します。データの退避先は、DRサイトの近くにあるとデータのリストアが速く理想です。

2. サーバー環境含めて事前に構築する
災害後の復旧のためにサーバー環境を再構築するには時間がかかりサービスの復旧が遅くなってしまいますので、事前にサーバー環境まで構築します。災害時には、DRサイトへの切り替えを行う程度なので構築しなおすより復旧までの時間を短くできます。

3. 災害時には自動で切り替わる仕組みまで構築する
災害時にDRサイトへ手動で切り替えるとなると、その分の時間がかかりますしそもそもその作業が実施できるかもわかりません。そこで、即時復旧する仕組みを用意します。そのためには、ネットワークの自動切り替えやデータを同期する仕組みが必要です。

1から3になるにつれて、復旧までの時間は短くなっていきますが、構築の手間や費用などインフラコストは大きくなっていきます。ここでは、手軽に導入することを目的として1の方法を扱います。

次の構成のとおり、メインサイトのみで稼働しているサイトにDRサイトを追加していきます。データを退避させるネットワークの経路としては、点線のインターネット側と実線のインターナル側がありますが、これについては後述します。

Image may be NSFW.
Clik here to view.
f:id:tafujish:20180703142138p:plain

どんなデータを退避させるか

まずは最低限、DB上のデータを移す必要があります。バックアップ用にダンプを取得していると思いますので、このファイルを退避させます。

次にコンテンツデータですが、これらのファイルも退避させた方が良いでしょう。Git系のサービスや社内のデプロイ環境を使っているなら、そこから戻すことも考えられますが、災害時に利用できるかどうかわからないですからね。予備用と思って退避しておくのが良いと思います。

その他に、サーバー構築に必要なパッケージファイルや設定ファイルもあれば退避させるのが良いですが、可能であればOSやミドルウェア周りはテンプレートとして保存しておくと、再構築しやすいので良いと思います。(IDCFクラウドではテンプレートのリージョン間コピーができます)

どこにデータを退避させるか

基本的には、再構築する環境に物理的にまたネットワーク的に近いところ、可能であれば同じところに保存しましょう。
ある程度ファイルサイズが大きくなると思いますので、DRサイトと同じネットワーク上など距離が近いところに置き、帯域とレイテンシを確保して素早く戻せるようにしておきます。
また、災害時せっかく退避したデータにアクセスできないと元も子もないので、災害時にもアクセスできる必要があります。つまり、メインサイトとDRサイトの物理的な配置はある程度把握しておき、物理的な距離を確保しておく必要があります。IDCFクラウドであれば、東西リージョンに分けて使うだけで物理的な距離、電力会社、ネットワーク経路などDRに必要な要素を網羅しています。

どうやってデータを退避させるか

ファイルの転送であれば特別な実装はいらないため導入しやすいと思います。Linux環境であればデータの差分等考えるとrsyncコマンドを利用するのが簡単で良いと思います。転送先のサーバーへSSHできることが条件です。例えば次のように実行できます。

# rsync [オプション] <コピー元> <コピー先>

/opt/backupfile 以下をDR先(192.168.1.97)へ転送する例だと次のように実行します。

# rsync -ahv /opt/backupfile root@192.168.1.97:/opt/

どのタイミングでデータを退避させるか

データの更新がどこまで頻繁にあるかに依存します。ほとんど更新がなければ更新したタイミングや週次での実行で良いですし、もう少し更新頻度があれば日次での実行でも良いです。日次や週次の定期実行であれば、cronで定期実行できます。日次で実行したい場合、上記のrsyncのコマンドをスクリプトファイル(rsync.sh)として

/etc/cron.daily/rsync.sh

へ設置すると簡単だと思います。
もし、日次よりも頻度を上げたい場合は、lsyncdを使ってファイルの更新を検知し同期するということも可能です。

このときに指定するIPアドレスがグローバルIPアドレスであれば、インターネット側の経路での通信となります(先述の構成図の点線の部分)。

IDCFクラウドならではの構成

上述のとおり、ファイルを自動で同期すると、その頻度やデータサイズによっては時間がかかってしまうこともあると思います。また、データの内容によってはセキュリティの考慮が必要になるケースがあると思います。

このような場合は、閉域でセキュアに接続でき高帯域を使えるプライベートコネクトがおすすめです。東日本リージョンと西日本リージョンを簡単に接続すること(先述の構成図の実線の部分での転送)が可能です。追加ネットワーク費用(月額1万円×2ゾーン)分はかかりますが、プライベートコネクト自体には費用はかかりません。
Image may be NSFW.
Clik here to view.
f:id:ynagaoka:20180828174825p:plain

既にIDCFクラウド上に環境があれば、次の流れで導入できます。

1. 追加ネットワーク作成
 プライベートコネクトの接続には、追加ネットワーク経由で利用します。
 追加ネットワーク作成し、仮想マシンを接続するまでの流れは次のブログを参照ください。
blog.idcf.jp

 記事中でのルーティング設定はCentOS6系での例ですが、CentOS7系の場合は次のFAQを参照ください。
 追加NICの設定例(CentOS7系の場合) | IDCFクラウド

 補足ですが、このFAQの内容だと設定反映のためにインターフェースのリスタートすなわち通信断が生じます。
 簡単に止められない場合は、上記設定に加え、一時的にルーティングを追加することも可能です。

# ip route add 192.168.0.0/21 via 192.168.7.254 dev eno33557248

2. プライベートコネクトで東日本リージョンと西日本リージョンを接続
 次のご利用ガイドで紹介している手順のように接続できます。
www.idcf.jp

災害時の復旧の流れ

以上の対応で、データは退避できました。では、次に実際に災害等で、DRサイトを立ち上げが必要になったときの流れを紹介します。

1. サーバー環境を構築
 一から構築するか、もし用意していたらテンプレートからサーバーを立ち上げます。
 ファイアウォールやロードバランサーなどネットワーク設定もします。

2. 構築した環境に退避していたデータを戻す
 退避していたデータを、WEBサーバーやDBサーバーへ戻します。

3. サイトの動作確認ができたら、DNSレコードを変更
 通常のサイトであれば、DNSレコードを新しいIPアドレスへ変更して完了になると思います。
 もし、IPアドレスが変わることで、影響する箇所がないかは事前に確認しておくと良いです。

このように難しくない流れだと思います。大事なのは、いざというときにデータから環境を戻せることです。そのためには、事前にテストをしておくと良いでしょう。

まとめ

このように、データさえ何とかなれば、意外と簡単にDRサイトは用意できます。
これからDR含めたサイトを作成する場合は、冒頭のドキュメントを参照いただき、手っ取り早くDRサイトを作りたい方は今回のエントリーを参照ください。
クラウドの機能を活用いただいて、簡単にそしてより速い復旧を実現いただければ幸いです。

Rubyエンジニア必見!IDCFクラウドのバックエンドシステムアーキテクチャ

こんにちは!技術開発部の浅沼です!

先月、Forkwellさん とのコラボイベント「How Ruby performed Higher」を開催しました。

そこでは、『RubyでPub/Sub messaging 〜 Multi Process, Daemonizesしたアプリケーション開発の事例』と題して、 IDCFクラウドのサービスを実現しているバックエンドシステムのアーキテクチャと開発事例を紹介しました。

IDCFクラウドRDBやインフィニットLBのバックエンドシステムは、Rubyで開発したPub/Sub messaging を用いたアプリケーションが稼動しています。

RubyというとRuby on Railsを利用したMVCなWebアプリケーションを思い浮かべると思いますが、今回は Multi Process, Daemonizes を活用したスケーラブルかつハイパフォーマンスを目指したバックエンドシステムを紹介します。

バックエンドシステム構築のポイント

バックエンドシステムの構成を考える上で、リクエストとレスポンスの性能、スケーラビリティを考慮することが常に求められると思います。その要件を満たす一つの方法として、リクエストの非同期化が考えられます。

IDCFクラウドのバックエンドシステムにおいても非同期化は重要なポイントになります。各サービスの管理用DBやクラウド基盤の各種APIなど一つのサービスを実現するために、様々な連携サービスを利用します。

マネージドなサービスの場合、ユーザーに提供する仮想マシンには管理用のAgentサービスが稼動しています。そのAgentから各種状況に応じてイベントが発生したり、Agentへイベントを送信するなどの処理が発生したりします。サービスの利用拡大に応じて管理するAgent数の増減、発生するイベントの増減など、そのスケーラビリティにPub/Sub messagingという形はピッタリ当てはまりました。

高可用性を実現するマルチリージョン配置

可用性においてもPub/Sub messagingであることがポイントになります。Pub/Subで構築された各アプリケーションは、ロケーション上でも分散配置することが可能になります。

当社データセンターを活用してマルチリージョン上にアプリケーションを分散配置、Message Queueingを担うミドルウェアなどをクラスタ化して配置することで高可用性を実現することができました。

アプリケーションのスケーラビリティ、ハイパフォーマンス化

各アプリケーションのパフォーマンスやスケーラビリティ・可用性では、RubyとServerEngineの組み合わせを活用していることがポイントとなっています。

ServerEngineは、マルチプロセス化したアプリケーションに最適化された堅牢なRubyのフレームワークです。ServerEngineのSupervisorを利用することによって、プロセスの自動リスタートやコンフィギュレーションのダイナミックな再読込などが可能となっています。もし、稼動しているプロセスが異常終了したとしても、設定したプロセス数を維持するために新しいプロセスを自動的に起動してくれます。一台のサーバで必要な並列数を維持してパフォーマンスやスケーラビリティをコントロールしたい場合に、このServerEngineの特性が役に立ちます。

Railsでマルチプロセス化を行うと、一つのプロセスの使用メモリ量やオーバヘッドが気になりますが、Ruby+ServerEngineを利用することで、必要なgemのみを読み出すようにしています。実装は、クラスの構成から話すことも多く、常にコーディングスキルが鍛えられます。

以上のように、Pub/Sub messagingを活用したスケーラビリティと高可用性、Ruby+ServerEngineによるマルチプロセス化したアプリケーションのハイパフォーマンスを意識して日々開発に取り組んでいます。

おわりに

Rubyでマルチプロセスを活用したアプリケーション事例はなかなか珍しいようで、当日の参加者の皆さんには、Pub/Sub messagingのポイントやServerEngineの実用事例が好評でした。次回、機会があればPub/Sub messagingを利用したアプリケーション実装のハンズオンをやってみたいと思っています。

まだまだ、Message Queueingを担うミドルウェアの性能を引き出したり、各アプリケーションのクラス構成をよりスマートにしたり、インターフェースをより発展させたりなど、挑戦したいことはいっぱいあります。アーキテクトからミドルウェア、詳細設計・実装まで、一緒にRubyでアプリケーションを開発してクラウドサービスを実現することに興味のあるエンジニアを募集しています。詳しくは採用ページまで!

マルチクラウド×DockerでDeepLerning環境の構築

こんにちは藤城(@tafujish)です。今回は事例紹介をしたいと思います。
GPU担当として関わらせてもらった案件で、とても興味深かったので是非紹介したいなとお客様へ相談したところ快諾いただきました。

何が面白いかと言うと、DeepLearningでの利用を目的としたケースで、マルチクラウド化を実現しているというところです。今回はマルチクラウドに焦点を当てたいため、IDCFクラウドの導入事例ではなくこちらのブログで取り上げて、なぜマルチクラウドなのか、どのような構成なのかをヒアリングさせてもらった内容を私の方から紹介していきたいと思います。

今回のかたちでの掲載の承諾と情報提供くださったリクルートテクノロジーズ様に感謝申し上げます。

Image may be NSFW.
Clik here to view.
f:id:ynagaoka:20180921110844p:plain

そもそもの課題

それまでの旧環境としては、海外のクラウドサービスを利用していたが、DeepLearningを活用したサービスが増えるなか、学習のために大量のGPUが必要になっていきます。すると、インフラコストの中でGPUのコストが大きくなっていくのは避けられませんでした。そこで、コストパフォーマンス良く使えるGPU環境の検討をはじめました。

また、この検討のなかで見えてきたのが、GPU環境のデプロイにクラウドサービス側で提供されるテンプレート機能を利用していたため、環境の移行がやりにくいという課題でした。

どんなサービスが動いているか

a3rt.recruit-tech.co.jp

A3RT(アート)というリクルートグループ内で使われているコグニティブなAPIを無償公開しています。リリース当初から話題になっていたのでご存知の方も多いと思います。このA3RTの中での学習にGPUを大量に利用しています。

またA3RTのほかにも、R&Dの開発環境の中でも、開発者の方がGPUを自由に利用することができ、ここでも学習用途での利用にGPUを利用しており、GPUの使用量は多くなる一方です。

新環境検討のプロセス

上述のとおり、コストパフォーマンス良く使える環境の検討では、各社サービスを試用し比較評価しました。

評価方法としては、既存の環境で利用してきた学習プログラムを実行し、その性能と料金からコストパフォーマンスを比較します。この中で、GPUの世代やモデルも変えて検証しました。

この中でわかったことは、GPUの性能は世代やモデルに依存し、各社サービス間では性能に差がないことがわかりました。この結果、コストパフォーマンスを最優先で比較して選定し、その後、クラウド環境含めたセキュリティ等の要件を確認しました。

結論としては、GPU環境はIDCFクラウド ベアメタルサーバーを利用し、ネットワークやフロントのサーバーはIDCFクラウド コンピューティングを利用する構成に決まりました。

環境移行のためのポータビリティ

コストパフォーマンスともう一つ課題だった環境移行は、Dockerを利用することでポータビリティを実現することにしました。

今回、コストパフォーマンスを重視した比較検討をしましたが、今後も常に最適なコストパフォーマンスを追求する必要がありますし、その時の用途に応じてGPUの最新世代や特定のモデルを指定して使いたいケースもでてきます。となると、複数の様々な環境を今後利用していくことすなわちマルチクラウド環境での利用を想定する必要があります。旧環境のように、クラウドサービスのテンプレート機能を利用すると、そのクラウドサービスの中で閉じられてしまいます。

そこで、どこの環境でも利用可能で環境移行もしやすく、開発環境としても適しているDockerを利用することに決めました。nvidia-dockerにより、Docker上からGPUを利用することもできます。

環境移行して良かった点と見えた課題

今回の環境移行の結果、当初の計画通りのメリットが見いだせました。

  • クラウド利用料金が多少下がったうえ、性能は5~6倍向上

当初は学習用途の利用を想定していました。学習には大量のGPUを要しますし、環境としても切り出しやすいので移行しやすいからです。しかし、推論(サービス)用途でも利用しはじめています。ベアメタルサーバーは定額での利用となるため、常時稼働し続ける推論(サービス)用途との相性が良かったのです。

  • Dockerを利用しポータビリティを実現、マルチクラウド化が可能に

Dockerを利用したことで想定外に良かったことは、CUDA(GPUのドライバ等ツール群)のバージョンの取り扱いがやりやすくなったことです。開発者は自由にDeepLearningのフレームワークを利用できるため、必要なCUDAのバージョンもそれぞれ異なるケースがよくあります。このようなときも、開発者がフレームワークとCUDAのバージョンを自由に選択してDockerイメージを作成することができます。

一方で課題もわかってきました。
それまではテンプレートベースだったものをDockerへ変更するため、調整や実作業などは想定以上の大変さがありました。手順を作成したり社内ハンズオンを実施したりして対応しました。

もう一つの課題が、学習用のデータを旧環境から新しいIDCF環境へ移すことでした。しかしこれはデータの転送に時間がかかり過ぎたため断念しました。この問題を解決した、マルチクラウド構成を次に紹介します。

マルチクラウドを実現した構成

次の構成をもとに順に説明していきます。

Image may be NSFW.
Clik here to view.
f:id:ynagaoka:20180921125445p:plain

イメージ管理

①ローカルにてDockerイメージ作成

開発者がそれぞれ自身のマシン上でDockerイメージを作成しています。開発者それぞれで利用するフレームワークなどの環境が異なるので、各自の環境で構築した方が効率が良いそうです。

②Dockerイメージをアップロード(Push)
③Dockerイメージをデプロイ(Pull)

Dockerイメージを管理するリポジトリは、プライベート性と手軽さからGCPのContainer Registryを採用しました。簡単に独自のDockerリポジトリを準備でき、GCP以外の環境からも利用できるのでマルチクラウド環境下の利用に適しています。

Dockerホスト

④IDCFクラウド ベアメタルサーバー 2GPU

Dockerホストとなるのは、IDCFクラウド ベアメタルサーバーです。このベアメタルサーバーには、NVIDIA Tesla P100を2枚搭載しており、マルチGPU利用や複数コンテナで共有など両方の用途での利用が可能です。
また、Dockerによるコンテナ環境のため、サーバーをフル性能で活かすことができるベアメタルサーバーが適しています。なぜならベアメタルサーバー上でコンテナを利用する場合、クラウド環境で利用したときの仮想化によるオーバーヘッドがないからです。

⑤スケールアウト

IDCFクラウド ベアメタルサーバーは決まった台数を定額で利用するサービスのため、クラウドのように今すぐサーバーを増やすという使い方はできません。しかし、ベアメタルサーバーとIDCFクラウドの仮想マシンは同一のネットワークセグメントに接続されているため、クラウドのGPU搭載のマシンタイプを作成することで、急な計算需要に応じてスケールアウトすることができます。Dockerによるポータビリティを活用しているため、利用者から使い勝手は同じように使えます。

⑥nvidia-docker

先述のとおり、nvidia-dockerを入れることで、コンテナ上からGPUを扱うことができます。

ストレージ

⑦Storage GatewayからS3をマウント

移行してわかった課題であるデータ転送時間は、AWS Storage Gatewayを利用することで解決しました。学習用に使うサービス等のログデータは、AWS S3上に蓄積されています。そこで、データを事前にすべて転送することをやめ、Storage Gateway経由でアクセスすることにしました。

⑧学習データをNFSマウント

Storage Gatewayは、ファイルストレージとして利用しNFSでマウントし、各コンテナから利用できます。ファイルの利用のはじめはやはりS3から取ってくる分遅いですが、一度キャッシュされればその後は快適に利用できます。

ジョブ管理

現在は、開発者がそれぞれDockerを起動して利用することが多く、GPUリソースの有効活用と更なるマルチクラウド活用のために、マルチクラウド対応を前提とした独自に開発したジョブ管理システムを導入しています。

まとめ

今回は、リクルートテクノロジーズ様のIDCFクラウド環境を基点としたマルチクラウド構成を紹介しました。GPUを利用する上でのコストパフォーマンスとポータビリティという課題を、Dockerを利用することでマルチクラウド化することで解決しました。

今後のIDCFクラウドには「最新機種の導入などパワフルなサービス開発を期待している」とコメントをいただきました。GPUやDockerを活かすインフラを引き続き提供・開発して期待に応えていきたいです。

Dell Technologies World 2018 参加レポート

こんにちは、クラウド事業本部SRE部の最上です。
主にクラウド基盤の運用業務・構築・サービス設計を担当しており、最近は海外でのカンファレンスにも積極的に参加し、最新の業界動向について知識を深めています。
だいぶ遅くなりましたが、今回は4月30日~5月3日にラスベガスで開催された「Dell Technologies World 2018」への参加レポートを記載したいと思います!

Dell Technologies World 2018 Conference | Las Vegas, April 30–May 3 | Dell EMC US

今後は、IDCFテックブログではあまりなかった、海外でのイベント参加レポートも積極的に投稿していくことにしました。
私だけでなく、社内の様々な部署の人が多くのイベントに参加しているので、きっとこういった投稿も多くなるはずです。 イベントの特性上あまり詳しくは書けませんが、概要や雰囲気をちょっとだけ紹介します。

参加の目的

イベント参加の目的は、「世界のトレンドを肌で感じる」ということです。

海外でのイベントは注目度が高く、世界中から様々な方が参加します。そのため、どのような技術が世界で注目されているのかがすごくよくわかります。
IDCFでは、Dell EMC社の「XtremIO」というFlashストレージをIDCFクラウドで利用していますが、 製品導入のきっかけが、こういったイベントに当時の製品設計者が参加し、説明を聞いたことでした。 インターネットで情報収集を行いトレンドを追うことはもちろんですが、イベントに参加して直接情報を得ることも重要ですね。

Dell Technologies Worldとは

Dell、EMC、VMwareなどのDell Technologiesグループ各社の製品だったり、ロードマップを紹介する場です。 セッション数は500を超え、何万人もの人々が集まる大きなイベントになります。

Image may be NSFW.
Clik here to view.
f:id:tmogami:20180910144118j:plain

General Session

いわゆるメインセッションです。何万人という単位で収容可能な広い会場で開催されます。

Speaker Lineup | Dell Technologies World 2018 | Dell EMC US

Image may be NSFW.
Clik here to view.
f:id:tmogami:20180910144241j:plain

CEOのマイケル・デル氏の講演は圧巻でした。 講演の内容に関しましては、様々なニュースサイトで取り上げられているのでそちらをご覧ください。

「Dell Technologies World 2018」が開幕 - マイケル・デル氏が講演 | マイナビニュース
ASCII.jp:マイケル・デル氏、デルテクノロジーズの「総合力」を強調 (1/2)

注目技術

以下のキーワードを含むセッションは特に人気がすごかったです。

  • NVMe
  • Storage Class Memory

これまでの接続規格であるSCSIやSATAなどの規格からNVMeへと変わることにより、よりSSDの性能を活かせるようになったことや、 3D XPointをはじめとする不揮発性メモリが登場したことによって、より注目を浴びているんだと思います。
また本セッションの前日に、All NVMe対応のPowerMAXという製品が発表されたので、その影響もあったのかもしれません。 座席は当然満席、立ち見も多くいる盛況ぶりでした。

実は2年前に開催された「EMC World」にも私は参加しており、イベントは終始「2016年はAll Flash Year!」という雰囲気で、All Flashに関連するセッションが多めでした。 その中の一つに「将来Flash技術は更に進化し、メモリとの距離が近づく」といった内容のセッションがあり、印象深かったのを覚えています。
あれから2年、PowerMAXのリリースがされ、いよいよ本格化してきたなという実感が湧くと同時に、たった2年でここまで技術の進歩があるのかという恐怖もあります。

少し裏話(5/4(金)の悲劇)

イベントは予定通り5月3日に終了しました。別件でアポがありサンノゼへ移動しようとしたのですが、まさかの飛行機が7時間遅延。 アポには間に合わないし、朝7時から空港のベンチで待っており足腰は痛いし散々でした。
しかし、航空会社からの補償で温かい食事をいただくことができました。 こういったアクシデントも海外あるあるですね。

Image may be NSFW.
Clik here to view.
f:id:kkamiyakenshiroh:20180925142015j:plain

最後に

本記事で、Dell Technologies World の雰囲気だけでも味わっていただけたかと思います。 IDCFでは役職者だけではなく、現場担当である社員でも積極的に海外イベントに参加できるためとてもよい刺激になります。 今後もイベントに参加した際は、本ブログで情報を発信していきたいと思います!


フロントエンドエンジニア必見!画面が表示されてから操作可能になるまでの速度計測について

こんにちは、クラウドSRE部の菅原です。

エンジニアの皆さんはサーバーのレスポンスタイムなどの速度計測を行っていると思いますが、ブラウザ側で要素が描画される時間は計測できておりますでしょうか?

今回は、ブラウザ上で 画面が表示されてから操作可能になるまでの速度を計測し、Google Analytics で可視化する対応について説明します。

背景

IDCFクラウドの仮想マシン一覧で保有しているVMの数が多いと、JavaScriptの処理が画面を30秒以上ロックしてしまう現象が発生しました。

お客さまの報告から発覚したことですが、「遅い!」というキーワードから連想するのはサーバーのレスポンスタイムという先入観があったので、そのような状況に気づけませんでしたし、フロントエンドの速度を計測していない状態での調査は大変でした。JavaScriptの処理を修正し、遅いという問題は改善しましたが、今後このような事態を分析できるデータが必要だという課題が残りました。

これらを改善したいという思いから、この対応に取り組みました。

計測方法

ブラウザの処理時間を計測するためにJavaScriptのperformance.getEntriesByType()メソッドを使用します。
performance.getEntriesByType('navigation')[0]を実行すると以下のようなデータが取れます。
これらは、ブラウザが検知しているイベント発生時点の経過時間をミリ秒単位で記録したものです。

connectEnd: 10.900000001129229
connectStart: 10.900000001129229
decodedBodySize: 177316
domComplete: 370.43000000267057
domContentLoadedEventEnd: 214.36000000539934
domContentLoadedEventStart: 214.02500000112923
~ 中略 ~
requestStart: 12.945000002218876
responseEnd: 15.859999999520369
responseStart: 13.275000004796311
~ 略 ~

画面が表示されてから操作可能になるまでの速度を、上記の responseEnddomContentLoadedEventEndを用いて以下のJavaScriptで表現すると、処理時間timeは198(ms)となりました。(小数点以下は切り捨て)

var perform = performance.getEntriesByType('navigation')[0];
var time = Math.floor(perform.domContentLoadedEventEnd - perform.responseEnd);

Google Analytics へ送信する

上記の値は Google Analytics のカスタム速度へ送信することにしました。
以下のような記述で送信することができます。(analytics.js を読み込んでいる前提)

window.addEventListener('load', function () {
    try {
        // パフォーマンスの情報取得
        var perform = performance.getEntriesByType('navigation')[0];
        var time = Math.floor(perform.domContentLoadedEventEnd - perform.responseEnd);

        // gaのカスタム速度へ値を送信する
        ga('send', {
            hitType: 'timing',
            timingCategory: 'DOMContentLoaded',
            timingVar: location.pathname,
            timingValue: time,
            timingLabel: label
        });
    } catch (e) {
        // 例外処理
    }
});

上記データの収集だけでも良いのですが、今回はコネクションの情報も送信するように対応しました。

responseEndからdomContentLoadedEventEndまでの時間にはjs、cssなどのファイルをダウンロードする時間も含まれております。
ユーザーの環境で回線速度が遅かった場合にはjs、cssなどのダウンロード時間が大きくなってしまうため、コネクションの情報も収集することで調査の指標とすることが狙いです。

コネクションの情報は、以下の記述で取得することができます。(Google Chrome のみ)

var connectionInfo = '';
if (navigator.connection) {
    var connection = navigator.connection;
    connectionInfo = JSON.stringify({
        'downlink': connection.downlink,
        'effectiveType': connection.effectiveType,
        'rtt': connection.rtt,
        'saveData': connection.saveData
    });
}

コネクションの値はGoogle Analyticsのカスタムディメンションに設定することにしました。
カスタムディメンションは Google Analytics >「管理」>「プロパティ」>「カスタム定義」>「カスタムディメンション」で作成できます。

Image may be NSFW.
Clik here to view.
f:id:tsugawara-IDCF:20190619180217p:plain
カスタムディメンションUI

以下の記述で完成です!

window.addEventListener('load', function () {
    try {
        // パフォーマンスの情報取得
        var perform = performance.getEntriesByType('navigation')[0];
        var time = Math.floor(perform.domContentLoadedEventEnd - perform.responseEnd);
        var connectionInfo = '';

        // コネクションの情報を取得
        if (navigator.connection) {
            var connection = navigator.connection;
            connectionInfo = JSON.stringify({
                'downlink': connection.downlink,
                'effectiveType': connection.effectiveType,
                'rtt': connection.rtt,
                'saveData': connection.saveData
            });
        }

        // gaのカスタムディメンションにコネクション情報を設定
        ga('set', 'dimension1', connectionInfo);

        // gaのカスタム速度へ値を送信する
        ga('send', {
            hitType: 'timing',
            timingCategory: 'DOMContentLoaded',
            timingVar: location.pathname,
            timingValue: time,
            timingLabel: label
        });
    } catch (e) {
        // 例外処理
    }
});

Google Analytics では以下のように表示されます。

Image may be NSFW.
Clik here to view.
f:id:tsugawara-IDCF:20190620105057p:plain
ページごとの平均

Image may be NSFW.
Clik here to view.
f:id:tsugawara-IDCF:20190620120310p:plain
特定ページでのユーザーごとの平均

まとめ

いかがでしょうか?
フロントエンドの速度計測はなかなか奥が深いですよね。 上記の対応で画面が表示されてから操作可能になるまでの速度について分析できるようになり、フロントエンド側の速度低下に気づけるようになりました。 速度だけではなくネットワークコネクションの情報も収集したことで、より分析の精度を高められたと思います。

IDCFクラウドでは、このようなデータを基に今後の改善に役立てていきたいと考えています。
さらに今後はjs、cssファイルのダウンロード時間など、より細かい速度について計測できるような仕組みを考えていけたらと思います!

【2019年4月~6月版】IDCFクラウド アップデートニュース

こんにちは、クラウド推進部の菊地です。

今回は4月から6月までにリリースされた機能についてピックアップしてご紹介します!

新機能について

まずは新機能についてご紹介します。 4月には2つの機能が新たに追加されました!

【RDB】パラメーターグループ機能

4月17日にリリースされたのはRDBのパラメーターグループ機能です。

RDBにてパラメーターをテンプレートベースで編集できるようになり、ユーザー任意のチューニングが可能となりました!

パラメーターグループについては下記の方法でRDBに割り当てることができます。

  1. RDBのダッシュボードの「パラメーターグループ」をクリックすると「パラメーターグループ」画面へ遷移します。 画面右上の「パラメーターグループ作成」をクリックします。

Image may be NSFW.
Clik here to view.
f:id:akikuchi-idcf:20190625212422p:plain

2.「パラメーターグループ名」と「パラメーター」を設定し、「確認画面へ」 - 「作成」の順にクリックするとパラメーターグループが作成されます。

Image may be NSFW.
Clik here to view.
f:id:akikuchi-idcf:20190623151956p:plain

3.RDBトップページにて対象のRDBを選択し、「パラメーターグループ」タブの「パラメーターグループ設定」プルダウンにて作成したパラメーターグループを選択します。 「変更する」をクリック後、RDBを再起動すると割り当てたパラメーターグループが反映されます。

Image may be NSFW.
Clik here to view.
f:id:akikuchi-idcf:20190623232410p:plain

【コンピュート】仮想マシン作成時のユーザーデータ入力対応

これまでAPIでのみ提供していた仮想マシン作成時のユーザーデータの入力ですが、4月24日以降からはクラウドコンソール上からも入力可能となりました。

これにより、cloud-initなどと連携することが可能となります。

cloud-initについても今後IDCFクラウドの各種標準テンプレートで標準搭載する予定になっています。

ユーザーデータは下記の手順にて入力できます。

1.コンピュートのダッシュボードにて「仮想マシン作成」をクリックすると「仮想マシン作成」画面へ遷移します。

Image may be NSFW.
Clik here to view.
f:id:akikuchi-idcf:20190625212332p:plain

2.「詳細情報」項目の「拡張機能」の矢印をクリックします。

Image may be NSFW.
Clik here to view.
f:id:akikuchi-idcf:20190623233245p:plain

3.「ユーザー情報」欄にユーザー情報を貼り付けます。 このとき、エンコード前の元のテキストを利用する場合は「base64エンコードを使用する」にチェックを入れてください。

Image may be NSFW.
Clik here to view.
f:id:akikuchi-idcf:20190624133255p:plain

※ユーザーデータについての詳細はこちらを参照ください。

機能改善について

各サービスについても機能改善を行って着実にパワーアップしています!

【ILB】Mackerelによる監視項目追加

4月11日にはインフィニットLBのMackerel監視項目へのHTTPステータスコード(Statuses)の追加情報が更新されました。

ご利用時は以下のような画面イメージとなります。

Image may be NSFW.
Clik here to view.
f:id:akikuchi-idcf:20190624030836p:plain

other 以下のHTTPステータス以外のリクエスト数
5xx HTTPステータスコード500番台のリクエスト数
4xx HTTPステータスコード400番台のリクエスト数
3xx HTTPステータスコード300番台のリクエスト数
2xx HTTPステータスコード200番台のリクエスト数
1xx HTTPステータスコード100番台のリクエスト数

【ILB】インフィニットLBの性能が1.6倍に向上

さらに、4月17日にはインフィニットLBのスケールを5台から8台に引き上げています。

またノードあたりのコネクション数も増強し、新規に作成したインフィニットLBでは最大のコネクション数が従来の76,000から128,000に向上しています。

【コンピュート】ユーザーデータのサイズ制限緩和

新機能として先述していた仮想マシン作成時のユーザーデータ入力機能については、テキストサイズ制限が緩和されました。

Image may be NSFW.
Clik here to view.
f:id:akikuchi-idcf:20190624021931p:plain

以前まで、3の倍数のテキストサイズ制限がかかっていましたが、4月24日以降からはその制限はなくなっています。

ただしエンコード前のテキストサイズについては、クラウドコンソール上で利用した場合、2KBの制限があるのでご注意ください。

【コンピュート】標準提供のテンプレート(CentOS, RHEL)の追加

6月14日からは、以下のテンプレートが標準提供されています!

  • CentOS 7.6 64-bit
  • CentOS 7.6 64-bit for Vagrant
  • [GPU BOOST] CentOS 7.6 64-bit
  • RHEL 7.6 64-bit

仕様変更について

【クラウドコンソール】トップページデザイン変更

6月12日からIDCFクラウドのトップページデザインが少しだけ変化していることにお気付きでしょうか?

▼以前までのトップページ画面

Image may be NSFW.
Clik here to view.
f:id:akikuchi-idcf:20190624134049p:plain

▼アップデート後のトップページ画面

Image may be NSFW.
Clik here to view.
f:id:akikuchi-idcf:20190624133842p:plain

今まで画面上部にあったリージョン選択欄がなくなり、すっきりした印象になりました。

各サービスのアイコンもコンパクトになった分、余計にスクロールしなくてもサービス全体が見えるようになりましたね。

リージョンは各サービス画面遷移後に選択できます。

Image may be NSFW.
Clik here to view.
f:id:akikuchi-idcf:20190625214622p:plain

まとめ

今回は4月から6月までにリリースされた新機能などをピックアップしてご紹介しました!

リリース情報はこちらからもご確認いただけます。

今後ともIDCFクラウドのさらなる進化にご期待ください!

【RDB】リードレプリカ機能

こんにちは、クラウドSREの森田です。

今回は、8/7にリリースしたRDBのリードレプリカ機能についてご紹介します。

リードレプリカ機能を利用するとシングル構成のRDBマシンまたは冗長構成のActiveノードをマスターとした、レプリケーションによるリードレプリカを作成することができ、読み込みと書き込みの負荷分散が可能になります!

リードレプリカ機能については次の方法で利用することができます。

1.RDBのトップページでリードレプリカを作成したいRDBを選択すると「基本設定」が表示されます。

Image may be NSFW.
Clik here to view.
f:id:akikuchi-idcf:20190924111012p:plain

2.「基本設定」から「リードレプリカ」クリックすると「リードレプリカ詳細画面」が表示されます。

Image may be NSFW.
Clik here to view.
f:id:kmorita01:20190918150102p:plain

3.「リードレプリカ詳細画面」で「リードレプリカを作成する」をクリックしリードレプリカに使用したいFQDN名の入力とマシンタイプの選択を行い「追加する」をクリックします。

Image may be NSFW.
Clik here to view.
f:id:kmorita01:20190918150142p:plain

4.確認画面が表示されますので「はい」をクリックするとリードレプリカの作成が開始されます。

Image may be NSFW.
Clik here to view.
f:id:kmorita01:20190918150222p:plain

5.リードレプリカ作成が完了するとステータスがRunningになりリードレプリカの「基本設定」からリードレプリカの情報を確認することができます。現時点ではリードレプリカについてはパラメーターグループの適用の機能を利用することができます。(※ボリュームはマスターのRDBのボリュームのサイズアップに合わせてサイズアップされます)

Image may be NSFW.
Clik here to view.
f:id:kmorita01:20190918150300p:plain

6.作成時に指定したFQDNでリードレプリカのMySQLにログインし SHOW SLAVE STATUSを実行するとSlave_IO_RunningとSlave_SQL_RunningがYesになりレプリケーションができていることが確認できます。

[morita@idcf-morita ~]$ mysql -utest -p -hidcf-rdb-slave.local.rdb.idcfcloud.net
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 298
Server version: 5.7.22-log MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: idcf-rdb-master.local.rdb.idcfcloud.net
                  Master_User: idcf_repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: bin_log.000002
          Read_Master_Log_Pos: 194
               Relay_Log_File: rdb-10e3bd25-297c-4e63-afd2-48be1b31391d-relay-bin.000004
                Relay_Log_Pos: 403
        Relay_Master_Log_File: bin_log.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 194
              Relay_Log_Space: 730
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1
                  Master_UUID: 
             Master_Info_File: mysql.slave_master_info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
           Master_Retry_Count: 86400
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 72b9a774-d9d7-11e9-8b45-1e0308003707:1-2
            Executed_Gtid_Set: 72b9a774-d9d7-11e9-8b45-1e0308003707:1-2
                Auto_Position: 1
         Replicate_Rewrite_DB: 
                 Channel_Name: 
           Master_TLS_Version:

7.実際にマスター側のRDBに書き込んだレコードをリードレプリカで読み込めるか確認してみましょう!マスターのMySQLにFQDNでログインし確認用のuserテーブルを作成しレコードを追加してみます。

[morita@idcf-morita ~]$ mysql -hidcf-rdb-master.local.rdb.idcfcloud.net -utest -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 70384
Server version: 5.7.22-log MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> create table test.user (id int, name varchar(10));
Query OK, 0 rows affected (0.01 sec)

MySQL [(none)]> insert into test.user (id, name)VALUES(1, "morita");
Query OK, 1 row affected (0.01 sec)

8.リードレプリカのFQDNでMySQLにログインしuserテーブルとレコードが追加されているか確認してみます。ちゃんと読み込めていますね!

[morita@idcf-morita ~]$ mysql -hidcf-rdb-slave.local.rdb.idcfcloud.net -utest -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 82083
Server version: 5.7.22-log MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> select * from test.user;
+------+--------+
| id   | name   |
+------+--------+
|    1 | morita |
+------+--------+
1 row in set (0.00 sec)

最後に

現在、IDCF クラウド RDBでは次の新機能の開発を進めておりますので今後もIDCF クラウド RDBの進化にご期待ください!

IDCFクラウドDNSに新しいレコードタイプを追加した話

はじめまして。クラウドSRE部の篠田です。IDCFクラウドDNSを担当しています。

10/15にIDCFクラウドDNSに新しいレコードタイプであるALIASレコードとCAAレコードをリリースしましたので、その紹介をさせてください。

Image may be NSFW.
Clik here to view.
f:id:shinoda-idcf:20191016183020p:plain

新しいレコードタイプの紹介

ALIASレコード

ALIASレコードは、値に指定したFQDNを名前解決して得られるIPアドレスが直接返却されるレコードです。

たとえば、以下のようなレコードが存在するとします。

www.example.com.     IN   A   93.184.216.34
alias.idcfcloud.com.     IN   ALIAS   www.example.com.

このとき、alias.idcfcloud.com93.184.216.34を返します。

$ dig alias.idcfcloud.com +shor
93.184.216.34

ドメインを別のドメインへ転送できるため、ALIASレコードの動作はCNAMEレコードと似ています。大きく違うのは、CNAMEではできなかったZone Apexの転送が可能ということです。

CNAMEレコードは他のレコードと共存できない仕様のため、Zone Apexには必ずNSレコードが必要なことから、CNAMEレコードをZone Apexに対して設定することはできませんでした。このような仕様はALIASレコードにはありません。

しかし、Zone Apexのドメイン転送はフィッシング詐欺などに悪用されてしまう可能性が比較的高いです。そのため、ALIASレコードの値には自身の所有するホストのFQDNしか指定することができないような制約を設けました。現在はILBとCDNのFQDNのみ指定することができます。

CAAレコード

CAAレコードは、SSLサーバ証明書の発行を許可する認証局を指定するレコードです。

たとえば、以下のようなCAAレコードを作成することで、www.example.comのLet's Encryptの証明書・ワイルドカード証明書の発行が許可されます。同時に、Let's Encrypt以外の認証局の証明書の発行は拒否されます。証明書発行が拒否された場合、それがtest@idcf.com宛てにメール通知されます。

www.example.com.     IN   CAA   0 issue "letsencrypt.org"
www.example.com.     IN   CAA   0 issuewild "letsencrypt.org"
www.example.com.     IN   CAA   0 iodef "mailto:test@idcf.com"

2019年10月現在、CAAレコードが存在しなくてもSSLサーバー証明書の発行は可能です。そのため、証明書を発行するという用途ではCAAレコードを作成するということは少ないと思います。

CAAレコードが効果を発揮するのは、証明書の発行を拒否できるという点です。これにより、第三者に勝手に証明書を発行されるということを防ぐことができます。上述のCAAレコードではLet's Encrypt以外の認証局からの証明書の発行を拒否できますが、すべての証明書発行を拒否する場合は以下のようにCAAレコードを作成します。

www.example.com.     IN   CAA   0 issue ";"
www.example.com.     IN   CAA   0 issuewild ";"
www.example.com.     IN   CAA   0 iodef "mailto:test@idcf.com"

新しいレコードタイプの作成方法

管理画面

DNSの管理画面にアクセスします。

Image may be NSFW.
Clik here to view.
f:id:shinoda-idcf:20191106134527p:plain

レコードを作成するゾーンを選択します。

Image may be NSFW.
Clik here to view.
f:id:shinoda-idcf:20191106134203p:plain

レコード登録画面を開きます。

Image may be NSFW.
Clik here to view.
f:id:shinoda-idcf:20191106134416p:plain

レコード登録画面のタイプの欄にALIAS, CAAのボタンが追加されています。こちらをクリックすることでそれぞれの登録フォームを表示することができます。画面上には各設定値に指定できる値の制約条件を記載していますので、参考にしてください。

Image may be NSFW.
Clik here to view.
f:id:shinoda-idcf:20191016185103p:plain

ちなみに、制約条件の一覧は仕様書にまとまっています。今回のリリースに併せてこちらもアップデートしています。

API

APIからの作成も可能です。
以下はidcfcloud-cliを利用して作成したものです。CLIは簡単でいいですね。
CAAの値にはダブルクオーテーションが必要なので、JSONで記述する場合にエスケープが必要です。

$ idcfcloud dns create_record XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX '{"name":"alias.example.com","type":"ALIAS","content":"alias.public.ilb.jp-west.idcfcloud.net","ttl":"3600"}'
{
  "status": 200,
  "message": "",
  "data": {
    "uuid": "YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY",
    "name": "alias.example.com",
    "type": "ALIAS",
    "content": "alias.public.ilb.jp-west.idcfcloud.net",
    "ttl": 3600,
    "description": "",
    "created_at": "2019-10-16T19:08:17+09:00",
    "updated_at": "2019-10-16T19:08:17+09:00"
  }
}
$ idcfcloud dns create_record XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX '{"name":"caa.example.com","type":"CAA","content":"0 issue \"ca.example.net\"","ttl":"3600"}'
{
  "status": 200,
  "message": "",
  "data": {
    "uuid": "ZZZZZZZZ-ZZZZ-ZZZZ-ZZZZ-ZZZZZZZZZZZZ",
    "name": "caa.example.com",
    "type": "CAA",
    "content": "0 issue \"ca.example.net\"",
    "ttl": 3600,
    "description": "",
    "created_at": "2019-10-16T19:11:17+09:00",
    "updated_at": "2019-10-16T19:11:17+09:00"
  }
}

※一部情報はマスクしています

最後に

今回の新規レコードタイプ追加ですが、かなり前から計画していたものをやっとリリースできたというものでした。特にALIASレコードの方はお客さまからのご要望の声も多く、ずっと提供したいと思っていた…と聞いています。

はい、実は私はIDCFクラウドDNSを担当するようになってまだ1年未満の新入りなのです。そんな私が今回のプロジェクトをメインで任されたということで、すごく大きな想いを背負った仕事だったのですが、責任感を持って取り組むことができたと達成感を感じています。

また、同時期に私は別件にも携わっていたのですが、こちらもこちらで私にとっては初めての経験でかなり苦労してしまい、そんな大変なプロジェクトを掛け持ちでやる切ることができたことに安堵しています。

DNSはWebシステムを支える大黒柱。そんな緊張感と責任感を持って、引き続きお客さまに満足していただけるサービスを提供していきたいと思っています。

たまには「デザイン」の話を

たまには「デザイン」の話をしたいと思います。
IDCFクラウドのUX/UIデザインを担当している小林です。

IDCFクラウドに合流してから、試行錯誤の毎日でしたが、ようやくブログ記事をかけるまでネタを集められるようになってきました。
当社では社名からもわかるように、常に新しいことを開拓する精神で働いています。 開拓地には流れ者があつまる酒場があるように、飛び入りで参加したものを懐深く受け入れてくれる文化もあります。 まずは流れ者のデザイナーを受け入れてくれた仲間たちに感謝したいと思います。

デザインとは設計である

唐突ですが、みなさんは「デザイン」のことを中国では「設計」と書くことをご存じでしょうか。
「デザイン」と聞くと、絵や感性の分野だと思われがちですが、「設計」と聞けばなんとなくイメージがわくのではないでしょうか。さらには、「デザイナーはデザインする人。」と「デザイナーは設計する人。」だとどうでしょうか。より何をする人か明確になりましたよね。

では、私は何を設計しているかというと、IDCFクラウドはWebブラウザ越しで使うプロダクトですので、画面(GUI)の設計をしています。
画面設計ができるエンジニアであれば、仕様書を見てすぐに作業に取りかかることができるのですが、複数人で作業をすると認識の共有が不可欠になってきますよね。
GitHubのissueやSlackで円滑にコミュニケーションできる人でも、頭の中の設計をアウトプットするのはとても大変なことだと思います。さらに、画面設計が苦手なエンジニアならなおさら外部にまかせたいと思っているのではないでしょうか。
UI/UXデザイナーは、そんなエンジニアの悩みを解決するために存在します。

UXは評価基準である

チームに合流して、はじめに戸惑ったのが「なぜこの画面設計になったのか」を説明することでした。例えば、「仮想マシンを作る」という要件を画面に起こしたとき、チームメンバーが10人いれば10通りのアイディアが発生します。

デザイナーが次から次へと画面設計しても、みなさん納得しないわけですね。
ですので、都度コンセプトやユーザー属性など、全て逐一説明する必要がありました。
しかも、既存のUIとの融和性も考慮すると自分が説明したものに矛盾が発生してしまい、メンバーからの信用もなくなってしまいます。
このようなことを繰り返していると疲弊するだけですので、思い切って時間と人手を借りてユーザーエクスペリエンス(UX)ガイドを作成することにしました。
結論として頑張ってよかったと実感しています。
具体的には次のような効果がありました。

  • デザイナーが何を考えて設計しているのか明確化された。
  • メンバー全員が同じ認識で仕事に取り組むことができるようになった。
  • メンバーがこだわりを持つようになった。
  • 画面設計を評価できるようになった。
  • 画面設計の改善につなげられるようになった。

UXガイドと聞くと、お客様へのメッセージであって、開発者には関係ないのではと思われる方もいるかもしれません。
実はUXガイドとは、自分たちが作るプロダクトの目標であって、評価する基準でもあるのです。

やってみる

私は何かを作らなければならないとき、どんなものでもそうですが時間をかけずにとにかく手を動かします。それから上司や担当者に相談しにいきます。半日ほどで作ったものを見せるので、だいたいは渋い顔をされるわけですが、内容に対して何か言われても、積極的に拾いに行く気で挑みます。

Image may be NSFW.
Clik here to view.
f:id:mkobayashi_idcf:20191015173618p:plain

はじめに書いた図です。
「心」「思考」「五感」「環境」の4つのカテゴリーに分けて考えました。1つのカテゴリーごとに5、6つのガイドを考えました。抜粋して紹介します。

  • お客様が、安心して利用できる。
  • お客様が、人にも勧めたいと思える。
思考
  • お客様が、学習しながら利用できる。
  • お客様が、直感的に利用できる。
五感
  • お客様が、見やすい大きさで表示する。
  • お客様が、タッチパネルでも操作できる。
環境
  • お客様が、様々なPC、ブラウザでも使用できる。
  • お客様が、どこにいても利用できる。

UXガイドを人に受け入れてもらえるようにするにはとても大変です。さらに、こだわりが強いチームメンバーにも受け入れてもらわなければなりません。

そのためにも各分野からメンバーを集めることにしました。当社の場合は、ブランドマネジメント、データセンター、インフラ、バックエンド、フロントエンドといったように、本部をまたいでチームをつくりました。

True user experience goes far beyond giving customers what they say they want, or providing checklist features. In order to achieve high-quality user experience in a company's offerings there must be a seamless merging of the services of multiple disciplines, including engineering, marketing, graphical and industrial design, and interface design.
引用:ニールセンノーマングループ https://www.nngroup.com/articles/definition-user-experience/

プロジェクト化する

プロジェクト化するにあたり、スケジュールと成果目標をつくりました。
スケジュールは3ヵ月の日程で、ワークショップを2ヵ月間、週1回1時間のペースで行いました。

  • 9月中 UXガイドプロジェクトキックオフ
  • 10月初旬までにメンバー収集
  • 毎週1回のペースでワークショップを開催
  • 11月末までにUXガイド コンセプト&項目の大枠完成
  • 12月末までにUXガイド完成

振り返ってみると、ワークショップはうまく機能しなかったので反省することが多かったです。メンバーで意見を出し合うことは2、3回ほどで終わってしまうのと、まとめることに手間取り、なかなか進めることができませんでした。
また、数を重ねると参加率が下がるので、シナリオを完全に決めてから短期集中で行えばよかったと感じています。さらに、ダレてくるとどうしても散漫になります。私たちはなんども脱線してしまい、目標目的を見失いました。
正しい道筋に戻るためにも目標目的はしっかりと持つべきでした。

課題を洗い出す

ワークショップで始めに行ったことは、私たちの課題を洗い出すことでした。UXは「お客様」視点と考えがちですが、まずは私たちの業務改善が、お客様にとっても良くなることだと考えたからです。
課題の洗い出しでは、主務だけを考えずに会社の仕組みなど広範囲に考えることが肝心です。特に同じ業務や同じ部内のメンバーだけで話し合うと視座が低くなり課題が偏ってしまいます。これは本当に他本部からメンバーを集めてよかったと感じました。

課題の洗い出しが終わったら、課題から解決したときに生まれる効果でカテゴリー分けを行いました。さらにツリー化し、当社のスローガンである「未来をささえる、Your Innovative Partner」から連なる形でまとめました。

Image may be NSFW.
Clik here to view.
f:id:mkobayashi_idcf:20191015174320p:plain

メッセージを作る

UXガイドは開発メンバーに受けいれてもらえるために、わかりやすく、覚えやすく、明確でなくてはなりません。課題をまとめることによって見えて効果から切り口を見つけメッセージ化します。私たちは「快適」「前進」「身近」の3つにまとめました。

(お客様が)(私たちが) より快適に(Constant)
  • 体験の障害になるようなことはしません。
  • コストがかからないUXを実現します。
  • エンジニア目線で魅力的なサービスを作ります。
  • UIで情報を提供します。
(お客様が)(私たちが) より前に(Sophisticated)
  • 国内のITインフラの「当たり前」になることを目指します。
  • 鮮度を保ちながら、一歩踏み込んだ対応もします。
  • フロンティア精神を持ちます。
  • グローバルな価値観にします。
(お客様が)(私たちが) より身近に( Reachable )
  • 鮮度を保ちながら、インプット/アウトプットも増やします。
  • 鮮度を保つため、コミュニケーションを積極的にします。
  • お客様の夢を叶えます。

私たちがこのメッセージを作ったときには、目的を見失っており、作ることが目標になっていました。汎用的になりすぎていて、IDCFクラウドのコンソールの開発から離れたものになってしまったのです。
なぜUXガイドが必要だったのかを思い出し、軌道修正する必要がありました。そして、原点に立返り、自分たちが作るプロダクトの目標に言い回しを変えていきました。

まとめ

自分たちが作ったプロダクトを評価するのはとても難しいです。個々の評価はさらに頭を悩める問題ですよね。
UXガイドは成果物の評価を明確にしてくれるツールだと考えています。
皆が気持ちよく働けるためにも、メンバーに共有し、常に意識してもらうことが大切です。
そして、何度も練り直し、作り上げたIDCFクラウド UXガイドがこちらになります。

ユーザーが、より快適に(Constant)
  • いつでも快適に使えるように、確実で、シンプルで、レスポンスが速いUIを追求する。
  • 想定外の動きがないようにする。
  • 必要なときに、必要な行動(操作)がわかるようにする。
  • 一貫性のある体験にする。同じ機能で異なる体験(UI)を作らない。
  • 使いにくいままでコピーしない。使いにくいままで放置しない。
ユーザーが、より身近に(Reachable)
  • 利用環境や利用場所を限定しない。
  • 説明は簡潔に。言い回しに気をつける。
  • 状況を分かりやすく理解でき、安心して使えるようにする。
  • 必要な情報が表示されないことによる損失を与えない。
ユーザーが、より前に(Sophisticated)
  • 要望の背景を理解し、期待以上の体験を提供する。
  • サービス間の連携を損なわず、クラウド全体の使いやすさを高める。
  • サービスの機能要件を満たすように努力する。
  • 作業を必要以上に増やさない。作業以外の時間を増やせるようにする。

いかがでしたでしょうか。
IDCFクラウドでは一緒に働ける仲間を常に募集しています。
自分も子育てしながら働いているのですが、個々のスケジュールで自由に働ける環境が整っています。
興味を持たれた方は、是非エントリーしてみてください。
採用ページはこちら

GCP 連携サービスの裏側、少しお見せします

こんにちは、本間です。

IDCFは、パワフルなIaaS型クラウドであるIDCFクラウドを中心にサービス展開していますが、実は Google Cloud Platform(以下、GCP ) と連携したサービスも提供していることをご存知でしょうか?

今回は GCP を基盤としたサービスである、 「クラウドストレージ」「データ分析 ( Powered by Google Cloud Platform ) 」(以下、データ分析)の裏側について、アカウントや権限の設計を中心にご紹介したいと思います。

はじめに

現在IDCFでは、 GCP を基盤としたサービスとしてクラウドストレージとデータ分析の2つを展開しています。 クラウドストレージGoogle の Google Cloud Storageを基盤とした、IDCF独自のUIも合わせて提供しているストレージサービスです。 データ分析は、BigQuery を始めとした Google のデータ分析系のプロダクトを複数提供しているサービスです。
IDCFクラウド内のサービス間連携だけでなく、他社の様々なサービスとも連携することで、ユーザーが使いやすいクラウドを提供できるよう日々努力しています。

利用にあたって

IDCFクラウドのアカウントと Google アカウントがあれば使い始めることができます。G Suite アカウントでも可能です。
※ もし Google アカウントがなくても、IDCFクラウドから @gcp.idcfcloud.netの Google アカウントを作成することで使用可能です。(仕組みは「Google アカウント提供」を参照)


すでにIDCFクラウドアカウントを持っている場合は、IDCFクラウドから連携した Google アカウントで認証を行うだけで簡単に使い始めることができます。

クラウドストレージには無料枠もあるので、ぜひ利用してみてください。
ご利用の際には、次のご利用ガイドを見てみてください。

ここからは、サービスの裏側について少し説明していきます。

サービス構成

まず、どのような構成でサービス連携しているかをご紹介します。

Image may be NSFW.
Clik here to view.
f:id:kkamiyakenshiroh:20200316173020p:plain
サービス構成

クラウドストレージやデータ分析で提供している GCP のサービス以外にも、連携を実現するために各種 GCP のサービスを利用しています。 連携の表側は GCP のサービスの GCS や BigQuery といったサービスとなりますが、裏側のコア部分は組織となります。

組織の利用について

次の青枠の部分が組織です。

Image may be NSFW.
Clik here to view.
f:id:kkamiyakenshiroh:20200316173053p:plain
組織

組織とは
その名の通り組織や会社を表し、GCP リソース階層のルートノードになります。 G Suite を契約することで1つの組織が提供されます。 組織の詳細は Google のドキュメントを参照ください。

目的
多数の GCP プロジェクトの管理と Google アカウントの提供をおこなうために組織を導入しています。 GCP プロジェクトは組織配下に作成され、ポリシーが継承されます。 IDCFでは、IDCFクラウドのアカウントごとにプロジェクトを割り当てているため、多数のプロジェクト管理が必要になります。(後述、「IDCFクラウドのアカウントと GCP の関係性」を参照)

Google アカウント提供
Cloud Identity という G Suite のオプションで Google アカウントの提供を実現しています。 無料で利用可能で、G Suite に付属されるサービス(メール機能など)がないアカウントサービスです。 Google アカウントを持っていないユーザー向けに新規 Google アカウントを発行するために利用しています。

BigQuery の利用について

GCP といえば、 BigQuery が思い浮かぶ方も多いかと思います。IDCFクラウドの GCP 連携の裏側でも利用しています。

Image may be NSFW.
Clik here to view.
f:id:kkamiyakenshiroh:20200316173217p:plain
BigQuery の利用

例えば、IDCFクラウドコンソールのアカウント>ビリングに表示されている当月の利用状況は、 BigQuery を介して表示しています。
GCP の課金データの BigQuery へのエクスポート機能を利用して BigQuery にエクスポートし、そのデータをIDCFクラウドコンソールのビリング画面に表示することで、当月の利用状況を見ることができるようにしています。

ユーザーのアクセス経路について

ユーザーがIDCFを通じて GCP のサービスにアクセスする場合、3パターンの経路があります。

Image may be NSFW.
Clik here to view.
f:id:kkamiyakenshiroh:20200316173238p:plain
アクセス経路

  • ①-A
    IDCFクラウドコンソールのクラウドストレージの画面からアクセスする場合、IDCF の連携アプリケーションを通して GCP へアクセスしています。

Image may be NSFW.
Clik here to view.
f:id:khomma_idcf:20190920191443p:plain
IDCFクラウドコンソール>クラウドストレージ

  • ①-B
    IDCFクラウドコンソールのクラウドストレージの画面操作でも1つ例外があり、オブジェクトのアップロード・ダウンロードは高速化のため、直接 GCP へアクセスしています。

Image may be NSFW.
Clik here to view.
f:id:khomma_idcf:20190920193458p:plain
アップロード


  • APIやgsutil、bqコマンドを利用したアクセスはIDCFクラウドを経由せず、ユーザー環境から直接 GCP へのアクセスが可能です。

アカウント連携設計

次にIDCFクラウドのアカウントと Google アカウントとGCP プロジェクトの関係性について説明します。

Image may be NSFW.
Clik here to view.
f:id:kkamiyakenshiroh:20200316173302p:plain
アカウント設計

IDCFアカウントと GCP プロジェクトは 1:1 の関係です。
IDCFのユーザーと Google アカウントも 1:1 の関係です。
連携した Google アカウント が GCP プロジェクトの Cloud IAM で権限設定されています。

IDCFクラウドのパワーユーザーとユーザーの権限設定

IDCFクラウドのパワーユーザーやユーザーへ、クラウドストレージやデータ分析の権限を設定する場合は、マスターユーザーが設定する必要があります。 パワーユーザーとユーザーがIDCFクラウドコンソールのアカウント>連携アカウント画面より連携後に、マスターユーザーが権限設定可能になります。
詳細は次のFAQを参照ください。

パワーユーザーやユーザーでクラウドストレージへアクセスする方法を教えてください。

クラウドストレージにおける権限設定

クラウドストレージの権限は複数箇所で設定が可能です。設定範囲によって設定する箇所が異なるためご注意ください。

すべてのバケットに同じ設定を行いたい場合、IDCFクラウドコンソールのアカウント>連携アカウントページの連携ユーザーで設定します。 バケットごとに権限を分けた設定を行いたい場合、クラウドストレージのバケット設定から行います。

対応表

IDCFクラウドコンソール GCP 用途
アカウント>連携アカウントページ IAM すべてのバケットに一律で権限を設定
クラウドストレージ>バケット設定 バケットACL バケットごとの権限設定

おわりに

今回はIDCFクラウドの GCP 連携の裏側をご紹介しました。
普段サービスを利用する際はあまり意識しない部分かもしれませんが、こういった裏側の設計などにIDCF独自の工夫が詰まっています!
マルチクラウドをもっとシームレスに使えるように、今後も便利なサービスの開発や連携を進めていきますので、ぜひご期待ください!

リリースノートで、IDCFクラウドのアップデート情報もアップデートしていますので、合わせてチェックしてみてください。

Google、Google Cloud Storage、Google Cloud Platform、および、BigQuery は Google LLC の商標または登録商標です。

クラウドストレージの権限設定を使いこなそう!

はじめに

こんにちは、クラウド推進部の菊地です。 IDCFクラウドのGCP 連携サービスの開発に携わっています。

今回は、GCP 連携サービスの一つであるクラウドストレージの権限設定方法について詳しくご紹介したいと思います。

設定範囲によって異なるクラウドストレージの権限設定方法

クラウドストレージをIDCFクラウドのマルチユーザー機能を使用して、マスターユーザーやパワーユーザー・ユーザーなどの複数のユーザーで利用しているとき、

クラウドストレージの役割設定は、役割をすべてのバケットへ一律に設定したいか、それともバケットごとに設定したいかによって方法が異なります。

対応表

用途 利用シーン 設定場所
(IDCFクラウドコンソール)
すべてのバケットへ一律で権限を設定 マスターユーザーのみが権限設定を行う アカウント>連携アカウントページ
バケットごとの設定 ストレージ管理者に設定されたユーザーが権限設定を行う クラウドストレージ>バケット設定

すべてのバケットへ一律に権限設定したい場合

すべてのバケットへ一律に権限設定したい場合は、連携アカウント画面から権限設定を行います。 マスターユーザーのみにクラウドストレージの役割の付与権限をもたせたい場合も同じく、連携アカウント画面からパワーユーザーやユーザーへ権限を付与します。

設定方法は次のとおりです。

1. パワーユーザーまたはユーザーを作成し、Google アカウントの連携を行う。

パワーユーザやユーザーでクラウドストレージへアクセスする方法については、こちらの1~4.を参照。

2. クラウドストレージにてバケットを作成する。

バケットを作成する際にバケットのアクセス制限は「連携アカウントで権限を設定する」を選択する。

Image may be NSFW.
Clik here to view.
f:id:akikuchi-idcf:20200325114018p:plain

3. [アカウント設定]-[連携アカウント]の連携ユーザー管理で役割を追加する。

マスターユーザーでIDCFクラウドへログインする。 IDCFクラウドの画面右上のアイコンをクリックし、[アカウント設定]-[連携アカウント]の連携ユーザー管理に移動する。

Image may be NSFW.
Clik here to view.
f:id:akikuchi-idcf:20200325101513p:plain

手順1. にて連携したパワーユーザーまたはユーザーのアカウントが表示されているので役割を追加する。

Image may be NSFW.
Clik here to view.
f:id:akikuchi-idcf:20200325101608p:plain

4. 手順1. にて連携したパワーユーザーまたはユーザーでクラウドストレージ内のバケットへアクセスできることを確認する。

4-1. 【ストレージ管理者が付与された場合】

手順1. にて連携したパワーユーザーまたはユーザーでIDCFクラウドへログインする。

[クラウドコンソール]-[クラウドストレージ]へアクセスできることを確認する。

※手順3. のようにマスターユーザーにて各ユーザーへの役割付与を行っていない状態だと、クラウドストレージへアクセスした際にエラーが発生する。

4-2. 【オブジェクト管理者・作成者・閲覧者が付与された場合】

次のコマンドにてアクセスできることを確認する。

gsutil ls gs://{バケット名}/

ストレージ操作用コマンド、gsutilの詳しい使い方についてはこちらを参照。

バケットごとに権限設定したい場合

指定したバケットに限り、パワーユーザーやユーザーにストレージ管理者権限をもたせたい場合などは、クラウドストレージのバケット設定画面から役割を設定します。

設定方法は次のとおりです。

1. パワーユーザーまたはユーザーを作成し、Google アカウントの連携を行う。

パワーユーザやユーザーでクラウドストレージへアクセスする方法については、こちらの1~4.を参照。

2. クラウドストレージにてバケットを作成する。

バケットを作成する際にバケットのアクセス制限は「連携アカウントとバケットで権限を設定する」を選択する。

Image may be NSFW.
Clik here to view.
f:id:akikuchi-idcf:20200325114511p:plain

3. [クラウドコンソール]-[クラウドストレージ]-[バケット設定]-[役割]で役割を追加する。

マスターユーザーでIDCFクラウドへログインする。

IDCFクラウドの画面右上のアイコンをクリックし、[クラウドコンソール]-[クラウドストレージ]-[バケット設定]-[役割]に移動する。

Image may be NSFW.
Clik here to view.
f:id:akikuchi-idcf:20200325101805p:plain

手順1. にて連携したパワーユーザーまたはユーザーのアカウントを選択し役割を追加する。

Image may be NSFW.
Clik here to view.
f:id:akikuchi-idcf:20200325101824p:plain

4. 手順1. にて連携したパワーユーザーまたはユーザーでクラウドストレージ内のバケットへアクセスできることを確認する。

4-1. 【ストレージ管理者が付与された場合】

次のURLにてアクセスできることを確認する。

https://console.idcfcloud.com/gcp/storage/#!/object-list/{バケット名}/

4-2. 【オブジェクト管理者・作成者・閲覧者が付与された場合】

次のコマンドにてアクセスできることを確認する。

gsutil ls gs://{バケット名}/

ストレージ操作用コマンド、gsutilの詳しい使い方についてはこちらを参照。

それぞれの設定の見分け方

バケット設定画面を見てみると、編集ができる設定とグレーアウトされて編集ができない設定があります。

Image may be NSFW.
Clik here to view.
f:id:akikuchi-idcf:20200325112059p:plain

編集できる設定は、バケット設定画面にて設定したバケットごとの設定です。

編集ができなくなっている設定が、連携アカウント画面にて設定したすべてのバケットへの設定です。

注意点

連携アカウントでストレージ管理者を設定した場合、すべてのバケットでストレージ管理者となります。

バケットごとの設定でオブジェクト閲覧者を設定してもストレージ管理者の権限となりますのでご注意ください。

おわりに

今回はIDCFクラウドのクラウドストレージ権限設定方法についてご紹介しました。

こちらのFAQもご参考に試してみてください。

これからもIDCFクラウドの使い方についての情報や新機能についてご紹介していきますのでお楽しみに!

また、IDCFクラウドのアップデート情報はリリースノートに記載しておりますので、合わせてチェックしてみてくださいね。


【2020年7月~10月版】IDCFクラウド アップデートニュース

こんにちは。エンジニアリング部の菊地です。
今回は7月~10月までにリリースされた機能についてピックアップしてご紹介します!

CDN

デフォルトTTL設定機能を追加

7月9日より、CDNのデフォルトTTLが簡単に設定できるようになりました!
これまでクラウドコンソールからは設定できなかったデフォルトTTLが、VCLスニペットのテンプレートから設定できるようになっています。

Image may be NSFW.
Clik here to view.
f:id:akikuchi-idcf:20201021214813p:plain

FAQに設定方法の説明や設定する際の注意点が詳しく記載されていますのでご確認ください。


オートロードバランス・ヘルスチェック機能追加

9月30日より、CDNに以下の新たな便利機能が追加されました!

  • オリジンサーバーのオートロードバランス機能
  • オリジンサーバーのヘルスチェック機能

オートロードバランスは、複数のオリジンサーバーに対するリクエストを自動的にバランシングする機能です。
ヘルスチェックは、設定したオリジンサーバーに対して、定期的に HTTP ステータスをチェックするためのリクエストを送信して死活監視を行う機能です。

オートロードバランスとヘルスチェックを併用することで、より可用性の高い構成が実現可能になります。

オートロードバランスは、対象のサービスを選択し、オートロードバランスタブにて対象のオリジンサーバーにチェックを入れると重みとオートロードバランスのオリジンシールドが設定できるようになっています。

Image may be NSFW.
Clik here to view.
f:id:akikuchi-idcf:20201016143932p:plain

ヘルスチェックは、対象のサービスを選択し、オリジンサーバー設定画面のオプションとして設定できます。

Image may be NSFW.
Clik here to view.
f:id:akikuchi-idcf:20201021213531p:plain

オートロードバランスヘルスチェックについてはFAQにてそれぞれ詳細な説明が記載されておりますので、ぜひご確認ください。

VCLサンプルスニペットを追加

10月28日より、 CDNのVCLサンプルスニペットがUIに追加されました!

Image may be NSFW.
Clik here to view.
f:id:akikuchi-idcf:20201125120757p:plain

以下のカスタマイズ設定が、UIから容易に行えるようになっています。

CDN

  • 巨大ファイルをキャッシュする
  • 特定のパス配下をキャッシュさせない
  • 特定の拡張子をキャッシュさせない
  • URLに特定の文字列を含む場合にキャッシュさせない
  • 日本以外からのアクセスは403を返す
  • 特定のパス配下のアクセスは404を返す

イメージオプティマイザー

  • 画像の加工方法を一括で指定する

RDB

【RDB】 リードレプリカのリソース監視対応

7月15日より、RDBのリードレプリカもMackerelによるリソース監視ができるようになりました!
リソース監視の設定するためには、事前にRDBの作成とリードレプリカの作成を行う必要があります。
リードレプリカについては、作成したRDBを選択し、リードレプリカタブの「リードレプリカを追加する」ボタンから作成できます。

Image may be NSFW.
Clik here to view.
f:id:akikuchi-idcf:20201016115358p:plain

作成したリードレプリカを選択すると、リソース監視タブの箇所でMackerel API Key を入力します。
APIキーについては、Mackerelのダッシュボードの[Overview]-「詳細」-「APIキー」にて確認してください。

Image may be NSFW.
Clik here to view.
f:id:akikuchi-idcf:20201016115947p:plain


【RDB】MySQL8.0に対応

8月26日より、RDB作成時にMySQL Community Edition 8.0が選択可能になりました!
IDCFクラウドのRDB画面で「RDB作成」ボタンを押下した際に、データベースの設定から「My SQL 8.0.20 Communitiy Edition」が選択できます。

Image may be NSFW.
Clik here to view.
f:id:akikuchi-idcf:20201016113716p:plain


コンピュート

標準提供のテンプレート(CentOS)の追加

8月26日より、コンピュート作成時にCentOS 8.2 64-bitが選択可能になっています。


リージョン

東日本リージョン3の提供開始

9月16日より、東日本リージョン3が新設されました!
高性能かつ高収容なハードウェアの構成を引き続き採用し、2つの新ゾーン「volt」と「ampere」でIDCFクラウドをご利用いただけます。
また、インフィニットLB(ILB)、RDBについても東日本リージョン3でご利用可能となっています。

Image may be NSFW.
Clik here to view.
f:id:akikuchi-idcf:20201016112543p:plain


まとめ

今回は7月から10月までにリリースされた新機能などをピックアップしてご紹介しました!
リリース情報はこちらからもご確認いただけます。
今後ともIDCFクラウドのさらなる進化にご期待ください!

IDCFクラウド CDN にオートロードバランス&ヘルスチェック機能が追加されました

こんにちは、エンジニアリング本部エンジニアリング部の伊藤と申します。
IDCFクラウド CDNの開発に携わっています。

IDCFクラウド CDN は、 Fastlyのエッジクラウドプラットフォームを基盤として採用したシンプル・パワフルなコンテンツ配信サービスです。

今回は、先日 IDCFクラウド CDN に追加されたオートロードバランスとヘルスチェック1の機能についてご紹介していきたいと思います。

背景

これまで、オリジンサーバーを複数台設定することは可能でしたが、特にそれ以上の機能提供はしておりませんでした。

例えば、複数オリジンにロードバランシングしたい、というユースケースに対応するにも API を駆使して設定する必要があり、GUI で操作することの多いユーザーにとっては設定のハードルが高いものになっていました。

そのため、このように使いたいと思っていても、設定方法がわかりづらく感じている方も少なからずいたかと思います。

そこで、以下の観点を念頭に置き、要件定義を始めました。

  • Fastly が提供しているオートロードバランスの機能を、IDCFクラウド の強みである簡易な UI によって利便性の高い状態で提供し、ユーザーの機会損失を減らすこと。

  • 追加料金なしで L7ロードバランサーを提供することで競合他社との差別化を図り、優位性を持たせること。

また、ロードバランサーにとってヘルスチェックは重要な機能のひとつであり、オートロードバランスとセットで提供することで、より可用性を高めることが可能になります。

そこで、オリジンサーバーに対するヘルスチェック機能も要件に追加し、開発に着手しました。

主なご利用例

オリジンサーバーが IDCFクラウドとオンプレミスの Webサーバーで構成されたケース

Image may be NSFW.
Clik here to view.
f:id:m-itoidcf:20201204164543p:plain

それぞれのオリジンサーバーにオートロードバランスおよびヘルスチェックの設定をします。
オンプレミスのサーバーを、他社クラウドに置き換えても同様の構成が可能です。

このように設定しておくことで、オリジンサーバーに障害が発生した場合にはヘルスチェックが失敗し、ロードバランサーの分散対象から外れ、システムの可用性を担保することが可能です。
(障害が復旧すれば、ヘルスチェックに成功したのち、分散対象に復帰します)

Image may be NSFW.
Clik here to view.
f:id:m-itoidcf:20201204171339p:plain

設定方法

設定方法は新規サービス作成時と既存のサービスへの設定の2種類がありますが、今回は既存サービスに対する設定を例にしてご紹介します。
新規サービス作成時でも要領は同じです。

オートロードバランス

まず前段として、複数のオリジンサーバーを用意します。
以下の手順でオリジンサーバーの設定をしてください。
オリジンサーバーは最大5台まで追加可能です。

  1. クラウドコンソールから対象のサービス名をクリック
  2. [オリジンサーバー]を選択
  3. [オリジンサーバーを追加する]をクリック
  4. 必要情報をご入力ください
  5. 右下の「追加する」をクリック

※この時点では以下の VCL Warning が表示されますが、ロードバランスの設定をすることで解消されますのでこのまま次に進んでください。

Image may be NSFW.
Clik here to view.
f:id:m-itoidcf:20201124084755p:plain

対象サービスの [オートロードバランス] タブをクリックすると、設定画面が表示されます。

Image may be NSFW.
Clik here to view.
f:id:m-itoidcf:20201125073923p:plain

操作はとても簡単で、3ステップで設定完了です。

  1. バランシングしたいオリジンサーバーにチェックを入れる
  2. 重みを設定する(1-100の整数値)
    各オリジンに均等にバランシングする場合はデフォルト値のままでOK
  3. オリジンシールド 2を選択する
    設定しない場合は noneを選択

すべてのオリジンに対して一括で設定できる、バランシング対象のオリジンシールドを固定できる、といったところがポイントです。

というのも、オリジンシールドと併用する場合、Fastly ではすべてのオリジンに対して同じシールド POP を設定することを推奨していますが、Fastly が提供する UI ではバラバラに設定することができてしまいます。
これを避けるため、統一したシールド POP を設定できるように制御しています。

また、注意事項として、オートロードバランスをオンにする場合は各オリジンサーバーが必ず同じ機能を持っており、同じレスポンスを返すようにしてください。
あるオリジンサーバーにはコンテンツが存在し、別のオリジンサーバーにはない、という状態だとロードバランサーとして期待した結果を得ることができません。

各項目の詳細な説明は FAQに記載がありますので、ぜひご覧ください。

ヘルスチェック

オリジンサーバーのオプション設定として、ヘルスチェックが提供されています。

Image may be NSFW.
Clik here to view.
f:id:m-itoidcf:20201124093725p:plain

こちらも簡単な操作で設定可能になっています。
パスとホストヘッダーを入力すれば、後はデフォルト値のままでも利用可能です。

  1. [ヘルスチェック] にチェックを入れる
  2. 各種設定を行う(※は必須項目)
    • リクエスト ※
      送信するリクエストの HTTP メソッドとヘルスチェック対象のパスを入力してください。 パスには、ヘルスチェック用にオリジンに配置したコンテンツのパスを指定します。
    • ホストヘッダー ※
      ヘルスチェックのリクエスト送信先ホスト(FQDN または IP アドレス)を記載してください。
    • ステータスコード
      レスポンスとして期待される HTTP ステータスコードを指定してください。
    • チェックレベル
      ヘルスチェックする頻度を 低・中・高・カスタム の4つのレベルから選択してください。

こちらも詳細については FAQがございますので、ご覧ください。

さいごに

実はこの機能、昨年の時点でも開発が進められておりリリース直前まで行ってたのですが、テスト中に仕様の不備が発覚してしまいリリースが見送られていたものでした。

今回、改めて開発チームおよび UI/UX チームで仕様を検討し直し、直感的に扱いやすいユーザーフレンドリーな UI を提供できたのではないかと自負しております。

これからも、IDCFクラウド の強みであるシンプルさと Fastly のパワフルさを併せもった機能開発を推進していければと思いますのでご期待ください!


  1. https://www.idcf.jp/help/cloud/releasenotes/

  2. オリジンサーバーに対して、必ず経由するPOP(配信拠点)をいずれか1つ指定することができる機能です。設定することで、オリジンサーバーへのリクエスト減による負荷軽減、キャッシュヒット率の増加が見込めます。詳細は FAQをご覧ください。

【RDB】メンテナンス機能のご紹介

こんにちは、オペレーション本部サービス基盤部の山口です。
今回はIDCFクラウドのRDBサービスで新たに追加されたメンテナンス機能について、ご紹介したいと思います。

メンテナンス機能とは

メンテナンス機能は、ユーザーが決められた期限までに自身に都合の良いタイミングでメンテナンスを実行することができる機能となっています。
今後RDBサービスにおいて脆弱性対策やMySQLマイナーアップデートなどのRDBマシンの更新を行う場合に、この機能を利用してアップデートを行っていただきます。
これまでは当社都合での事前通知による一斉メンテナンスを行ってまいりましたが、今後はユーザーご自身のサービスに影響のないタイミングで実施いただけるようになります。

メンテナンス機能の使い方

それでは、実際にポータル画面からメンテナンス機能のUIを確認してみましょう。

Image may be NSFW.
Clik here to view.
f:id:myamaguchi-idcf:20210315112705p:plain
RDBマシン一覧画面
メンテナンス対象のRDBマシンは、RDBマシン一覧から確認することができます。
画像のように、各マシン欄の一番左にベルマークのメンテナンスアイコンがついているRDBマシンが対象となっています。

対象のRDBマシンを選択すると、画面にはメンテナンスタブが選択されたモーダルが表示されます。
このメンテナンスタブは次のような構成になっています。

Image may be NSFW.
Clik here to view.
f:id:myamaguchi-idcf:20210315113004p:plain
メンテナンスタブ画像

内容欄には、メンテナンス機能で対応するアップデートの内容が記載されています。
(※上記で表示されているメンテナンス内容はsample用となっていますので、今後実際にメンテナンス機能を利用される場合には内容は異なります)

メンテナンスには期限が設けられています。
期限までにメンテナンスが行われなかった場合、最終期限日中のデフォルトで設定されている時間にメンテナンスが強制実行されます。

メンテナンスは予約アップデートと手動アップデートの2パターンで実行することができます。
予約アップデートでは、ユーザーは事前に期限日までの間でメンテナンスを実行する日時を設定しておくことができます。予約された時間になると、RDBマシンは自動でメンテナンスを実行します。
手動アップデートでは、即時メンテナンスを実行することができます。

メンテナンスの種類によっては実行中MySQLが停止いたします。
ユーザー都合で実行タイミングを決めることで、停止したくない時間帯を避けることができます。

メンテナンスを実行してみる

今回は手動でメンテナンスを行いたいと思います。
右下の手動アップデート欄にある「アップデートする」ボタンを押下します。

Image may be NSFW.
Clik here to view.
f:id:myamaguchi-idcf:20210315113421p:plain
アップデートボタンの画像

するとメンテナンスの内容を確認するメッセージが表示されます。
内容に問題がなければこのまま「はい」を押下します。

Image may be NSFW.
Clik here to view.
f:id:myamaguchi-idcf:20210315113556p:plain
メンテナンス内容確認の画像

メンテナンス実行中はステータスがRunningからUpdatingに変わり、RDBマシンの各操作ができなくなります。
このまま待っていただくか、一度モーダルを閉じていただいても構いません。

Image may be NSFW.
Clik here to view.
f:id:myamaguchi-idcf:20210315113730p:plain
メンテナンス実行中の画像

メンテナンスが完了すると、対象マシンのメンテナンスアイコンが外れます。
また、マシンを選択してもメンテナンスタブは表示されなくなります。

Image may be NSFW.
Clik here to view.
f:id:myamaguchi-idcf:20210315113910p:plain
RDBマシン一覧画像
Image may be NSFW.
Clik here to view.
f:id:mkobayashi_idcf:20210318083010p:plain
メンテナンス完了後のタブ画像

最後に

いかがだったでしょうか。
今後RDBマシンにメンテナンスが必要になった際にはメールにて事前通知をおこない、本記事のメンテナンス機能でメンテナンスを実施していただくことが可能になります。
是非この機能をご活用ください。

今後もIDCFクラウド RDBサービスの更なる進化にご期待ください。

IDCFクラウドのマネージドKubernetesサービスはじめます

こんにちは、藤城(@tafujish)です。ちょうど2年ぶりにIDCFテックブログを書くのですが、この2年間何をやっていたかと言うと、本日ご紹介する「IDCFクラウド コンテナ」サービスです。

www.idcf.jp

現在、2021年5月のリリースに向けて大詰めの段階に入っていますので、リリース前情報をいくつかご紹介したいと思います。

どんなサービスなの?

開発の高速化や効率化のためにDocker導入が進みました。ここ数年では更に、Dockerやコンテナによるメリットを本番環境でも活用するために、Kubernetesの利用が広まりつつあります。IDCF社内でも、長らくDockerを開発に利用しており、一部サービスのインフラ上ではKubernetesを利用しています。

その中で、Kubernetesの運用の大変さとマネージドKubernetesサービスの便利さを理解し、IDCFクラウドとしてもサービス提供が必要だと考えました。一方で、お客様からもIDCFらしい取っ付きやすい使い勝手とわかりやすい料金体系のマネージドKubernetesサービスを求める声をいただいておりました。

■ IDCFクラウド上でネイティブに動作するKubernetes

IDCFクラウド コンピュート上で、冗長構成のKubernetesクラスターを構築することが可能です。コンテナによるスケールメリットを活かすためにはロードバランサーが必須ですが、IDCFクラウドの無料のロードバランサー(L4)はType LoadBalancerとして、高性能のインフィニットLB(L7)はIngressにて、UI上またはYaml (kubectl)にて操作・管理することができます。

この他にも、パーシステントボリュームやノードのオートリカバリーなどクラウドのインフラ環境に依存する機能も実装しています。

■ データセンター上のオンプレミス上で動作するKubernetes

IDCFクラウドでなくても、お客様環境上でKubernetesクラスターを構築し管理することが可能です。環境に縛られず、冗長化されたKubernetesの構築を簡単にでき、クラウドサービスから管理できるというサービスはあまりなく、便利なんじゃないかと思ってます。

IDCFのお客様としては、クラウドだけでなくデータセンターの利用やそれをハイブリッドで利用しているケースが多くあります。オンプレミス上で簡単にKubernetesを導入するというメリットだけでなく、IDCFクラウドとハイブリッド利用することでコンテナによるポータビリティやスケールメリットをより活かしていただきたいと考えてます。

■ GKEなどとマルチクラウドで利用できるKubernetes

IDCFクラウドやオンプレミス環境だけでなく、GKEなど他社パブリッククラウド上でも構築し管理することが可能です。コンテナによるポータビリティにより、マルチクラウドでの利用が推進されると考えているからです。

マルチクラウドの環境を一元管理し、どこの環境でも同じようにCI/CDフローが回せて、同じように運用でき、ユーザーの権限管理もまとめることができます。

■ わかりやすいUIとスモールスタート可能な料金

とにかく、Kubernetes導入の敷居を下げたいと思っています。
IDCFクラウドと同様に、簡単でシンプルなUIを搭載しています。

Image may be NSFW.
Clik here to view.
f:id:csakai-idcf:20210401164348p:plain
「IDCFクラウド コンテナ」のUI

どんな人にとって便利なサービスなの?

IDCFクラウド コンテナ」が適しているケースをいくつか紹介します。

■ これからDockerやコンテナの導入を検討している

Kubernetesの導入の前にまずは開発環境にてDockerを導入し、開発の高速化や効率化を目指す流れだと思います。この時に、実行環境の構築やコンテナのデプロイやロールバックといった操作をUIから行えると便利だなと思ったら本サービスが当てはまると思います。

■ Docker利用中でKubernetesの導入を検討している

Dockerのメリットを理解しており、プロダクション環境への適用のためKubernetes導入を検討しているのであれば、本サービスが適していると思います。簡単なUIによりKubernetesをはじめやすいですし、その後もKubernetesのバージョンアップやワークロードの管理、リソースモニタリングなど運用もしやすい機能が揃っています。

■ Kubernetes導入済み

さまざまな環境に導入できる本サービスでは、マルチクラウドの環境を一元管理できます。可用性向上やディザスタリカバリ目的のためのマルチクラウド利用であったり、野良Kubernetesやインフラごとの開発環境を統合管理することもできます。

もっと知りたい

以上、簡単に触れてきましたが、もしご興味をお持ちいただけたなら、私や関係者が語った記事が2つ上がっておりますので、こちらも併せてご覧ください。

www.itmedia.co.jp

special.nikkeibp.co.jp

また、画面や操作感が気になるという場合は、ウェビナーにてデモンストレーションもしたいと思っておりますので、こちらもご参加いただけると嬉しいです。

www.idcf.jp

Interop Tokyo 2021で語った「IDCFクラウド コンテナ」の魅力とは

こんにちは。IDCフロンティア エンジニアリング本部の浅沼です。
国内最大級のICTイベント、「Interop Tokyo 2021」が4月14日(水)~4月16日(金)に開催されました。

Image may be NSFW.
Clik here to view.
f:id:blog-idcf:20210419142843j:plain

本イベントでは、SUSE ソフトウェア ソリューションズ ジャパン株式会社様が「ビジネスの優位性を実現するDev/Ops とは〜Kubernetesの一元管理実現事例から」というテーマで基調講演をされました。
その中の1セクションに私がお邪魔して、SUSE-Rancherを基盤に採用したマネージドKubernetesサービス、「IDCFクラウド コンテナ」についてお話ししましたので、その様子をお伝えします。

講演内容

SUSE ソフトウェア ソリューションズ ジャパン株式会社様からは村川氏が登壇されました。

Image may be NSFW.
Clik here to view.
f:id:blog-idcf:20210419180252p:plain

SUSEとRancher Labsの統合によって製品名が「SUSE-Rancher」となり、エンタープライズレベルのサポートを提供できるようになったことなど、それぞれの強みを活かした「Longhorn 1.1」が、Dev/Opsを実現するお客さまにどのようなメリットがあるのかをお話しされました。

実は、「IDCFクラウド コンテナ」のシステム基盤に「Longhorn」を採用しています。Replicaのリージョン内やリージョン間配置を試してパフォーマンスの検証などを実施しています。Kubernetes、DR構成での「Longhorn」利用についても、いつかどこかのタイミングで知見を共有できたらと思っています。

続いて、私の登壇になります。

Image may be NSFW.
Clik here to view.
f:id:blog-idcf:20210419170450p:plain

2021年5月にリリースを控えた「IDCFクラウド コンテナ」を開発するにあたり、どのような課題の解決方法を考えてきたのかを講演しました。

IDCFクラウド コンテナ」のサービス化に向けた開発をこの1年以上行ってきました。技術検証と並行して、何故このサービスが必要なのか、どんなことを解決したいのか、チームで議論し、色々な方のコンテナ利用についてヒアリングしながらサービスコンセプトも進めてきました。新しい技術を利用する難しさとそこを越えたところで受けられるメリットを実感し、難しいからこそシンプル・便利に使えるサービスにしたい想いがあります。

Image may be NSFW.
Clik here to view.
f:id:blog-idcf:20210419171756p:plain

まず初めに、基盤にSUSE-Rancherを採用した「IDCFクラウド コンテナ」サービスの開発にいたった経緯として、インフラのハイブリッド利用やマルチクラウド環境の統合管理には、それに合わせたKubernetesクラスターの展開や管理が容易にできるサービスが必要であったことを話しました。

やはり、システムやアプリケーションの特性に応じて、複数のインフラ・クラウドを利用するケースが増えていると思います。インフラやアプリケーション開発の現場でも選択肢が広がっている分、利用・運用の手間や管理を効率化したいなどの要求も高まっていると感じます。

Image may be NSFW.
Clik here to view.
f:id:blog-idcf:20210419171818p:plain

そのような背景の中で、インフラ環境を構築、運用する上での様々な課題と、「IDCFクラウド コンテナ」を利用した解決方法について、具体的な例を挙げました。

まず、すでにあるインフラ環境でも始められること、そして、新しい環境が増えても同じように管理・運用ができることが重要だと考えています。どの環境でも同じように使うことができるということは、エンジニアにとっても手間や悩みを増やさないために必要なことであり、SUSE-Rancherはそれが可能になるところが今回の基盤採用での決め手でした。

最後に、「IDCFクラウド コンテナ」を提供することで、コンテナやKubernetesを取り入れやすくし、今後もコンテナという形でより楽にインフラの利用ができるサービスを開発していきたい、と締めくくりました。

以上、講演の様子を簡単にお伝えしましたが、「もっと見たい!」という方へ、登壇資料は以下のリンクよりダウンロード可能です。
→登壇資料はこちら(SlideShare)


本ブログでお伝えした「IDCFクラウド コンテナ」は5月にリリース予定です。
サービスの特長はIDCフロンティア ホームページの他、本ブログでもご紹介しているのでそちらもぜひご覧ください。
→IDCFクラウドのマネージドKubernetesサービスはじめます - IDCF テックブログ

またリリースにあたって、無料ウェビナーを開催します!
サービスの詳細説明や、実際の管理画面を用いた操作方法をお伝えします。
Kubernetesの管理にお悩みの方、これから導入を考えている方におすすめの内容です。 お気軽にご参加ください。

Image may be NSFW.
Clik here to view.
20210419161154

Viewing all 122 articles
Browse latest View live