Introduction to V3



                Manish Pandit
              IGN Engineering
And there was …NIB
•   Monolithic System
•   Built with Java and front ended with JSPs
•   Talked to Oracle Database directly
•   Disconnected with the publishing
•   Publishing achieved via batch jobs that picked
    up the articles, ran home grown templating on
    the pages to generate a “view”
V1
• IGN’s first attempt at SOA
• Almighty NIB stays
• A Java layer was built to talk with Oracle
• Introduced caching with memcached, with
  near/far cache architecture
• Templating was replaced with Freemarker
  instead of home grown templating
V2
• Built to address the engineering problems with V1, not
  the business problems
• Almighty NIB stays
• The Freemarker templating stays
• API changed from Java to Rails
• Video and Blogs moved to MongoDB
• Ruby’s performance (or lack of it) bit us in the ass, so
  built a Java+Memcached based edge cache
• Used Solr for searches, with RabbitMQ to handle
  clustering
V3
• NIB is gone (for the most part)
• The APIs changed drastically and a standard was
  formed
• Scala was introduced
• Solr replaced by Elasticsearch
• APIs front ended by Varnish
• Addressed engineering *and* business problems
• Went live a week before E3
Technology Platform
• Backend
  – Scala
  – Scalatra
  – MongoDB
  – ElasticSearch
  – Varnish
• Frontend
  – Oyster
Architecture Diagram
Advantages of V3 APIs
• Single, consistent APIs across content and
  social APIs
• Less code as level-1 caching is handled by
  Varnish
• Common code abstracted out as libraries
• Performance gain over Rails/Middleman
• Faster turnaround time – articles and videos
  show up in 2 minutes vs. 20 earlier
TODO
• There is a lot of work needed on V3 API
  – Enhance and refactor the code to use the
    common libraries
  – Rebuild Social API on V3 API platform
  – Consistency between APIs
  – Poor code coverage in tests
  – Move up to 2.10.0 when it comes
  – Tune ElasticSearch
  – …..

IGN's V3 API

  • 1.
    Introduction to V3 Manish Pandit IGN Engineering
  • 2.
    And there was…NIB • Monolithic System • Built with Java and front ended with JSPs • Talked to Oracle Database directly • Disconnected with the publishing • Publishing achieved via batch jobs that picked up the articles, ran home grown templating on the pages to generate a “view”
  • 3.
    V1 • IGN’s firstattempt at SOA • Almighty NIB stays • A Java layer was built to talk with Oracle • Introduced caching with memcached, with near/far cache architecture • Templating was replaced with Freemarker instead of home grown templating
  • 4.
    V2 • Built toaddress the engineering problems with V1, not the business problems • Almighty NIB stays • The Freemarker templating stays • API changed from Java to Rails • Video and Blogs moved to MongoDB • Ruby’s performance (or lack of it) bit us in the ass, so built a Java+Memcached based edge cache • Used Solr for searches, with RabbitMQ to handle clustering
  • 5.
    V3 • NIB isgone (for the most part) • The APIs changed drastically and a standard was formed • Scala was introduced • Solr replaced by Elasticsearch • APIs front ended by Varnish • Addressed engineering *and* business problems • Went live a week before E3
  • 6.
    Technology Platform • Backend – Scala – Scalatra – MongoDB – ElasticSearch – Varnish • Frontend – Oyster
  • 7.
  • 8.
    Advantages of V3APIs • Single, consistent APIs across content and social APIs • Less code as level-1 caching is handled by Varnish • Common code abstracted out as libraries • Performance gain over Rails/Middleman • Faster turnaround time – articles and videos show up in 2 minutes vs. 20 earlier
  • 9.
    TODO • There isa lot of work needed on V3 API – Enhance and refactor the code to use the common libraries – Rebuild Social API on V3 API platform – Consistency between APIs – Poor code coverage in tests – Move up to 2.10.0 when it comes – Tune ElasticSearch – …..