Alex has joined Orbitz in 2004 and is responsible for providing technical leadership and guidance in the development of foundational technologies, core libraries and APIs for the enterprise-wide use, as well as establishing and maintaining common design principles and standards used within the company and integration of new software development practices within the development community.
Previously Alex was a Lead Engineer on the same team responsible for web application frameworks and developing common practices and additional functionality on top of Spring MVC & Webflow.
Alex is a graduate of Loyola University of Chicago, with a B.S. in Computer Science and M.S. in Computer Science specializing in Software Architecture. He currently resides in Evanston, IL and when not coding, Alex enjoys playing tennis, hiking, skiing, and traveling.
The presentation will cover different types of application configuration, their lifecycle and management. The audience will learn about approaches on how to separate the configuration API from consumption and provisioning. The benefits that can be achieved from a well defined API providing ease of development, nice IDE support, type handling and true data objects, while maintaining the flexibility of being able to retrieve configuration from different sources and in different formats. They will learn about supporting different data stores, such as CouchDB, flat files, remote services and file repositories, as well as supporting different file formats like XML, JSON, Protobuf binary, etc.
The talk will cover some aspects of data modeling and design to best describe the configuration domain and support its ongoing evolution. A code demo will demonstrate an example of a system with a defined configuration data model represented via Protocol Buffers Model API, using multiple data providers consisting of data fetched from CouchDB, local files and remote RESTful services and being stored in multiple formats (JSON, XML, Protobuf binary).
The audience will be presented with a number of open source technologies that would enable building different layers of a multi-tier system.
We would look at various choices of foundational technologies like Spring and Google Guice, explore various options for the Web application containers and MVC frameworks, caching and distributed data store (NoSQL) solutions and cover some aspects of application monitoring and deployment.
In the beginning Orbitz had a Jini based distributed system. The system design provided easy scalability and stability, but at the cost of tight coupling because of many shared modules and components, as well as Java serialization rules. In order to improve cohesion between individual services the decision has been made to migrate to a RESTful web services architecture. The new design is based on Google Protocol Buffers to define message formats and Spring/Spring MVC to handle client-server interaction. This resulted in a loosely coupled federation of services, each with its individual release and deployment schedule, which enabled more developer innovation and easier access to more data in a uniform fashion.
The audience will be shown how to deal with Google Protocol Buffers, how to define and consume the messages, how to implement the client and the server sides using Spring and Spring MVC.
What you will get from this session:
A presentation demoing clients and services written in different languages (Java & Ruby), demonstrating technologies that enable distributed systems to span languages and provide an automated way of returning alternative data representations (like XML, JSON, Protobuf, etc.) for different clients, while using the same backing data.
The audience will be shown in detail how to design and build a 3-tiered system consisting of a data store, a mid-tier and a webapp, all using different languages for the implementation, a Google Protocol Buffers as a data format and a RESTful based means of communication between the systems.
The data store will be represented by a CouchDB storing JSON documents which would be consumed by a Java mid-tier processing application over HTTP using Protocol Buffers, as a data definition, sending the results to a Rails webapp, all without special handling and manual format transformation, relying purely on the Protocol Buffers ability to handle different format representations as well as variant structure on different ends.
A presentation explaining the building blocks necessary to build a distributed system using RESTful-style resource definition as well as benefits of using REST as they apply to testing, data caching, predictable resource discovery and transparent future system evolution
The audience will be walked through the principles of RESTful-style resource definition design as well as the pitfalls and the conventions to watch for and abide by. The ease and simplicity of writing service tests, mocking external service dependencies as well as extending the system by introducing various caching and data routing intermediaries will be discussed in great detail.
What you will get from this session: