After the hard but great work on our New Doppler Reports, Juan Diego Raimondi (Software architect, Java & C# Developer) wanted to share with you his experience in this post. Let’s read his exciting story.
Hello to you all
I’m really glad to announce that for some time, I had the opportunity to work along with the Doppler team for a new project, something that since that time was evolving, called Doppler Reports. The project finally became active and working publicly on July 27th. Let me tell you a little more about it.
What is Doppler anyway?
For those that are not aware of it, Doppler is an online email-marketing tool. It’s really complex, but explaining it at just at a glance, you can use it to create email content online (template-based or editing it yourself online), and sending it massively to one or many of your pre-entered mailing lists. However, there is much more to it, and one of the big powers enclosed in such a tool is the ability to analyze the customer’s reaction to your mail campaigns. When you have ten, maybe twenty, fifty, or even a hundred customers, this is something you could easily do with lists. You check for your contacts, you see who opened the email you sent, you see who clicked on which link, and that’s all the information you need to go on.
Things have changed a lot in the business since that morning in 2005. What happens when you’ve got a thousand contacts? Or a million? I’m not exagerating. That’s part of our everyday work, maintaining a tool that daily sends millions of emails. How do we get results and present them to the users? The obvious answer is: Reports.
Summarizing reports will give you the information you need without having to scan for each of your contacts (because, of course, the system does it for you). And as technologies evolve, as customer behavior evolve, and as marketing evolves, our tools needs to evolve too.
That’s where the Doppler Team saw the necessity of creating a new brand report application, in order to fulfill a lot of requests that our customers had from the previous version of our reporting tool. But this one would have to be thought for millions of emails,thousands of users, real time information and at the same time elegant and data-rich reports.
Then we entered the scene. I had the chance to work closely along with Juan Fazzini to design an architecture that would scale as Doppler would get bigger with all future features that it will get. So, in a Friday afternoon, a big white board, a notebook as recorder to keep track of everything we said (you know, documentation is important), we started brainstorming and dreaming about what Doppler reports would work like.
How is the architecture designed?
1. Distributed architecture
Every part of Doppler will work as a separate module, that can have many instances working at the same time. There is a special module which will take care of connecting all of the others between them, but these interconnection modules may work independently as well.
This means that we now have more catastrophic-error tolerance. If one server fails down, the other instance of the module will keep on working, and users will notice nothing, but maybe some little delay on the application.
This also means that if we have too much load, because of intensive use, we can just create new module instances and the interconnection modules load balancing will automatically take care of the load.
2. Security on each call
Having this modules out on the wild is no little thing for security. So, security had to be strong as possible, and we developed a communication protocol that would allow each module to check if the caller is in fact an authorized application and that it is ok to return data to it. If everything goes right, then the call is made and the results are returned. If something goes wrong, as, for example, you provided an incorrect token, you would never know what happened. This is not transparent at all for the end developer (and we know that), but it is as secure as it gets to prevent hackers.
This means that even when modules are out in the internet (not right now, but maybe someday), not anyone can access them. Even if they knew where they are and how to call it, it would just do nothing until clients provide an authorized token.
This also means that the keys that allow access to this module can be generated and in the future, the API for certain Doppler modules would be available for everyone (or just some users) to use. Do you imagine creating an application for your business that would automatically work with the data Doppler generated for you?
3. Real time reports
More than an architectural decision, this was a challenge. You already know that we are handling tones of data. How to load it quickly, how to achieve a high performance? For that, we decided to make some internal objects proxy-like, so that you would only get the information you request.
This means that you can now enter the dashboard screen summary report for one of your campaigns, and you would see (beware… long list coming):
- Name of the campaign
- Subject for the campaign
- Campaign type
- Amount of mailing lists that received that campaign
- How many unique subscribers received it
- When was the campaign sent
- Total openings by hour
- Total clicks by hour
- How many mails where opened (total)
- How many mails haven’t been opened yet
- How many mails have soft-bounced
- How many mails have hard-bounced
- Last open date
- Unique clicks
- Unique opens
- Last click date
- Each of the links
- For each of the links, how many subscribers clicked on them
- For each country in the world, how many openings happened in that country
*let me catch some air* Do you know how much time Doppler Reports takes to gather and show all that information? Less than 5 seconds. Let me emphasize that: Less-Than-Five-Seconds. That’s what takes me to read the first three lines of the page. Maybe four, maybe five. But before I finished doing that, the page is completely loaded and working. And I have to say is that my connection is not a premium one.
Of course we use caching, so that means that data is not really real time all the time. Our caching framework provides us with the ability of having the data ready for the user right away. Campaign data do not change very often unless you have just sent it, so for most of the cases, you will be able to check your campaign data as quick as any webpage would load up.
4. Modular design
I mentioned before that Doppler had started to become more complex, and is now being designed with a modular approach. In this way, modules work independently and at the same time, they rely responsibilities on the module that really knows how to solve a certain problem, or to treat certain data. Having a modular design is terribly important for future changes. It allows our team to parallelize work, it allows our team (and application) to grow.
This has great consequences. On the users side, new features will be available sooner. New features, new improvements. Harder, faster, better, stronger. (As Daft Punk suggests, we build our software.)
That impresses me, may I use it?
Of course, these new features are available to all users that have a Doppler account. If you don’t have one, you can even create one free and try the product for yourself: http://www.FromDoppler.com/
Before you go…
…I just want to say that I consider a personal achievement having been part of all of this. We tried to do something radical, and we have a radical product today. I think that all of the Doppler Team is very proud of what they have today, and I sure am too.