SlideShare a Scribd company logo
SOA
                          fabio.kung@caelum.com.br




Tuesday, March 17, 2009
Tecnologia evolui
                                (legado)




Tuesday, March 17, 2009
mas o que?
                             definição




Tuesday, March 17, 2009
quot;Uma arquitetura em que serviços
        independentes se comunicam de uma
             maneira padronizada.quot;




Tuesday, March 17, 2009
Bilhetagem
                            (Ticketagem)




Tuesday, March 17, 2009
Bilhetagem
                                  (Ticketagem)




                     Financeiro                  CRM



                                     FTP
                                      FS
Tuesday, March 17, 2009
Same Old Architecture
                          SOA




Tuesday, March 17, 2009
Remote Procedure Call
                          (RPC)




Tuesday, March 17, 2009
Remote Procedure Call
                              (RPC)




                 Financeiro           CRM




Tuesday, March 17, 2009
Remote Procedure Call
                              (RPC)




                 Financeiro                   CRM
                                      Lista




Tuesday, March 17, 2009
Remote Procedure Call
                              (RPC)




                                      Cadastro


                 Financeiro                      CRM
                                        Lista


                                      Por Nome




Tuesday, March 17, 2009
• RMI
               • DCOM
               • EJB

Tuesday, March 17, 2009
Corba




Tuesday, March 17, 2009
Corba

  Financeiro                       CRM
     (Java)                       (C++)




Tuesday, March 17, 2009
Corba

  Financeiro                       CRM
                           GIOP
     (Java)                       (C++)
                           IIOP




Tuesday, March 17, 2009
Corba

  Financeiro                                   CRM
                                 GIOP
                          ORB           ORB
     (Java)                                   (C++)
                                 IIOP




Tuesday, March 17, 2009
Corba

  Financeiro                                           CRM
                                     GIOP
                          ORB IDL           IDL ORB
     (Java)                                           (C++)
                                     IIOP




Tuesday, March 17, 2009
Corba

  Financeiro                                               CRM
                                       GIOP
                           ORB IDL              IDL ORB
     (Java)                                               (C++)
                                       IIOP



                                       IDL
                          GP




                                                IIO PIO
                          IO
                            IIO




                                                    P
                                                   G
                                       ORB
                              P




                                     Estoque
                                     (Delphi)
Tuesday, March 17, 2009
• Firewalls
               • Mal suportado
               • Burocracia no desenvolvimento


Tuesday, March 17, 2009
HTTP



Tuesday, March 17, 2009
HTTP
                          XML


Tuesday, March 17, 2009
HTTP
                          XML
                          SOAP


Tuesday, March 17, 2009
Simple Object Access
                         Protocol
                          <soap:envelope>
                            <soap:header>
                              ...
                            </soap:header>

                            <soap:body>
                              ...
                            </soap:body>
                          </soap:envelope>
Tuesday, March 17, 2009
HTTP
                          XML
                          SOAP
                          WSDL

Tuesday, March 17, 2009
WebService Description
                                Language




Tuesday, March 17, 2009
WebService Description
                                Language

  Financeiro                                        CRM
     (Java)                                        (C++)




Tuesday, March 17, 2009
WebService Description
                                Language

  Financeiro                                        CRM
                                   HTTP
     (Java)                                        (C++)
                                   SOAP




Tuesday, March 17, 2009
WebService Description
                                Language

  Financeiro                                             CRM
                           Endpoint




                                             Endpoint
                                      HTTP
     (Java)                                             (C++)
                                      SOAP




Tuesday, March 17, 2009
WebService Description
                                Language

  Financeiro                                                           CRM
                           Endpoint




                                                           Endpoint
                                             HTTP

                                      WSDL




                                                    WSDL
     (Java)                                                           (C++)
                                             SOAP




Tuesday, March 17, 2009
WebService Description
                                Language

  Financeiro                                                                 CRM
                            Endpoint




                                                                 Endpoint
                                                HTTP

                                       WSDL




                                                          WSDL
     (Java)                                                                 (C++)
                                                SOAP



                                               WSDL
                          HA




                                                            AP P
                                                          SO TT
                          TT P
                           SO




                                                            H
                                               Endpoint
                            P




                                              Estoque
                                              (Delphi)
Tuesday, March 17, 2009
Corba

  Financeiro                                               CRM
                                       GIOP
                           ORB IDL              IDL ORB
     (Java)                                               (C++)
                                       IIOP



                                       IDL
                          GP




                                                IIO PIO
                          IO
                            IIO




                                                    P
                                                   G
                                       ORB
                              P




                                     Estoque
                                     (Delphi)
Tuesday, March 17, 2009
WebServices SOAP

  Financeiro                                                                 CRM
                            Endpoint




                                                                 Endpoint
                                                HTTP

                                       WSDL




                                                          WSDL
     (Java)                                                                 (C++)
                                                SOAP



                                               WSDL
                          HA




                                                            AP P
                                                          SO TT
                          TT P
                           SO




                                                            H
                                               Endpoint
                            P




                                              Estoque
                                              (Delphi)
Tuesday, March 17, 2009
Same Old Architecture
                          SOA




Tuesday, March 17, 2009
Interoperabilidade



Tuesday, March 17, 2009
Amazon



Tuesday, March 17, 2009
<types>
  <xs:schema xmlns:xs=quot;http://www.w3.org/2001/XMLSchemaquot; ...>


    <xs:element name=quot;ItemSearchquot;>
      <xs:complexType>
        <xs:sequence>
          <xs:element name=quot;AWSAccessKeyIdquot; type=quot;xs:stringquot; minOccurs=quot;0quot;/>


             <xs:element name=quot;Requestquot; type=quot;tns:ItemSearchRequestquot;
            minOccurs=quot;0quot; maxOccurs=quot;unboundedquot;/>
        </xs:sequence>
      </xs:complexType>
    </xs:element>


    <xs:complexType name=quot;ItemSearchRequestquot;>
      <xs:sequence>
         <xs:element name=quot;Authorquot; type=quot;xs:stringquot; minOccurs=quot;0quot;/>
         <xs:element name=quot;Keywordsquot; type=quot;xs:stringquot; minOccurs=quot;0quot;/>
         ...
      </xs:sequence>
    </xs:complexType>
  </xs:schema>
</types>


<message name=quot;ItemSearchRequestMsgquot;>


  <part name=quot;bodyquot; element=quot;tns:ItemSearchquot;/>
</message>


<portType name=quot;AWSECommerceServicePortTypequot;>
  <operation name=quot;ItemSearchquot;>


      <input message=quot;tns:ItemSearchRequestMsgquot;/>
      <output message=quot;tns:ItemSearchResponseMsgquot;/>
  </operation>
</portType>

<binding name=quot;AWSECommerceServiceBindingquot; type=quot;tns:AWSECommerceServicePortTypequot;>
  ...
</binding>
<service name=quot;AWSECommerceServicequot;>


  <port name=quot;AWSECommerceServicePortquot; binding=quot;tns:AWSECommerceServiceBindingquot;>
    <soap:address
      location=quot;http://soap.amazon.com/onca/soap?Service=AWSECommerceServicequot;/>
Tuesday, March 17, 2009
  </port>
• JAX-WS
                          wsimport
                    ✓



               • Apache CXF
                          WSDL2Java
                    ✓



               • Axis 2
               • WCF (.Net)

Tuesday, March 17, 2009
WS-*

               • WS-Transaction
               • WS-Security
               • WS-Addressing
               • WS-Reliability
               • ...

Tuesday, March 17, 2009
WCF (MS)
                              +
                          Metro (Sun)


Tuesday, March 17, 2009
WebServices
                              W3C



      quot;Sistema de software projetado para
    suportar interações entre máquinas numa
          rede, de forma interoperável.quot;



                                        granularidade alta
Tuesday, March 17, 2009
POX
                          Plain Old XML




Tuesday, March 17, 2009
Flickr
        http://api.flickr.com/services/rest/?method=flickr.interestingness.getList




