タグ

ブックマーク / www.ryuzee.com (48)

  • オープンソースのAPI Gateway「Kong」

    全国100万人のモノリシック巨大アプリケーションに苦しむみなさんこんにちは。 世の中も杓子もマイクロサービスだ!!とかAPIだ!!とか言っていますが、実際にマイクロサービス環境にしようとすると、どのようにしてAPIのサービスを取りまとめるかが課題になります。 一般的には以下のようなやり方になります。 複数のサービスに分散しているAPIを統合するゲートウェイを用意するそのゲートウェイでは以下のようなことをおこなうクライアントからのアクセスのシングルエンドポイントの役目を果たすAPIの実体へのルーティング認証アクセス記録の収集スロットリング(過度なアクセスの抑止)実体がダウンしている場合のデグレーションこのようなAPIゲートウェイの機能は既にAWSではAmazon API Gatewayとして提供されていますが、オープンソースでもいくつかのプロダクトがあります。今回はそのうち一番開発が活発そ

    オープンソースのAPI Gateway「Kong」
  • Hashicorpの新プロダクト「Otto」を試してみた

    全国1000万人の大トロ好きのみなさんこんにちは。 Hashicorpから新たにOttoと呼ばれるプロダクトがリリースされました。 OttoはVagrantの後継となるもので、開発からデプロイまで一気通貫で行うことができるソリューションでマイクロサービスでの活用も考慮されて作られているということで早速試してみました。 軽く触った印象としては、Vagrant、Packer、Terraform、ConsulなどいままでHashicorpが提供してきたツールを組み合わせて一気通貫で操作できるようになった、と考えるとわかりやすそうです。 インストール https://ottoproject.io/downloads.html にアクセスして自分の環境にあったバイナリをダウンロードして展開します。展開したら実行できるようにPATHに追加します。 僕の場合はアーカイブを~/tools/otto/に配置

    Hashicorpの新プロダクト「Otto」を試してみた
  • Electronでデスクトップアプリを簡単構築

    全国5000人のエンジニアをやめて寿司職人になろうと思っているみなさんこんばんは。 前回までスライド共有用のアプリケーションを趣味(リハビリ)で作っていたのですが、折角なのでデスクトップクライアントも作ってみました。 構築にはElectronを使ったのですが、結構簡単にできたので記録としてまとめておきます。 Electronって何?GitHubが開発するクロスプラットフォームで動作するアプリケーションを開発するためのフレームワーク。コードの記述はHTML5とNode.js。その範囲であれば既存のWeb開発技術が使いまわせる。例えばjQueryとかAngularなんかを使うのも可能Chromeブラウザのオープンソース版のChroniumのエンジンを内蔵例えばAtom・Visual Studio Code・Slackクライアントや、日だとKobitoあたりがメジャー作り方あちこちに記事があが

    Electronでデスクトップアプリを簡単構築
  • (続)スライド公開用のアプリケーションを作っている話

    全国1000万人の寿司職人のみなさんこんばんは。 昨年の12月28日に公開した、AWSを使ってスライドを公開するデモアプリを作ってみた話の続きです。 どんなアプリかは、デモ環境を見ていただくと早いと思いますが、端的にいえば、 SlideshareとかSpeaker Deckのようなサービスのオープンソース版たぶん自分だけのスライドを公開したり、社内用に使えたりするCakePHPとjQueryを使いまくっているAWSの機能をかなり使っており、SPOFのない高可用性アーキテクチャパワーポイントPDFに対応アップロードしたファイルや変換済ファイルは全てAmazon S3に保存Flash Playerなしで表示ムダに国際化対応済ムダにフルResponsiveなのでiPhoneとかでもいけるMITライセンスコードはGitHubにおいてあるという感じのものです。以下のようにサイトのスライドを埋め込む

    (続)スライド公開用のアプリケーションを作っている話
    okinaka
    okinaka 2015/08/14
    まだ継続的インテグレーションはしてないみたい。
  • Packer + Serverspecでテスト済み仮想マシンイメージを自動で生成する

    みなさんこんにちは。@ryuzeeです。 Packerを使うと、VagrantやVMware、Amazon EC2用のAMIなどなどのさまざまな仮想マシンのテンプレートを簡単に作成することができるのはご存知の通りです。 一方で作成した仮想マシンのテンプレートが必要な要件を満たしているかどうかは、仮想マシンのテンプレートを作るたびに検査しなければなりません。 ここでは、PackerとServerspecを組み合わせて、仮想マシンのテンプレートを作成する際に、テストも併せておこなう方法について解説します。 前提今回仮想マシンのテンプレートを作成するにあたっては以下の方式で行ないます。 Packer 0.7.2Packerでの仮想マシンの設定ではChef-SoloのProvisionerを利用CookbookはBerkshelfを使って管理する作るテンプレートはDocker用のもの(但し他のもの

    Packer + Serverspecでテスト済み仮想マシンイメージを自動で生成する
  • Sensuを使って自由度の高い監視システムの構築を行う方法

    SensuとはSensuはhttp://sensuapp.org/で公開されているオープンソース(MITライセンス)のモニタリングフレームワークです。 特徴以下のような特徴があります(公式サイトの記述を整理) シンプルで融通が効き拡張性があるモニタリングフレームワークエージェント、メッセージバス、イベントプロセッサーの機能を提供要件にあわせて他のツールとの組み合わせが可能クラウドを意識して開発自動でクライアント(監視対象)を登録コミュニティが活発RubyのEventMachineを使って作られているコードはGitHubホストされ、テストコードは高いカバレージ。TravisCIで継続的インテグレーションを実施Nagiosのプラグインを再利用可能設定はすべてJSONファイルで行うRabbitMQを使ったメッセージ型のアーキテクチャーオムニバスインストーラーを提供個人的な見解としては、Sens

    Sensuを使って自由度の高い監視システムの構築を行う方法
  • vagrant-serverspecを使ってプロビジョニング結果をテストする

    全国1000万人のVagrant利用者のみなさんこんにちは。 Vagrantいいですよね!そしてインフラの状態をテストするserverspecもいいですよね!この2つがシームレスに統合されるとかなりうれしいですよね! ということで日12/2にvagrant-serverspecというプラグインがリリースされたので早速紹介します。 インストールインストールは簡単です。いつも通りvagrant plugin install vagrant-serverspec としてください。 コード自体は https://github.com/jvoorhis/vagrant-serverspec で公開されています。まだバージョン0.0.1なので、問題を見つけたらPR送るなりIssueを切るなりすると良いと思います。 使い方使い方も簡単です。まずVagrantfileを見てみましょう。 これは何をやって

    vagrant-serverspecを使ってプロビジョニング結果をテストする
  • 資料公開 Vagrant (+Amazon EC2)

    著作 SCRUM BOOT CAMP THE BOOK 著者/訳者:西村直人 永瀬美穂 吉羽龍太郎 出版社:翔泳社( 2013-02-13 ) 定価:¥ 2,520 スクラム初心者に向けて基的な考え方の解説から始まり、プロジェクトでの実際の進め方やよく起こる問題への対応法まで幅広く解説。マンガと文章のセットでスクラムを短期間で理解できます。スクラムの概要を正しく理解したい人、もう一度おさらいしたい人にオススメ。 CakePHPで学ぶ継続的インテグレーション 著者/訳者:渡辺 一宏 吉羽 龍太郎 岸田 健一郎 穴澤 康裕 出版社:インプレス( 2014-09-19 ) 定価:¥ 4,320 Webアプリケーション開発における継続的インテグレーションについて、CakePHPのサンプルをベースにして、その概要から使用ツール解説、導入方法、メンテナンスまでを解説 Chef実践入門 ~コードによる

    資料公開 Vagrant (+Amazon EC2)
  • OpenVPN ServerをAmazon EC2上に簡単に構築する方法

    Amazon Virtual Private Cloud(VPC)を使ってPrivate Subnetを作っている場合、Private SUbnetにあるインスタンスを触るために一端Public Subnetの踏み台にログインしてから作業するとかは面倒すぎて無理なので、OpenVPNを使ったVPN環境を用意するのがよくある手です。 OpenVPN Server自体のインストールはそんなに大変ではありませんが、手でやると間違えるので、Chef Soloを使ってサクっと作る方法を紹介します。 インストール対象のインスタンスの用意まずOpenVPN Serverをインストールするインスタンスを用意します。既にNATインスタンスを利用している場合はそれ上にインストールをするのが簡単です。 別で用意する場合は、NATインスタンス作成用のAMIを利用します(他のAMIでももちろん大丈夫です。いざという

    OpenVPN ServerをAmazon EC2上に簡単に構築する方法
  • Vagrantのコアの挙動を変更する方法

    Vagrantは素晴らしいプロダクトであることは言うまでもないことですが、時にはVagrant自体の挙動を変更したいと思うこともあります。 たとえば、Vagrantでは作成したインスタンスにChefなどのProvisionerを使ってパッケージをインストールするときに、sudoコマンドを利用してユーザー権限からインストールを実行しますが、そのとき、インスタンス側ではrequiretty (コンソールデバイス必須) の無効化の設定がなされていることが前提になっています。 でも、これ最初からboxをそのように作って入れば良いのですが、そうじゃない場合(virtualbox以外のproviderを使ってクラウドサービス上にインスタンスを立ち上げるとか)は、いちいち自分でその変更を加えたbox(もしくはそれに準ずるもの)を作るのは面倒でかないません。 ということで、今回はVagrantのコアの挙動

    Vagrantのコアの挙動を変更する方法
  • vagrant-omnibusで簡単Chef Client/Chef Soloインストール

    Vagrantを使ってインスタンスを作成し、Chef Provisionerで自動でパッケージをインストールしたり設定をする、というのが定石の流れです。 しかし、インスタンスの雛形であるboxにChef ClientやChef Soloがインストールされていない場合、このインストールを自分でしないといけないのは面倒の極みです。 そもそも設定するためにインスタンスにログインして設定を追加してからプロビジョニングするのはアホくさいですし、自動化された処理を走らせるために手動で面倒くさい処理をするというのはナンセンスです。 これを解決するには2つのアプローチがあります。 Chef Client/ Chef Soloをインストールした上でインスタンスを再度box化して次回以降も使えるようにするVagrantを起動するときにChef Client/Chef Soloがインストールされていなければ自動

    vagrant-omnibusで簡単Chef Client/Chef Soloインストール
  • veeweeを使ってVagrant用のboxを自分で作る方法

    Vagrant用のbox(OSのテンプレート)はhttp://www.vagrantbox.es/などで多数配布されています。 とりあえず試してみる分にはこちらにあるものを使ってみるのも良いですが、実際に開発で使おうとするといくつか問題があります。 そのOSに怪しいプログラムがインストールされているかもしれない初期の設定が自分たちの環境と大きく乖離している。例えばyumのレポジトリが多数追加されたりしているVirtualBoxのGuestAdditionsなどのバージョンが古くてそもそも正しく動かないかもしれないこういったことを避けるためには、自分たちでセキュアなboxを作るのが良いと思います。ここではveeweeを使って、自分用のboxを作る方法を紹介します。 veeweeのインストールveeweeはrubyで書かれたツールで、vagrantをはじめとする多くの仮想化ツール用にOSの雛形

    veeweeを使ってVagrant用のboxを自分で作る方法
  • Vagrantのインスタンスの破棄の際にChef Serverのnodeも同時に削除する方法

    タイトルが長くて何を言っているのか分かりにくいのですが、Vagrant 1.1 + Chef Serverを使ってインスタンスを作り、一端インスタンスを破棄して再度作ろうとすると、Chef Serverが、そのノードは既に登録中だから登録できねーよ、という409エラーを吐いてしまい、プロビジョニングに失敗します。 たとえばこんな感じのVagrantfileを使う場合にdestroyして作りなおすと上記の事象が発生するわけです。 Vagrant.configure("2") do |config| config.vm.box = "centos_63_x86_64_ja" config.vm.network :private_network, ip: "192.168.33.10" config.vm.hostname = "test07" # この名前がnodeとして登録される confi

    Vagrantのインスタンスの破棄の際にChef Serverのnodeも同時に削除する方法
  • foodcriticでChefのcookbookの書き方をチェックする方法

    foodcriticはChefのcookbookのためのlintツールで、http://acrmp.github.com/foodcritic/ で公開されています。 cookbookは長い間環境を維持していくために使われるため、可読性が高く誰でも分かるように書いておくことが望ましいのは言うまでもありません。このツールでは標準で45個のルールにしたがってcookbookをチェックすることができます。もちろん自分でルールを新たに追加していくことも可能です。 インストール動作させるには、ruby 1.9.2以降が必要です。インストールはgemでさくっと入ります。gem install foodcritic 実行方法実行方法も簡単です。引数にcookbookの名前を指定すればOKです。foodcritic php その他の実行オプションとしては以下があります。 foodcritic [cookb

    foodcriticでChefのcookbookの書き方をチェックする方法
    okinaka
    okinaka 2013/03/14
  • ChefのrecipeをJenkinsで継続的インテグレーションする方法

    環境構築の自動化のツールとして一番注目されているのがChefです。 Recipeと呼ばれるインストールや設定のためのスクリプトを書いておき、それを使って新しいサーバを速攻で作ったり、Chef Serverを使えば複数のサーバ群に対して環境を一定に保つことが可能です。 ChefのRecipeは単なるrubyのスクリプトです。そしてrecipeでよく起こる問題として以下のようなものがあります。 外部サイトからtarballを取得してインストールしているような場合に、配布元の移転や、新バージョンの公開と旧バージョンの配布停止によって、recipeがコケるphpでよく使われるライブラリの配布形態であるpearのチャンネル情報が追加になったりURLが変更になる。インストールすれるパッケージがバージョンアップされ、依存関係が増えたりする。上記のようなことがあるので、recipeを定常的に動作確認してい

    ChefのrecipeをJenkinsで継続的インテグレーションする方法
    okinaka
    okinaka 2013/02/27
    この手順を Chef の recipe にして Jenkins で継続的インテグレーション…できるかな?
  • CakePHP2アプリケーションをCapistranoでデプロイする

    アプリケーションのデプロイを自動化すべきなのは言うまでもないことです。 一応手動でデプロイを行う場合の問題点について整理しておくと以下になります。 プロジェクトの期間中そして運用に入ってからも何度も手でデプロイするということはとてつもなく多くの時間を手作業に費やすことになるデプロイ先の環境の数が多くなればなるほど作業の時間も増える手作業で作業すると間違えやすい。特に手順が複雑だったり環境が多かったりすると確率は飛躍的にあがるもしデプロイしたアプリケーションに問題があってすぐに戻さなければならない場合に多くの時間がかかる。場合によってはビジネス上の機会損失に繋がる来は価値を生むフィーチャーを実装することに時間をかけたいはずが、こういうことをやっているとどんどん時間がなくなっていきます。また手作業のリスクや消費される時間を恐れてデプロイの回数を減らしてしまうのは、ビジネス側からみると納得いか

    CakePHP2アプリケーションをCapistranoでデプロイする
  • CakePHP2系でマイグレーションを利用する方法

    マイグレーションを使わないで、データベースのスキーマ構成を変更したりすると、特に複数人で開発しているような場合にこんなことが起こったりします。 自分の開発マシンとテストサーバ等でスキーマ構成が違っているさらには他人の開発マシンともスキーマ構成が異なっているしかもどっちがあっているか分からない例えば、みんなが色々変更しているせいで、カラムの順番が入れ子になってたりする番サーバに反映しようとした時に、どの順番にスキーマ変更を行ったらよいか分からない。ソースコードのリリースバージョンと紐付くデータベースの状態がよく分からない。こういう質的でないことに時間を使っては勿体無いので、データベースの構成管理にはマイグレーション機能を使うのが定石です。Railsなんかだと当たり前なのですが、今回はCakePHP2系でマイグレーションを利用する方法を紹介します。 CakeDC Migrationの導入C

    CakePHP2系でマイグレーションを利用する方法
  • CakePHPのアプリのコーディング規約チェックを自動で行う方法

    みなさんこんにちは。@ryuzeeです。 PHPで書かれたソースコードがコーディング規約に準拠しているかどうか確認するには、PHP_CodeSnifferというツールを使うのはよくご存知だと思いますが、今回はCakePHPを使って書いたソースコードの規約をチェックする方法を紹介します。 なお、このような規約チェックはローカル環境で気が向いた時にやるだけではなく、継続的インテグレーションにも組み込んで実施することが望まれます。 PHP_CodeSnifferのインストール特にチャンネルの追加は必要ありません。 インストールが完了すると、phpcsコマンドがインストールされます。 また標準では、Squiz, PEAR, Zend, MySource, PSR1, PSR2 , PHPCS の7個の規約がインストールされます。このうちMySourceは自分でのカスタマイズ用です。 CakePHP

    CakePHPのアプリのコーディング規約チェックを自動で行う方法
  • Robot Framework + Selenium2Libraryで簡単受け入れテスト | Ryuzee.com

    Robot Frameworkは受け入れテストや受け入れテスト駆動開発(ATDD)に使えるテスティングフレームワーク。 http://code.google.com/p/robotframework/で開発が進められている。 プレインテキストやHTML形式でテストケースを記述できること、pythonまたはjavaによってテストライブラリを作って拡張できることが特徴だ。 ここではRobot FrameworkとSelenium2(WebDriver)を組み合わせて、受け入れテストを自動化する方法について説明する。 WebDriverを単独で使ってWebアプリケーションのエンドツーエンドテストを作る場合、どうしても画面ができてからしかテストケースが作れないというのが大きな問題だ。そのため例えばPHPであればBeHatと組み合わせしたりするのだが、今回の方法は更に簡単だ。 例えば、アジャイルな開

    Robot Framework + Selenium2Libraryで簡単受け入れテスト | Ryuzee.com
  • Selenium + PHPUnitで簡単エンドツーエンドテストを実現する

    ここではSeleniumとPHPUnitを使って簡単にスモークテストを実現する方法を解説します。 基礎的な内容ですが、復習ということで。 下準備FirefoxにSelenium IDEをインストールするSelenium Serverを導入する(※ダウンロードへの直リンクはこちら)どちらもhttp://seleniumhq.org/download/からダウンロード可能です。Selenium IDEを使ったテストケースの作成もうこれはあちこちのサイトで説明されているので特に説明の必要はないでしょう(笑) 簡単に言えば、Firefoxを起動し、さらにSelenium IDEをたちあげて、操作を記録していけば良いだけです。 参考サイト SeleniumでWebアプリケーションテストを自動化 (ちょっと古いですが内容は役にたちます)Selenium IDE日語ドキュメントテストケースを自動で実行

    Selenium + PHPUnitで簡単エンドツーエンドテストを実現する