Deployment, Maintenance
      & Evolution
        Benny Chew
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, Carsales.com,
  Realestate.co.nz, SeLoger
- But first, we shall go back in time..
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)
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!
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 Ubuntu
Server
- Lack of automated testing/builds
  -> Implemented Hudson (Jenkins) to drive ANT tasks
     automatically
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
Adslot
- Acquired IP of QDC (Ad builder), Adimise (Ad server) -
  combine with its sales platform
- Should present itself as a seamless integrated user
  experience
- Here's the tech we ended up with..
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
Issues
- Separate code repositories, wikis, hosting, CI
- Silo-ed development, testing, deploy strategies within
each
  division
- No visibility - too many moving parts
- Lack of automation, low level of guarantee of
  reproducibility
- Slow turnaround times to support our agile processes
Solutions
- Automated all manual tasks used for deployment
- Version controlled all required files
- Consolidated CI - create single point of truth
- Created Adslot's internal PaaS solution
- Consolidated on AWS from development to production
  environments
- Switched to GitHub
- Created Adslot's continuous delivery (still evolving)
  workflow
Adslot Continuous Delivery
- Derived from continuous integration, automated testing
  and continuous deployment processes
- Tailored to suit Adslot's 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
Radiator View
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
Ending Notes
- Constant learning, monitoring, improvement
- Keep things simple, avoid over engineering
Questions?




                    Benny Chew (Adslot)
             http://cardcloud.com/benny

Software Deployment, Maintenance & Evolution

  • 1.
    Deployment, Maintenance & Evolution Benny Chew
  • 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, Carsales.com, Realestate.co.nz, SeLoger - But first, we shall go back in time..
  • 3.
    QDC - Startup focusedon 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.
    Adlizard - In printadvertising wanting to move to digital - Simplify personalisation tech we have, just support self serve banner advertising (ad builder) - Chance to refactor!
  • 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 Ubuntu Server - Lack of automated testing/builds -> Implemented Hudson (Jenkins) to drive ANT tasks automatically
  • 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.
    Adslot - Acquired IPof QDC (Ad builder), Adimise (Ad server) - combine with its sales platform - Should present itself as a seamless integrated user experience - Here's the tech we ended up with..
  • 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.
    Issues - Separate coderepositories, wikis, hosting, CI - Silo-ed development, testing, deploy strategies within each 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.
    Solutions - Automated allmanual tasks used for deployment - Version controlled all required files - Consolidated CI - create single point of truth - Created Adslot's internal PaaS solution - Consolidated on AWS from development to production environments - Switched to GitHub - Created Adslot's continuous delivery (still evolving) workflow
  • 12.
    Adslot Continuous Delivery -Derived from continuous integration, automated testing and continuous deployment processes - Tailored to suit Adslot's 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
  • 14.
  • 15.
    Then we didmore 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
  • 16.
    Ending Notes - Constantlearning, monitoring, improvement - Keep things simple, avoid over engineering
  • 17.
    Questions? Benny Chew (Adslot) http://cardcloud.com/benny