« 2015年12月 | メイン | 2016年2月 »

2016年1月

2016年1月29日 (金)

Herokuが東京にやってきた!(正式に)

 

Herokupart2_01

ついに、「Heroku?東京リージョンで使えるよ!」と大手を振って言える時が来ましたね!

 

 

Herokupart2_02

ふむふむ。

過去にもこの話題を紹介していましたねー。

 

 

Herokupart2_03

そうそう。

Heroku EnterpriseのPrivate SpacesがGAになりました!

ようするに、Heroku Enterpriseを利用されているすべての方は、東京リージョンを選択した運用が可能になるのです。

 

 

Herokupart2_04

まー、まー。

いいじゃないですか。

 

 

Herokupart2_05

Enterpriseといっても一般のユーザーも契約できるんですよ!!

 

 

Herokupart2_06

使いたい人は、salesforceの導入前のお問い合わせから質問するとよいかも。

 

 

Herokupart2_07

海外のサーバーですと、自社のセキュリティポリシーが適合しているか、などより多く悩んだりしますよね。

確認作業はゼロにはなりませんが、東京リージョンであれば検討もすこしは簡単になりますよ。

 

 

Herokupart2_08

やはりレスポンスが遅い、というのが気になったりしますよねー。

それも解決。

 

 

Herokupart2_09

Don’t worry! Heroku is in Tokyo!

 

 

Herokupart2_10

 実際にどれだけ費用がかかるのかなー、など調べて使ってみましょう。


作:おっぴー

絵:なかやま

 

関連)

Salesforce Developers Japan Blog・・

Heroku Private Spaces 正式リリース&関連リソース

Publickey・・

Herokuを東京リージョンで動かせる「Heroku Private Spaces」が正式稼働

マイナビニュース・・

セールスフォース、セキュリティ強化などHeroku Enterpriseを拡張

2016年1月13日 (水)

Herokuに関する疑問にお答え

こんにちは、三宅です。
ここ最近、Salesforceが提供するHerokuのトレーニングであるHeroku基礎プライベートトレーニングの講師を担当していました。
案件でHerokuの利用を検討している、またはすでに利用を始めているというお客様のところで、Herokuの特徴やアプリケーションを開発する上での基本的な考え方等について解説を行いました。
Heroku Enterpriseと銘打っているように、SalesforceはHerokuのエンタープライズでの利用を促進しています。Force.comとの連携が必要であったり、開発期間の短いような案件では、Herokuは有力な選択肢となりうると考えています。
ただ、HerokuにはPaaS(Platform as a Service)ならではの特徴があり、これまでオンプレミスのアプリケーションを開発していた人にとって戸惑う部分も多いと思います。今回は、Heroku基礎のプライベートトレーニングで出てきたそういった質問などを紹介していきます。

Herokuへのデプロイ方法

HerokuではGitを用いてアプリケーションをデプロイする仕組みとなっているが、別の方法はないのかという質問が出ました。
Subversionを用いてバージョン管理している場合などに、まず思いつく疑問だと思います。
「git push」以外にGitHub、Dropboxとの連携によるデプロイが可能ですが、GitHubでは結局Gitが必要であること、また共にセキュリティポリシー的に利用が難しい場合が多いでしょう。
Gitを用いたバージョン管理に移行するのが最も簡単ですが、それができない場合はバージョン管理は引き続きSubversionで行い、Gitはデプロイツールとしてのみ用いるという使い方が容易だと思います。
Gitによるバージョン管理の概念や詳細なコマンドを覚える必要がなく、最低限の学習コストですますことができます。

GitHubは必須か

HerokuのGitリポジトリはデプロイのためだけに利用するもので、バージョン管理は別のリポジトリで行う必要があります。
GitといえばGitHubというように取り上げられることも多いのですが、GitHub連携のデプロイを行わないのであれば、Bitbucketなどの別のホスティングサービスを利用したり、イントラネットにGitサーバを用意して利用するなどGitHubに限定されるわけではありません。
また、先ほどのHerokuへのデプロイ方法で述べたように、Suversionでバージョン管理を行うことができないというわけではありません。

ランタイムの選択

