Hands-on SOA, Enterprise, and Integration Architect, Independent Consultant, Published Author, Conference Speaker
Last Updated: May 15th, 2012

   





Profile Summary
I am a hands-on SOA, Enterprise, and Integration Architect passionate about the field of enterprise and software architecture. Having served in the IT industry since 1984, I have significant experience in the architecture and design of small to large systems on a wide range of languages and platforms. I have particular expertise in event-driven architecture, service-oriented architecture, messaging systems, and enterprise service bus technologies. I served as the President of the Boston Java User Group in 1997 and 1998, and the President of the New England Java Users Group from 1999 thru 2003. I am the author of several technical books, I hold several technical certifications, and have a Masters Degree in Computer Science from Boston University. I have spoken at over 100 technical conferences worldwide, including the No Fluff Just Stuff (NFJS) Symposium Conferences, QCon London, JDD Krakow, SpringOne Americas, TSSJS Vegas and Sys-Con NY.


Expertise
- SOA and Integration Architecture
- Enterprise Architecture
- Application Architecture
- Iterative and Agile Methodologies
- Agile Coaching
- Architecture Assessment and Roadmap Development
- ESB Design and Development
- Training, Teaching, Coaching, and Mentoring
- Java Platform and Open Source Technologies
- Hands-on Pragmatic Software Delivery


Recent Experience Summary
Worked with the EA team of a large investment firm to develop a new future state architecture for their trading compliance and regulatory reporting systems. Also involved as a hands-on architect in the design and development of a new trading system compliance engine used to detect combined trade orders.
Worked directly with the Product Manager and development teams of a large financial services product company to analyze their current agile software processes and suggest and implement improvements to help the company meet their target release dates and improve overall time-to-market.
Worked with the CFO and CIO of a retail company to help them design and establish a new integration architecture to provide better and more seamless integration throughout the business and to also better communicate with internal and external vendors.
Worked with the CIO and CTO of a large retailer to help them transition to a large-scale open source SOA infrastructure to manage all of their integrated warehouse, order, and inventory management functions.
Worked directly with the CIO of a large financial services firm to develop an enterprise architecture strategy and roadmap to transform the IT and infrastructure departments to become more agile to support the demands of the existing and prospective customer base and emerging market.
Worked directly with the CIO of a major insurance company to develop a large-scale enterprise reference architecture solution based on TOGAF (The Open Group Architecture Framework).
Worked with upper-level management of a large financial institution to develop a transition roadmap and systems architecture for a large-scale SOA modernization/legacy transformation effort to create a consolidated global custody and trade settlement system.
Worked with the Director of Infrastructure at a large financial institution to help define a high availability SOA middleware infrastructure as part of an effort to replace a global financial analysis system.
Worked with the Senior Vice President of a major investment company to transform the global front and back office trading systems to a future state architecture to allow better control over the data and information flow throughout the organization.
Worked with the Senior Vice President of a large investment firm on a detailed technology assessment of the firm's institutional back-office trading systems, including allocation systems, settlement systems, and accounting systems.
Worked directly with the CIO of a large insurance company to develop a large-scale SOA-based Enterprise Architecture (SOEA) to replace their existing heterogeneous home-grown systems.



