Software Deployment, Maintenance & Evolution


Published on

Guest talk for HIT3311 Software Deployment and Evolution

Published in: Technology
1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

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)