If Decentralised Applications are immutable and can not be modified once deployed then how we can implement large projects like Instagram, Facebook, Amazon using blockchain technologies using Agile type of development strategies. Because we deploy those type of applications incrementally. Please clarify my doubt. Thanks.
The smart contract deployed to the blockchain is immutable, yes, but they can be built in a way to allow for upgradeability of business logic. You can add new features or update the existing ones by deploying new smart contracts. There are multiple approaches on how to do that, most notably the Diamond standart and the proxy-upgrade pattern.
You can read more about the Diamond standard (also known as ERC 2535) here: https://eips.ethereum.org/EIPS/eip-2535.
You can also learn more about the proxy-upgrade pattern here: https://docs.openzeppelin.com/upgrades-plugins/1.x/proxies
The more pressing concerns when talking about projects that big is the data. Storage is expensive and the dApps have to be designed in a way to preserve as much space as possible. For this reason, images are often stored on other decentralised services (like IPFS) or in a centralised ways (on servers).
I am hoping this link will answer your question:
In layman terms, you can have parts of your smart contract code set to 'changeable' at a later time by a specific account address (usually the owner of the project). However, since the smart contract is visible to everyone after deployment on the main-net, if you set any major part of your project to 'changeable', then people can see that you have an intent to change your products functionality in the future which results in trust issues.