昨日は高校生でも使えるAWSでした。Beanstalk(以下Beanstalk)で動かす方法についてです。SQSに比べて正確な制御がし易いという特徴を持っています。SWFでもめんどくさいところがあります。それは新しいバージョンのデプロイの作業です。SWFでは各ActivityとWorkflowにバージョンを持っていて、ExternalClientによって呼び出されるバージョンと、Workflowのバージョンが合っていないと実行されなかったり、当然WorkflowからActivityを呼び出すときもClientのバージョンと実装のバージョンが合っていなくても実行されません。この管理は意外に手間で、キチンと管理してあげないとサービスが全て止まってしまうなんて事もありえます。Beanstalkを使ってみようと思います。Beanstalkを使うことで、SWFのアプリケーションのバージョンを上げるときも、新しいEnvironmentを作りそちらにデプロイすることで、新旧両方のアプリケーションを同時稼働させる事が可能です。旧バージョンでのExecutionがなくなったタイミングで古いEnvironmentをTerminateするだけで良いのです。SWFのアプリケーションはBeanstalkで動かすのが楽ちんでよいです。いうわけで、BeanstalkでSWFのアプリケーションを動かすための方法を紹介しますが、BeanstalkでSWFのアプリケーションを動かす方法は、いくつか有ります。色々なやり方があるとは思いますが、今回は.ebextensionsとかもあまりいじらなくても良いなんか無駄遣いしているような気がしますが、、、Tomcatの中で起動してしまう方法でやってみます。ActivityとDeciderを動かすものを普通に作る。SWFで普段動かしているのと同じような感じで作れば大丈夫です。私はThreadを継承したAbstractなものを一つ作ってDeciderとActivityとそれぞれが継承してやるのが好きなので、こんな感じで作っています。}}JUnitでテストする時もJUnitの中でこのHostを立ち上げるので、それ用にタスクリストを分けていたりします。}}こんな感じで出来たら後は簡単で、Servletのロード時にこれがスレッドで立ち上がれば良いのです。Servlet作る次に適当にServlet作ります。Servletのinitメソッドで無理やりThreadを立ち上げてみます。}後はこのServletがTomcat起動時に自動的に読み込まれるようにすればOKです。load-on-startupを書いておくことで、アクセスがなくてもロードされます。Beanstalkにデプロイすれば、ElasticBeanstalkでSWFのアプリケーションが動き始めます。ログの出し方だけ、気をつけてあげましょう。catalina.outに出してしまうのが楽かと思います。Applicationも動かせるはずです。後は今のままではAutoScalingがまともに動かないはずなので、別のAutoScalingに差し替えませう。Beanstalkで動かす事によってすごくやりやすくなります。BeanstalkのEnvironmentとVersion管理機能はSWFにぴったりの機能です。今Beanstalkを使っている人はWebアプリケーションだけでなくSWFのWorkerたちも載せてみると面白いと思います。今度もし、機会があったら、無理やりTomcat上で動かすではなく、jsvcで動かす方法を.ebextensionと一緒に紹介するかもしれません。(1)はてなブログをはじめよう!tottokugさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。