Published Books
Java Message Service, 2nd Edition (Author)
(O'Reilly, 2009)

A near-complete rewrite of the first edition published in 2000. Provides a thorough explanation of point-to-point and publish-and-subscribe messaging, including chapters on Spring Messaging, EJB 3.0 Message Driven Beans, performance techniques, and messaging design considerations.
 
97 Things Every Software Architect Should Know (Contributing Author)
(O'Reilly, 2009)

Contributing Chapters include Communication is King; Clarity and Leadership its Humble Servants, Architectural Tradeoffs, Understand the Business Domain, and Talk the Talk
 
Java Transaction Design Strategies (Author)
(C4Media Press, 2006)

A comprehensive and concise guide on how to use transactions on the Java platform, with examples in Spring, EJB 2.1, and EJB 3.0. Included is a complete explanation of the local, programmatic, and declarative transaction models, XA transactions, and transaction design patterns.
 
NFJS Anthology Volume 2 (Contributing Author)
(Pragmatic Programmer, 2007)

Contributing Chapter on Introducing the iBATIS Persistence Framework, where I provide an introduction to the iBATIS persistence framework, complete with coding examples.
 
NFJS Anthology Volume 1 (Contributing Author)
(Pragmatic Programmer, 2006)

Contributing Chapter on Process Choreography and the Enterprise Service Bus, where I discuss and demonstrate the relationship between the primary functions of an ESB and Process Choreography and recommendations on how the two should interact together.
 
Coding Standards For Java (Contributing Author)
(New England Java User Group Standards SIG, 2002)

Initiated the SIG and book concept while president of the New England Java Users Group. Contributed to various sections of the book and assisted with editing and final publication.



Published Articles and Research Papers

Richards, Mark, NFJS Magazine, November 2011 "High Performance Messaging"
http://www.nofluffjuststuff.com/m/magazine/index.jsp
PDF Download
As Woody Allen once said "It is impossible to travel faster than the speed of light, and certainly not desirable, as one's hat keeps blowing off". While messages traveling through your system may never quite reach the speed of light, you could certainly make them travel fast. In this article I explore four simple techniques that will increase the speed and throughput of your messaging system through relatively minor changes in your messaging infrastructure.

Richards, Mark, NFJS Magazine, May 2011 "Understanding the Difference Between AMQP and JMS"
http://www.nofluffjuststuff.com/m/magazine/index.jsp
PDF Download
As the Advanced Message Queuing Protocol (AMQP) specification matures and robust AMQP implementations such as RabbitMQ become more popular, you cant help but wonder whether you should jump on the bandwagon and use AMQP instead of Java Message Service (JMS) as your messaging standard. Understanding the differences between AMQP and JMS is a great way of understanding what AMQP is and whether you should use it. In this article I will describe AMQP through a comparison of the AMQP specification and the ever-popular JMS specification.

Richards, Mark, NFJS Magazine, July 2010 "The Secret to Building Highly Available Systems"
http://www.nofluffjuststuff.com/m/magazine/index.jsp
PDF Download
In this article you will learn why businesses are seeking the high availability grail and what high availability really means. You will learn the various topologies that support high and continuous availability, and also learn how to accurately calculate system availability. Most importantly, though, you will learn the secret to building highly available systems.

Richards, Mark, NFJS Magazine, September 2009 "The Art of Messaging"
http://www.nofluffjuststuff.com/m/magazine/index.jsp
PDF Download
Once you learn the Java Message Service (JMS) API and understand the basic configuration settings of your messaging provider, its time to apply that knowledge towards designing efficient and robust messaging systems. This article will help steer you in the right direction and teach you how to avoid some of the more common pitfalls associated with messaging.

Richards, Mark, NFJS Magazine, March 2009 "Message Driven POJOs - Messaging Made Easy"
http://www.nofluffjuststuff.com/m/magazine/index.jsp
PDF Download
Spring provides a simple yet powerful messaging framework for receiving and sending messages. In this article I will demonstrate how to develop messaging-based applications using message-driven POJOs (MDPs) and describe some ways to use them in messaging-based applications. Given that no framework is entirely perfect, I will also discuss some of the limitations with MDPs and how to get around them

InfoQ JMS Interview: Interview and Book Excerpt: Mark Richards' Java Message Service 2nd Edition
http://www.infoq.com/articles/richards-jms2
Interview and book excerpt by Srini Penchikala from InfoQ for my Java Message Service, 2nd Edition book published in May 2009.

 

Richards, Mark, June 2009, IBM DeveloperWorks, "Transaction Strategies: The High Performance Strategy"
http://www.ibm.com/developerworks/java/library/j-ts6/index.html
Transactions are necessary to ensure a high degree of data integrity and consistency. But transactions are also expensive; they consume valuable resources and can slow down an application. When you have a high-speed application for which every millisecond counts, you can maintain ACID (atomicity, consistency, isolation, and durability) properties to some extent by implementing the High Performance transaction strategy.

 

Richards, Mark, June 2009, IBM DeveloperWorks, "Transaction Strategies: The High Concurrency Strategy"
http://www.ibm.com/developerworks/java/library/j-ts5/index.html
There may be times when you need to reduce a transaction's scope to gain throughput, improve performance, and increase concurrency in the database. How do you do this and still maintain a high level of data integrity and consistency? The answer is to use the High Concurrency transaction strategy.

 

Richards, Mark, May 2009, IBM DeveloperWorks, "Transaction Strategies: The Client Orchestration Strategy"
http://www.ibm.com/developerworks/java/library/j-ts4/index.html
Sometimes an application's presentation layer must handle the coordination of multiple API layer method calls to complete a single transactional unit of work. In this article, I describe the Client Orchestration transaction strategy and explains how to implement it in the Java platform.

 

Richards, Mark, April 2009, IBM DeveloperWorks, "Transaction Strategies: The API Layer Strategy"
http://www.ibm.com/developerworks/java/library/j-ts3/index.html
An effective and robust transaction strategy is critical for maintaining data consistency and integrity. The API Layer transaction strategy is easy to implement and is well-suited for most business applications. Using examples from the Enterprise JavaBeans (EJB) 3.0 specification, I explain what this transaction strategy is and how to implement it in the Java platform.

 

Richards, Mark, March 2009, IBM DeveloperWorks, "Models and Strategies Overview"
http://www.ibm.com/developerworks/java/library/j-ts2.html
It's a common mistake to confuse transaction models with transaction strategies. This second article in the Transaction strategies series outlines the three transaction models supported by the Java platform and introduces four primary transaction strategies that use those models. Using examples from the Spring Framework and the Enterprise JavaBeans (EJB) 3.0 specification, I explain how the transaction models work and how they can form the basis for developing transaction strategies ranging from basic transaction processing to high-speed transaction-processing systems.

 

Richards, Mark, February 2009, IBM DeveloperWorks, "Understanding Transaction Pitfalls"
http://www.ibm.com/developerworks/java/library/j-ts1.html
Transaction processing should achieve a high degree of data integrity and consistency. This article, the first in a series on developing an effective transaction strategy for the Java platform, introduces common transaction pitfalls that can prevent you from reaching this goal. Using code examples from the Spring Framework and the Enterprise JavaBeans (EJB) 3.0 specification, I explain these all-too-common mistakes.

 
 

Richards, Mark, October 2008, SOA World, "Creating an Effective SOA Service Taxonomy"
http://soa.sys-con.com/node/738704
PDF Version of Article
Despite the increased knowledge and awareness of SOA, many SOA-based initiatives still struggle to get off the ground or even fail altogether. One of the many reasons for this is a lack of proper understanding and definition of what is meant by a "service" in the context of SOA. The challenge within SOA is that there are in fact many types of services. Developing a clear and effective SOA service taxonomy is crucial for any SOA initiative. This article will discuss the basic types of services used within SOA and how to build an effective service taxonomy.

 

Howell, S.B., Richards, W.M., Barden, S.C., Bopp, B.W., 1986, PASP, 98, p.777, "EZ Pegasi: The Last Pieces of the Puzzle"
http://adsabs.harvard.edu/abs/1986PASP...98..777H
Publication based on the research paper "On the Nature of the RS Canum Venaticorum Binary -- EZ Pegasi", Howell, S.B., Richards, W.M., Barden, S.C., Bopp, B.W., Originally published under incorrect name W.M. Williams, later corrected to W.M. Richards, published in the Publications of the Astronomical Society of the Pacific (PASP ISSN 0004-6280) Volume 98 and archived in the NASA Astrophysical Data System. This publication provides conclusive evidence of the orbital and photometric period of the cataclysmic variable star EZ Pegasi through photometric observations taken while working at Braeside Observatory through NSF Grant AST 81-15098.





Speaking Engagements
I have spoken at over 80 technical conferences worldwide since 2004 on a wide range of technical topics including agile architecture, SOA, enterprise service bus, messaging, Apache Camel, distributed transaction processing, EJB 3.0, Java Persistence API (JPA), iBATIS, continuous availability, and Anti-Patterns. Almost all of my talks involve hands-on coding using real-world examples.




Conferences Speaking Engagements 2012

  Twin Cities Software Symposium (Minneapolis, March 2012)
  New England Spring Software Symposium (Boston, March 2012)
  Gateway Software Symposium (St. Louis, April 2012)
  Northern Virginia Software Symposium (D.C, April 2012)
  New York Software Symposium (New York City, May 2012)
  New Hampshire Java Users Group (Portsmouth, May 2012)
  Lone Star Software Symposium (Dallas, May 2012)
  UberConf (Denver, June 2012)
  Greater Maryland Software Symposium (Columbia, July 2012)
  Pacific Northwest Software Symposium (Seattle, September 2012)
  New England Fall Software Symposium (Boston, September 2012)
  Northern Virginia Software Symposium (D.C., October 2012)
  Great Lakes Software Symposium (Chicago, November 2012)
   
  Topics:
     Integration Architecture: Concepts and Patterns
     AMQP: From Concept to Code
     Know Your Enemy: Understanding AntiPatterns
     High Performance Messaging
     Enterprise Architecture Workshop
     The Art of Problem Solving
     Understanding Enterprise Architecture
     FDD: Doing Agile in a Waterfall World
   



Conferences Speaking Engagements 2011

  Research Triangle Software Symposium (Raleigh, August 2011)
  New England Software Symposium (Boston, Sept 2011)
  Pacific Northwest Software Symposium (Seattle, Sept 2011)
  Northern Virginia Software Symposium (D.C, Nov 2011)
  Great Lakes Software Symposium (Chicago, Nov 2011)
  Rocky Mountain Software Symposium (Denver, Nov 2011)
   
  Topics:
     AMQP: From Concept to Code (Part 1)
     AMQP: From Concept to Code (Part 2)
     FDD: Doing Agile in a Waterfall World
     The Art of Problem Solving
     Understanding Enterprise Architecture
     Using Enterprise Integration Patterns
   


Conferences Speaking Engagements 2010

  New England Software Symposium (March 2010)
  Greater Florida Software Symposium (April 2010)
  UberConf (June 2010)
  New England Software Symposium (September 2010)
  Northern Virginia Software Symposium (November 2010)
  Great Lakes Software Symposium (November 2010)
   
  Topics:
     Intro to Messaging and ActiveMQ
     The Art of Messaging
     Intro to Apache Camel
     Common AntiPatterns and Ways To Avoid Them
   


Conferences Speaking Engagements 2009

  New England Java Users Group (January 2009)
  Greater Wisconsin Software Symposium (February 2009)
  Gateway Software Symposium (March 2009)
  QCon London (March 2009)
  New England Software Symposium (March 2009)
  Northern Virginia Software Symposium (April 2009)
  Greater Atlanta Software Symposium (May 2009)
  Desert Southwest Software Symposium (July 2009)
  New England Java Users Group (Sept 2009)
  New England Software Symposium (Sept 2009)
  Pacific Northwest Software Symposium (Sept 2009)
  Java Developers Day, Krakow, Poland (Oct 2009)
  COOLuary UnConference, Krakow, Poland (Oct 2009)
  Greater Atlanta Software Symposium (Oct 2009)
  Northern Virginia Software Symposium (Nov 2009)
  Great Lakes Software Symposium (Nov 2009)
   
  Topics:
     The Art of Messaging
     Common AntiPatterns and Ways To Avoid Them
     The Reality of Continuous Availability
     On Being a Software Architect
     Advanced Topics in JMS
     Introduction to JMS
     Spring and JMS: Message Driven POJOs
     Transaction Pitfalls and Strategies
   


Conferences Speaking Engagements 2008

  Gateway Software Symposium (March 2008)
  Twin Cities Software Symposium (March 2008)
  New England Software Symposium (April 2008)
  Great Lakes Software Symposium (April 2008)
  Northern Virginia Software Symposium (April 2008)
  Greater Montreal Software Symposium (May 2008)
  Lone Star Software Symposium (June 2008)
  Greater Oregon Software Symposium (June 2008)
  Greater Wisconsin Software Symposium (August 2008)
  Atlantic Northeast Software Symposium (August 2008)
  New England Software Symposium (September 2008)
  Pacific Northwest Software Symposium (September 2008)
  Western Canada Software Symposium (September 2008)
  Greater Toronto Software Symposium (October 2008)
  Greater Atlanta Software Symposium (October 2008)
  Northern Virginia Software Symposium (November 2008)
  Great Lakes Software Symposium (November 2008)
  SpringOne Americas (December 2008)
   
  Topics:
     Spring and JMS: Message Driven POJOs
     SOA Unplugged
     Enterprise Messaging Using JMS
     Java Persistence: Approaching the Silver Bullet
     Transaction Design Patterns
     Making Architecture Work Through Agility
   


Conferences Speaking Engagements 2007

  Greater Wisconsin Software Symposium (March 2007)
  New England Software Symposium (March 2007)
  Gateway Software Symposium (March 2007)
  TheServerSide Java Symposium Las Vegas (March 2007)
  Greater Oregon Software Symposium (April 2007)
  Northern Virginia Software Symposium (April 2007)
  Rocky Mountain Software Symposium (May 2007)
  Research Triangle Software Symposium (July 2007)
  SYS-CON Real World Java Conference New York (August 2007)
  Central Florida Software Symposium (August 2007)
  New England Software Symposium (September 2007)
  Pacific Northwest Software Symposium (September 2007)
  Greater Toronto Software Symposium (October 2007)
  Northern Virginia Java User Group (October 2007)
  Great Lakes Software Symposium (November 2007)
   
  Topics:
     Making The Right Persistence Framework Choice
     The Enterprise Service Bus: Do We Really Need It?
     EJB 3.0 Core Specification (JSR-220)
     Intro to Java Persistence API (JPA)
     Advanced Java Persistence API (JPA)
     Techniques in Architecture Agility
     Introducing the iBATIS Persistence Framework
   


Conferences Speaking Engagements 2006

  New England Software Symposium (March 2006))
  Boston WebSphere Users Group (March 2006)
  Northern Virginia Software Symposium (April 2006)
  Central Ohio Software Symposium (May 2006)
  Research Triangle Software Symposium (June 2006)
  Southern Ohio Software Symposium (August 2006)
  New York Software Symposium (August 2006)
  New England Software Symposium (September 2006)
  New England Java Users Group (September 2006)
  Greater Toronto Software Symposium (October 2006)
  Northern Virginia Software Symposium (November 2006)
  The Spring Experience Conference (December 2006)
   
  Topics:
     The Enterprise Service Bus: Do We Really Need It?
     EJB 3.0 Core Specification (JSR-220)
     Intro to Java Persistence API (JPA)
     Advanced Java Persistence API (JPA)
     Techniques in Architecture Agility
     Introducing the iBATIS Persistence Framework
     Effective Java Persistence Using Spring and iBATIS
   


Conferences Speaking Engagements 2005

  Atlantic Northeast Software Symposium (March 2005)
  New England Software Symposium (April 2005)
  Rocky Mountain Software Symposium (May 2005)
  Northern Virginia Software Symposium (May 2005)
  Central Ohio Software Symposium (June 2005)
  Research Triangle Software Symposium (June 2005)
  New York Software Symposium (July 2005)
  New England Software Symposium (September 2005)
  Pacific Northwest Software Symposium (October 2005)
  Northern Virginia Software Symposium (October 2005)
   
  Topics:
     Understanding the Role of an ESB
     Java EE Command Pattern Architecture
     Java Transaction Management Part 1: Core Concepts
     Java Transaction Management Part 2: Advanced Concepts
     Hibernate and J2EE Transaction Integration
     A Pragmatic Look at Agile Architecture
   


Conferences Speaking Engagements 2004

  New England Software Symposium (April 2004)
  Salt Lake Software Symposium (September 2004)
  Pacific Northwest Software Symposium (October 2004)
  New England Software Symposium (October 2004)
  Northern Virginia Software Symposium (November 2004)
   
  Topics:
     Java Transaction Management
     Hibernate and J2EE Transaction Integration
     Data Driven Testing
   




Podcasts and Videocasts
 

Videocast: iBatis vs. Hibernate
In this videocast recorded in early 2007 I briefly discuss the major differences between iBatis and Hibernate and what the implications are of using each as your Java persistance framework

Videocast: Java EE Command Pattern Architecture
This videocast is a recording (with slides) of my 2006 NFJS conference session on Command Pattern Architecture.

The Role of the Enterprise Service Bus
In this 2005 NFJS Conference videocast (with slides) I go over what an ESB is, its role, what capabilities it provides, and the various ways an ESB can be implemented. I take a close look at the JBI specification (JSR-208) and explain what impact it will have with the ESB world. This session will teach you how to determine your own specific requirements for an ESB and then match these requirements to the product space.

Videocast: How Do You deal With SOA?
In this 2006 videocast Neal Ford and I talk about some of the issues surrounding SOA.

The Enterprise Service Bus: Do We Really Need It?
In this podcast I discuss a few of the topics I will be covering in my ESB Session at the 2007 TSS Java Symposium and NFJS Software Symposium Sessions

FDD and Agile Architecture
2005 Interview with Bob Payne from the Agile Toolkit on Feature Driven Development and Agile Architecture.





Certifications
  The Open Group Master IT Architect Certification
  IBM Certified IT Architect
  Sun Certified J2EE Business Component Developer
  Sun Certified J2EE Enterprise Architect (I)
  Sun Certified Java Programmer
  BEA WebLogic Certified Developer
  GR Certified Java Instructor