Social Enterprise Java Apps on Heroku Webinar

2,676 views

Published on

8月3日に開催された「Social Enterprise Java Apps on Heroku Webinar」の資料です。

Published in: Technology, News & Politics
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,676
On SlideShare
0
From Embeds
0
Number of Embeds
1,740
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Social Enterprise Java Apps on Heroku Webinar

  1. 1. Social  Enterprise  Java  Apps   on  Heroku Kazuyuki  Kawamura   Technical  Solu-on  Architect   Tetsuo  Ajima   Technical  Solu-on  Architect   Ayumu  Aizawa   Heroku  Evangelist   h=p://www.developerforce.com/jp/events/webinars/2012-­‐08-­‐03/registraKon.php
  2. 2. Safe  Harbor  Statement  Safe  harbor  statement  under  the  Private  Securi-es  Li-ga-on  Reform  Act  of  1995.  This  presenta-on  may  contain  forward-­‐looking  statements  that  involve  risks,  uncertain-es,  and  assump-ons.  If  any  such  uncertain-es  materialize  or  if  any  of  the  assump-ons  proves  incorrect,  the  results  of  salesforce.com,  inc.  could  differ  materially  from  the  results  expressed  or  implied  by  the  forward  looking-­‐statements  we  make.  All  statements  other  than  statements  of  historical  fact  could  be  deemed  forward-­‐looking,  including  any  projec-ons  of  product  or  service  availability,  subscriber  growth,  earnings,  revenues,  or  other  financial  items  and  any  statements  regarding  strategies  or  plans  of  management  for  future  opera-ons,  statements  of  belief,  any  statements  concerning  new,  planned,  or  upgraded  services  or  technology  developments  and  customer  contracts  or  use  of  our  services.  The  risks  and  uncertain-es  referred  to  above  include  -­‐  but  are  not  limited  to  -­‐  risks  associated  with  developing  and  delivering  new  func-onality  for  our  service,  new  products  and  services,  our  new  business  model,  our  past  opera-ng  losses,  possible  fluctua-ons  in  our  opera-ng  results  and  rate  of  growth,  interrup-ons  or  delays  in  our  Web  hos-ng,  breach  of  our  security  measures,  the  outcome  of  intellectual  property  and  other  li-ga-on,  risks  associated  with  possible  mergers  and  acquisi-ons,  the  immature  market  in  which  we  operate,  our  rela-vely  limited  opera-ng  history,  our  ability  to  expand,  retain,  and  mo-vate  our  employees  and  manage  our  growth,  new  releases  of  our  service  and  successful  customer  deployment,  our  limited  history  reselling  non-­‐salesforce.com  products,  and  u-liza-on  and  selling  to  larger  enterprise  customers.  Further  informa-on  on  poten-al  factors  that  could  affect  the  financial  results  of  salesforce.com,  inc.  is  included  in  our  annual  report  on  Form  10-­‐Q  for  the  most  recent  fiscal  quarter  ended.  This  documents  and  others  containing  important  disclosures  are  available  on  the  SEC  Filings  sec-on  of  the  Investor  Informa-on  sec-on  of  our  Web  site.  Any  unreleased  services  or  features  referenced  in  this  or  other  presenta-ons,  press  releases  or  public  statements  are  not  currently  available  and  may  not  be  delivered  on  -me  or  at  all.  Customers  who  purchase  our  services  should  make  the  purchase  decisions  based  upon  features  that  are  currently  available.  Salesforce.com,  inc.  assumes  no  obliga-on  and  does  not  intend  to  update  these  forward-­‐looking  statements.  
  3. 3. @herokujp  @developerforcej  facebook.com/HerokuJP  facebook.com/DeveloperforceJapan  
  4. 4. §  導入事例 success.heroku.com  §  価格 price.heroku.com  §  サポート help.heroku.com  §  技術資料 devcenter.heroku.com  §  日本での情報 facebook.com/herokujp   twi=er.com/herokujp  
  5. 5. #herokujp  
  6. 6. Kazuyuki  Kawamura   Technical  Solu-on  Architect   @kazkawamura   /facebook.com/kaz.kawamura    Tetsuo  Ajima   Technical  Solu-on  Architect   @liebejudith   facebook.com/tetsuo.ajima    Ayumu  Aizawa   Developper  Marke-ng,  Heroku   @ayumin   /facebook.com/ayumu.aizawa  
  7. 7. アジェンダ •  “ソーシャル・エンタープライズアプリケーション”とは  •  Herokuの紹介  •  Java  on  Heroku  ハンズオン  •  ソーシャル・エンタープライズアプリケーションの構築  •  Q&A  
  8. 8. アジェンダ •  “ソーシャル・エンタープライズアプリケーション”とは  •  Herokuの紹介  •  Java  on  Heroku  ハンズオン  •  ソーシャル・エンタープライズアプリケーションの構築  •  Q&A  
  9. 9.  ソーシャルエンタープライズ 従業員 顧客の ソーシャル ソーシャルネットワーク ソーシャル ネットワーク プロファイル コラボレーション マーケティング 人材 サービス サポート 拡張 販売
  10. 10.  ソーシャルエンタープライズ 従業員 顧客の ソーシャル ソーシャルネットワーク ソーシャル ネットワーク プロファイル コラボレーション マーケティング 人材 サービス サポート 拡張 販売
  11. 11.  ソーシャルマーケティング  マーケティングにおけるソーシャルの重要性は高まっている Yesterday   Today   静的、受動的な 関連的でアクティブな マーケティング エンゲージメント
  12. 12. ソーシャルエンタープライズ・アプリケーション
 をつくるには、
