Thanks for the feedback. @imrehg So let me share my experiences I was able to make so far - using Raspberry with Raspbian:
I have a device that’s currently running for more than a year on the same SD-Card. This device is constantly logging sensor data and stores a new data-frame every 5 minutes. I have disabled logging, swap, and moved temporary file systems onto a ram-disk.
There is a very good question on Raspberry StackExchange about this which has very detailed and good answers.
Using industrial SD-Cards
I have made some tests with using industrial-grade SD-Cards which all use SLC-Flash cells. SLC stands for single layer cell. Consumer grade (which also includes the SanDisk Extreme Pro Card mentioned above) mainly uses MLC - which stands for Multi Layer Cells.
In theory SLC Cards have much longer lifetime than MLC Cards. But SLC Cards are up to 10x more expensive. So a 16GB Card might cost up to 200$.
So the trick is to shrink the image to a smaller size here. But even if you use a 4GB or 2GB sized SLC card you will likely end up using almost 100% of the cards space.
If that SLC Card now has a defected cell its damage-repairing-controller won’t be able to use free cells and map that defective one to a freshly new one.
MLC Cards with high capacity - like that 16GB Card from above - can remap defective cells quite often. Especially when the image on the card is just using a maximum of just 50% of the capacity.
So SLC has more write(/read) cycles but is also more expensive - especially when you are looking for higher capacity.
MLC has less write(/read) cycles but is less expensive so you can easily add up free capacity which can be used by the flash-controller to map defective cells to fresh new ones.
If you compare a low capacity SLC with a large capacity MLC you probably get the same lifetime results.
By the way we are using that SanDisk Extreme Pro in our projects!