Tuesday, March 17, 2009
<?xml version=quot;1.0quot; encoding=quot;utf-8quot; ?>
  <rsp stat=quot;okquot;>
    <photos page=quot;1quot; pages=quot;5quot; perpage=quot;100quot; total=quot;500quot;>
      <photo id=quot;1332244715quot; owner=quot;41848473@N00quot; secret=quot;a6e8177ba8quot;
         server=quot;1215quot; farm=quot;2quot; title=quot;Back to schoolquot;
         ispublic=quot;1quot; isfriend=quot;0quot; isfamily=quot;0quot; />
      <photo id=quot;1331179114quot; owner=quot;84362437@N00quot; secret=quot;0ed6a814a8quot;
         server=quot;1285quot; farm=quot;2quot; title=quot;Big Rig Jigquot;
         ispublic=quot;1quot; isfriend=quot;0quot; isfamily=quot;0quot; />
      <photo id=quot;1329226185quot; owner=quot;46925233@N00quot; secret=quot;4556c3f08bquot;
         server=quot;1194quot; farm=quot;2quot; title=quot;Here they come...quot;
         ispublic=quot;1quot; isfriend=quot;0quot; isfamily=quot;0quot; />
    </photos>
  </rsp>




Tuesday, March 17, 2009
<?xml version=quot;1.0quot; encoding=quot;utf-8quot; ?>
  <rsp stat=quot;okquot;>
    <photos page=quot;1quot; pages=quot;5quot; perpage=quot;100quot; total=quot;500quot;>
      <photo id=quot;1332244715quot; owner=quot;41848473@N00quot; secret=quot;a6e8177ba8quot;
         server=quot;1215quot; farm=quot;2quot; title=quot;Back to schoolquot;
         ispublic=quot;1quot; isfriend=quot;0quot; isfamily=quot;0quot; />
      <photo id=quot;1331179114quot; owner=quot;84362437@N00quot; secret=quot;0ed6a814a8quot;
         server=quot;1285quot; farm=quot;2quot; title=quot;Big Rig Jigquot;
         ispublic=quot;1quot; isfriend=quot;0quot; isfamily=quot;0quot; />
      <photo id=quot;1329226185quot; owner=quot;46925233@N00quot; secret=quot;4556c3f08bquot;
 http://farm{farm-id}.static.flickr.com/{server-id}/{id}_{secret}.jpg
         server=quot;1194quot; farm=quot;2quot; title=quot;Here they come...quot;
         ispublic=quot;1quot; isfriend=quot;0quot; isfamily=quot;0quot; />
    </photos>
  </rsp>




Tuesday, March 17, 2009
JSON
                          JavaScript Object Notation




Tuesday, March 17, 2009
var john = {
                    type: 'Person',
                    name: 'John Doe',
                    email: 'john@doe.com',
                    address: {
                      street: 'Doe Street',
                      number: 1223,
                      city: 'New York'
                    }
                  }

Tuesday, March 17, 2009
var john = {
                    type: 'Person',
                    name: 'John Doe',
                    email: 'john@doe.com',
                    address: {
                      street: 'Doe Street',
                      number: 1223,
                      city: 'New York'
                    }
                  }

Tuesday, March 17, 2009
json.org




Tuesday, March 17, 2009
http://delicious.com
                                http://del.icio.us




Tuesday, March 17, 2009
[
       {
            u:quot;https://jaxb.dev.java.net/guide/quot;,
            d:quot;jaxb: Unofficial JAXB Guidequot;,
            t:[quot;jaxbquot;,quot;javaquot;,quot;xmlquot;,quot;webservicesquot;]
       },
       {
            u:quot;http://www.artima.com/intv/gosling3P.htmlquot;,
            d:quot;James Gosling on Java, May 2001quot;,
            t:[quot;javaquot;,quot;inheritancequot;,quot;compositionquot;,quot;designquot;]
       },
       ...
   ]


                          http://delicious.com/feeds/json/fck?raw

Tuesday, March 17, 2009
String url = quot;http://delicious.com/feeds/json/fck?rawquot;;

   HttpClient client = new HttpClient();
   GetMethod get = new GetMethod(url);
   client.executeMethod(get);
   String response = get.getResponseBodyAsString();

   JSONArray x = JSONArray.fromObject(response);
   for (JSONObject bookmark : x) {
     System.out.println(quot;Descrição: quot; + bookmark.get(quot;dquot;));
     System.out.println(quot;Endereço: quot; + bookmark.get(quot;uquot;));
     System.out.println(quot;Tags: quot; + bookmark.get(quot;tquot;));
   }



                          http://json-lib.sourceforge.net/

Tuesday, March 17, 2009
$(‘content’).load(serviceURL);   HTTP
                          .
                          .
                                               Service
                          .