Javaランタイムの実装は何か、また選択は可能か、という質問をお客様から受けました。
HerokuのJavaランタイムはOpenJDKのみで、Oracleなどの別の実装を選択することはできません。また、Javaのバージョンは1.7及び1.8のみが利用できます。
Javaに限らず、Herokuでは言語ごとに利用可能なランタイムのバージョンが決まっており、それ以外のバージョンは利用することができません。
最初に利用する予定のライブラリや既存の資産が、Herokuで利用できるランタイムで動作するかの確認が必要になるでしょう。
各言語で利用できるバージョンやその指定方法は、公式ドキュメントのLanguagesに記載されています。

One-off Dynoの連続稼働時間

Herokuを初めてさわった人が戸惑うことの1つに、Dynoの1日1回の再起動が挙げられるでしょう。
レギュラーDyno、つまりリクエストを受け付けるWeb Dynoとバックグラウンドでタスクを実行するWorker Dyno、ともに1日に1回再起動が行われます。
Web Dynoではあまり問題にはならないとは思いますが、Worker Dynoでは時間を要するバッチなどを実行する場合などは気をつける必要があります。Herokuブログの以前のポストであるHerokuのWorker再起動問題を考えるも参考にしてみてください。
では、Heroku Schedulerなどで起動されたOne-off Dynoはどれくらい連続で稼働し続けるのか。
Schedulerの公式ドキュメントには、時間のかかるタスクはWorker Dynoを用いること、Schedulerにより起動されたDynoはスケジュールのインターバルより長い時間起動させることはできず、終了させられると記載されています。最長の期間が1日なので、1日を超えて起動させ続けることはできないと考えられます。
「heroku run」コマンドで起動したOne-off Dynoは自動でのリスタートを行わなため、明示的に接続を切らないと動作し続けると予想されますが、実際のサービスでの利用はとてもできないでしょう。
時間を要する処理がある場合は、適切な粒度に分割したジョブをキューに詰めて1件づつWorker Dynoで処理するなどの設計が必要となるでしょう。
キューを用いたバックグラウンドでの処理の実行の考え方について、Worker Dynos, Background Jobs and QueueingというHerokuの公式ドキュメントが公開されているので参考になると思います。

Web DynoへのリクエストをIPに基づいて制限する方法

調査した範囲内では、そのようなアドオンを発見することができませんでした。
RouterからWeb Dynoへのルーティングは完全にプラットフォームの制御下にあり、フックすることもできないため、Web Dynoにリクエストが到達してから、アプリケーション的に実装するしかないと考えられます。

負荷テストや侵入テスト

負荷テストについては明確なルールはないようで、フレクトではある程度アクセス数が想定されるようなアプリケーションについては、Herokuに対して事前通知などすることなく実施しています。
ただし、全国レベルのテレビ放送で紹介されるなど、プラットフォーム自体に影響があるレベルのアクセスが予想されるような場合は、テストの実施や放送日時などをHerokuへ知らせる必要があるでしょう。
逆に、侵入テストについてはPenetration Testing and Network Scanningに記載のように、事前に通知を送るように明確に定められています。
私はまだ実際にHerokuのアプリケーションに対して侵入テストを実施したことはないのですが。


今回のHerokuブログでは、Herokuのプライベートトレーニングで受けた主な質問を取り上げてみました。
実際の案件でHerokuを使う際の、設計・開発の参考にしていただければと思います。

2016年1月 8日 (金)

CloudSearch使った時につまづいたところ

こんにちは、なかやまです。

最近お仕事でCloudSearchを利用する機会がありました。
CloudSearchはAWSが提供する検索サービスになります。

cloudsearchを使って検索できるようにするにはざっくりと次のステップがあります。
1.検索ドメインを作る
2.データのアップロード

 


では、色々つまづいた・誤解していた事です↓

データをアップロードするたびに毎回10分かかると思ってた

Cloudsearch_01

検索ドメインを作ると利用できるまでに数10分かかります。

Cloudsearch_management_console_2

コンソール画面から検索ドメインを作ると流れでドキュメントのアップロードもできるのですが、ここでアップロードのたびに10分かかると勘違いしてしまいました。。

 

 

 

アップロードは直列登録しかできないと思ってた

Sketches_03

並列登録もできますよ!負荷がかかってくるとcloudsearch側でオートスケールしてくれます。

Cloudsearch_management_console_inst

画面上でもスケールしたことを確認できました。

 

 

 

アップロードすると504エラーが返ってくる

Sketches_08

