mercredi 27 avril 2016

Extra-hints for choosing your CDN provider

Why additional hints? because you can already find a lot of literature on the subject, for example this nice article by Jon Alexander the CDN product manager at Level 3. What I want to add here is some further questions based on my personal experience so you would avoid some surprises later on when you have your CDN contract signed . I'll also bring up the multi CDN question.

So as a number one rule, a map of CDN nodes is simply not enough for making a good decision! It's important to know more in depth these following elements:

  • The most important verification is checking with whom they are networked in your country of interest. For example in Egypt it's mandatory to have a good network capacity with Telecom Egypt who has the largest share of the local market.
  • How are they networked with the Eyeball? for example dedicate private connection is definitely better than IX public peering from performance perspective, but it is more expensive.
  • What is the CDN cluster capacity and its uplink bandwidth?
  • What is the architecture of the cluster? is it a bunch of small servers or a couple of high density servers? are they Squid based or using new beasts like Nginx or Varnish? Indeed, underlying caching engine has an impact on latency and cache efficiency.
  • Sometimes a CDN provider can outperform another even though they do not have a local node for all of the above reasons, so the best way to evaluate is to test!

Now that you know where your CDN provider is present, it is important to know what are its capabilities on these different locations. Is SSL available everywhere? the same question should be asked for any relevant feature for you. Indeed, CDN platform evolves with time through acquisitions, technological updates like any other platform, leading to a heterogeneous ecosystem. Thus you need to verify if your CDN properties will be bound on all locations that are brightly presented by sales :)

As I said previsouly, the best way is to test, but beware of testing biases! First, make sure that your CDN provider has provisioned a trial platform similar to the one you'll be using in your real environment. Then try to evaluate the CDN performance during peak hours, for example in the evening, and under load, because CDN behavior can vary under different conditions. You can use third party analytic tools such as Catchpoint & Dynatrace, but you should understand the limits of their evaluation, because their probes are located in datacenters so they don't reflect 100% the end user experience.

What also makes a good CDN solution is layer 8 in the OSI model: the people! Indeed, when things go wrong, or you want to make critical changes, you'd love to have quick and helpful support. Do you know where is the support team based? their working hours? to which organization they report (regional or global)? any SLA on ticketing? Try to test this as much as possible during your trial.

The last point I want to mention is related to commercial terms. Most of CDN providers have per GB traffic pricing. Make sure that you know what GB you are talking about before comparing prices! is it Egress only? Egress+Ingress? do they bill midgress traffic?
Give some consideration to the commercial flexibility of your provider: what kind of commitment you have? volume/financial/duration? do they offer flexible models that can adapt to your business fluctuations? you can evaluate that during the trial, for example whether the CDN provider is rigid on trial extension, billing start date, feature testing...

Finally I'd like to give you some thoughts on multi CDN strategy. Like any solution it makes sense in certain cases but does not in others. Check Cedexis website for example to learn more about the benefits of multi CDN. In the following, I'd like to highlight some of its limits:
  • Additional costs: Cost of CDN load balancer service, cost of higher CDN rates because of lower commits, cost of additional origin traffic, internal cost of multiple providers management.
  • Increased solution complexity, especially when you have advanced features that requires deeper integration with CDNs
  • Risk of SPOF within the CDN load balancer.
  • Less cache efficiency
  • Is the Load balancing algorithm suited to your business challenges?

mercredi 23 décembre 2015

Digital detox

I belong to generation Y and I know what it means to be addicted to smartphones, to Facebook, to Whatsapp... But as Socrates said: "I know that I don't know", i.e. I am conscious about it and trying to improve how I consume digital media in order to keep my psychological health in shape. There is a lot of articles on the subject, my goal is to share some tips and tricks from my personal experience. I will not discuss the dangers of social media (use of data, manipulation...) nor how digital is disconnecting us from reality (little birds singing on trees).

So why psychological health? because it's as important as physical health but we always tend to ignore it.
The first syndrome of digital addiction is decreasing concentration. Indeed, we are continually interrupted by notifications and can rarely focus on an idea for longtime, leading us to less mental efficiency and serenity.
The second syndrome is emotional dependency on "virtual". We humain beings need to be loved, to be noticed, to be surrounded. Evolutionary psychologists believe it is the result of years of evolution where humain beings, living in tribes, could not survive alone. Being ignored in a tribe means the risk of death and not passing his genes, thus we developed a warning mechanism associated with pain. Researchers have proved that the same areas of our brain are activated when we experience rejection or physical pain. Before digital era, people counted solely on family, on partner, on friendships to satisfy this need of belongingness. Nowadays we rely a lot on virtual "likes" of almost unknown people, which can be devastating when it disappears, because its just virtual!

