Showing posts with label Enterprise Architecture. Show all posts
Showing posts with label Enterprise Architecture. Show all posts

Thursday, May 1, 2008

JavaOne 2008: my sessions choice...

I have attended or presented at JavaOne for the last 6 years when I was living in the SF Bay Area... But this year I won't be in San Francisco for JavaOne. As you can guess, I am sad about that... However, I still look at the schedule and events, and here what I would like to do:

  • Groovy/Grails meetup organized by G2One and NFJS
  • Sun and Oracle General Sessions: Tuesday, Wednesday and Friday at 8:30am. I am particularly interested to see the Oracle's one  talk about the Oracle/BEA deal... May be we will be able to learn more about the products roadmap
  • TS-6050 - Comparing JRuby and Groovy
  • TS-5274 - Groovy on a Cloud: Testing Java EE Platform Applications on Amazon EC2
  • BOF-5102 - Cooking Your Own Groovy Builder: A Step Forward into Domain-Specific Languages
  • TS-5793 - Groovy and Grails: Changing the Landscape of Java EE Platform Patterns
  • BOF-5101 - Boosting Your Testing Productivity with Groovy
  • TS-5764 - Grails in Depth
  • TS-6298 - Designing Graphical Model-Driven Applications: Lego MindStorm ... long time that I have not programmed/designed with my Legos...
  • BOF-4888 - Taming the Leopard: Extending OS X the Java Technology Way: would be great to see my ex-coworker talking about OS X and Java.. John and Tim are terrific developers
  • BOF-6400 - The Future of Guice. even if I have not used (yet) this API from Google I have been a big fan of Bob's work
  • TS-5657 - JavaFX Technology: Bring the Web with You--Multiple Interfaces to Games, Chat, and More
  • TS-4817 - The Java Platform Portlet Specification 2.0 (JSR 286)
  • TS-5343 - Enterprise JavaBeans (EJB) 3.1 Technology. As I am pushing more and more customer to use the standard JPA.. would be great to learn more about the next release of EJB
  • TS-6169 - Spring Framework 2.5: New and Notable... would like to see what will be said about SpringAppServer
  • TS-6072 - Advanced Enterprise Debugging Techniques
  • BOF-5634 - Java EE Platform Connector Architecture 1.6 Overview. I have been using J2CA a lot lately when dealing with SOA in large IT department... So quite cool to have an update on this spec.
  • TS-5318 - Dealing with Asynchronicity in Java Technology-Based Web Services. A feature in the WS Stack that I have been pushing a lot...
  • TS-5616 - JSR 303: From a World of Constraints to Constrain the World
  • TS-6339 - Top 10 Patterns for Scaling Out Java Technology-Based Applications
  • TS-5706 - SCA and Java Platform, Enterprise Edition (Java EE Platform): Integration Inside
  • BOF-5495 - Untangling the Asynchronous Web
  • TS-5425 - JAX-RS: The Java API for RESTful Web Services
  • LAB-4500LT - Develop AJAX Based Portlets With OpenPortal and GWT
  • TS-6574 - How to Implement Your Own OpenSocial Container on the Java Platform
  • TS-6807 - What’s New in Ajax
  • BOF-5661 - Comet: The Rise of Highly Interactive Web Sites
  • BOF-4922 - Writing Real-Time Web Applications, Using Google Web Toolkit and Comet
  • TS-5870 - The Best of Both Worlds with Java™ Business Integration and Service Component Architecture
  • TS-5152 - Overview of the JavaFX Script Programming Language
  • TS-5572 - Groovy, the Red Pill: Metaprogramming--How to Blow the Mind of Developers on the Java Platform
  • TS-5815 - Going Mobile with JavaFX Script Technology, Groovy, and Google Android
  • TS-5535 - Tying Java Technologies Together the RESTful Way
I have probably selected many conflicting sessions, not really an issue since I am not going there. That said, this year again JavaOne looks quite exciting and a lot of content again around Scripting Languages and Framework; Web2.0 related technologies and SOA. 
I hope that I will be there for the 2009 one ;)

Monday, December 10, 2007

Working on a large XML or SOA project: think about "separation of concerns"

With XML and SOA becoming mainstream in the enterprise XML operation such as Schema validations, XSL transformations are now very common. These specific operations are CPU intensive and could become a performance bottleneck when directly applied on the middleware. It could be even worst now when using SOAP based Web Services and their related WS-* standards. For example with WS-Security, XML encryption and signature is now more and more used in SOA based applications.

This is why many enterprise architects are bow looking for solutions to improve performances of XML centric applications.

One of the think we learn when developing application, and that Aspect Oriented Programming has highlighted is the concept of “separation of concerns”. It is key to keep that in mind also in global architecture in our case by separating the XML processing from the business logic. Hopefully it is most of the time done directly by the various Web Services framework you are using, you do not code the SOAP request/response, it is hidden by the Web Services framework.

However, in the current application server, the full XML treatment is made directly in the container, for example the XML Encryption is made in the same container that the place where the pure business logic is executed. So let’s find a solution to extract the most intensive XML processing into another part of the system.

Vendors have now in their catalog appliances that could do the job. The same way that today we are using SSL accelerators to deal with SSL encryption/decryption, we can put XML appliance to deal with the intensive CPU processing operation: XML validations, transformation, Ws-Security enforcing point,...

Architecture Overview
The overall architecture could be represented using the following schema :

The role of the XML/SOA Appliance varies a lot depending of your project:

  • Simple XML firewall to check the validity of the XML/SOAP messages
  • Web Services access control: lookup enterprise directory to check authentication and authorization. This could be based on the WS-Security standards and its various tokens (username, SAML, ...)
  • Content generation and transformation: the appliance can be used to serve various devices for example WAP cell phone or simple HTML Web Client. the XSL transformation is done in a very efficient way in the appliance directly.
  • Services Virtualization : it is possible to route the different messages to various end point depending of simple rules. (business or IT system rules)

As you can see from an architecture point of view, XML appliances are very interesting to distribute the heavy processing of XML to some specific hardware. I have noticed that sometimes developers/architects hesitate to put another piece of hardware/software in their design, but I do think that in this specific case it is probably a good move.

Separating the concern is quite easy and very clean when dealing with XML processing, but also it will allow the overall architecture to be managed in a better way. This kind of appliance will allow administrators to centralize the management of policies, and transformations. But also a side effect of this is the simple fact that when dealing with Web Services, you can easily add WS-* support to many stacks that do not support "them".

XML/SOA Appliances Offering
I have said earlier that vendors are offering such products, here some of the product that I have met or pushed:

What's next?
Some of you would probably raise the fact that the application server, especially when dealing with Web Services, must parse the XML/SOAP request even if this has been done by the appliance. Yes it is true, but I am sure that in a next future the vendors of such solution would optimize it by providing for example support for binary XML, or any other solution that will improve even more the performance of the overall IT in complex enterprise architecture. But for this application server must support binary XML first to avoid proprietary approaches.

Another point of view that I have not talk about is the possible support of such appliance around Web 2.0/Ajax optimization. I have not yet dive into this, but I am sure we can do very interesting things too.

Finally if you have experiences with any XML/SOA appliance feel free to post a comment about it, it will help the readers to see the interest (or not) around this topic.