タグ

ブックマーク / blog.takuros.net (33)

  • マルチAZ構成で単一AZの障害の影響を受けるのは何故か? - プログラマでありたい

    昨日の「AWSのAZの割り当ては、アカウントごとに違うという話」で宿題として残した、マルチAZ構成で単一AZの障害の影響を受けるのは何故かという問題について考えてみます。キーワードはELBです。 前提としてのELBの実装(の予想) マルチAZ構成での障害発生原因を検討する前に、まずELBの実装について考えてみましょう。5年ほど前に書いたELBの挙動からみる内部構造の推測です。 blog.takuros.net 旧ELB(CLB)をもとに書いていますが、ALBでも大きく変わらないと思います。要点としては、ELB自体は、AWSが管理するEC2インスタンス上で稼働し、バランシング先のAZにそれぞれ配置されているということです。図ではELBインスタンス(仮称)として表しています。そして、ELBインスタンスへの振り分けはDNSの名前解決で実現している点です。このアーキテクチャは私の個人的な予想ですが

    マルチAZ構成で単一AZの障害の影響を受けるのは何故か? - プログラマでありたい
  • コンテナ化とサーバーレス、2つのトレンドに対する雑感 - プログラマでありたい

    からre:Inventを眺めていた雑感です。速報で2つほど新サービスに対しての感想をまとめていますが、今回は全体的なトレンドに対して今考えている事です。今回は1行じゃないですよ。 サービス展開の方向は、全方位的 サービスの展開方向としては、去年と変わらないような気がします。他のクラウド(Google, Azure)に対して弱かった部分をきっちりキャッチアップし、伸びている分野(AI機械学習)のラインナップを増やしていく。そして、サードパーティが提供している機能に対して、一定以上の規模が出てくると(買収 or 自社開発で)サービス化する。いわゆるサードパーティ殺し。 そんな中で提供されているサービスの作り方/インフラ的な部分を見てみると、コンテナとサーバレス(lambda)を使った物が多いです。AWS自身がコンテナとサーバレスを活用することで、開発を加速しサービスをスケールしやすくして

    コンテナ化とサーバーレス、2つのトレンドに対する雑感 - プログラマでありたい
  • Google スプレッドシートの関数でWebからデータを取得する - プログラマでありたい

    Excel買うのはちょっと高いなぁと思っている時に重宝するのが、Google スプレッドシートです。ブラウザがあればどこでも使えて嬉しく、あのデータあのパソコンに入ってるのにとか、そういったことから開放されます。さらに他の人との共有も簡単なので、使い所沢山あります。 そんなGoogle スプレッドシートですが、Googleならではというような機能もあります。その1つがImport系のセル関数です。幾つかあるのですが、Webからデータを収拾できるものが幾つかあります。地味だけど便利なので、簡単に紹介してみます。 Import関数 関数名 概要 IMPORTXML XML, HTML, CSV, TSV,RSS/Atom XMLフィードなど、構造化データからデータをインポート IMPORTHTML HTML ページ内の表やリストからデータをインポート IMPORTFEED RSS, Atom

    Google スプレッドシートの関数でWebからデータを取得する - プログラマでありたい
  • JAWS-UG アーキテクチャ支部でクローラー/Webスクレイピングの紹介をした - プログラマでありたい

    先日のJAWS-UG アーキテクチャ支部 クラウドネイティブ分科会 CDP議論会 #7で、Lambdaを利用したクローラー/Webスクレイピングについての発表をしてきました。 発表の経緯 そもそも何故アーキテクチャ支部でクローラー/Webスクレイピングの話をしたのかです。クラウドネイティブ分科会では、ここ数回Lambdaの実践的な活用について議論しています。利用パターンとしては、システムの中核となる部分とそれ以外の部分があるよねという前提がでてきました。そして、それ以外の周辺分野から利用していくほうが実践導入は早そうなので、そこで使えるパターンを議論してきました。その中で、出てきたのが下記の5パターンです。 ・監視 ・通知 ・フィルター ・コンテンツ確認(Validation) ・チャットOps ※この辺りについてはアーキテクチャ支部のGitHubのIssueに記載されているので、興味ある

    JAWS-UG アーキテクチャ支部でクローラー/Webスクレイピングの紹介をした - プログラマでありたい
  • Swaggerとは何か? - プログラマでありたい

    最近、Swaggerという単語を聞く機会が増えていませんか?MicrosoftGoogle,IBMが、REST APIの記述標準化を目指した「Open API Initiative」という団体を立ち上げ、そのベースをSwaggerを利用するということで一躍注目を集めるようになりました。しかし、Swaggerというものを調べるとツールの話やドキュメントの話が出てきて、何なのこれとなることが必定です。ということで、WebAPIとは切っても切れない関係のSwaggerの話を簡単にしてみます。 Swaggerとは? Swaggerとは、一義的にはREST APIを記述する為の仕様です。当初から、Swaggerが標準の仕様になることを目指しますよと宣言していて、米国等ではデファクト・スタンダードとなっていました。それが、「Open API Initiative」が出来たことにより、実際に標準の仕様

    Swaggerとは何か? - プログラマでありたい
  • AWS Lambda+PhantomJS/CasperJSでスクレイピング - プログラマでありたい

    AWS Lambdaはサーバ不要のプログラムの実行エンジンです。インフラ側はAWSが管理するのですが、実行原理が解っていると思いの外に自由度が高いです。Shellやコマンドを同梱させれば動くし、依存するライブラリがなければAmazon Linux上でビルドして同梱させれば良いのです。その実例の1つに、Lambda+PhantomJSがあります。PhantomJSは、ブラウザ不要で画面描画ができるツールです。リンクのクリックやボタンの押下・フォームに入力も出来るので、ログインが必要なページの情報を取ってくるということやスクリーンショットを取るといったことも可能です。LambdaPhantomJSを組み合わせてお手軽スクレイピングをしてみましょう。 プロジェクトの用意 Github上にビルド済みのライブラリ込のプロジェクトphantom-lambda-template)があるので、それを使

    AWS Lambda+PhantomJS/CasperJSでスクレイピング - プログラマでありたい
  • サーバレスアーキテクチャとは? - プログラマでありたい

    サーバレスアーキテクチャの整理です。少し前は、2-Tier Architecture(クラウドネイティブなアーキテクチャ)と3-Tier Architecture(従来のアーキテクチャ)という対比で論じられることが多かったです。しかし、API Gatewayの登場により、3-Tierな構造でもクラウドネイティブなアーキテクチャにしやすくなりました。ということで、サーバレスアーキテクチャ(ServerLess Architecture)と呼ばれることが多いです。 サーバレスアーキテクチャのパターン それでは、従来型のアーキテクチャ(旧3-Tier)と2-Tierパターン、API Gatewayを利用したサーバレスアーキテクチャをそれぞれ見てみましょう。 従来型のパターン( アプリケーションサーバ・パターン) まずは従来型のアーキテクチャです。間にELBを挟んでAutoScaleにすることは多

    サーバレスアーキテクチャとは? - プログラマでありたい
  • 「Rubyによるクローラー開発技法」の電子書籍化&増刷しました - プログラマでありたい

    Rubyによるクローラー開発技法  巡回・解析機能の実装と21の運用例 作者: 佐々木拓郎出版社/メーカー: SBクリエイティブ発売日: 2015/03/02メディア: Kindle版この商品を含むブログを見る 昨年の8月末に出版された「Rubyによるクローラー開発技法」ですが、ついに電子書籍化されました。Kindle楽天のkobo、紀伊國屋書店のKinoppyと主要なところは押さえている模様です。達人出版会さんからも出ないものですかねぇ。 今まで、何度も電子書籍化されないのと聞かれましたが、その度に解りませんと答えていました。電子書籍化や書名などは、ほぼ出版社側の意向によって決まるので著者としては、ほぼ決定権がない事項になります。そんな中で、ようやく電子書籍化して嬉しい限りです。願わくば、紙のの発売日と同時に電子書籍化されているのが標準になってものですね。 また、紙の方のも依然好調

    「Rubyによるクローラー開発技法」の電子書籍化&増刷しました - プログラマでありたい
  • バッチ処理について再考 - プログラマでありたい

    作業途中のメモです。バッチ処理の定義を確認しようとしてWikipediaをはじめとして幾つかのサイトをみてました。その時に目に入ったのが、下記の文章です。 利点 バッチ処理には以下のような利点がある。 ・多くのユーザーがコンピュータのリソースを共有できる。 ・処理をコンピュータのリソースがあまり忙しくない時間帯(多くは夜間、休日)にシフトできる。 ・人間がついていなくてもコンピュータのリソースが暇にならないように最大限有効活用できる。 ・高価なコンピュータをフルに活用することで費用対効果の効率向上に寄与する。バッチ処理 - Wikipedia これだけみると、人件費に対してコンピュータリソースが高い時代の産物なんですよね。今は、クラウドの登場で、有り余るコンピュータリソースをほぼ自由に低コストに使える時代です。そもそもバッチ処理である必要があるか、考える必要がありますね。特に夜間バッチにつ

    バッチ処理について再考 - プログラマでありたい
  • AWSのアカウント管理の話 - プログラマでありたい

    AWS Advent Calendar 2014の7日目です。あと、全部俺Advent Calendarも開催中です。 運用絡みで何か書くと宣言したので、AWSのアカウント運用について書いてみます。テクニックや技術より、考え方の面での整理です。 AWSのアカウントの種類 AWSで利用するアカウントは2種類あります。AWSアカウントとIAMアカウントです。AWSアカウントは、マスターアカウントと呼ぶこともあって大元のアカウントになります。AWSにサインアップ時に作るものが、AWSアカウントで1つだけ存在します。それに対して、IAMアカウントはユーザアカウントです。AWSの管理コンソールから、個々のユーザ向けなどに作成します。 AWSアカウントの取扱について AWSアカウントは、全権限を持っています。強力すぎるアカウントで、日常の運用に利用するには危険すぎます。日常の運用には使わないというのが

    AWSのアカウント管理の話 - プログラマでありたい
  • 何故JSONPでJavaScriptのクロスドメイン通信ができるのか? - プログラマでありたい

    一人Advent Calendarの3日目です。 JSONPを使って外部のAPIを呼び出して、結果を取り込むということは色々なところで行われています。しかし、そもそもJavaScriptを利用した場合、クロスドメイン通信が使えないという前提があります。JSONPだったら、何故そこを回避できるのでしょうか?あまり詳しく考えたことが無かったので、簡単に調べてまとめてみました。なんというか4周くらい遅れている話題ですが、気がついた時に整理するとスッキリします。 JSONPの動作原理 Wikipediaさんをみてみると、そのものずばりのことが書かれています。scriptタグ内のsrc属性は別ドメインのURLを指定できるという点と、そのレスポンスはJavaScript関数呼び出し形式になるという点をついたのが、JSONPの動作原理です。なんというか、仕様の考慮不足を利用した仕組みだと思います。 JS

    何故JSONPでJavaScriptのクロスドメイン通信ができるのか? - プログラマでありたい
  • 62nd Ruby/Rails勉強会@関西に参加してきた - プログラマでありたい

    ここ半年ほど、Rubyでクローラーを作るを書いていました。そんなこともあり、前回JAWSUG三都物語に参加した時に、アジャイルウェアの川端さんにRuby関西で話さないかとお誘いを受けました。もともとRubyのコミュニティに興味あったので、参加させて貰いました。 http://rubykansai.doorkeeper.jp/events/1316062nd Ruby/Rails勉強会@関西 #rubykansai - Ruby関西 | Doorkeeper 発表資料 Rubyで作るクローラー Ruby crawler from Takuro Sasaki 他の方の発表 RailsGirlsOsakaに参加して思ったこと RailsGirlsにスタッフとして参加した@to_uedaさんの感想。RailsGirls面白そうです。次は京都の企画があるので、興味がある人はチェック。 Rails

    62nd Ruby/Rails勉強会@関西に参加してきた - プログラマでありたい
  • 開発用プロキシ、「CocProxy」が便利 - プログラマでありたい

    CocProxyというツールがあります。名前の通りプロキシサーバーなのですが、用途が開発用です。置換プロキシと言うらしいですが、これがとっても便利です。例えば、クローラーの開発や、HTML,CSS,JavaScriptの修正をする際に、このCocProxyを利用するとダウンロード待ちのイライラが解消され、効率アップ間違いなしです。ローカルのみで完結するのと、Webへのアクセスが必要とするのでは、スピードが数十〜数百倍違います。一回だけでみたら、数百ミリSecの差ですが累積で考えると大きいですよ。 CocProxyとは? Ruby製のProxyServerです。かつ標準ライブラリで動くことを目標としているので、Rubyの環境があれば、ダウンロードして直ぐに使えます。また基的には1ファイルで完結するので、導入も簡単です。Ruby1.9をベースにしていますが、Ruby 2.0でも特に問題なく動

    開発用プロキシ、「CocProxy」が便利 - プログラマでありたい
  • Ruby製の構文解析ツール、Nokogiriの使い方 with Xpath - プログラマでありたい

    RubyHTMLやXMLをパースする構文解析ツールの定番は、Nokogiriです。スクレイピングする際の必需品で、なくてはならないモジュールの1つです。ただ色々なことが出来る反面、どこから取りかかれば良いのか解り難い部分もあります。自習を兼ねて、Nokogiri概要と主要な機能を紹介してみます。 Nokogiriとは何か? ReademeによるとNokogiriとは、「HTMLとXMLとSAXとXSLTとReaderのパーサー」で、特徴としては、XPathCSS3セレクター経由で探索する機能を持つことのようです。他にもHTMLやXMLのビルダーの機能を持っていますが、HTMLとXMLのパーサー(構文解析器)と覚えておけばよいでしょう。 Nokogiriのクラス構造 Nokogiriは、なかなか巨大なライブラリです。10以上のモジュールと70以上のクラスで構成されていて、yardでダイア

    Ruby製の構文解析ツール、Nokogiriの使い方 with Xpath - プログラマでありたい
  • Amazon Elastic Load Balancing (ELB)の内部構造および拡張・障害時の動き - プログラマでありたい

    諸般の理由により、AWSの各サービスの挙動を改めて復習中です。まずは、Amazon Elastic Load Balancing 、通称ELBについてです。ELBの内部の動作については、公開されている公式ドキュメントが割とあります。是非一度しっかりと目を通しておくとよいですよ。少なくともAWSマイスターシリーズのELBについては、読んでおくべきです。簡潔にかつ詳しく説明されているので、理解が格段に進むでしょう。というところで、現段階で私が理解しているELBのアーキテクチャをまとめてみました。 ELBの内部構造 ELBは、ELBエンドポイントとELBインスタンス(仮称)によって構成されます。ELBインスタンス(仮称)の正式名称は知らないので、その名前で呼ぶことにします。ELBインスタンスには、グローバルIPが付与されます。ELBエンドポイントは、myLB-xxx.elb.amazonaws.

    Amazon Elastic Load Balancing (ELB)の内部構造および拡張・障害時の動き - プログラマでありたい
  • あらためてRuby製のクローラー、"anemone"を調べてみた - プログラマでありたい

    3年ほど前に、Ruby製のクローラー"anemone"を紹介しました。その当時から完成度が高く、Rubyでクローラーを使う場合はanemoneを利用してきました。最近、他に新しくて良いのがないか調べましたが、機能面の網羅性という意味でanemoneを超えるものは見つけられませんでした。そこで改めてanemoneのソースを読んでみたところ、クローラーが必要とする機能を必要最小限で実装され、やはり中々良い出来です。冬休みの宿題ではないですが、勉強の意味を兼ねてソースを追っていくことにします。 Anemoneが利用しているライブラリ一覧 anemoneが利用しているライブラリは、4種類に分類できます。 Ruby標準or一般的なライブラリ データ取得で利用しているライブラリ データ解析で利用しているライブラリ データ保存で利用しているライブラリ この分類別に構造をみるとわかりやすいので、順番に追っ

    あらためてRuby製のクローラー、"anemone"を調べてみた - プログラマでありたい
  • 複数並行可能なRubyのクローラー、「cosmicrawler」を試してみた - プログラマでありたい

    最近のRubyのクローラーは、EventMachineを使って並列化するのが流行のようです。EventMachineは、非同期処理をお手軽に実装できるフレームワークです。Rubyのスレッド機能との違いは、Reactorパターンを使いシングルスレッドで実装している点です。こちらのブログが詳しいので参考になります。 「見えないチカラ: 【翻訳】EventMachine入門」 EventMachineを使うと、イベント・ドリブンの処理を簡単に実装出来ます。使い方は簡単ですが、通常の同期処理やスレッドをつかった処理に比べると、どうしてもコードの記述量は多くなります。今回の例である並列化してクローラーを走らせるという用途であれば、短時間で多くのサイトにアクセスするのが目的です。イベント・ドリブンで並列化処理を実装するのが目的ではないはずです。その辺りの面倒くさい処理を実装したライブラリがcosmic

    複数並行可能なRubyのクローラー、「cosmicrawler」を試してみた - プログラマでありたい
  • 今まで読んで良かった本 100冊 - プログラマでありたい

    今まで読んできて良かったなぁというをまとめてみました。せっかくなので100冊をまとめて一挙公開です。趣旨としては名著を紹介する訳ではなく、考え方の上で参考になったを紹介するという方針です。しかしロクに記録していないし記憶も定かではないので、当に良いと思ったものでも抜けているものも多数あると思います。また技術書については、専門外の人には意味が無いので省いています。 一般的にを勧めるうえで、100冊並べるというのは一番効率が悪い方法です。書評ブログとしては、1冊もしくは類似の2〜3冊くらいを紹介するのが一番効率が良いのです。でも、私は意地悪なので、を1冊紹介してくださいと言われると、10冊紹介するようにしています。暇な時に眺めてください。 歴史関係の 私がジャンルとして一番好きなのは、歴史関係のです。時間が許す限り延々と読んでいたいですが、そうも言っていられないのが現実です。面白

    今まで読んで良かった本 100冊 - プログラマでありたい
  • JavaScriptにも対応出来るruby製のクローラー、Masqueを試してみる - プログラマでありたい

    ちょっと前に試そうと思って、そのまま放置していたruby製のクローラー「Masque」を試してみました。ruby製のクローラーは、他にはAnemoneという優秀なものがあります。その上で何故というと、Anemoneにはない特性があるからです。 MasqueはCapybaraのDSLで記述出来るWebクローラーです。つまりCapybaraを動かす為のものなので、JavaScriptも解釈が出来るということです。また場合によっては、レスポンシブルデザインのサイトの確認も出来ます。一方で、Anemoneはあくまで個別個別のHTMLを取得する為のクローラーなので、JavaScriptを多用しているサイトでの情報取得に向きません。どちらが優れているという訳ではないので、用途に応じて使いこなせばよいでしょう。 Masqueのインストール $ gem install masque Fetching: h

    JavaScriptにも対応出来るruby製のクローラー、Masqueを試してみる - プログラマでありたい
  • TwilioとAmazon SNSを組み合わせて、電話で自動通知 - プログラマでありたい

    今年の4月にTwilioのアカウントをとって早8ヶ月。これは色々なことに使えるとワクワクしながら、すっかり放置していました。日ではKDDIさんと組んで展開し、色々な所でハンズオンなども開催されていたので、知名度的にも手軽に使える音声APIのデファクトになりつつあるのではないでしょうか?簡単ながらTwilioの紹介とユースケースを考えみます。 Twilioから電話を掛けてみる アカウントと電話番号の取り方は忘れました。アカウントは家とKDDI経由での取り方あるようです。私は家の方でとっています。APIの使い方は色々なところで載っていてあまり悩むことはないと思いますが、おさらいを含めてまとめておきます。 rubyで電話を掛けるサンプル make_call.rb require 'rubygems' require 'twilio-ruby' @account_sid = 'Your Ac

    TwilioとAmazon SNSを組み合わせて、電話で自動通知 - プログラマでありたい