• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
"Fast but not Loose" -- Typesafe client/server architecture at Gilt Groupe
 

"Fast but not Loose" -- Typesafe client/server architecture at Gilt Groupe

on

  • 820 views

This is a talk about the evolution of Gilt's SOA stack, from Ruby to type-unsafe Java with hashmaps, to a full-blown typesafe, futures-based Scala API.

This is a talk about the evolution of Gilt's SOA stack, from Ruby to type-unsafe Java with hashmaps, to a full-blown typesafe, futures-based Scala API.

Statistics

Views

Total Views
820
Views on SlideShare
809
Embed Views
11

Actions

Likes
2
Downloads
6
Comments
0

4 Embeds 11

http://www.linkedin.com 8
http://www.tumblr.com 1
http://tech.gilt.com 1
https://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    "Fast but not Loose" -- Typesafe client/server architecture at Gilt Groupe "Fast but not Loose" -- Typesafe client/server architecture at Gilt Groupe Presentation Transcript

    • Fast but Not Loose: Typesafe Clients in a Distributed Service Architecture, a retrospective #gotocon #gotoaar #gilttech Eric Bowman VP Architecture @ Gilt Groupe Monday, September 30, 13 @ebowman ebowman@gilt.com
    • Monday, September 30, 13
    • Monday, September 30, 13
    • •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout •Jersey •SBT •Docker •Continuous Delivery Microservices Monday, September 30, 13
    • http://upload.wikimedia.org/wikipedia/commons/1/16/Ruby_on_Rails-logo.png http://wiki.postgresql.org/wiki/File:PostgreSQL_logo.3colors.svg Monday, September 30, 13
    • http://logonoid.com/images/thumbs/christian-louboutin-logo.jpg Monday, September 30, 13
    • http://data.iluxdb.com/data/christian-louboutin-daffodile-160mm-python-masai-1130127cm09_001.jpg?dd80c0 Monday, September 30, 13
    • http://upload.wikimedia.org/wikipedia/commons/7/79/Operation_Upshot-Knothole_-_Badger_001.jpg Monday, September 30, 13
    • Monday, September 30, 13
    • Monday, September 30, 13
    • Monday, September 30, 13
    • Monday, September 30, 13
    • Monday, September 30, 13
    • Monday, September 30, 13
    • Monday, September 30, 13
    • http://blog.verwilst.be/wp-content/uploads/2008/12/java.gif Monday, September 30, 13
    • swift user_service Monday, September 30, 13 order_service payment_service product_service cart_service pagegen
    • http://megmurph.com/wp-content/uploads/2013/03/success-1.jpg Monday, September 30, 13
    • Service X Front End Service Y Service Z Monday, September 30, 13
    • Service X Front End Service Y Service Z Monday, September 30, 13
    • Content from Service X Service X Service Y Content from Service Y Service Z Monday, September 30, 13 Content from Z Front End
    • Front-End Tier Service Tier Data Tier Monday, September 30, 13
    • Front-End Tier Service Tier Data Tier Monday, September 30, 13 Caching Light Computation Orchestration
    • Front-End Tier Caching Light Computation Orchestration Service Tier Caching Heavier Computation Separation of Concerns Data Tier Monday, September 30, 13
    • Front-End Tier Service Tier Caching Heavier Computation Separation of Concerns Data Tier Monday, September 30, 13 Caching Light Computation Orchestration Data Access (Disk/SSD/RAM)
    • Front-End Tier Caching Light Computation Orchestration Service Tier Caching Heavier Computation Separation of Concerns Data Tier Data Access (Disk/SSD/RAM) •Runtime Temperature •Development Temperature Monday, September 30, 13
    • Service Data Source JDBC ➾ HashMap ➾ JSON Front End JSON ➾ HashMap ➾ JSON Javascript Application http://gilt.com Monday, September 30, 13
    • Service Data Source JDBC ➾ HashMap ➾ JSON Front End JSON ➾ HashMap ➾ JSON Javascript Application http://gilt.com Chaos Grows Quickly Monday, September 30, 13
    • Front End Service Data Source JDBC ➾ HashMap ➾ JSON JSON ➾ HashMap ➾ JSON Service Data Source JDBC ➾ HashMap ➾ JSON JSON ➾ HashMap ➾ JSON Javascript Application http://gilt.com Service Data Source Monday, September 30, 13 JDBC ➾ HashMap ➾ JSON JSON ➾ HashMap ➾ JSON
    • Front End Service Data Source Service JSON ➾ HashMap ➾ JSON JDBC ➾ HashMap ➾ JSON JSON ➾ HashMap ➾ JSON Service JSON ➾ HashMap ➾ JSON Data Source JSON ➾ HashMap ➾ JSON Javascript Application JDBC ➾ HashMap ➾ JSON http://gilt.com Service Data Source Monday, September 30, 13 JDBC ➾ HashMap ➾ JSON JSON ➾ HashMap ➾ JSON
    • http://www.recruitmenttakeout.com/wp-content/uploads/2013/04/brian.png Monday, September 30, 13
    • •Fast •Service Decomposition •Implicit core model was good Monday, September 30, 13
    • •Org Scaling •APIs •Implicit core model was ... implicit Monday, September 30, 13
    • A data model and APIs for services Monday, September 30, 13
    • A data model and APIs for services (aka, RPC) Monday, September 30, 13
    • core service core service core service core service Legacy http://git-scm.com/images/logos/downloads/Git-Logo-2Color.png Monday, September 30, 13
    • core service commons.jar core service core service core service Legacy http://git-scm.com/images/logos/downloads/Git-Logo-2Color.png Monday, September 30, 13 core clients core data model async client framework Greenfield
    • core service commons.jar core service core service core service Legacy http://git-scm.com/images/logos/downloads/Git-Logo-2Color.png Monday, September 30, 13 core clients core data model async client framework Greenfield •Users •Sales •Products •Skus •Assets •Targeting •Auth
    • service client core Monday, September 30, 13
    • service client core Monday, September 30, 13 •RESTful •Scala clients •All APIs futures-based •Case class schema
    • service client core Compile/Runtime Dependency client core Monday, September 30, 13 service
    • Consumer Client Core “Embassy Soil” Monday, September 30, 13 Service Core
    • Consumer Client Core Service Core •Easy functional testing •Service response capture •Test linking •Upgradable •Emergent Regression •Automated upgrades •Compile farmers Monday, September 30, 13
    • Consumer Client Core Monday, September 30, 13 Service Core
    • Consumer Client Core Service Core •Environment ⊕ Config •Live updates •Indirection •Circuit Breaker Monday, September 30, 13
    • Monday, September 30, 13
    • “All of this is completely wrong.”* *Not an actual quote Monday, September 30, 13
    • 1.The network is reliable 2.Latency is zero 3.Bandwidth is infinite 4.The network is secure 5.Topology doesn't change 6.There is one administrator 7.Transport cost is zero 8.The network is homogeneous https://blogs.oracle.com/jag/resource/Fallacies.html Monday, September 30, 13
    • 1.The network is reliable https://blogs.oracle.com/jag/resource/Fallacies.html Monday, September 30, 13
    • d e v 1.The network islreliable o s e R https://blogs.oracle.com/jag/resource/Fallacies.html Monday, September 30, 13
    • 2.Latency is zero https://blogs.oracle.com/jag/resource/Fallacies.html Monday, September 30, 13
    • d e v l 2.Latency is zero o s e R https://blogs.oracle.com/jag/resource/Fallacies.html Monday, September 30, 13
    • 3.Bandwidth is infinite https://blogs.oracle.com/jag/resource/Fallacies.html Monday, September 30, 13
    • d e v l 3.Bandwidth is infinite o s e R https://blogs.oracle.com/jag/resource/Fallacies.html Monday, September 30, 13
    • 4.The network is secure https://blogs.oracle.com/jag/resource/Fallacies.html Monday, September 30, 13
    • d e v 4.The network islsecure o s e R https://blogs.oracle.com/jag/resource/Fallacies.html Monday, September 30, 13
    • 5.Topology doesn't change https://blogs.oracle.com/jag/resource/Fallacies.html Monday, September 30, 13
    • d e v change l 5.Topology doesn't o s e R https://blogs.oracle.com/jag/resource/Fallacies.html Monday, September 30, 13
    • 6.There is one administrator https://blogs.oracle.com/jag/resource/Fallacies.html Monday, September 30, 13
    • d e v l 6.There is one administrator o s e R https://blogs.oracle.com/jag/resource/Fallacies.html Monday, September 30, 13
    • 7.Transport cost is zero https://blogs.oracle.com/jag/resource/Fallacies.html Monday, September 30, 13
    • d e v zero 7.Transport costlis o s e R https://blogs.oracle.com/jag/resource/Fallacies.html Monday, September 30, 13
    • 8.The network is homogeneous https://blogs.oracle.com/jag/resource/Fallacies.html Monday, September 30, 13
    • d e v 8.The network islhomogeneous o s e R https://blogs.oracle.com/jag/resource/Fallacies.html Monday, September 30, 13
    • “Still Wrong.”* *Possibly an actual quote Monday, September 30, 13
    • Convenience Over Correctness http://steve.vinoski.net/blog/2008/07/01/convenience-over-correctness/ Monday, September 30, 13
    • Public Data Model Client Layer Client Data Model Client Backend Client/Server Serialization Model Service Frontend Service Model Service Backend Database Model Database Monday, September 30, 13
    • Public Data Model Client Layer Client Data Model Client Backend Client/Server Serialization Model Service Frontend Service Model Service Backend Database Model Database Monday, September 30, 13 •So many models •Corners are cut •Typesafe helps •Conflation? •Just the data
    • Public Data Model Client Layer Client Data Model Client Backend Client/Server Serialization Model Service Frontend Service Model Service Backend Database Model •So many models •Corners are cut •Typesafe helps •Conflation? •Just the data Database “Works in Practice for some use cases” Monday, September 30, 13
    • Public Data Model Client Layer Client Data Model Client Backend Client/Server Serialization Model Service Frontend Service Model Service Backend Database Model •So many models •Corners are cut •Typesafe helps •Conflation? •Just the data Database “Works in Practice for some use cases” “No free silver bullet lunches.” Monday, September 30, 13
    • However... Monday, September 30, 13
    • However... •No machine generated stubs •Embassy-Oriented Programming •Lots of indirection •Type-system support for failures Monday, September 30, 13
    • What Actually Sucks about RPC: Monday, September 30, 13
    • What Actually Sucks about RPC: •Remote objects •Failures •Idempotency Monday, September 30, 13
    • Ignoring all that was Too Easy. Monday, September 30, 13
    • Monday, September 30, 13
    • Batch Jobs Monday, September 30, 13
    • 1.The network is reliable 2.Latency is zero 3.Bandwidth is infinite 4.The network is secure 5.Topology doesn't change 6.There is one administrator 7.Transport cost is zero 8.The network is homogeneous Monday, September 30, 13
    • Law of Instrument Monday, September 30, 13
    • Pulling data. Monday, September 30, 13
    • Pushing code. Monday, September 30, 13
    • SOA, Reloaded Monday, September 30, 13
    • SOA, Reloaded •CRUD •Event Streams •Batch Processing •Lambda Architecture •CQRS Monday, September 30, 13
    • Client Service DB Monday, September 30, 13
    • Client Clickstream data Service Fast Storage DB Kafka CEP Batch Jobs Monday, September 30, 13 Data Warehouse
    • http://tech.gilt.com join us. new york & dublin Monday, September 30, 13