Next Generation – Systems Integration in the Cloud Era with Apache Camel - JavaOne 2012

4,226
-1

Published on

Presentation from JavaOne 2012 about Systems Integration in the Cloud Era with Apache Camel.

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,226
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
114
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

Next Generation – Systems Integration in the Cloud Era with Apache Camel - JavaOne 2012

  1. 1. Systems Integration in the Cloud Erawww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  2. 2. Kai Wähner Main Tasks Evaluation of Technologies and Products Requirements Engineering Enterprise Architecture Management Business Process Management Architecture and Development of Applications Planning and Introduction of SOA Integration of Legacy Applications Cloud Computing Big Data Consulting Developing Contact Speaking Email: kontakt@kai-waehner.de Coaching Blog: www.kai-waehner.de/blog Writing Twitter: @KaiWaehner Social Networks: Xing, LinkedInwww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  3. 3. What is the Problem? Growth •  Applications •  Interfaces •  Technologies •  Productswww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  4. 4. A new Era: Cloud Computingwww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  5. 5. Solution: Systems Integration All Roads lead to Rome ...www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  6. 6. Wishes •  Standardized Modeling •  Efficient Realization •  Automatic Testingwww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  7. 7. Systems Integration in the Cloud Erawww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  8. 8. What is the Key Message?www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  9. 9. Key Messages The Cloud already arrived, and must be integrated!www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  10. 10. Key Messages The Cloud already arrived, and must be integrated! Cloud Integration is already possible!www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  11. 11. Key Messages The Cloud already arrived, and must be integrated! Cloud Integration is already possible! Apache Camel helps a lot!www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  12. 12. Agenda 1) Introduction to Cloud Computing 2) Introduction to Apache Camel 3) IaaS Integration (Amazon Web Services) 4) PaaS Integration (Google App Engine) 5) SaaS Integration (Salesforce) 6) Custom Cloud Componentswww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  13. 13. Agenda 1) Introduction to Cloud Computing 2) Introduction to Apache Camel 3) IaaS Integration (Amazon Web Services) 4) PaaS Integration (Google App Engine) 5) SaaS Integration (Salesforce) 6) Custom Cloud Componentswww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  14. 14. Cloud Computing Infrastructure Platform Software On Premise On Premise as a Service as a Service as a Service hosted (IaaS) (PaaS) (SaaS) App App App App App VM VM VM VM VM Server Server Server Server Server Storage Storage Storage Storage Storage Network Network Network Network Network Organisation Control Vendor has control is shared has controlwww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  15. 15. Every Vendor offers Cloud Productswww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  16. 16. Agenda 1) Introduction to Cloud Computing 2) Introduction to Apache Camel 3) IaaS Integration (Amazon Web Services) 4) PaaS Integration (Google App Engine) 5) SaaS Integration (Salesforce) 6) Custom Cloud Componentswww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  17. 17. Alternatives for Systems Integration Enterprise Service Bus Integration (ESB) API Framework Complexity of Integration Low Highwww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  18. 18. Alternatives for Systems Integration Enterprise Service Bus Integration (ESB) API Framework Complexity of Integration Low High Apache Camel vs. Spring Integration vs. Mulehttp://www.kai-waehner.de/blog/2012/01/10/spoilt-for-choice-which-integration-framework-to-use-spring-integration-mule-esb-or-apache-camel/www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  19. 19. Enterprise Integration Patterns (EIP) Apache Camel Implements the EIPswww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  20. 20. Enterprise Integration Patterns (EIP)www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  21. 21. Enterprise Integration Patterns (EIP)www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  22. 22. Architecture http://java.dzone.com/articles/apache-camel-integrationwww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  23. 23. Choose your favorite DSL XML (not production-ready yet)www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  24. 24. Choose your required Components TCP SQL SMTP JMS Netty Jetty RMI FTP Lucene JDBC EJB Bean-Validation MQ IRC JMX Quartz RSS AMQP Atom Log AWS-S3 HTTP XSLT LDAP File Akka Many many more CXF Custom Componentswww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  25. 25. Deploy it wherever you need Standalone Application Server Web Container Spring Container OSGi Cloudwww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  26. 26. Enterprise-ready •  Open Source •  Scalability •  Error Handling •  Transaction •  Monitoring •  Tooling •  Commercial Supportwww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  27. 27. Live Demo Apache Camel in Actionwww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  28. 28. Agenda 1) Introduction to Cloud Computing 2) Introduction to Apache Camel 3) IaaS Integration (Amazon Web Services) 4) PaaS Integration (Google App Engine) 5) SaaS Integration (Salesforce) 6) Custom Cloud Componentswww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  29. 29. Cloud Computing Infrastructure Platform Software On Premise On Premise as a Service as a Service as a Service hosted (IaaS) (PaaS) (SaaS) App App App App App VM VM VM VM VM Server Server Server Server Server Storage Storage Storage Storage Storage Network Network Network Network Network Organisation Control Vendor has control is shared has controlwww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  30. 30. Infrastructure as a Service (IaaS)www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  31. 31. IaaS Concepts (Example: AWS) Compute Amazon Elastic Compute Cloud (EC2) Amazon Elastic MapReduce (EMR) Storage Amazon Simple Storage Service (S3) Amazon Elastic Block Store (EBS) SimpleDB (SDB) Database Amazon Relational Database Service (RDS) Amazon DynamoDB (DDB) Amazon ElastiCache Application Services Amazon Simple Workflow Service (SWF) Amazon Simple Queue Service (SQS) Amazon Simple Notification Service (SNS) Amazon Simple Email Service (SES) Many more ...www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  32. 32. Code Example - AWS S3 (Java API) AmazonS3 s3 = new AmazonS3Client(new PropertiesCredentials( S3Sample.class.getResourceAsStream("AwsCredentials.properties"))); String bucketName = "my-first-s3-bucket-" + UUID.randomUUID(); String key = "MyObjectKey"; try { s3.createBucket(bucketName); s3.putObject(new PutObjectRequest(bucketName, key, createSampleFile())); S3Object object = s3.getObject(new GetObjectRequest(bucketName, key)); ObjectListing objectListing = s3.listObjects(new ListObjectsRequest() .withBucketName(bucketName) .withPrefix("My")); s3.deleteObject(bucketName, key); s3.deleteBucket(bucketName); } catch (AmazonServiceException ase) { // error handling... } catch (AmazonClientException ace) { // error handling... }www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  33. 33. Code Example - Camel AWS Component // Producer from("direct:startToS3") .setHeader(S3Constants.KEY, simple(“order.txt")) .to("aws-s3://myBucket?accessKey=" + a + "&secretKey= " + s) // Consumer from("aws-s3://myBucket?accessKey=“ + a + "&secretKey=" + s) .to("log:S3logging")www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  34. 34. Live Demo IaaS Integration in Actionwww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  35. 35. Agenda 1) Introduction to Cloud Computing 2) Introduction to Apache Camel 3) IaaS Integration (Amazon Web Services) 4) PaaS Integration (Google App Engine) 5) SaaS Integration (Salesforce) 6) Custom Cloud Componentswww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  36. 36. Cloud Computing Infrastructure Platform Software On Premise On Premise as a Service as a Service as a Service hosted (IaaS) (PaaS) (SaaS) App App App App App VM VM VM VM VM Server Server Server Server Server Storage Storage Storage Storage Storage Network Network Network Network Network Organisation Control Vendor has control is shared has controlwww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  37. 37. Platform as a Service (PaaS) Elastic Beanstalkwww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  38. 38. PaaS Conepts (Example: GAE) Application Deployment Easy Deployment Automatic Scaling Development Restrictions JRE Class White List Workarounds for Frameworks No „naked“ Domains No „write once run everywhere“ Quotas and Limits Services Push Queue Pull Queue URL Fetch Accounts Mail Memcache XMPP Images Datastore Cloud Storage Cloud SQLwww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  39. 39. Hint Google App Engine is a complex scenario for Apache Camel (and most other applications) due to its many restrictions! Other „more open“ PaaS solutions such as OpenShift or Heroku are easier to use and integrate...www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  40. 40. Code Example - Google App Engine (Java API) public class GAEJCreateTaskServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { String strCallResult = ""; resp.setContentType("text/plain"); try { String strEmailId = req.getParameter("emailid"); if (strEmailId == null) throw new Exception ("Email Id field cannot be empty."); strEmailId = strEmailId.trim(); if (strEmailId.length() == 0) throw new Exception("Email Id field cannot be empty."); Queue queue = QueueFactory.getQueue("subscription-queue"); queue.add(TaskOptions.Builder.url(“signupsubscriber“) .param("emailid",strEmailId)); strCallResult = "Successfully created a Task in the Queue"; resp.getWriter().println(strCallResult); } catch (Exception ex) { strCallResult = "Fail: " + ex.getMessage(); resp.getWriter().println(strCallResult); } }}www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  41. 41. Code Example – Camel GAE Componentwww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  42. 42. Code Example – Camel GAE Componentwww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  43. 43. Live Demo PaaS Integration in Actionwww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  44. 44. Agenda 1) Introduction to Cloud Computing 2) Introduction to Apache Camel 3) IaaS Integration (Amazon Web Services) 4) PaaS Integration (Google App Engine) 5) SaaS Integration (Salesforce) 6) Custom Cloud Componentswww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  45. 45. Cloud Computing Infrastructure Platform Software On Premise On Premise as a Service as a Service as a Service hosted (IaaS) (PaaS) (SaaS) App App App App App VM VM VM VM VM Server Server Server Server Server Storage Storage Storage Storage Storage Network Network Network Network Network Organisation Control Vendor has control is shared has controlwww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  46. 46. Software as a Service (SaaS)www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  47. 47. SaaS Concepts (Example: Salesforce) Software (CRM) Sales Service Social Data.com AppExchange ... more ... Development Online-Development (even the Compiler is in the Cloud!) Own Addons  Force.com (PaaS) Apex Integration of Interfaces Visualforce REST SOAP Client APIs (Java, etc.)www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  48. 48. Code Example – Salesforce (Java API) ConnectorConfig config = new ConnectorConfig(); config.setUsername(userId); config.setPassword(passwd); config.setAuthEndpoint(authEndPoint); connection = new EnterpriseConnection(config); GetUserInfoResult userInfo = connection.getUserInfo(); System.out.println("User Full Name: " + userInfo.getUserFullName()); QueryResult qResult = null; String soqlQuery = "SELECT FirstName, LastName FROM Contact"; // SOQL qResult = connection.query(soqlQuery); boolean done = false; if (qResult.getSize() > 0) { System.out.println("Logged-in user can see " + qResult.getRecords().length + " contact records." ); while (! done) { SObject[] records = qResult.getRecords(); for ( int i = 0; i < records.length; ++i ) { Contact con = (Contact) records[i]; String fName = con.getFirstName(); String lName = con.getLastName(); // ... more stuff here ...www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  49. 49. Code Example – Camel Salesforce Component // Producer from("direct:toSalesforce“) .to("salesforce://Article__c?user=u&password=p&item=myItem"); // Consumer from("salesforce://Article__c?user=u&password=p") .to("mock:fromSalesforce");www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  50. 50. Live Demo SaaS Integration in Actionwww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  51. 51. Agenda 1) Introduction to Cloud Computing 2) Introduction to Apache Camel 3) IaaS Integration (Amazon Web Services) 4) PaaS Integration (Google App Engine) 5) SaaS Integration (Salesforce) 6) Custom Cloud Componentswww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  52. 52. Custom Cloud Components Component Creates Endpoint Consumer Producerwww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  53. 53. Live Demo Custom Cloud Component in Actionwww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  54. 54. Alternative for Custom Cloud Components •  SOAP •  RESTwww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  55. 55. Code Example – Salesforce REST (HTTP) // Salesforce Query (SOQL) via REST API from("direct:salesforceViaHttpLIST") .setHeader("X-PrettyPrint", 1) .setHeader("Authorization", accessToken) .setHeader(Exchange.CONTENT_TYPE, "application/json") .to("https://na14.salesforce.com/services/data/v20.0/query?q=SELECT+name+from +Article__c") // Salesforce CREATE via REST API from("direct:salesforceViaHttpCREATE") .setHeader("X-PrettyPrint", 1) .setHeader("Authorization", accessToken) .setHeader(Exchange.CONTENT_TYPE, "application/json“) .to("https://na14.salesforce.com/services/data/v20.0/sobjects/Article__c")www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  56. 56. Live Demo Cloud Integration via REST in Actionwww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  57. 57. Did you get the Key Message?www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  58. 58. Key Messages The Cloud already arrived, and must be integrated! Cloud Integration is already possible! Apache Camel helps a lot!www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  59. 59. Did you get the Key Message?www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  60. 60. Whet your Appetite?www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  61. 61. Become a Part of the Open Source Communitywww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  62. 62. Thank you for your attention... Questions? Contact Kai Wähner MaibornWolff et al GmbH Mobile +49 151 544 277 88 IT Consultant Theresienhöhe 13 Email kontakt@kai-waehner.de D-80339 München Twitter @KaiWaehnerwww.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012

×