Opa, muito bom o conteúdo. Trabalho com injeção de dependência desde a minha primeira experiência em código como profissional, pois onde trampo todos os Microservices usam o Awilix, que é justamente uma lib Node pra fazer parte desse processo.
Eu só fiquei pensativo sobre algo: Ingeção de dependência é o mesmo que inversão de dependência? Eu tinha pra mim que "inversão" era justamente a estratégia de desacoplamento de uma classe de suas dependências, sendo que as mesmas passam a ser recebidas por parâmetro e a classe só se preocupa em usar os métodos que desejar.
Já a "injeção" seria instanciar todas os módulos, talvez globalmente, para que as classes
não precisem sequer saber onde estão esses parâmetros.
Veja que, apesar da classe receber os módulos que precisa, o "arquivo" da classe ainda precisa saber exatamente onde se encontra aquele módulo. E se o módulo mudar de lugar? E se outras classes quiserem usar o mesmo módulo, todas vão ter que saber onde eles estão? Esse tipo de coisa, por exemplo, pode ser resolvido com libs como "Awilix", que infelizmente tem pouca documentação na internet. Com ferramentas como essa você pode indicar em quais pastas se encontram todos os módulos "públicos" e instanciá-los. Assim, cada classe que quiser usar, apenas precisa desustruturar o módulo desejado de uma "instância global".
Já o lance do Feature Flag (conheço como feature toggle") é muito legal. Não tinha pensado nessa estratégia. Show.
Peço desculpas se o raciocínio ficou confuso, mas acho que a ideia geral ficou minimamente clara.
Parabéns pelo post!!