Tuesday, March 17, 2009
$(‘content’).load(serviceURL);   HTTP
                          .
                          .
                                                 Service
                          .

       var data = eval(response);         JSON




Tuesday, March 17, 2009
$(‘content’).load(serviceURL);       HTTP
                          .
                          .
                                                          Service
                          .

       var data = eval(response);              JSON


                              var john = {
                                name: 'John Doe',
                                email: 'john@doe.com',
                                address: {
                                  street: 'Doe Street',
                                  number: 1223,
                                  city: 'New York'
                                }
                              }

Tuesday, March 17, 2009
<script type=quot;text/javascriptquot;
           src=quot;http://delicious.com/feeds/json/fckquot;>
         </script>




Tuesday, March 17, 2009
<script type=quot;text/javascriptquot;
           src=quot;http://delicious.com/feeds/json/fckquot;>
         </script>




             var Delicious = [
               {
                 u:quot;https://jaxb.dev.java.net/guide/quot;,
                 d:quot;jaxb: Unofficial JAXB Guidequot;,
                 t:[quot;jaxbquot;,quot;javaquot;,quot;xmlquot;,quot;webservicesquot;]
               }, ...
             ]
Tuesday, March 17, 2009
REST
                          REpresentational State Transfer




Tuesday, March 17, 2009
Recursos

   GET
   POST
   PUT
   DELETE
   HEADER
   TRACE
   OPTIONS
Tuesday, March 17, 2009
Recursos

                                     Clientes da
   GET                                Empresa

   POST
   PUT
   DELETE
   HEADER
   TRACE
   OPTIONS
Tuesday, March 17, 2009
Recursos
                                     /clientes
                                      Clientes da
   GET                                 Empresa

   POST
   PUT
   DELETE
   HEADER
   TRACE
   OPTIONS
Tuesday, March 17, 2009
Recursos
                                     /clientes
                                      Clientes da
   GET                                 Empresa

   POST
   PUT
   DELETE
   HEADER
   TRACE
   OPTIONS
Tuesday, March 17, 2009
Recursos
                                      /clientes
                                       Clientes da
   GET                                  Empresa

   POST                              /clientes/1
   PUT                                  Cliente de

   DELETE                                  id=1

   HEADER
   TRACE
   OPTIONS
Tuesday, March 17, 2009
Recursos
                                      /clientes
                                         Clientes da
   GET                                    Empresa

   POST                              /clientes/1
   PUT                                   Cliente de

   DELETE                                   id=1

   HEADER                            /clientes/nome/a
   TRACE                                 Clientes de
                                          nome a*
   OPTIONS
Tuesday, March 17, 2009
Recursos
                                      /clientes
                                         Clientes da
   GET                                    Empresa

   POST                              /clientes/1
   PUT                                   Cliente de

   DELETE                                   id=1

                               XML
   HEADER                            /clientes/nome/a
                              JSON
   TRACE                      HTML       Clientes de
                                          nome a*
   OPTIONS
Tuesday, March 17, 2009
Muitas opções
                          processos envolvem diversas




Tuesday, March 17, 2009
Tuesday, March 17, 2009
ESB
                          Enterprise Service Bus




Tuesday, March 17, 2009
Tuesday, March 17, 2009
• Localidade
               • Transformação de Mensagens
               • Orquestração / Coreografia
               • CEP


Tuesday, March 17, 2009
Dúvidas?




                                                 Obrigado!


                          fabio.kung@caelum.com.br
Tuesday, March 17, 2009

More Related Content

More from Fabio Kung

Linux Containers at scale: challenges in a very dense environment
Linux Containers at scale: challenges in a very dense environmentLinux Containers at scale: challenges in a very dense environment
Linux Containers at scale: challenges in a very dense environment
Fabio Kung
 
Dicas e truques para ser um bom inquilino no Cloud
Dicas e truques para ser um bom inquilino no CloudDicas e truques para ser um bom inquilino no Cloud
Dicas e truques para ser um bom inquilino no Cloud
Fabio Kung
 
Ruby and Rails Packaging to Production
Ruby and Rails Packaging to ProductionRuby and Rails Packaging to Production
Ruby and Rails Packaging to Production
Fabio Kung
 
Ruby 2.0: to infinity... and beyond!
Ruby 2.0: to infinity... and beyond!Ruby 2.0: to infinity... and beyond!
Ruby 2.0: to infinity... and beyond!
Fabio Kung
 
