Systems Integration in the Cloud Era




www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
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, LinkedIn


www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
What is the Problem?




                                                                                    Growth

                                                                                   •  Applications
                                                                                   •  Interfaces
                                                                                   •  Technologies
                                                                                   •  Products



www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
A new Era: Cloud Computing




www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
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
Wishes




                                                         •  Standardized Modeling
                                                         •  Efficient Realization
                                                         •  Automatic Testing
www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
Systems Integration in the Cloud Era




www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
What is the Key Message?




www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
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
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
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
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



www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
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



www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
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 control




www.mwea.de         "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
Every Vendor offers Cloud Products




www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
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



www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
Alternatives for Systems Integration




                                                                      Enterprise Service Bus
                             Integration                                       (ESB)
        API
                             Framework
                                                                                                                Complexity
                                                                                                               of Integration
   Low                                                                                                  High




www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
Alternatives for Systems Integration




                                                                            Enterprise Service Bus
                                   Integration                                       (ESB)
        API
                                   Framework
                                                                                                                             Complexity
                                                                                                                            of Integration
   Low                                                                                                        High




                            Apache Camel vs. Spring Integration vs. Mule
http://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
Enterprise Integration Patterns (EIP)




                                                           Apache Camel
                                                         Implements the EIPs

www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
Enterprise Integration Patterns (EIP)




www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
Enterprise Integration Patterns (EIP)




www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
Architecture




                                                                   http://java.dzone.com/articles/apache-camel-integration




www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
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
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


www.mwea.de      "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
Deploy it wherever you need



 Standalone                                                      Application Server
                     Web Container
                                                                     Spring Container

                                                                               OSGi
                                                                                          Cloud

www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
Enterprise-ready




                                                                               •  Open Source
                                                                               •  Scalability
                                                                               •  Error Handling
                                                                               •  Transaction
                                                                               •  Monitoring
                                                                               •  Tooling
                                                                               •  Commercial Support
www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
Live Demo




                                                              Apache Camel in Action

www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
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



www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
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 control




www.mwea.de         "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
Infrastructure as a Service (IaaS)




www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
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
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
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
Live Demo




                                                              IaaS Integration in Action
www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
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



www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
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 control




www.mwea.de         "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
Platform as a Service (PaaS)




     Elastic Beanstalk




www.mwea.de    "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
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 SQL
www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
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
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
Code Example – Camel GAE Component




www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
Code Example – Camel GAE Component




www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
Live Demo




                                                              PaaS Integration in Action

www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
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



www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
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 control




www.mwea.de         "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
Software as a Service (SaaS)




www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
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
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
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
Live Demo




                                                              SaaS Integration in Action

www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
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



www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
Custom Cloud Components



                                                                                         Component



                                                                                                  Creates




                                                                                           Endpoint




                                                                    Consumer                                Producer




www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
Live Demo




                                Custom Cloud Component in Action
www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
Alternative for Custom Cloud Components




                                                                                                        •  SOAP
                                                                                                        •  REST
www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
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
Live Demo




                                          Cloud Integration via REST in Action

www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
Did you get the Key Message?




www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
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
Did you get the Key Message?




www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
Whet your Appetite?




www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
Become a Part of the Open Source Community




www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
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 @KaiWaehner



www.mwea.de   "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012

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

  • 1.
    Systems Integration inthe Cloud Era www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 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, LinkedIn www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 3.
    What is theProblem? Growth •  Applications •  Interfaces •  Technologies •  Products www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 4.
    A new Era:Cloud Computing www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 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.
    Wishes •  Standardized Modeling •  Efficient Realization •  Automatic Testing www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 7.
    Systems Integration inthe Cloud Era www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 8.
    What is theKey Message? www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 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.
    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.
    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.
    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 www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 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 Components www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 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 control www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 15.
    Every Vendor offersCloud Products www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 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 Components www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 17.
    Alternatives for SystemsIntegration Enterprise Service Bus Integration (ESB) API Framework Complexity of Integration Low High www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 18.
    Alternatives for SystemsIntegration Enterprise Service Bus Integration (ESB) API Framework Complexity of Integration Low High Apache Camel vs. Spring Integration vs. Mule http://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.
    Enterprise Integration Patterns(EIP) Apache Camel Implements the EIPs www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 20.
    Enterprise Integration Patterns(EIP) www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 21.
    Enterprise Integration Patterns(EIP) www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 22.
    Architecture http://java.dzone.com/articles/apache-camel-integration www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 23.
    Choose your favoriteDSL XML (not production-ready yet) www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 24.
    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 www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 25.
    Deploy it whereveryou need Standalone Application Server Web Container Spring Container OSGi Cloud www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 26.
    Enterprise-ready •  Open Source •  Scalability •  Error Handling •  Transaction •  Monitoring •  Tooling •  Commercial Support www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 27.
    Live Demo Apache Camel in Action www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 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 Components www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 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 control www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 30.
    Infrastructure as aService (IaaS) www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 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.
    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.
    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.
    Live Demo IaaS Integration in Action www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 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 Components www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 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 control www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 37.
    Platform as aService (PaaS) Elastic Beanstalk www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 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 SQL www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 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.
    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.
    Code Example –Camel GAE Component www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 42.
    Code Example –Camel GAE Component www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 43.
    Live Demo PaaS Integration in Action www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 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 Components www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 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 control www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 46.
    Software as aService (SaaS) www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 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.
    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.
    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.
    Live Demo SaaS Integration in Action www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 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 Components www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 52.
    Custom Cloud Components Component Creates Endpoint Consumer Producer www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 53.
    Live Demo Custom Cloud Component in Action www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 54.
    Alternative for CustomCloud Components •  SOAP •  REST www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 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.
    Live Demo Cloud Integration via REST in Action www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 57.
    Did you getthe Key Message? www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 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.
    Did you getthe Key Message? www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 60.
    Whet your Appetite? www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 61.
    Become a Partof the Open Source Community www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012
  • 62.
    Thank you foryour 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 @KaiWaehner www.mwea.de "Systems Integration in the Cloud Era with Apache Camel" by Kai Wähner --- JavaOne 2012