So how am I trying to have a better control on all of this? here are four advices I am experimenting:
  • Use the right media for the right communication. For simplicity, let's consider that there are two types of communication: type A, important and need to reply or take actions rapidly, and type B the less important one. We should use an adapted channel for each type, for example type A requires a channel with instant notification, like SMS, and type B requires non instant channel like Facebook messaging. It means you should deactivate notification from Facebook, and never use it or let your contacts use it for important matters. That lets you avoid the need to check Facebook regularly for type A messages.
  • Separate being informed from being entertained. It should be clear in your mind, when you are consuming digital, whether you just want to lose time or obtain information. Personally, I have created two Facebook accounts: a first one where I have fun looking to friends posts and interacting with them, and a second one with no friends, but with only subscription to theater pages, news, articles, music... 
  • Put some constraints. I am testing for example the following constraints: keep the phone in your pocket hidden from your eyes, do not check your phone when in presence of others (good for respect too :)), log out each time you go to Facebook, power off phone at night, limit digital consuming time per day...
  • Be conscious of your usage. The first idea is to know how much you spend on your phone during a day. I tested an app on Android called Quality Time that shows you how much you use each app. I was shocked when I discovered that I can unlock my phone screen up to 200 times a day! The second idea, a very important one, is to ask yourself each time you want to use your smartphone why I am doing this? what motivated me? what am I looking for?

To be honest, I am still far from my goals, but I am happy to be conscious about it, and that's the most important step !

lundi 21 décembre 2015

Increase QoE of video streaming by optimizing the encoding of the video library

A week ago, Netflix engineers have revealed a project on which they were working for some time now to optimize the QoE of videos they are streaming to their subscribers. Their approach is based on video encoding settings in the back-end rather than focusing only on the front-end (peering, codec, streaming format, CDN..). The expected gain is 20% on overall traffic which is huge for a player who is accounting for more than third of the global internet traffic. Additionally, Netflix will be delivering better quality at the same connection bandwidth, which is critical for addressing emerging markets.

Content providers encode several representations of the same video asset, where each representation is formed by a bitrate and a resolution. below is an example of representations of a 4:3 main profile video according to Apple recommendations:

The goal of having several representations is serving the best one to the user according to his screen (TV  vs  mobile) and connection (4G, ADSL, FTTH..). With adaptive streaming, the same user can change the representation during video play in order to adapt to the connection bandwidth variation. 

So far content providers encoded all their video assets with the same set of representations. Netflix noticed that it doesn't make sense because for the same quality/resolution a cartoon movie requires less bitrate that an action film. Each video asset has its own "entropy" that should be taken into consideration when generating the representation set. This what Netflix is doing with their per-title encoding approach. 

In order to know what is the best representation set for a title, Netflix will encode at different resolutions (480p, 720p, 1080p...), then for each resolution they will draw the "exponential" curve of quality (PSNR) vs encoding bitrate (black, green and blue curves). Notice that a 720p @ 400Kbps representation will have a worse quality than a 480p representation encoded at the same bitrate and upscaled to 720p. The optimal representation set will be the set of dots close to the red curve.

Of course this approach will cost more computing resources in the video preparation workflow, but the gains are worth it.

On the same subject, I read this interesting scientific article, where they propose not only looking to the type of the title (cartoon vs action film...) but also to its popularity, to the limits of contracted CDN capacity, of users screen resolution, of users connection, video storage... They make interesting findings on the optimal representation set:
  • Titles with high "entropy" like action film requires more representations than low "entropy" titles like cartoons.
  • The number of representations per resolution is dependent on the distribution of devices: HDTV vs mobile phones.
  • For a given resolution, lower bitrates are closer one to the other than higher bitrates.
Of course these are the conclusions of the test conditions. It can be different for exemple if we consider a content provider targeting only mobile devices in emerging markets.

As the environment of the content provider is smoothly changing (proliferation of mobile devices, conquer strategies for emerging markets with low bandwidth connections, title popularity changing, versatile peering agreements...) I guess it would be interesting to dynamically re-encode in a continuous way the representations of the video library in order to guarantee the best global user QoE with respect to constraints imposed by this moving environment.

samedi 17 octobre 2015

On education

What do you think about the fact that our children are taught with the same system as our grand-grand-parents? Our world changed drastically but our education system is fundamentally the same since more than 100 years, even if we now use tablets rather than chalk boards. Through this article, I am contributing to the abundant literature on this subject, but from my point of view.

The main problem of our education is focusing on succeeding and not learning itself. I remember my self that my goal during school and even during university was succeeding exams. What about knowledge itself? it becomes a side effect of getting A grades, rather than being the ultimate goal. It's just now that I go back to my old school books and seek knowledge, now that I don't have to prove anything by exams.

