On Software Delivery

A brief history The beginning: trade software for money Distribution problems: installation, licensing, upgrades Client / Server Distributed services (Conway’s law) Exploiting resources: Andy and Bill’s law Outsourcing hardwares Outsourcing Infra-Softwares Cloud industry Software delivery concept evolution (SWOT analysis) Concept strength weakness opportunity threat library extension and consolidation requires build; cannot deploy independently semantic versions dependency hell; backward / forward compatibility runtime binary + scripts deploy independently; cross-platform; slow; cannot conceal information; need a large runtime to do small things fast development hard to maintain; cannot hide sensitive information binary packages / installers does not require build; has more complexity cannot cross-platform; cannot fully control the deployment environment sell as products, license and fee hard to upgrade; security risks. services on servers more control on the deployment sites; upgrade anytime performance / experience depends on network connections APIs; social networks; zero down time; freeminum network security; do not control client upgrades distributed / tiered services independent deployment and evolution, divide and conquer coupled with the human structure (Conway’s law) business can hire more people single point of failure; service explosion and governance; inconsistency virtualization higher efficiency on hardware resources start / stop is slow (in minutes) scale up and down; pay as you go more security loopholes containerization a new interface to deliver and run software fast and cheap docker / containerd dependency; loss of observability and performance; docker image repos; CI / CD docker vendor turf wars container orchestration container operations still need to maintain nodes multi-tenancy container clusters; sidecars vendor lock-in on k8s designs and cloud providers; too many yamls; loss of dev agility service mesh observability, network routing, more ways of load balancing and flow control more network hops and latencies; over design for most systems; chaos engineering, system-level performance testing Sidecar errors may be a single point of failure Serverless divide between functional and non-functional requirements reinventing PaaS; maybe a wrong division; hard to work on special non-functional requirements. low-code, no-code: faster development with less qualified developer. too many hidden layers; vendor lock-in IDC outsourcing hardwares performance dependent on IDC connections and power supply multi-region availability; CDN; pay as you go on hardware layer. data security; cannot evolve on hardware / software integrations Cloud outsourcing softwares and system operations system has more hidden layers easy infrastructure; pay as you go on more layers; no need to maintain hardwares vendor lock-in; Hotel California pricing

July 28, 2021