The shift from monolithic applications to distributed systems such as serverless, microservices, Kubernetes, and virtual machines highlights the importance of abstraction in building resilient infrastructures. Abstraction allows components to function independently by encapsulating behavior and decoupling code, which is also crucial in infrastructure to declare behavior or state without focusing on implementation details. Virtual machines optimize hardware utilization by sharing host resources, while serverless architecture, often managed by third-party cloud providers, allows developers to choose languages optimized for tasks, supporting both synchronous and asynchronous calls. Kubernetes orchestrates container deployment, scaling, and management, offering features like load balancing and automated rollbacks, whereas microservices promote independent deployment of services encapsulating business capabilities, often adhering to the 12-Factor app principles. Each architecture pattern, including those facilitated by platforms like Pulumi, emphasizes creating reusable components that abstract configuration details to enable a plug-and-play architecture, with further exploration of these technologies planned for future discussions.