Another important issue with our education is preparing young people for being misinformed, followers, and almost misanthropic (oh yes!!):
  • How many school teachers gave its students the keys to find information and create their own opinion, instead of just stuffing kids with already mashed information & believes? I like the image given by Marshall Rosenberg in one of his conferences to illustrate this process of teaching: The teacher is a bottle of milk and the children are empty glasses. At the beginning, the bottled pours milk in the small glasses. During the exams, the glasses pours the milk back in the bottle. What we have left with in the end? a bottle with less milk surrounded by dirty and empty glasses.
    Look at scholar history books, most of them give the national understanding of the history, instead of letting the students debate and form their own opinion. It is a fuel for the continuous conflicts we are witnessing in the world.
  • In the same idea, we kill the creativity of kids by teaching them only convergent thinking. How many geniuses failed schools because of their creativity/divergent thinking? I have written about it more in detail in this previous article.
  • What about teaching kids to collaborate instead of competing? I really like what Albert Jacquard says about this aberration which is competition. Teach kids to realize themselves through others and not against them.
  • Through my professional experience, I have seen a lot of inefficient conflict situations because of misunderstandings. Colleagues were not able to put themselves in the skin of others, as simple as it seems. We urgently need to teach our children empathy and non violent communication.
The third major point I want to mention about current education, is its tendency to form very specialized people with kind of horse tacks on their eyes. I mean by that their blindness toward subjects different than their own field of specialties, what Nicolas Nassim Taleb calls tunneling. Take for example an economist who conceives the world through only financial equations without taking into consideration ethical matters. Oups, this economist existed indeed! David Ricardo, thanks to whom capitalism started to become financial, leading to modern disasters like the 2008 subprime crisis. It's very dangerous to have such specialists in our butterfly-effect-world. We need specialists, but with enough general culture and knowledge. For example I have heard about some initiatives in a Scandinavian country, where per-matter exams are replaced by multidisciplinary school projects.

One final thing i want to mention about this subject is the lack of spiritualism in schools. I remember that school was a race of succeeding exams, to finish and start real life of working and producing like machines. I don't remember just sitting, thinking about my existence, enjoying and appreciating the beauty of the world, the nature and the human being. I would have loved someone to send me philosophical letters like Sophie the fictional character of Jostein Gaarder. I no wonder that so many of us face existential crisis at some point of life.

Education is the door to the evolution of our civilization, I doubt profoundly any evolution based on a 100 years old system.

dimanche 19 juillet 2015

Third industrial revolution?

Well yes, a big shift in economy is happening in our digital era. Economy is moving from a centralized production system to a more distributed one with the help of internet and information technology. It means that people exchange directly goods and services without the direct need of traditional intermediate corporations. I will illustrate this shift through examples from different sectors:
  • Transportation: Uber is destabilizing the taxi industry by its model where non professional drivers serve directly passengers with a sexy and real time mobile application. Before Uber, car pooling was growing for inter cities transportation and thus competing lightly with trains & buses.
  • Hospitality: With the same spirit, AirBnb is threatening the established business of hotel chains, especially on the low-end tourism market. Couchsurfing also took a part of this market somehow.
  • Energy: Consumers are called to be micro producers through solar energy for example. Energy production would be managed intelligently with smart grids and moreover with connected objects.
  • Consumer Goods:  We are witnessing the emergence of websites praising the reuse of consumer goods such as: toys, tools, high tech products... and more generally products that are not used frequently so people rather prefer to rent it. Some even say that this pushing the notion of private property to disappear!
  • IT: Instead of centralized datacenters, a new buzz word is here: fog computing. A more distributed architecture than cloud computing, where end devices stores and process information. I was especially impressed by the French Startup Qarnot Computing who proposes computing capacity through its distributed servers in households. Their brilliant idea is heating households using installed servers!
  • Finance: Who of us didn't participate through crowdfunding to help the project of an association? the launch of music album? the new idea of a startup? Banks/business angels/love money will not stay the exclusive ways of funding ventures.
Some, like Jeremy Rifkin, call this shift a revolution, the revolution of "commons", a "croudsourced" economy that seems more just and equal. Well, I do not share this point of view. I think that distributed model disrupt the structure of the players in our market based economy, but it does not change the capitalist nature of this economy: private property, seek for profit, class differences... indeed, the established corporations (see above for examples) will loose power to new players who control information. If we take the example of hospitality industry, well yes some big hotel chains will hardly survive in front of Airbnb, but this online platform would behave just as its old competitors: hire employees, look for profitability, compete to have a monopole...

Nevertheless, this shift might provide a good basis for a real conscious revolution on how we manage economy today.  When individuals are more involved in the production system, not as work-providers but as contributors, they will want to contribute also to decision making. What is really missing is a distributed decision making, a real democracy! Digital revolution is a wonderful opportunity for achieving this. I like very much the example of an Argentinian political party (Partido de la red) who's representatives only vote in parliament what people has decided online (Democracy OS).