Fasil - ETDevs
786 subscribers
177 photos
18 videos
1 file
210 links
@etdevs official channel

Have someting to share?
use @etdevsofftopic
Download Telegram
๐—˜๐˜ƒ๐—ผ๐—น๐˜ƒ๐—ถ๐—ป๐—ด ๐——๐—ฎ๐˜๐—ฎ ๐— ๐—ผ๐—ฑ๐—ฒ๐—น๐˜€ ๐—ช๐—ถ๐˜๐—ต๐—ผ๐˜‚๐˜ ๐—•๐—ฟ๐—ฒ๐—ฎ๐—ธ๐—ถ๐—ป๐—ด ๐—ฃ๐—ฟ๐—ผ๐—ฑ๐˜‚๐—ฐ๐˜๐—ถ๐—ผ๐—ป

In long-lived systems, data models inevitably change.
The real challenge isn't designing the new model, it's rolling it out without breaking production.

Most teams learn this the hard way.

๐—” ๐—ณ๐—ฎ๐—บ๐—ถ๐—น๐—ถ๐—ฎ๐—ฟ ๐˜€๐˜๐—ผ๐—ฟ๐˜†

An application starts simple.
Files are stored as raw strings:

file = "https://storage.example.com/files/123.pdf"

It works. Everything ships. Life is good.

Then requirements grow:
- access control
- metadata
- auditing
- lifecycle rules

Suddenly, that string isn't enough.
You introduce a proper model where files are first-class entities:

fileId = "abc123"

The temptation is to rewrite everything at once.
That's usually where things go wrong.

๐—ง๐—ต๐—ฒ ๐˜€๐—ฎ๐—ณ๐—ฒ๐—ฟ ๐—ฎ๐—ฝ๐—ฝ๐—ฟ๐—ผ๐—ฎ๐—ฐ๐—ต

Instead of a breaking rewrite:
- Legacy records keep file
- New records write fileId
- The read path becomes dual-aware

At runtime:

const resolvedFile = fileId
? loadFileById(fileId)
: file;

๐—˜๐—ป๐—ณ๐—ผ๐—ฟ๐—ฐ๐—ฒ๐—บ๐—ฒ๐—ป๐˜ ๐˜€๐˜๐—ฟ๐—ฎ๐˜๐—ฒ๐—ด๐˜†

- Reads: support both formats (new first, legacy fallback)
- Writes: enforce the new format at the API boundary
- Database schema: stay permissive during the transition
- Optional migrations can happen later when the system is stable, not when it's under pressure.

๐—ช๐—ต๐˜† ๐˜๐—ต๐—ถ๐˜€ ๐˜„๐—ผ๐—ฟ๐—ธ๐˜€

- Avoids risky โ€œbig-bangโ€ migrations
- Keeps production behavior unchanged
- Allows gradual cleanup
- Preserves the ability to move fast later

This allows you to improve structure and safety without risky rewrites or downtime.

Good software evolves but it evolves carefully.

@etdevsresource
โค2๐Ÿ˜2๐Ÿ‘Ž1
Fasil - ETDevs
https://you-think-you-have-time-huh.vercel.app/
You think you have timeโ€ฆ

This hit harder than I expected.
"... to protect developers who have not yet upgraded"


Context: recent Nextjs vulnerabilities
Can your thinking explain what sweetness tastes like?

Can your thinking explain love?

Can your thinking fully explain pain?

You must experience them.
Meditation done as a goal reinforces the doer.
I played football yesterday after 11 years. My feet betrayed me ๐Ÿ˜…. I was nervous. Every kick sounded loud. I can't believe I've become like this. I tried to do what I used to do, and I ended up with a slight sprain. I'll play every week from now on.
โค1๐Ÿคฃ1
Watching Demolition (2015)
โค1๐Ÿ”ฅ1
Fasil - ETDevs
Photo
How to teach yourself physics
โค1
The tragedy of history may be that strength gives security, yet at the same time creates the very rivalries that threaten it.
I finally migrated our platform from the AWS UAE region to the EU region because of the recent disruptions. Everything is stable again now.
๐Ÿ‘1