どのような部品が必要でしょうか?
  13. 13.  エンタープライズアプリケーション フェールオーバー サーバ管理者 クラスタリング 負荷分散 高可用性 ネットワーク管理者 SSLドメイン 運用性 堅牢な基盤 稼動監視 オペレーター WEBサーバ システム管理者 ログ解析 製品サポート アプリケーションサーバ サーバ管理者 DBサーバ DBA 他 データベース システム管理者 ロールバック 耐障害性 DBA 冗長化
  14. 14. アジェンダ •  “ソーシャル・エンタープライズアプリケーション”とは  •  Herokuの紹介  •  Java  on  Heroku  ハンズオン  •  ソーシャル・エンタープライズアプリケーションの構築  •  Q&A  
  15. 15.  Herokuの特徴 Forget  Servers   Run    Anything   See  Everything   Trust  &  Manage   $  heroku  create   worker:  java  -­‐jar  ..   $  heroku  logs  -­‐-­‐tail   $  heroku  ps  
  16. 16.  Herokuのアーキテクチャ User   •  Web  browser  Acces   •  API  access   h`p(s)   Elas-c  Load  Balancing  Developer    Code  • Java   Control  Surface  • …    Deploy   APIs   REST  • GIT  Manage  • Heroku  CLI  • Scaling  • Monitoring  
  17. 17.  ソーシャル・エンタープライズアプリケーションのアーキテク チャ Polyglot & Process Real time Addons Open Model Visibiility Social API Data API Metadata API Access Management Identity Profiles Permissions Record-Level Filtering Data Business Data Metadata Files
  18. 18. アジェンダ •  “ソーシャル・エンタープライズアプリケーション”とは  •  Herokuの紹介  •  Java  on  Heroku  ハンズオン  •  ソーシャル・エンタープライズアプリケーションの構築  •  Q&A  
  19. 19. Spring MVC アプリケーショ ン を Heroku にデプロイしてみ ましょう ( http://java.heroku.com )
  20. 20. デモ /  ハンズオン (1)  
  21. 21. JAVA.HEROKU.COM  を利用した  テンプレートアプリケーションのデプロイ   のデモ  
  22. 22. アジェンダ •  “ソーシャル・エンタープライズアプリケーション”とは  •  Herokuの紹介  •  Java  on  Heroku  ハンズオン  •  ソーシャル・エンタープライズアプリケーションの構築  •  Q&A  
  23. 23. デモ /  ハンズオン (2)  
  24. 24. ビルド、依存関係の解決など
 Dynoへのデプロイ、起動 $  git  push  heroku  master  Embedded  Container WAR   $  git  add  -­‐A   *.jar   pom.xml   *.java   アプリケーションのコード、依 存関係、コンテナの情報を記 述
  25. 25. SALESFORCE.COMとの連携デモ  
  26. 26. Heroku と Salesforce.com をつかって、ソーシャル・エンタープライズアプリケーションをつく りましょう
  27. 27. Salesforce.com との統合ステップ 1.  OAuth認証の設定 2.  依存関係の更新 3.  エンティティをJSONに切り替える 4.  DAOをForce REST APIに切り替える 5.  Spring Config を Force REST + OAuth に切り替える 6.  認証のためのServlet Filterを追加する 7.  認証キーを環境情報に設定する
  28. 28. Spring MVC App with Heroku & Salesforce.com and Chatter APIs
  29. 29. 例えば、こんなことができます ソーシャルフィード
 リアルタイム
 リコメンド プッシュ通知 ソーシャル
 エンタープライズ アプリケーション ストリーミング 分析 データ配信
  30. 30. アジェンダ •  “ソーシャル・エンタープライズアプリケーション”とは  •  Herokuの紹介  •  Java  on  Heroku  ハンズオン  •  ソーシャル・エンタープライズアプリケーションの構築  •  Q&A  
  31. 31. ご質問をどうぞ
  32. 32. @herokujp  @developerforcej  facebook.com/HerokuJP  facebook.com/DeveloperforceJapan  
  33. 33. is GA Java
  34. 34. Heroku Labs•  WAR deployment (http://bit.ly/war-deploy ) •  Jenkins plugin for Heroku(http://bit.ly/heroku-ci ) •  Heroku.jar- Java Wrapper (http://bit.ly/heroku-jar ) •  Atlassian Bamboo plugin for Heroku (Email anand@heroku.com for more details) you can try these out now. We would love your feedback
  35. 35. Coming Soon + = like  
  36. 36. Coming Soon All day HEROKU ENTERPRISE DEVELOPER WORKSHOP Email anand@heroku.com if you are interested
  37. 37. Resources Ø  Getting Started - §  http://java.heroku.com §  http://bit.ly/heroku-java Ø  Toolbelt (http://toolbelt.herokuapp.com ) Ø  Heroku Dev Center : http://devcenter.heroku.com Ø  Heroku Add-ons: http://addons.heroku.com Ø  Git: http://help.github.com/ Ø  Webinar Source code: §  Spring MVC - Force.com : http://bit.ly/KZB68y §  Chatter - http://bit.ly/KgMlPP §  Pusher integration - http://bit.ly/KMVInx
  38. 38. Survey:  http://bit.ly/herokujavasurvey Heroku  Devcenter:  http://devcenter.heroku.com   James  Ward  @_JamesWard   Anand  Narasimhan  @anand_bn  Developer  Evangelist  at  Heroku   Sr.  Product  Manager  at  Heroku   jw@heroku.com   anand@heroku.com    
  39. 39. SFDC Integration Steps APPENDIX
  40. 40. 1. Setup OAuthi.  Salesforce.com > Setup > Develop > Remote Access ii.  Add Remote Access for Dev & Prod •  Dev Callback URL:http://localhost:8080/_auth   •  Prod Callback URL: https://some-­‐app-­‐1234.herokuapp.com/_auth    
  41. 41. 2. Update dependencies<repositories>      <repository>          <id>force-­‐rest-­‐api</id>          <name>force-­‐rest-­‐api  repository  on  GitHub</name>          <url>          http://jesperfj.github.com/force-­‐rest-­‐api/repository/          </url>      </repository>  </repositories>  
  42. 42. 2. Update dependencies<dependency>          <groupId>com.force.api</groupId>          <artifactId>force-­‐rest-­‐api</artifactId>          <version>0.0.15</version>  </dependency>  <dependency>          <groupId>com.force.sdk</groupId>          <artifactId>force-­‐oauth</artifactId>          <version>22.0.8-­‐BETA</version>  </dependency>  <dependency>          <groupId>com.force.sdk</groupId>          <artifactId>force-­‐springsecurity</artifactId>          <version>22.0.8-­‐BETA</version>  </dependency>  
  43. 43. 3. Switch Entity to JSON@JsonIgnoreProperties(ignoreUnknown=true)  public  class  Person  {            @JsonProperty(value="Id")          private  String  id;            @JsonProperty(value="FirstName")          private  String  firstName;            @JsonProperty(value="LastName")          private  String  lastName;  
  44. 44. 4. Switch DAO to Force RESTAPIprivate  ForceApi  getForceApi()  {          SecurityContext  sc  =  ForceSecurityContextHolder.get();          ApiSession  s  =  new  ApiSession();          s.setAccessToken(sc.getSessionId());          s.setApiEndpoint(sc.getEndPointHost());          return  new  ForceApi(s);  }    //  Add  Contact          getForceApi().createSObject("contact",  person);    //  Query  Contacts  getForceApi().query("SELECT  Id  FROM  contact",  Person.class);    //  Delete  Contact  getForceApi().deleteSObject("contact",  id);  
  45. 45. 5. Spring Config + OAuth<fss:oauth>      <fss:oauthInfo  endpoint="http://login.salesforce.com"          oauth-­‐key="#{systemEnvironment[OAUTH_CLIENT_KEY]}"          oauth-­‐secret="#{systemEnvironment[OAUTH_CLIENT_SECRET]}"/>  </fss:oauth>            <security:http  use-­‐expressions="true">      <security:intercept-­‐url  pattern="/people/*"          access="isAuthenticated()"  />  </security:http>      <!-­‐-­‐  https  redirect  support  -­‐-­‐>  <property  name="redirectHttp10Compatible"  value="false"  />  
  46. 46. 6. Add Servlet Filter for Oauth<filter>      <filter-­‐name>springSecurityFilterChain</filter-­‐name>      <filter-­‐class>          org.springframework.web.filter.DelegatingFilterProxy      </filter-­‐class>      <init-­‐param>          <param-­‐name>contextAttribute</param-­‐name>          <param-­‐value>        org.springframework.web.servlet.FrameworkServlet.CONTEXT.spring          </param-­‐value>      </init-­‐param>  </filter>  <filter-­‐mapping>      <filter-­‐name>springSecurityFilterChain</filter-­‐name>      <url-­‐pattern>/*</url-­‐pattern>  </filter-­‐mapping>  
  47. 47. 7. Add Oauth Keysexport  OAUTH_CLIENT_KEY=CQ3gmEE53MVG99OxTyEMal8ytj1E3NF7...  export  OAUTH_CLIENT_SECRET=0905539091246761180  heroku  config:add  OAUTH_CLIENT_KEY=CQ3gmEE53MVG99OxTyEMal8yt...  heroku  config:add  OAUTH_CLIENT_SECRET=0905539091246761180  

×