|
|
|
|
|
by davis_m
3761 days ago
|
|
It means updating infrastructure by making changes to a versioned service definition instead of on running instances. Would you fix a software bug by editing the code on a running server and tell yourself that you will add it to the repository later? Of course not. You would end up with a running instance of the code that is impossible to replicate. Immutable infrastructure applies that same idea to running services. |
|
Absolutely yes in the right circumstances (have you seen how this website works?).
Not every service needs to be written as "scale out to a billion nodes" architecture with eight layers of checks and balances between idea to production.
We can't globally say "everybody must use a 16 step verifiable app development pipeline" when some people run 3 servers and others run 3 million.
(Plus, not all services are stateless! Redeploying stateful servers is painful—you'll be killing user experience. Updating code live on a running server while maintaining internal continuity of state can maintain sessions/caches/game-state without annoying users by kicking out of their current flows.)