Alex Antonov

Technical Lead on the Core Frameworks team at Orbitz Worldwide

Alex joined Orbitz LLC 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 Senior 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.

Presentations

Building RESTful ROA Architecture at Orbitz

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: - using Google Protocol Buffers to constitute language neutral contracts - using standard HTTP plumbing and intermediaries - designing a reverse proxy for request routing based on RESTful URLs - establishing OLAs for governance and service isolation - utilizing the power of Spring/Spring MVC to create client/server end-point implementations for handling the request/response

Resource Oriented Architecture using REST

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: - Basic principles of Domain Driven Design - Exposing data and computational results as resources - Benefits of REST/HTTP in testing, caching and resource discovery - Using HTTP intermediaries (such as load balancers and proxies) to achieve overall system scalability and providing OLA's for governance and service isolation

From Java to Ruby and Back

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.