Cloud IaaS - Detalhes da Infraestrutura como Serviço
Cloud IaaS - Detalhes da Infraestrutura como ServiçoCloud IaaS - Detalhes da Infraestrutura como Serviço
Cloud IaaS - Detalhes da Infraestrutura como Serviço
Fabio Kung
 
Usando o Cloud
Usando o CloudUsando o Cloud
Usando o Cloud
Fabio Kung
 
Storage para virtualização
Storage para virtualizaçãoStorage para virtualização
Storage para virtualização
Fabio Kung
 
Automacao devops
Automacao devopsAutomacao devops
Automacao devops
Fabio Kung
 
DSLs Internas e Ruby
DSLs Internas e RubyDSLs Internas e Ruby
DSLs Internas e Ruby
Fabio Kung
 
Onde mora a produtividade do Ruby on Rails?
Onde mora a produtividade do Ruby on Rails?Onde mora a produtividade do Ruby on Rails?
Onde mora a produtividade do Ruby on Rails?
Fabio Kung
 
Ruby, muito mais que reflexivo
Ruby, muito mais que reflexivoRuby, muito mais que reflexivo
Ruby, muito mais que reflexivo
Fabio Kung
 
JRuby on Rails
JRuby on RailsJRuby on Rails
JRuby on Rails
Fabio Kung
 

More from Fabio Kung (12)

Linux Containers at scale: challenges in a very dense environment
Linux Containers at scale: challenges in a very dense environmentLinux Containers at scale: challenges in a very dense environment
Linux Containers at scale: challenges in a very dense environment
 
Dicas e truques para ser um bom inquilino no Cloud
Dicas e truques para ser um bom inquilino no CloudDicas e truques para ser um bom inquilino no Cloud
Dicas e truques para ser um bom inquilino no Cloud
 
Ruby and Rails Packaging to Production
Ruby and Rails Packaging to ProductionRuby and Rails Packaging to Production
Ruby and Rails Packaging to Production
 
Ruby 2.0: to infinity... and beyond!
Ruby 2.0: to infinity... and beyond!Ruby 2.0: to infinity... and beyond!
Ruby 2.0: to infinity... and beyond!
 
Cloud IaaS - Detalhes da Infraestrutura como Serviço
Cloud IaaS - Detalhes da Infraestrutura como ServiçoCloud IaaS - Detalhes da Infraestrutura como Serviço
Cloud IaaS - Detalhes da Infraestrutura como Serviço
 
Usando o Cloud
Usando o CloudUsando o Cloud
Usando o Cloud
 
Storage para virtualização
Storage para virtualizaçãoStorage para virtualização
Storage para virtualização
 
Automacao devops
Automacao devopsAutomacao devops
Automacao devops
 
DSLs Internas e Ruby
DSLs Internas e RubyDSLs Internas e Ruby
DSLs Internas e Ruby
 
Onde mora a produtividade do Ruby on Rails?
Onde mora a produtividade do Ruby on Rails?Onde mora a produtividade do Ruby on Rails?
Onde mora a produtividade do Ruby on Rails?
 
Ruby, muito mais que reflexivo
Ruby, muito mais que reflexivoRuby, muito mais que reflexivo
Ruby, muito mais que reflexivo
 
JRuby on Rails
JRuby on RailsJRuby on Rails
JRuby on Rails
 

Recently uploaded

GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
Fwdays
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 

Recently uploaded (20)

GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 

SOA não precisa ser buzzword

  • 1. SOA fabio.kung@caelum.com.br Tuesday, March 17, 2009
  • 2. Tecnologia evolui (legado) Tuesday, March 17, 2009
  • 3. mas o que? definição Tuesday, March 17, 2009
  • 4. quot;Uma arquitetura em que serviços independentes se comunicam de uma maneira padronizada.quot; Tuesday, March 17, 2009
  • 5. Bilhetagem (Ticketagem) Tuesday, March 17, 2009
  • 6. Bilhetagem (Ticketagem) Financeiro CRM FTP FS Tuesday, March 17, 2009
  • 7. Same Old Architecture SOA Tuesday, March 17, 2009
  • 8. Remote Procedure Call (RPC) Tuesday, March 17, 2009
  • 9. Remote Procedure Call (RPC) Financeiro CRM Tuesday, March 17, 2009
  • 10. Remote Procedure Call (RPC) Financeiro CRM Lista Tuesday, March 17, 2009
  • 11. Remote Procedure Call (RPC) Cadastro Financeiro CRM Lista Por Nome Tuesday, March 17, 2009
  • 12. • RMI • DCOM • EJB Tuesday, March 17, 2009
  • 14. Corba Financeiro CRM (Java) (C++) Tuesday, March 17, 2009
  • 15. Corba Financeiro CRM GIOP (Java) (C++) IIOP Tuesday, March 17, 2009
  • 16. Corba Financeiro CRM GIOP ORB ORB (Java) (C++) IIOP Tuesday, March 17, 2009
  • 17. Corba Financeiro CRM GIOP ORB IDL IDL ORB (Java) (C++) IIOP Tuesday, March 17, 2009
  • 18. Corba Financeiro CRM GIOP ORB IDL IDL ORB (Java) (C++) IIOP IDL GP IIO PIO IO IIO P G ORB P Estoque (Delphi) Tuesday, March 17, 2009
  • 19. • Firewalls • Mal suportado • Burocracia no desenvolvimento Tuesday, March 17, 2009
  • 21. HTTP XML Tuesday, March 17, 2009
  • 22. HTTP XML SOAP Tuesday, March 17, 2009
  • 23. Simple Object Access Protocol <soap:envelope> <soap:header> ... </soap:header> <soap:body> ... </soap:body> </soap:envelope> Tuesday, March 17, 2009
  • 24. HTTP XML SOAP WSDL Tuesday, March 17, 2009
  • 25. WebService Description Language Tuesday, March 17, 2009
  • 26. WebService Description Language Financeiro CRM (Java) (C++) Tuesday, March 17, 2009
  • 27. WebService Description Language Financeiro CRM HTTP (Java) (C++) SOAP Tuesday, March 17, 2009
  • 28. WebService Description Language Financeiro CRM Endpoint Endpoint HTTP (Java) (C++) SOAP Tuesday, March 17, 2009
  • 29. WebService Description Language Financeiro CRM Endpoint Endpoint HTTP WSDL WSDL (Java) (C++) SOAP Tuesday, March 17, 2009
  • 30. WebService Description Language Financeiro CRM Endpoint Endpoint HTTP WSDL WSDL (Java) (C++) SOAP WSDL HA AP P SO TT TT P SO H Endpoint P Estoque (Delphi) Tuesday, March 17, 2009
  • 31. Corba Financeiro CRM GIOP ORB IDL IDL ORB (Java) (C++) IIOP IDL GP IIO PIO IO IIO P G ORB P Estoque (Delphi) Tuesday, March 17, 2009
  • 32. WebServices SOAP Financeiro CRM Endpoint Endpoint HTTP WSDL WSDL (Java) (C++) SOAP WSDL HA AP P SO TT TT P SO H Endpoint P Estoque (Delphi) Tuesday, March 17, 2009
  • 33. Same Old Architecture SOA Tuesday, March 17, 2009
  • 36. <types> <xs:schema xmlns:xs=quot;http://www.w3.org/2001/XMLSchemaquot; ...> <xs:element name=quot;ItemSearchquot;> <xs:complexType> <xs:sequence> <xs:element name=quot;AWSAccessKeyIdquot; type=quot;xs:stringquot; minOccurs=quot;0quot;/> <xs:element name=quot;Requestquot; type=quot;tns:ItemSearchRequestquot; minOccurs=quot;0quot; maxOccurs=quot;unboundedquot;/> </xs:sequence> </xs:complexType> </xs:element> <xs:complexType name=quot;ItemSearchRequestquot;> <xs:sequence> <xs:element name=quot;Authorquot; type=quot;xs:stringquot; minOccurs=quot;0quot;/> <xs:element name=quot;Keywordsquot; type=quot;xs:stringquot; minOccurs=quot;0quot;/> ... </xs:sequence> </xs:complexType> </xs:schema> </types> <message name=quot;ItemSearchRequestMsgquot;> <part name=quot;bodyquot; element=quot;tns:ItemSearchquot;/> </message> <portType name=quot;AWSECommerceServicePortTypequot;> <operation name=quot;ItemSearchquot;> <input message=quot;tns:ItemSearchRequestMsgquot;/> <output message=quot;tns:ItemSearchResponseMsgquot;/> </operation> </portType> <binding name=quot;AWSECommerceServiceBindingquot; type=quot;tns:AWSECommerceServicePortTypequot;> ... </binding> <service name=quot;AWSECommerceServicequot;> <port name=quot;AWSECommerceServicePortquot; binding=quot;tns:AWSECommerceServiceBindingquot;> <soap:address location=quot;http://soap.amazon.com/onca/soap?Service=AWSECommerceServicequot;/> Tuesday, March 17, 2009 </port>
  • 37. • JAX-WS wsimport ✓ • Apache CXF WSDL2Java ✓ • Axis 2 • WCF (.Net) Tuesday, March 17, 2009
  • 38. WS-* • WS-Transaction • WS-Security • WS-Addressing • WS-Reliability • ... Tuesday, March 17, 2009
  • 39. WCF (MS) + Metro (Sun) Tuesday, March 17, 2009
  • 40. WebServices W3C quot;Sistema de software projetado para suportar interações entre máquinas numa rede, de forma interoperável.quot; granularidade alta Tuesday, March 17, 2009
  • 41. POX Plain Old XML Tuesday, March 17, 2009
  • 42. Flickr http://api.flickr.com/services/rest/?method=flickr.interestingness.getList Tuesday, March 17, 2009
  • 43. <?xml version=quot;1.0quot; encoding=quot;utf-8quot; ?> <rsp stat=quot;okquot;> <photos page=quot;1quot; pages=quot;5quot; perpage=quot;100quot; total=quot;500quot;> <photo id=quot;1332244715quot; owner=quot;41848473@N00quot; secret=quot;a6e8177ba8quot; server=quot;1215quot; farm=quot;2quot; title=quot;Back to schoolquot; ispublic=quot;1quot; isfriend=quot;0quot; isfamily=quot;0quot; /> <photo id=quot;1331179114quot; owner=quot;84362437@N00quot; secret=quot;0ed6a814a8quot; server=quot;1285quot; farm=quot;2quot; title=quot;Big Rig Jigquot; ispublic=quot;1quot; isfriend=quot;0quot; isfamily=quot;0quot; /> <photo id=quot;1329226185quot; owner=quot;46925233@N00quot; secret=quot;4556c3f08bquot; server=quot;1194quot; farm=quot;2quot; title=quot;Here they come...quot; ispublic=quot;1quot; isfriend=quot;0quot; isfamily=quot;0quot; /> </photos> </rsp> Tuesday, March 17, 2009
  • 44. <?xml version=quot;1.0quot; encoding=quot;utf-8quot; ?> <rsp stat=quot;okquot;> <photos page=quot;1quot; pages=quot;5quot; perpage=quot;100quot; total=quot;500quot;> <photo id=quot;1332244715quot; owner=quot;41848473@N00quot; secret=quot;a6e8177ba8quot; server=quot;1215quot; farm=quot;2quot; title=quot;Back to schoolquot; ispublic=quot;1quot; isfriend=quot;0quot; isfamily=quot;0quot; /> <photo id=quot;1331179114quot; owner=quot;84362437@N00quot; secret=quot;0ed6a814a8quot; server=quot;1285quot; farm=quot;2quot; title=quot;Big Rig Jigquot; ispublic=quot;1quot; isfriend=quot;0quot; isfamily=quot;0quot; /> <photo id=quot;1329226185quot; owner=quot;46925233@N00quot; secret=quot;4556c3f08bquot; http://farm{farm-id}.static.flickr.com/{server-id}/{id}_{secret}.jpg server=quot;1194quot; farm=quot;2quot; title=quot;Here they come...quot; ispublic=quot;1quot; isfriend=quot;0quot; isfamily=quot;0quot; /> </photos> </rsp> Tuesday, March 17, 2009
  • 45. JSON JavaScript Object Notation Tuesday, March 17, 2009
  • 46. var john = { type: 'Person', name: 'John Doe', email: 'john@doe.com', address: { street: 'Doe Street', number: 1223, city: 'New York' } } Tuesday, March 17, 2009
  • 47. var john = { type: 'Person', name: 'John Doe', email: 'john@doe.com', address: { street: 'Doe Street', number: 1223, city: 'New York' } } Tuesday, March 17, 2009
  • 49. http://delicious.com http://del.icio.us Tuesday, March 17, 2009
  • 50. [ { u:quot;https://jaxb.dev.java.net/guide/quot;, d:quot;jaxb: Unofficial JAXB Guidequot;, t:[quot;jaxbquot;,quot;javaquot;,quot;xmlquot;,quot;webservicesquot;] }, { u:quot;http://www.artima.com/intv/gosling3P.htmlquot;, d:quot;James Gosling on Java, May 2001quot;, t:[quot;javaquot;,quot;inheritancequot;,quot;compositionquot;,quot;designquot;] }, ... ] http://delicious.com/feeds/json/fck?raw Tuesday, March 17, 2009
  • 51. String url = quot;http://delicious.com/feeds/json/fck?rawquot;; HttpClient client = new HttpClient(); GetMethod get = new GetMethod(url); client.executeMethod(get); String response = get.getResponseBodyAsString(); JSONArray x = JSONArray.fromObject(response); for (JSONObject bookmark : x) { System.out.println(quot;Descrição: quot; + bookmark.get(quot;dquot;)); System.out.println(quot;Endereço: quot; + bookmark.get(quot;uquot;)); System.out.println(quot;Tags: quot; + bookmark.get(quot;tquot;)); } http://json-lib.sourceforge.net/ Tuesday, March 17, 2009
  • 52. $(‘content’).load(serviceURL); HTTP . . Service . Tuesday, March 17, 2009
  • 53. $(‘content’).load(serviceURL); HTTP . . Service . var data = eval(response); JSON Tuesday, March 17, 2009
  • 54. $(‘content’).load(serviceURL); HTTP . . Service . var data = eval(response); JSON var john = { name: 'John Doe', email: 'john@doe.com', address: { street: 'Doe Street', number: 1223, city: 'New York' } } Tuesday, March 17, 2009
  • 55. <script type=quot;text/javascriptquot; src=quot;http://delicious.com/feeds/json/fckquot;> </script> Tuesday, March 17, 2009
  • 56. <script type=quot;text/javascriptquot; src=quot;http://delicious.com/feeds/json/fckquot;> </script> var Delicious = [ { u:quot;https://jaxb.dev.java.net/guide/quot;, d:quot;jaxb: Unofficial JAXB Guidequot;, t:[quot;jaxbquot;,quot;javaquot;,quot;xmlquot;,quot;webservicesquot;] }, ... ] Tuesday, March 17, 2009
  • 57. REST REpresentational State Transfer Tuesday, March 17, 2009
  • 58. Recursos GET POST PUT DELETE HEADER TRACE OPTIONS Tuesday, March 17, 2009
  • 59. Recursos Clientes da GET Empresa POST PUT DELETE HEADER TRACE OPTIONS Tuesday, March 17, 2009
  • 60. Recursos /clientes Clientes da GET Empresa POST PUT DELETE HEADER TRACE OPTIONS Tuesday, March 17, 2009
  • 61. Recursos /clientes Clientes da GET Empresa POST PUT DELETE HEADER TRACE OPTIONS Tuesday, March 17, 2009
  • 62. Recursos /clientes Clientes da GET Empresa POST /clientes/1 PUT Cliente de DELETE id=1 HEADER TRACE OPTIONS Tuesday, March 17, 2009
  • 63. Recursos /clientes Clientes da GET Empresa POST /clientes/1 PUT Cliente de DELETE id=1 HEADER /clientes/nome/a TRACE Clientes de nome a* OPTIONS Tuesday, March 17, 2009
  • 64. Recursos /clientes Clientes da GET Empresa POST /clientes/1 PUT Cliente de DELETE id=1 XML HEADER /clientes/nome/a JSON TRACE HTML Clientes de nome a* OPTIONS Tuesday, March 17, 2009
  • 65. Muitas opções processos envolvem diversas Tuesday, March 17, 2009
  • 67. ESB Enterprise Service Bus Tuesday, March 17, 2009
  • 69. • Localidade • Transformação de Mensagens • Orquestração / Coreografia • CEP Tuesday, March 17, 2009
  • 70. Dúvidas? Obrigado! fabio.kung@caelum.com.br Tuesday, March 17, 2009

Editor's Notes