Ways to improve endless racing traffic

I am developing endless racing game with Unity.
I tried randomly spawning cars ahead of player bike,though the randomness is too much that player wont feel any challenging situations.

Later I switch to another approach where I hard coded bunch of patterns (around 100) which gets spawned depending on what lane player is in and how much game play in seconds passed.

The patterns defines logic on where to spawn next car,at what distance,shall it change lane, etc
This technique seems to work for few seconds,though after sometime it’s not fun to play, it also get unplayable at that time.

I am looking for ideas on how can I implement traffic with such approach that it will gradually increasing its difficulty where player will feel challenging.

Additionally need spotlight on how to maintain playablity while giving illusion of increase in speed.
I am really impressed with how this game(Racing Moto) has implemented traffic in their game,

My current back of mind thought is to move road and other cars towards player while player is at 0 axis.

How did you spawn them on lane i am stuck with that leave the random part i just need to spawn and despawn