๐๐๐ผ๐น๐๐ถ๐ป๐ด ๐๐ฎ๐๐ฎ ๐ ๐ผ๐ฑ๐ฒ๐น๐ ๐ช๐ถ๐๐ต๐ผ๐๐ ๐๐ฟ๐ฒ๐ฎ๐ธ๐ถ๐ป๐ด ๐ฃ๐ฟ๐ผ๐ฑ๐๐ฐ๐๐ถ๐ผ๐ป
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
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.
This hit harder than I expected.
Can your thinking explain what sweetness tastes like?
Can your thinking explain love?
Can your thinking fully explain pain?
You must experience them.
Can your thinking explain love?
Can your thinking fully explain pain?
You must experience them.
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
Forwarded from Sirack's Universe
Anthropic's Claude Code Security Wipes Billions Off Cybersecurity Stocks in a Single Afternoon | Awesome Agents
https://awesomeagents.ai/news/claude-code-security-cybersecurity-stocks-crash/
https://awesomeagents.ai/news/claude-code-security-cybersecurity-stocks-crash/
Awesome Agents
Anthropic's Claude Code Security Wipes Billions Off Cybersecurity Stocks in a Single Afternoon | Awesome Agents
Anthropic announced Claude Code Security, an AI tool that found 500+ vulnerabilities missed for decades in open-source code. Within hours, JFrog lost 25%, CrowdStrike dropped 8%, and the cybersecurity ETF hit its lowest since November 2023.
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.