AnyManager is a platform that provides users with functionality that improves the value of an online property, including the integration and analysis of website, app and e-commerce data, monetization, improvement of user engagement through features such as push notifications, speed improvement and construction of PWA, AMP and e-commerce sites.
In this article, I will share more about the challenges we faced from a business perspective and the technical aspects of the ad serving service, which is one of the functions provided by AnyManager.
■ The importance of this ad serving service and the problems we faced
The ad serving service provided through AnyManager is a service that allows publishers to easily monetize their websites through advertising, without having to implement JavaScript etc. by themselves. Monetization in ad serving requires the consideration of a few points:
– The type of advertisements that should be distributed. – The type of format and location that should be used.
Tapping on the collective knowledge from the Publisher Growth (PG) team for the type of ads to serve to publishers, and leveraging on the knowledge from being a Google Certified Publishing Partner, we’re able to build on the resources for this subject.
On the other hand, what format and placement should the ad be delivered to? When it comes to format and placement on a publisher’s page or screen, we need to implement JavaScript for each ad space (if a placement is dynamically defined, there is no need for JavaScript implementation). Traditionally, this is done by an account manager (with support from engineers in advanced cases), who would write their own JavaScript and communicate with the publisher. However, with this approach:
– Account managers need to have a certain level of JavaScript skills. – It is difficult to accumulate knowledge, as each individual sets up their own settings. – In the case of advanced implementations, engineers need to support them every time. – Everytime the JavaScript needs to be updated, the account manager will need to communicate with the publisher.
There were various problems with scalability in terms of business. To solve this problem, it was necessary to create a service that would allow non-engineers to generate JavaScript for ad serving to a certain extent.
■ Each market had implemented its own ad serving service
Each AnyMind Group location understood the importance of ad serving services for the reasons mentioned above. At the time, AnyMind Group’s PG team was growing rapidly across the region, along with the acquisitions of FourM and Acqua Media, so those with a certain level of JavaScript skills were implementing and providing their own ad serving services. For example, at one point in time, there were a total of four different ad serving services – two each in Japan and Southeast Asia.
The basic concept of non-engineers being able to configure settings for ads, is the same for each of the four services, but the supported ad formats, infrastructure of the system used (in terms of database, one service used a relational database, another uses NoSQL, and so on), and the flow of implementing ad serving services were all different. As it was, adding a new function or feature would mean development on multiple systems, which was highly inefficient and unrealistic. Therefore, we decided to develop a single system that covered as much as possible from each of the four systems. To do this, we startedby identifying what each service could and could not do, the advantages and disadvantages of infrastructure configuration, and the differences in the setting interfaces.
Administration screen of the ad serving service that was used internally in Japan
Administrative screen of the ad serving service that was used internally in Southeast Asia
■ Centralization of ad serving services
In order to identify the key functions of ad serving functions available in each market, we interviewed our engineers who were involved in the development of each service as well as the customer-facing members who were using the services, and redefined what requirements should be met in a consolidated service, with the Product Manager taking the lead.
Based on the feedback, the functions provided by all the ad serving services were within the range that could be incorporated into a single, consolidated service for all markets.
There were also many cases where functions that were provided in only one market were useful for another market, which increased the importance to develop a single, consolidated service from a business perspective.
In the initial release stage, we developed and released the system that had a minimum common denominator of functions, and gradually bulked up the functions. Now, the system is upwardly compatible with all ad serving services in terms of functionality.
■ Technical aspects
Due to the nature of the ad serving service, it was necessary to have an infrastructure that could handle a large number of requests in a stable manner, and in the event that a bug occurred due to some configuration change, it was necessary to be able to immediately recover the serving setting to the previous ones before trying to figure out the cause.
For example, in the early stages of development, one idea was to store the ad serving settings in a relational database and generate JavaScript dynamically from there, but the throughput of a normal relational database (without having to tune the database hardware and software) was not sufficient to cover the entire system.
After much deliberation, as shown in the figure below, we decided to store the delivery settings in the AnyManager database, have the JS Bundler generate JavaScript based on that, host the generated JavaScript file in File Storage, and deliver this file via CDN. By doing this, most of the requests could be handled by the CDN cache, and we were able to implement the system without placing too much load on the other infrastructure.
Infrastructure configuration of the ad serving service
The database used to store the ad serving settings is a relational database. Of course, NoSQL was an option, but since we were able to completely separate the CDN that delivers JavaScript from the database that stores the ad serving settings, there was no need to store the ad serving settings in a high throughput database – that’s why we decided to store these settings in the relational database originally used by AnyManager.
As for the implementation of the JavaScript for ad serving, all of the JavaScript used in each market was implemented as pure JavaScript, but since this service is provided to all locations in the future, we wanted to prevent bugs from occuring due to the lack of type definitions, and that’s why we decided to change the implementation to TypeScript and converted to pure JavaScript when generating the JavaScript.
■ The renewed ad serving service
With the renewal of AnyManager’s ad serving service, users in all locations are now using the same system and there are a few immediate benefits:
– When a new function is developed, it can be released to all locations and users immediately, – Troubleshooting can now be handled by a single team, – resulting in easier maintenance.
and many other benefits. Although some users have not completed the migration to the new system and are still using the old system for ad serving, the overall migration has been speedy, and we were able to completely shut down one of the old systems just the other day.
As a platform, AnyManager is not just used for ad serving and site monetization but also contains other functionality such as site improvements through PWA and AMP enablement, user engagement, speed optimization, 3rd-party integrations such as Google Analytics, ad verification, viewability and brand safety tools and more.
—
AnyMind Group is developing various products including AnyManager and more, and we are hiring more product managers and engineers. If you are interested, please visit the following page and select “Product Development.”
https://anymindgroup.com/career/
There is also a blog written by AnyMind engineers. If you’d like to check it out, please visit here:
- – Japanese: https://qiita.com/organizations/anymindgroup
- – English: https://medium.com/anymind-group/tech-blog/home