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
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 – …..