The author, who converted from an application engineer to SRE about a year and a half ago, introduces a book that is useful now. When I was writing the application code, I wasn't interested in the technology of the lower layers, but it's fun to study again.
Despite the heyday of the cloud, it's helpful to keep track of how your computer works. Many of these books are rather difficult, but I would like to introduce a book that I personally enjoyed reading.
It's called the Raspberry Pi, but it's also explained with a historical background in computer architecture. You can learn the basic knowledge of a single computer such as processor, memory, storage, network, OS, and programming. Because you can know the history together, your intellectual curiosity is greatly stimulated and you can enjoy reading. If you find this book difficult, we also recommend "Why does the program work".
How to use commands is quick if you practice with one hand, but the book is still quick to know how it works.
A great book to get an overview of the Linux kernel. Explains how Linux works, such as process scheduler, memory management, storage hierarchy, and file system. It is very easy to understand with abundant illustrations. Not limited to Linux, there are many small and thick books around the OS, but this book is an exquisite salt plum that is neither too shallow nor too deep. I wanted to meet sooner!
It's a bit old, but it's a valuable book detailing the Linux kernel in Japanese. It's a little difficult to read through suddenly, so at first you can pick up and eat only the parts you are interested in. In my case, I wanted to know more about processes and signals, so I read only that part. I would like to take on the challenge of reading through. I think that it is one of the cool books to display on the bookshelf.
The network has published a number of easy-to-understand introductory books.
This is a standard book for getting started with TCP / IP. It's not very detailed, but it's well-informed as a starting point. The protocol around the network will eventually read the RFC, but it is difficult to read the RFC suddenly, so it is recommended to get an overview in this book first. Just recently, the 6th edition was published.
This is a book I picked up to relearn about DNS, which is somehow difficult to get along with. It is written in a very easy-to-understand manner and can be read as fluent. It is good to know the operating principle of DNS, but personally, cyber attacks and their countermeasures were very interesting. It is recommended for people who know the keyword DNS, but don't really understand it.
In a word, infrastructure is a wide range, but we have collected books that are especially useful for cloud-based engineers.
It covers a wide range of infrastructure basics, and you can learn the basics of OS, network, database, security, and troubleshooting. This book also summarizes problems that are likely to occur during operation and is full of practical know-how. It's rarely thin as an infrastructure book, so it's hard to frustrate. This is a recommended book for application engineers to read. For those who select the hardware by themselves instead of the cloud, please also refer to "Infrastructure Engineer's Textbook".
The knowledge required for system design is explained in plain language. It carefully explains terms that are often used without explanation, such as synchronous / asynchronous, queue, exclusive control, cache, and replication. In addition, we will explain Web systems with a three-layer architecture, system redundancy, and the basics of performance tuning with plenty of illustrations. It's all about the basics of system design, but it's valuable because there aren't many books that explain this level in an easy-to-understand manner. Although it is not a book, please also read "Introduction to System Design" published on GitHub.
You can learn a lot about Infrastructure as Code, which can be said to be a basic culture now. It is systematized about ideas and designs, not how to use tools. There are many useful tools out there, but it's a great way to get a complete picture of what the challenges are. A dense book where you can learn about Infrastructure as Code anti-patterns and best practices at once.
AWS is the representative of the public cloud. As there are many users, many books have been published. I haven't touched GCP or Azure, so I won't introduce it in this article.
A comprehensive study of AWS with this book for AWS beginners. When asked if there is a recommended book for AWS beginners, I will recommend this book. I created an AWS account, but I don't know what to do! Let's start with this book. For those who are worried about security, please also refer to the "Summary of initial settings that should be done in haste once you get an AWS account" that I wrote a long time ago. ..
It is rare for an AWS book and is for intermediate users. AWS multi-account management, network design, system design patterns in AWS, etc. are summarized. It's not suitable for beginners, but it's worth keeping if you're an engineer who is running AWS in production at your company.
There are tons of books on software development, but surprisingly, books on deployment, operation, and monitoring are rare. It is an area that is difficult to formalize, but I picked up a good book among them.
CI / CD is now commonplace, but this book covers the basic principles of CI / CD. It covers a very wide range of topics, from version control and continuous integration to deployment pipeline design, database and dependency library management, and compliance and auditing. It feels a little old, but it's a book where you can thoroughly learn why CI / CD is important.
Monitoring is an area that is not very explicit, despite being an important factor in system operation. Beginning with the basic principles of monitoring, monitoring strategies are explained for each technology layer, such as front-end monitoring, application monitoring, and server monitoring. It is not possible to suddenly make a correct monitoring design just by reading this, but it will provide enough information in a compact manner to get you started.
A book about Site Reliability Engineering, which has become quite famous. It is characterized by the fact that it should focus on software engineering activities by reducing troubleshooting and manual operation to 50% or less. In particular, the principles up to Chapter 9 are full of practical ideas such as SLO, error budget, release engineering, toyle monitoring, etc.
If you don't have some experience in architecture design, you won't understand it well, but if you read it after trial and error yourself, you will get angry at once.
It will tell you what kind of viewpoint should be important when designing a system assuming the cloud. Scalability, security, cost optimization, etc. are important even on-premise, but they provide guidance when assuming the cloud. It's only natural for people who are already operating in the cloud, but it can be said that it is worth a thousand dollars to verbalize that natural.
A book that covers all the perspectives needed to design microservices. Suddenly, the story of the bounded context of Domain Driven Design emerges, explaining technical topics such as deployment, testing, monitoring, and security. It also discusses the role of the architect and its impact on the organization, such as Conway's law, and provides compact yet dense information.
An ambitious book that systematizes what perspectives should be covered when designing a system architecture. The design process from each perspective, such as context, function, development, deployment, and operation, is described in detail. At the same time, quality characteristics such as performance, scalability, availability, and security will be explained. It's not for beginners at all, but if you want to improve your architectural design skills, this is a book you definitely want to read.
As represented by Infrastructure as Code, it has become commonplace for infrastructure main people to write code. Here are two recommended books for those who write such code.
This is one of the few foreign books in this article. This book describes the complexity of software and offers techniques to minimize that complexity. What impressed me personally was that the symptoms of complexity were organized into three categories: amplification of change, cognitive load, and unknown unknown. It is written in plain English and easy to read, so even those who are not good at English should definitely try this book.
Starting from the programming paradigm, after organizing module design and component design, the architecture design of software systems will be explained. The art of how to draw boundaries with business rules at the core gives suggestions not only at the application level but also at the system level design.
I have collected such masterpieces that I would like to recommend to all software engineers. You can learn a universal way of thinking, so if you haven't read it, you should definitely read it.
It is a masterpiece that has survived 20 years. There are a lot of ideas you need to know to build your career as a software engineer. It's not written to be difficult, but it may be worthwhile to have some experience in software development. This is my favorite technical book, and I still read it from time to time.
Many software engineers are good at problem solving. However, the theme of this book is problem finding. No matter how good your problem-solving ability is, if you can't define the right problem, it won't create value. It is a masterpiece of Weinberg, which is rich in wit and gives us a chance to reconsider how to grasp the problem.
You may have heard the phrase "UNIX Philosophy". UNIX philosophy is studded with ideas that have a great influence on current software development, such as "do one thing well". It's more like a reading material than a technical book and doesn't require specialized knowledge, so it's a good idea to read it for a change.
Many people work as a team regardless of the genre of work. Here are some books that will help you build a team that will have fun and produce results.
This book first describes the famous three pillars of HRT: Humility, Respect, and Trust. And I will explain how to get around in teams, communities and internal organizations from the standpoint that all relationships are due to the lack of HRT. It's not just a mental theory, it's studded with practical practices, and it's a book you'll want to read if you're working as a team.
Like the expert programmers, this book was first released 20 years ago. Practices such as TDD, refactoring, and continuous integration, which used to be advanced, have become commonplace. But the true value of this book lies in the values and principles of Chapters 4 and 5. The universal way of thinking is valid for a long time, so I definitely want to keep it bloody.
"In fact, many software development problems are sociological rather than technical," a masterpiece of engineering management that begins with the passage. I won't write it because it will be spoiled if I write too much in the on-parade of quotes, but if you are a team leader or manager, this is a book that you should read at least once. Just keeping in mind what's written here will make a pretty good team.
I'd really like to introduce more and more, but I'll just list the titles. There are some out-of-print books, but it's cute.
Probably the book on this list isn't it! Some people may be angry. Please tell us your recommendations.
By the way, in this article, I tried to systematize by referring to Map drawing of Web system architecture. Muri! Therefore, the category is quite appropriate. I hope I can learn a little more systematically, but I will write about systematization as my future homework.