Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Software Deployment, Maintenance & Evolution


Published on

Guest talk for HIT3311 Software Deployment and Evolution

Published in: Technology
  • Be the first to comment

Software Deployment, Maintenance & Evolution

  1. 1. Deployment, Maintenance & Evolution Benny Chew
  2. 2. Brief Background- BSc (Computer Science & Software Engineering) - 2006- Infrastructure Engineer at Adslot (subsidiary of Webfirm Group Ltd)- Adslot platforms provide self serve sales tools, ad building and ad serving for publishers- Current clients - REA Group,,, SeLoger- But first, we shall go back in time..
  3. 3. QDC- Startup focused on personalised advertising- MySQL + Java + Adobe Flash/Flex RIA- Client-server architecture, with separate backend services for rendering, distribution, reporting- Physical windows servers for application/DB- Linux server for version control (Subversion), wiki/issue management (Trac)
  4. 4. Adlizard- In print advertising wanting to move to digital- Simplify personalisation tech we have, just support self serve banner advertising (ad builder)- Chance to refactor!
  5. 5. Issues and Solutions- Only part of the old app relevant -> Extracted decompile/recompile tech, new app wraps around this core- Manual cobbling of boilerplate code -> Automatic code generation from DB schema- Windows licensing costs -> Re-tested core tech in Linux, migrated to UbuntuServer- Lack of automated testing/builds -> Implemented Hudson (Jenkins) to drive ANT tasks automatically
  6. 6. Issues and Solutions- Obsolete expensive physical hardware, application availability -> Architected and implemented on AWS -> Implemented nginx (reverse proxy), DNS failover -> Switched file asset management to use S3- AWS was still only US East, slow asset loads -> Implemented usage of a CDN with origin server
  7. 7. Adslot- Acquired IP of QDC (Ad builder), Adimise (Ad server) - combine with its sales platform- Should present itself as a seamless integrated user experience- Heres the tech we ended up with..
  8. 8. The List- Java, C#.NET- Hibernate, Quartz, NHibernate, Quartz.NET- Flex, ASP.NET MVC3- JUnit, xUnit- ANT / BASH, MSBuild / Rake- nginx / GlassFish, IIS- MySQL, MS SQL Server- Jenkins, TeamCity- Linux, Windows- AWS, Ultraserve
  9. 9. Issues- Separate code repositories, wikis, hosting, CI- Silo-ed development, testing, deploy strategies withineach division- No visibility - too many moving parts- Lack of automation, low level of guarantee of reproducibility- Slow turnaround times to support our agile processes
  10. 10. Solutions- Automated all manual tasks used for deployment- Version controlled all required files- Consolidated CI - create single point of truth- Created Adslots internal PaaS solution- Consolidated on AWS from development to production environments- Switched to GitHub- Created Adslots continuous delivery (still evolving) workflow
  11. 11. Adslot Continuous Delivery- Derived from continuous integration, automated testing and continuous deployment processes- Tailored to suit Adslots version of the agile development process- Multiple products, client UAT requirements- Tech we used for this: -> Jenkins, Watir, ANT, Rake, makefile, Bash and batch support scripts, DB migrations
  12. 12. Radiator View
  13. 13. Then we did more things..- Developed new lightweight ad server in node.js and redis (in production)- Ad builder reworked to use node.js and MongoDB (beta)- Centralised logging across all products with Graylog2
  14. 14. Ending Notes- Constant learning, monitoring, improvement- Keep things simple, avoid over engineering
  15. 15. Questions? Benny Chew (Adslot)