Systems Integration in the Cloud Era
Kai Wähner, MaibornWolff et al GmbH
Kai Wähner (MaibornWolff et al GmbH, Munich, Germany)


                                            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


       Consulting                             Contact
       Developing                   Email: kai.waehner@mwea.de
        Speaking                   Blog: www.kai-waehner.de/blog
        Coaching                        Twitter: @KaiWaehner
         Writing                   Social Networks: Xing, LinkedIn
What is the Problem?



                       Growth

                       •  Applications
                       •  Interfaces
                       •  Technologies
                       •  Products
A new Era: Cloud Computing
Solution: Systems Integration




                                All Roads lead
                                  to Rome ...
Wishes




         •  Standardized Modeling
         •  Efficient Realization
         •  Automatic Testing
Systems Integration in the Cloud Era
What is the Key Message?
Key Messages




The Cloud already arrived, and must be integrated!
Key Messages




The Cloud already arrived, and must be integrated!
Cloud Integration is already possible!
Key Messages




The Cloud already arrived, and must be integrated!
Cloud Integration is already possible!
Apache Camel helps a lot!
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 Components
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 Components
Cloud Computing

                              Infrastructure#     PlaCorm#        So;ware#
                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#




Organisa5on#                     Control##                         Vendor#
 has#control#                   is#shared#                       has#control#
Every Vendor offers Cloud Products
Upcoming Procedure



