Turn your projects from a weekend hack to a long-living creation! Loosely drawing from the field known in large software companies as Site Reliability Engineering (SRE), this book distills from these disciplines and addresses issues that matter to makers: keeping projects up and running, and providing means to control, monitor, and troubleshoot them.
Most examples use the Raspberry Pi, but the techniques discussed apply to other platforms as well. This book is all about breadth, and in the spirit of making, it visits different technologies as needed. However, the big goal in this book is to create a shift in the reader’s mindset, where weekend hacks are pushed to the next level and are treated as products to be deployed. In that regard, this book can be a stepping stone for hobbyist makers into developing a broader, professional skill set.
First, the book describes techniques for creating web-browser based dashboards for projects. These allow project creators to monitor, control, and troubleshoot their projects in real-time. Project Reliability Engineering discusses various aspects of the process of creating a web dashboard, such as network communication prools, multithreading, and web design, and data visualization.
Later chapters cover configuration of the project and the machine it’s running on, and additional techniques for project monitoring and diagnosis. These include good logging practices; automatic log and metrics monitoring; and alerting via email and text messages;
A mixture of advanced concepts forms the last chapter of the book, touching on topics such as usage of microservices in complex projects; debugging techniques for object-oriented projects; and fail-safing the project’s software and hardware.
What You’ll Learn
Monitor and control projects, keep them up and running, and troubleshoot them efficiently
• Get acquainted with available tools and libraries, and learn how to make your own tools
• Develop deeper understanding of web technologies
• Design robust and complex systems
Who This Book Is For
Members of the maker community with some development skills.
|Edition description:||1st ed.|
|Product dimensions:||6.10(w) x 9.25(h) x (d)|
About the Author
Eyal Shahar is currently based in San Francisco, where he works as an exhibit developer in the New Media Department at the Exploratorium. Eyal started his career as a professional musician, working with some of Israel's most prominent artists for over a decade. His software and hardware engineering experience includes positions in music and art related startups in Tel Aviv, Paris, and San Francisco. Eyal has a B.Sc. in Electrical Engineering from the Tel Aviv University and a Master's in Media, Arts and Sciences from the MIT Media Lab.
The exhibits Eyal makes are strange hybrids: like a maker’s project, they are usually one-offs, often consisting of patches of software written in haste, skipping over industry standards such as passing unit-tests and following design documents. On the other hand, because they live on a museum floor, they must be rock solid. As he developed techniques to monitor and stabilize his exhibits, Eyal realized he was also applying these methods on his personal projects. Eyal is excited at the prospect of making these available to the rest of the maker community.
Table of Contents
Chapter 1: Introduction
What DevOps means and why it came to be; Reflecting on the needs of makers and defining key terms and subfields of the topic.
• Origins: DevOps and SRE
• Philosophy of Project Reliability Engineering
Chapter 2: Our first dashboard: the status page
First steps in integrating monitoring code into a project; Getting familiar with key frameworks.
• Everything is a server
• Python and Flask
• UI Libraries roundup
Chapter 3: The live dashboard
Making a dashboard that communicates with the project in real time
• Dashboard design
• Working with HTTP requests
• TCP and UDP
• Inter-process communication design
Chapter 4: Make it real: A physical dashboard
Making project reliability fun and flashy
• Physical design
• Components and circuitry
• Software design and programming
Chapter 5: Logging
Best Practices of logging, what tools are out there and DIY solutions
• The good old “print”
• Where do logs go?
• Log Design
• Logging libraries
Chapter 6: Alerts
Techniques that allow projects to announce their failures
• You’ve got mail!
• Getting alerts by mobile
• IoT alerts
Chapter 7: Staying alive
Reviewing methods to start programs on startup, keeping them running after crashing, and avoiding crashes all together
• Booting up
• Crash recovery
• Error handling
Chapter 8: Troubleshooting and debugging
Putting all that hard work to use, and developing good debugging skills
• Divide and conquer
• Using your tools
• Tips and tricks
Chapter 9: One machine to rule them all
Examining the advantages of a main server, while comparing deployment options and configurations.
• Working from home: DDNS and router settings
• Living in the cloud
• Web server frameworks
Chapter 10: Storage
Providing reliable storage solutions to data-driven projects
• Self-storage: relying on the OS
• Network Attached Storage
• Database basics
Chapter 11: A window to professional DevOps
Advanced topics for the prolific maker
• Version control
• Package managers
• Build tools