Northern Virginia Software Symposium - April 17 - 19, 2015 - No Fluff Just Stuff

Mark Richards

Northern Virginia Software Symposium

Reston · April 17 - 19, 2015

You are viewing details from a past event
Mark Richards

Independent Software Architect, Author of Fundamentals of Software Architecture

Mark Richards is an experienced, hands-on software architect involved in the architecture, design, and implementation of microservices architectures, service-oriented architectures, and distributed systems. He has been in the software industry since 1983 and has significant experience and expertise in application, integration, and enterprise architecture. Mark is the founder of DeveloperToArchitect.com, a website devoted to helping developers in the journey to software architect. He is the author of numerous technical books and videos, including the recently published Fundamentals of Software Architecture, Microservices AntiPatterns and Pitfalls, Microservices vs. SOA, the Software Architecture Fundamentals video series, The Enterprise Messaging video series, Java Message Service, 2nd Edition, and contributing author to 97 Things Every Software Architect Should Know. Mark has a master’s degree in computer science and is a regular conference speaker at the No Fluff Just Stuff (NFJS) Symposium Series. He has spoken at hundreds of conferences and user groups around the world on a variety of enterprise-related technical topics.

Presentations

Software Development AntiPatterns

The ancient Chinese warrior Sun Tzu taught his men to “know your enemy” before going into battle. For developers, the equivalent is knowing and understanding software development anti-patterns – things that we repeatedly do that produce negative results. Anti-patterns are used by developers, architects and managers every day, and are one of the main factors preventing progress and success. In this humorous and fast-paced session we will take a deep-dive look at some of the more common and significant software development anti-patterns. Through coding and design examples you will see how these anti-patterns emerge, how to recognize when an anti-pattern is being used, and most importantly, learn how to avoid them through effective software development techniques and practices. Although most of the coding examples are in Java, this is largely a technology-agnostic session.

Architectural Modularity

It seems like all we talk about these days is making our architectures more modular. Buy why? In this session I will discuss the drivers and reasons why it is essential to move towards a level of modularity in our architectures. I will discuss and show real-world use cases of distributed modular architectures (specifically microservices and service-based architecture), and then discuss in detail the core differences between microservices and service-based architecture and when you should consider each. I'll end the talk by discussing the most effective way of migrating to modular distributed architectures.

The Soft Skills of Architecture Part 1

Being a software architect is a tough job. Not only do you have to have significant technical depth and breadth, but you also need to understand the business domain you are working in. While these aspects are important, there is another perhaps more vital aspect of being an architect - the soft skills. Too many architects fail to realize the importance of soft skills, and as a result do not achieve success in their career as an architect. In this two-part session I will focus on the soft skills of architecture. In part one I will cover skills related to techniques such as architecture decisions, architecture refactoring, and communicating your software architecture through diagrams, documentation, and presentation.

Architectural Thinking

Many of you may have an architect title, take on the role of an architect, or even aspire to be an architect, but are you thinking like an architect? Architectural thinking is learning to look at a problem or task from an architect's point of view. In this session we will look at many facets of architectural thinking, including how requirements shape the architecture, component-based thinking, how to make architecture decisions, and what feasibility and vitality means to an architect.

Architecture Patterns

Just as developers use design patterns in software development, architects use well-defined architecture patterns to get a head start on defining the characteristics and shape of the architecture for a system. In this session we will explore some of the more common architecture patterns and use concrete real-world examples to demonstrate how the patterns work. I will also go over the pros and cons of each pattern and discuss how requirements and operational aspects can drive which patterns to use. Using the right architecture pattern for your system is critical, because as we all know, once in place the architecture is very hard to change.

Enterprise Messaging Part 1

With distributed and reactive architecture styles on the rise, it is more important than ever to understand the underlying technologies that are used to implement these styles. Messaging is one such typical and popular technology used to integrate components within a distributed architecture. In the first part of this two-part session I will start out with a short discussion of where we are in messaging today, then move on to a deep dive of request/reply messaging and publish and subscribe messaging. Through live coding using both JMS 1.1 and JMS 2.0 I will show you several techniques for sending a message to a consumer and waiting for the response, as well as the many types of pub/sub subscribers and why you would want to use each. This is a very code-intensive session, so if you want to follow along be sure and have ActiveMQ and OpenMQ (for JMS 2.0) installed on your laptop prior to the session.

Enterprise Messaging Part 2

With distributed and reactive architecture styles on the rise, it is more important than ever to understand the underlying technologies that are used to implement these styles. Messaging is one such typical and popular technology used to integrate components within a distributed architecture. In the second part of this two-part session I will show you some useful messaging techniques that solve more advanced enterprise problems. I will start out by showing you how to use embedded messaging within your application and the reasons why you might want to use it. I will then demonstrate through live coding the various techniques for message streaming, which is useful for sending images, documents, and even video through messaging. Finally, I will discuss some design considerations when building out your messaging infrastructure. This is a very code-intensive session, so if you want to follow along be sure and have ActiveMQ and OpenMQ (for JMS 2.0) installed on your laptop prior to the session.