• Overview of Alternatives
• Concepts of chosen Product
• Code Example
• Live Demo
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 Components
Alternatives for Systems Integration




                                 Enterprise*Service*Bus*(ESB)*
               Integra(on*
No+Tool+
               Framework*
                                                                   Complexity+
                                                                  of+Integra2on+
Low+                                                      High+
Alternatives for Systems Integration




                                                                   Enterprise*Service*Bus*(ESB)*
                               Integra(on*
No+Tool+
                               Framework*
                                                                                                                             Complexity+
                                                                                                                            of+Integra2on+
Low+                                                                                                      High+




                           Apache#Camel*vs.*Spring*Integra(on*vs.*Mule*ESB#
 h>p://www.kaiAwaehner.de/blog/2012/01/10/spoiltAforAchoiceAwhichAintegra(onAframeworkAtoAuseAspringAintegra(onAmuleAesbAorAapacheAcamel/*
Enterprise Integration Patterns (EIP)




                                    Apache Camel
                                  Implements the EIPs
Enterprise Integration Patterns (EIP)
Enterprise Integration Patterns (EIP)
Apache Camel




               h>p://java.dzone.com/ar(cles/apacheAcamelAintegra(on*
Choose your favorite DSL




                           XML#
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 Components
Deploy it wherever you need



Standalone                     Application Server
           Web Container
                                Spring Container

                                   OSGi

                                     Cloud
Enterprise-ready
Live Demo




            Apache Camel in Action
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 Components
Cloud Computing

                              Infrastructure#     PlaCorm#        So;ware#
                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#




Organisa5on#                     Control##                         Vendor#
 has#control#                   is#shared#                       has#control#
IaaS Overview
IaaS Concepts


                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 ...
Code Example - AWS S3 (Java API)

     AmazonS3*s3*=*new*AmazonS3Client(new*Proper(esCreden(als(*
     ********S3Sample.class.getResourceAsStream("AwsCreden(als.proper(es")));*

     String*bucketName#=*"myAfirstAs3AbucketA"*+*UUID.randomUUID();*
     String*key*=*"MyObjectKey";*

     try*{*

     ****s3.createBucket(bucketName);*
     ****s3.putObject(new*PutObjectRequest(bucketName,*key,*createSampleFile()));*

     ****S3Object*object*=*s3.getObject(new*GetObjectRequest(bucketName,*key));*

     ****ObjectLis(ng*objectLis(ng*=*s3.listObjects(new*ListObjectsRequest()*
     ************.withBucketName(bucketName)*
     ************.withPrefix("My"));*

     ****s3.deleteObject(bucketName,*key);***
     ****s3.deleteBucket(bucketName);*

     }*catch*(AmazonServiceExcep(on*ase)*{*
     ***//*error*handling...*
     }*catch*(AmazonClientExcep(on*ace)*{*
     ***//*error*handling...****
     }*
Code Example - Camel AWS Component




// Producer
from("direct:startToS3")
   .setHeader(S3Constants.KEY, simple(“order.txt"))
   .to("aws-s3://myBucket?accessKey=" + myAccessKey + "&secretKey= " + mySecretKey)



// Consumer
from("aws-s3://myBucket?accessKey=“myAccessKey + "&secretKey=" + mySecretKey)
   .to("log:S3logging")
Live Demo




            IaaS Integration in Action
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 Components
Cloud Computing

                              Infrastructure#     PlaCorm#        So;ware#
                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#




Organisa5on#                     Control##                         Vendor#
 has#control#                   is#shared#                       has#control#
PaaS Overview




Elastic Beanstalk
PaaS Concepts

                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 SQL
Hint




       Google*App*Engine*
       is*a*complex*scenario*for*Apache*Camel*
       due*to*its*many*restric(ons!*

       Other*„more*open“*PaaS*solu(ons**
       such*as*OpenShid*or*Heroku*
       are*easier*to*use*...*
Code Example - Google App Engine (Java API)

  public*class*GAEJCreateTaskServlet*extends*HLpServlet#{*
        *public*void*doGet(H>pServletRequest*req,*H>pServletResponse*resp)*throws*IOExcep(on*{*

            *String*strCallResult*=*"";*
            *resp.setContentType("text/plain");*
            *try*{*

            *      *String*strEmailId*=*req.getParameter("emailid");*

            *      *if*(strEmailId*==*null)*throw*new*Excep(on*("Email*Id*field*cannot*be*empty.");*

            *      *strEmailId*=*strEmailId.trim();*
            *      *if*(strEmailId.length()*==*0)*throw*new*Excep(on("Email*Id*field*cannot*be*empty.");*

            *      *Queue#queue#=#QueueFactory.getQueue("subscrip5onUqueue");#
            *      *queue.add(TaskOp5ons.Builder.url(“/signupsubscriber").param("emailid",strEmailId));#

            *      *strCallResult*=*"Successfully*created*a*Task*in*the*Queue";*
            *      *resp.getWriter().println(strCallResult);*
            *      *}*

            *catch*(Excep(on*ex)*{*
            *       *strCallResult*=*"Fail:*"*+*ex.getMessage();*
            *       *resp.getWriter().println(strCallResult);*
  }**}*}*
Code Example – Camel GAE Component
Code Example – Camel GAE Component
Live Demo




            PaaS Integration in Action
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 Components
Cloud Computing

                              Infrastructure#     PlaCorm#        So;ware#
                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#




Organisa5on#                     Control##                         Vendor#
 has#control#                   is#shared#                       has#control#
SaaS Overview
SaaS Concepts


                           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.)
Code Example – Salesforce (Java API)

          ConnectorConfig#config*=*new*ConnectorConfig();*
          ******config.setUsername(userId);*
          ******config.setPassword(passwd);*
          ******config.setAuthEndpoint(authEndPoint);*
          ******connec(on*=*new*EnterpriseConnec5on(config);*

          ******GetUserInfoResult#userInfo#=#connec5on.getUserInfo();#
          ******System.out.println("User*Full*Name:*"*+*userInfo.getUserFullName());*

                ***QueryResult#qResult*=*null;*

                ***String*soqlQuery#=*"SELECT*FirstName,*LastName*FROM*Contact";*//*SOQL#

                ***qResult*=#connec5on.query(soqlQuery);#
                ***boolean*done*=*false;*
                ***if*(qResult.getSize()*>*0)*{*
                *****System.out.println("LoggedAin*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*...*
Code Example – Camel Salesforce Component




 // Producer
  from("direct:toSalesforce“)
  .to("salesforce://Article__c?user=myUser&password=myPasswordj&item=myItem");

 // Consumer
  from("salesforce://Article__c?user=myUser&password=myPassword")
  .to("mock:fromSalesforce");
Live Demo




            SaaS Integration in Action
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 Components
Custom Cloud Components



                                      Component#



                                            Creates




                                       Endpoint#




                          Consumer#                   Producer#
Live Demo




            Custom Cloud Component in Action
Alternative for Custom Cloud Components




                                          •  SOAP
                                          •  REST
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")
Live Demo




            Cloud Integration via REST in Action
Did you get the Key Message?
Key Messages




The Cloud already arrived, and must be integrated!
Cloud Integration is already possible!
Apache Camel helps a lot!
Did you get the Key Message?
Whet your Appetite?
Become a Part of the Open Source Community
Thank you for your Attention. Any Questions?




                                        
  Kai Wähner

   MaibornWolff et al: www.mwea.de
   Email: kai.waehner@mwea.de
   Twitter: @KaiWaehner
   Blog: www.kai-waehner.de/blog
   Social: LinkedIn / Xing

2012 05 confess_camel_cloud_integration

  • 1.
    Systems Integration inthe Cloud Era Kai Wähner, MaibornWolff et al GmbH
  • 2.
    Kai Wähner (MaibornWolffet al GmbH, Munich, Germany) 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 Consulting Contact Developing Email: kai.waehner@mwea.de Speaking Blog: www.kai-waehner.de/blog Coaching Twitter: @KaiWaehner Writing Social Networks: Xing, LinkedIn
  • 3.
    What is theProblem? Growth •  Applications •  Interfaces •  Technologies •  Products
  • 4.
    A new Era:Cloud Computing
  • 5.
    Solution: Systems Integration All Roads lead to Rome ...
  • 6.
    Wishes •  Standardized Modeling •  Efficient Realization •  Automatic Testing
  • 7.
  • 8.
    What is theKey Message?
  • 9.
    Key Messages The Cloudalready arrived, and must be integrated!
  • 10.
    Key Messages The Cloudalready arrived, and must be integrated! Cloud Integration is already possible!
  • 11.
    Key Messages The Cloudalready arrived, and must be integrated! Cloud Integration is already possible! Apache Camel helps a lot!
  • 12.
    Agenda 1) Introduction toCloud 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 Components
  • 13.
    Agenda 1) Introduction toCloud 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 Components
  • 14.
    Cloud Computing Infrastructure# PlaCorm# So;ware# 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# Organisa5on# Control## Vendor# has#control# is#shared# has#control#
  • 15.
    Every Vendor offersCloud Products
  • 16.
    Upcoming Procedure • Overview ofAlternatives • Concepts of chosen Product • Code Example • Live Demo
  • 17.
    Agenda 1) Introduction toCloud 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 Components
  • 18.
    Alternatives for SystemsIntegration Enterprise*Service*Bus*(ESB)* Integra(on* No+Tool+ Framework* Complexity+ of+Integra2on+ Low+ High+
  • 19.
    Alternatives for SystemsIntegration Enterprise*Service*Bus*(ESB)* Integra(on* No+Tool+ Framework* Complexity+ of+Integra2on+ Low+ High+ Apache#Camel*vs.*Spring*Integra(on*vs.*Mule*ESB# h>p://www.kaiAwaehner.de/blog/2012/01/10/spoiltAforAchoiceAwhichAintegra(onAframeworkAtoAuseAspringAintegra(onAmuleAesbAorAapacheAcamel/*
  • 20.
    Enterprise Integration Patterns(EIP) Apache Camel Implements the EIPs
  • 21.
  • 22.
  • 23.
    Apache Camel h>p://java.dzone.com/ar(cles/apacheAcamelAintegra(on*
  • 24.
  • 25.
    Choose your requiredComponents 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 Components
  • 26.
    Deploy it whereveryou need Standalone Application Server Web Container Spring Container OSGi Cloud
  • 27.
  • 28.
    Live Demo Apache Camel in Action
  • 29.
    Agenda 1) Introduction toCloud 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 Components
  • 30.
    Cloud Computing Infrastructure# PlaCorm# So;ware# 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# Organisa5on# Control## Vendor# has#control# is#shared# has#control#
  • 31.
  • 32.
    IaaS Concepts 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 ...
  • 33.
    Code Example -AWS S3 (Java API) AmazonS3*s3*=*new*AmazonS3Client(new*Proper(esCreden(als(* ********S3Sample.class.getResourceAsStream("AwsCreden(als.proper(es")));* String*bucketName#=*"myAfirstAs3AbucketA"*+*UUID.randomUUID();* String*key*=*"MyObjectKey";* try*{* ****s3.createBucket(bucketName);* ****s3.putObject(new*PutObjectRequest(bucketName,*key,*createSampleFile()));* ****S3Object*object*=*s3.getObject(new*GetObjectRequest(bucketName,*key));* ****ObjectLis(ng*objectLis(ng*=*s3.listObjects(new*ListObjectsRequest()* ************.withBucketName(bucketName)* ************.withPrefix("My"));* ****s3.deleteObject(bucketName,*key);*** ****s3.deleteBucket(bucketName);* }*catch*(AmazonServiceExcep(on*ase)*{* ***//*error*handling...* }*catch*(AmazonClientExcep(on*ace)*{* ***//*error*handling...**** }*
  • 34.
    Code Example -Camel AWS Component // Producer from("direct:startToS3") .setHeader(S3Constants.KEY, simple(“order.txt")) .to("aws-s3://myBucket?accessKey=" + myAccessKey + "&secretKey= " + mySecretKey) // Consumer from("aws-s3://myBucket?accessKey=“myAccessKey + "&secretKey=" + mySecretKey) .to("log:S3logging")
  • 35.
    Live Demo IaaS Integration in Action
  • 36.
    Agenda 1) Introduction toCloud 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 Components
  • 37.
    Cloud Computing Infrastructure# PlaCorm# So;ware# 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# Organisa5on# Control## Vendor# has#control# is#shared# has#control#
  • 38.
  • 39.
    PaaS Concepts 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 SQL
  • 40.
    Hint Google*App*Engine* is*a*complex*scenario*for*Apache*Camel* due*to*its*many*restric(ons!* Other*„more*open“*PaaS*solu(ons** such*as*OpenShid*or*Heroku* are*easier*to*use*...*
  • 41.
    Code Example -Google App Engine (Java API) public*class*GAEJCreateTaskServlet*extends*HLpServlet#{* *public*void*doGet(H>pServletRequest*req,*H>pServletResponse*resp)*throws*IOExcep(on*{* *String*strCallResult*=*"";* *resp.setContentType("text/plain");* *try*{* * *String*strEmailId*=*req.getParameter("emailid");* * *if*(strEmailId*==*null)*throw*new*Excep(on*("Email*Id*field*cannot*be*empty.");* * *strEmailId*=*strEmailId.trim();* * *if*(strEmailId.length()*==*0)*throw*new*Excep(on("Email*Id*field*cannot*be*empty.");* * *Queue#queue#=#QueueFactory.getQueue("subscrip5onUqueue");# * *queue.add(TaskOp5ons.Builder.url(“/signupsubscriber").param("emailid",strEmailId));# * *strCallResult*=*"Successfully*created*a*Task*in*the*Queue";* * *resp.getWriter().println(strCallResult);* * *}* *catch*(Excep(on*ex)*{* * *strCallResult*=*"Fail:*"*+*ex.getMessage();* * *resp.getWriter().println(strCallResult);* }**}*}*
  • 42.
    Code Example –Camel GAE Component
  • 43.
    Code Example –Camel GAE Component
  • 44.
    Live Demo PaaS Integration in Action
  • 45.
    Agenda 1) Introduction toCloud 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 Components
  • 46.
    Cloud Computing Infrastructure# PlaCorm# So;ware# 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# Organisa5on# Control## Vendor# has#control# is#shared# has#control#
  • 47.
  • 48.
    SaaS Concepts 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.)
  • 49.
    Code Example –Salesforce (Java API) ConnectorConfig#config*=*new*ConnectorConfig();* ******config.setUsername(userId);* ******config.setPassword(passwd);* ******config.setAuthEndpoint(authEndPoint);* ******connec(on*=*new*EnterpriseConnec5on(config);* ******GetUserInfoResult#userInfo#=#connec5on.getUserInfo();# ******System.out.println("User*Full*Name:*"*+*userInfo.getUserFullName());* ***QueryResult#qResult*=*null;* ***String*soqlQuery#=*"SELECT*FirstName,*LastName*FROM*Contact";*//*SOQL# ***qResult*=#connec5on.query(soqlQuery);# ***boolean*done*=*false;* ***if*(qResult.getSize()*>*0)*{* *****System.out.println("LoggedAin*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*...*
  • 50.
    Code Example –Camel Salesforce Component // Producer from("direct:toSalesforce“) .to("salesforce://Article__c?user=myUser&password=myPasswordj&item=myItem"); // Consumer from("salesforce://Article__c?user=myUser&password=myPassword") .to("mock:fromSalesforce");
  • 51.
    Live Demo SaaS Integration in Action
  • 52.
    Agenda 1) Introduction toCloud 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 Components
  • 53.
    Custom Cloud Components Component# Creates Endpoint# Consumer# Producer#
  • 54.
    Live Demo Custom Cloud Component in Action
  • 55.
    Alternative for CustomCloud Components •  SOAP •  REST
  • 56.
    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")
  • 57.
    Live Demo Cloud Integration via REST in Action
  • 58.
    Did you getthe Key Message?
  • 59.
    Key Messages The Cloudalready arrived, and must be integrated! Cloud Integration is already possible! Apache Camel helps a lot!
  • 60.
    Did you getthe Key Message?
  • 61.
  • 62.
    Become a Partof the Open Source Community
  • 63.
    Thank you foryour Attention. Any Questions?  Kai Wähner MaibornWolff et al: www.mwea.de Email: kai.waehner@mwea.de Twitter: @KaiWaehner Blog: www.kai-waehner.de/blog Social: LinkedIn / Xing