Whether your company is considering serverless computing or has already made the decision to adopt this model, this practical book is for you. Author Jason Katzer shows early- and mid-career developers what's required to build and ship maintainable and scalable services using this model.
With this book, you'll learn how to build a modern production system in the cloud, viewed through the lens of serverless computing. You'll discover how serverless can free you from the tedious task of setting up and maintaining systems in production. You'll also explore new ways to level up your career and design, develop, and deploy with confidence.
In three parts, this book includes:
- The Path to Production: Examine the ins and outs of distributed systems, microservices, interfaces, and serverless architecture and patterns
- The Tools: Dive into monitoring, observability and alerting, logging, pipelines, automation, and deployment
- Concepts: Learn how to design security and privacy, how to manage quality through testing and staging, and how to plan for failure
Table of contents
Introduction to Serverless
- What Is Serverless?
- Strengths of Serverless
- Weaknesses of Serverless
- When Does It Make Sense to Use Serverless?
- When Is Serverless Compute Not Right for You?
- Let’s Get Started
- I. The Path to Production
1. Distributed Systems
- What Is a Distributed System?
- Why Do We Want a Distributed System?
- The Harsh Realities of Distributed Systems
- What Am I Responsible For?
- What Do You Need to Consider When Designing a Distributed System?
- Further Reading
- Why Do You Want to Use Microservices?
- Issues with Microservices
- How Do You Use Microservices Effectively?
- How Micro Is a Microservice?
- Choosing Between Monoliths and Microservices
3. Serverless Architecture and Patterns
- The Role of an Architect
- What Do You Need to Know to Be an Architect?
- Making Decisions
- Cloud Provider Components
- Events from Your Cloud Provider
- Example 1: Serverless Monolith
- Example 2: Incoming Webhook
- Example 3: Using Your Cloud Provider for User Authentication
- Example 4: Generic Background Task Pattern
- Example 5: Streaming Extract, Transform, Load
- Example 6: Create Your Own Polling Integration
- Example 7: Processing Files and Images
- Example 8: Migration Service Pattern
- Example 9: Fanning Out
- Interfaces: Some Assembly Required
- Serverless Interfaces
- Designing Your Interfaces
- Designing the Unhappy Path
- Strategies for Integrating with Other Services
- II. The Tools
5. The Serverless Framework
- Why Use the Serverless Framework?
- When the Serverless Framework Isn’t for You
- What to Know Before You Start
- The Components of a serverless.yml File
- Using the serverless Command
- Real-World serverless.yml
6. Monitoring, Observability, and Alerting
- What Is Monitoring?
- What Are My Options?
- Components of Monitoring
- A Selection of Advanced Practices
- What Does It Mean to Log?
- Why Log?
- When to Rely on Logs Instead of Metrics
- What Should You Log?
- What Shouldn’t You Log?
- How Does Logging Work?
- Collecting Other Logs
- Distributed Tracing
- Encrypting Logs for Privacy and Compliance
8. Changes, Automation, and Deployment Pipelines
- Dealing with Change
- The Role of Automation
- Getting Your Code Ready for Production
- Infrastructure as Code
- Database Changes (Migrations)
- Configuration Management
- What Is a Pipeline?
- Decisions to Make Regarding Your Pipeline
- Canaries and Blue/Green Deployments
- Why Do You Need a Pipeline?
- Key Phases of a Deployment Pipeline
- Handling Pipeline Failures
- III. Concepts
9. Security, Permissions, and Privacy
- Everyone Is Responsible, but You Are Especially Responsible
- Prepare to Be Hacked
- Limit, Track, and Review All Secrets and Access
- Be Ready to Roll
- Validate All User Input and Double-Check Those Settings
- Keep Your Machine Secure
- Keep Learning
- 10. Quality, Testing, and Staging
- 11. Planning for Failure
- 12. Conclusion
- Title: Learning Serverless
- Release date: November 2020
- Publisher(s): O'Reilly Media, Inc.
- ISBN: 9781492057017
You might also like
40 Algorithms Every Programmer Should Know
Learn algorithms for solving classic computer science problems with this concise guide covering everything from fundamental …
Software Engineering at Google
Today, software engineers need to know not only how to program effectively but also how to …
Head First Design Patterns, 2nd Edition
You know you don’t want to reinvent the wheel, so you look to design patterns—the lessons …
Dominated by streaming data and events, the next generation of software development optimizes not only how …