Skip to main content

Software Engineering at Google

In the article "Writing Software for Managed Compute," the author discusses various aspects of writing software for managed compute environments. The article covers topics such as architecting for failure, batch versus serving, managing state, connecting to a service, and one-off code.

Architecting for failure is an important consideration when writing software for managed compute. It involves designing systems that can handle failures gracefully and recover quickly. This includes strategies such as redundancy, fault tolerance, and monitoring.

The article also explores the differences between batch processing and serving in managed compute environments. Batch processing involves executing a large number of tasks in parallel, while serving focuses on providing real-time responses to user requests. The author highlights the importance of understanding the specific requirements of the application to determine the appropriate approach.

Managing state is another crucial aspect of writing software for managed compute. The article discusses different strategies for managing state, such as using databases, caching, and distributed systems. It emphasizes the need for careful consideration of data consistency, availability, and scalability.

When connecting to a service, the article suggests using well-defined APIs and protocols to ensure compatibility and ease of integration. It also highlights the importance of handling errors and retries to ensure robustness and reliability.

The article briefly touches on the topic of one-off code, which refers to code that is written for a specific task or purpose and is not intended for long-term use. The author advises caution when writing one-off code and recommends documenting and reviewing such code to avoid potential issues in the future.

In the section "CaaS Over Time and Scale," the article discusses the use of containers as an abstraction for managing compute resources. It also explores the concept of having one service to rule them all, which involves consolidating multiple services into a single, unified platform.

The article concludes by discussing the factors to consider when choosing a compute service. It highlights the trade-off between centralization and customization, the level of abstraction provided by serverless computing, and the decision between public and private compute services.

Overall, "Writing Software for Managed Compute" provides valuable insights into the considerations and best practices for writing software in managed compute environments. It covers a range of topics relevant to developers and architects working in these environments and offers practical advice for designing robust and scalable systems.

The original article: https://abseil.io/resources/swe-book/html/toc.html