アップするドキュメントサイズによってインスタンスを指定してあげましょう。インスタンスが小さいと高確率で504エラーになります。あとアップロードするサイズは5Mになるように調整すること。

https://docs.aws.amazon.com/ja_jp/cloudsearch/latest/developerguide/uploading-data.html#bulk-uploads

 

 

 

検索クエリの条件に指定できるのは1000個まで

Sketches_07

そこまで複雑な利用方法にはならないかと思いますが、念のため。

複合クエリ: 最大 1024 の句を含めることができます。
https://docs.aws.amazon.com/ja_jp/cloudsearch/latest/developerguide/limits.html

 

 

 

クエリ1回につき取得できる件数の上限は10000件まで

Sketches_05

1回のリミットは10,000件だけど、URLパラメータにcursorつけることで次の10000件が取れるよ!最初に取得したcursorから30分かけて50回ほどクエリしたけど、問題なく取得できました。その間取得したレコードから削除のjson投げてますが、正常に全件取得・削除ができました。

https://docs.aws.amazon.com/ja_jp/cloudsearch/latest/developerguide/paginating-results.html#deep-paging

 

 

 

項目追加、型変更したらインデックス再作成しないといけない

Cloudsearch_10

よく見ると項目一覧の上の方にメッセージが表示されてました。

Cloudsearch_management_console

インデックスの再構築が必要のようです。「Run Indexing」ボタンを押して、しばらく待ったら使えるようになりました。登録されているドキュメントの数によっても時間は変わりそうですね。

 

 

 

料金の上限設定とかできない

Sketches_09

どの設定で動かしたか不明ですが、気付いたら10万円ぐらいつかってました。課金は稼働しているインスタンスが使われている時間がほぼ全てと言ってもいいぐらいかも。主に一括アップロードするときの並列処理のさせかたでガツンとスケールされてしまうので、最初の設定には気をつけましょう。

 

 

 

バッチの課金が1回0.10 USDだと思ってた

Cloudsearch_11

1000回に付き0.10 USDですね。

バッチの課金は安いけど、並列で登録することでオートスケール(課金対象)されるので、登録時間に余裕があれば直列とかウェイトかましてもよいかもです。

 

 

 

セキュリティの設定

Cloudsearch_12

設定できるのは以下のパターンのみ。(テキストエリアで直接編集することも可能!)

後からでも変更できます。

Cloudsearch_management_console

  • 検索だけ誰でもOK
  • 検索も登録も誰でもOK(おすすめしないやつ)
  • IPで制限かける(カンマ区切りで複数OK)
  • 非公開(コンソールからの利用のみ)
  • 別のドメインからコピー

セキュリティグループの設定はなかったよ。(テキストを直接編集することでカスタマイズすることで利用できるようになるかも?。。調べきれてません)

 

 

 

数値項目の合計ができない!と思ったら、英語版の資料に書いてあった件

Sketches_02

日本語ドキュメントに頼りすぎた。

http://docs.aws.amazon.com/cloudsearch/latest/developerguide/retrieving-stats.html

 

使わないCloudsearchを休止できない

Sketches_06

deleteのみ。稼働している分だけ課金されるので、不要なものはバックアップとって削除しましょう。

 

 


インデックス作成には多少手間時間がかかるものの検索性能はすばらしいです!

(参考)

第15回 Solr勉強会 #SolrJP Amazon CloudSearch Deep Dive

採用情報

株式会社フレクトでは、事業拡大のため、
Salesforce/Force.comのアプリケーション
開発
HerokuやAWSなどのクラウドプラッ
トフォーム上でのWebアプリケーション開発

エンジニア、マネージャーを募集中です。

未経験でも、これからクラウドをやってみた
い方、是非ご応募下さい。

フレクト採用ページへ

会社紹介

株式会社フレクトは、
認定コンサルタント
認定上級デベロッパー
認定デベロッパー
が在籍している、
セールスフォースパートナーです。
heroku partnersにも登録されています。
herokuパートナー
株式会社フレクトのSalesforce/Force.com
導入支援サービス
弊社の認定プロフェッショナルが支援致します。
・Visualforce/Apexによるアプリ開発
・Salesforceと連携するWebアプリ開発
も承っております。
セールスフォースご検討の際は、
お気軽にお問合せください。
Powered by Six Apart