Praise for Learning Serverless
In this book, Jason covers every important aspect of serverless architecture. Simply put, if youre working on or planning to work on serverlessthis is the book for you!
Erez Berkner, CEO at Lumigo
Serverless adoption is growing significantly. Jason Katzers book offers an important overview of what developers need to learn, and what challenges theyll have to overcome, to become productive with serverless.
Vadym Kazulkin, Head of Technology Strategy at ip.labs
Capital One leverages serverless architecture throughout our organization. Knowing when, when not, and how to manage serverless at scale is a must-have tool for any technology leader in the modern world.
Jason Valentino, Senior Director and Head of Engineering, Capital One Shopping
Learning Serverless
by Jason Katzer
Copyright 2021 Versa Labs LLC. All rights reserved.
Printed in the United States of America.
Published by OReilly Media, Inc. , 1005 Gravenstein Highway North, Sebastopol, CA 95472.
OReilly books may be purchased for educational, business, or sales promotional use. Online editions are also available for most titles (http://oreilly.com). For more information, contact our corporate/institutional sales department: 800-998-9938 or corporate@oreilly.com .
- Acquisitions Editor: Jennifer Pollock
- Development Editor: Sarah Grey
- Tech Editor: Right Touch Editing
- Production Editor: Deborah Baker
- Copyeditor: Sonia Saruba
- Proofreader: Piper Editorial, LLC
- Indexer: nSight, Inc.
- Interior Designer: David Futato
- Cover Designer: Karen Montgomery
- Illustrator: Kate Dullea
- November 2020: First Edition
Revision History for the First Edition
- 2020-10-28: First Edition
See http://oreilly.com/catalog/errata.csp?isbn=9781492057017 for release details.
The OReilly logo is a registered trademark of OReilly Media, Inc. Learning Serverless, the cover image, and related trade dress are trademarks of OReilly Media, Inc.
The views expressed in this work are those of the author, and do not represent the publishers views. While the publisher and the author have used good faith efforts to ensure that the information and instructions contained in this work are accurate, the publisher and the author disclaim all responsibility for errors or omissions, including without limitation responsibility for damages resulting from the use of or reliance on this work. Use of the information and instructions contained in this work is at your own risk. If any code samples or other technology this work contains or describes is subject to open source licenses or the intellectual property rights of others, it is your responsibility to ensure that your use thereof complies with such licenses and/or rights.
978-1-492-05701-7
[LSI]
Dedication
This book is dedicated to my loving parents.
Preface
This book will not make you an expert, but it will be an important step of your journeyit will put you in the top half of developers.
The purpose of this book is to help you understand whats important, and what you need to learn and improve on in order to level up in your career or ship your next big personal project.
About This Book
This book is about arming you with the knowledge you need to represent serverless as an important new technology. There are plenty of doubters out there. And there are plenty of zealots. This book is not from any of those, or for any of those. This book is for people who want to write serious software and gain the respect of peers and colleagues by doing it predictably. I didnt choose to defend serverless. I just chose to ship great software in a way that minimizes maintenance as much as possible.
This book will not tell you how to make your use case serverless. Nor should it. This book will tell you how serverless can help you ship amazing software while saving a bunch of time. It will be real and honest with you about where the serverless world stands. If, on the other hand, you already know everything, it will (I hope) reinforce your worldview in a way that you can share with people who dont get it.
The goal of this book is to serve as a guide for building maintainable and scalable services through the lens of serverless computing. First, well align ourselves on what it means to build a production system. Then, well discuss knowledge specific to the current world of serverless compute, and the way that you or your team have decided to run your serverless workloads.
The underlying ideas and philosophies in the first part of the book are meant to be as timeless as a technical tome can be: plan your software for all edge cases and the real world. Use creative thinking and prioritization to spend the appropriate amount of time solving issues that are less likely to occur.
I have been fortunate enough to spend time teaching programming. I have taught students of all ages, and even ones who were learning English at the same time as learning programming. Hopefully, these lessons will be shaped by that experience so a 12-year-old would be able to pick up this book and build something amazing. The same goes for someone who is 88. So bear with me as I talk about some concepts in this book that you may already be familiar with. I promise to keep the technical knowledge in this book high, while keeping the barrier to understanding it as low as possible.
How This Book Is Organized
After numerous conversations with engineers getting started in their careers, reviewing hundreds of online tutorials, and talking to users of serverless technologies at conferences, I had a revelation. Most of the information produced and consumed about programming is focused around building systems, but not around operating them. Most of the questions I was being asked after giving a talk on serverless were DevOps questions from those who chose serverless to avoid DevOps in the first place. Serverless may abstract away servers, but it does not abstract away DevOps. You will have to make tough decisions when designing, building, and operating your systems. But if done properly, based on the advice of this book and using serverless when applicable, you can meaningfully minimize frustration and time spent, while maximizing your confidence in your systems.
To achieve that mission, you may need to round out your knowledge of system design as it applies to building an internet application. You have the innate ability to design your systems so they achieve the desired functionality intentionally instead of accidentally. This will be done in if you intend to launch your creation into any form of production.
Conventions Used in This Book
The following typographical conventions are used in this book:
ItalicIndicates new terms, URLs, email addresses, filenames, and file extensions.
Constant width
Used for program listings, as well as within paragraphs to refer to program elements such as variable or function names, databases, data types, environment variables, statements, and keywords.
Constant width italic
Shows text that should be replaced with user-supplied values or by values determined by context.
Tip
This element signifies a tip or suggestion.
Note
This element signifies a general note.
Warning
This element indicates a warning or caution.
OReilly Online Learning
Note
For more than 40 years,