Apply best practices to produce lean, testable, and maintainable Go code to avoid accumulating technical debt
Explore Go’s built-in support for concurrency and message passing to build high-performance applications
Scale your Go programs across machines and manage their life cycle using Kubernetes
Description
Over the last few years, Go has become one of the favorite languages for building scalable and distributed systems. Its opinionated design and built-in concurrency features make it easy for engineers to author code that efficiently utilizes all available CPU cores.
This Golang book distills industry best practices for writing lean Go code that is easy to test and maintain, and helps you to explore its practical implementation by creating a multi-tier application called Links ‘R’ Us from scratch. You’ll be guided through all the steps involved in designing, implementing, testing, deploying, and scaling an application. Starting with a monolithic architecture, you’ll iteratively transform the project into a service-oriented architecture (SOA) that supports the efficient out-of-core processing of large link graphs. You’ll learn about various cutting-edge and advanced software engineering techniques such as building extensible data processing pipelines, designing APIs using gRPC, and running distributed graph processing algorithms at scale. Finally, you’ll learn how to compile and package your Go services using Docker and automate their deployment to a Kubernetes cluster.
By the end of this book, you’ll know how to think like a professional software developer or engineer and write lean and efficient Go code.
Who is this book for?
This Golang programming book is for medium to advanced users who want to delve deeper into the best practices of using Golang to build complex distributed systems effectively. Knowledge of Go programming and the basics of software development is required.
What you will learn
Understand different stages of the software development life cycle and the role of a software engineer
Create APIs using gRPC and leverage the middleware offered by the gRPC ecosystem
Discover various approaches to managing package dependencies for your projects
Build an end-to-end project from scratch and explore different strategies for scaling it
Develop a graph processing system and extend it to run in a distributed manner
Deploy Go services on Kubernetes and monitor their health using Prometheus
The Github repo provided for this book doesn't work. It's using deprecated libraries, running `make` doesn't build the app, and there are no instructions on how to actually get it running. If you can't run the project, then that defeats the whole point of the book.
Amazon Verified review
Calvin ColtonNov 07, 2022
2
The first four chapters of this book are just general information pertaining to the software engineering profession, testing, principles, etc, which is somewhat helpful. However once we actually got down to the project, I wasn't sure if the code snippets were actual code we should be writing, or just an overview. I was left with so many questions, i.e.- How should we structure our project directory?- Do we need to import external go packages to make this work?- Why are code snippets incomplete? Should I be writing these incomplete functions? Will we fill it in later?You're left reviewing code in Github, which is organized only by chapter. What should the complete project actually look like? I don't know! Such a disappointment--getting 200 pages in just to realize it's probably not worth it to finish it.The gold standard for implementing a project in Go is definitely Alex Edward's Let's Go and Let's Go Further. I'm not sure why this is so difficult. I want practice building applications/programs from start to finish, and I'm not sure why this is so difficult to do. Tell the reader when to create a file, where it's located, what it looks like. Be explicit and complete. Try running it along the way. Make sure it works.A lot to be improved here. A bit disappointed with Packt.
Amazon Verified review
MTOct 04, 2021
5
A great book on creating scalable distributed systems in Go.
Amazon Verified review
dspMar 26, 2021
5
The book teaches you how to decompose and solve problems efficiently using microservices using golang.It showcases both how intelligently the language is designed (how easy it is to import for example a database, for a small part of platform, or a message queue for another) and also how good abstractions allow you to tackle complexity while maintaining proper code form.
Amazon Verified review
Zoltan G.Mar 03, 2021
5
For me it was an instant 'click'. This book isn't simply about learning a programming language or a specific technology. Sure, if you go through the exercises you'll get to know Go Programming Language more intimately, but it also covers essential knowledge that helps through every stage of system design.It tells a story about how things can be built in a way that suits any given scale of operation. It shows common pitfalls and how to avoid them, and introduces engineering practices that ensure that what you create will work, and will be the right architecture for the requirements of your project. Technologies get obsolete quickly and tools are replaced by others but the content of the book stays relevant being a good guide on how to strike the right balance of simplicity and scaling.The reader will be able to go through the life-cycle of a complex project in a way that's likely applicable to most real-life software engineering project. From a simple 'proof of concept' to a large scale distributed system, most evolutionary steps are covered. The examples are detailed and it's worth spending time understanding the reasons behind each level of the design of the example project in the book.I'd recommend the book for engineers who see themselves in decision-making positions perhaps in a startup, maybe even with their own projects.The language of the book is not the simplest, takes a few pages to get used to the precise definitions.
Achilleas Anagnostopoulos has been writing code in a multitude of programming languages since the mid 90s. His main interest lies in building scalable, microservice-based distributed systems where components are interconnected via gRPC or message queues. Achilleas has over 4 years of experience building production-grade systems using Go and occasionally enjoys pushing the language to its limits through his experimental gopher-os project: a 64-bit kernel written entirely in Go. He is currently a member of the Juju team at Canonical, contributing to one of the largest open source Go code bases in existence.
Where there is an eBook version of a title available, you can buy it from the book details for that title. Add either the standalone eBook or the eBook and print book bundle to your shopping cart. Your eBook will show in your cart as a product on its own. After completing checkout and payment in the normal way, you will receive your receipt on the screen containing a link to a personalised PDF download file. This link will remain active for 30 days. You can download backup copies of the file by logging in to your account at any time.
If you already have Adobe reader installed, then clicking on the link will download and open the PDF file directly. If you don't, then save the PDF file on your machine and download the Reader to view it.
Please Note: Packt eBooks are non-returnable and non-refundable.
Packt eBook and Licensing When you buy an eBook from Packt Publishing, completing your purchase means you accept the terms of our licence agreement. Please read the full text of the agreement. In it we have tried to balance the need for the ebook to be usable for you the reader with our needs to protect the rights of us as Publishers and of our authors. In summary, the agreement says:
You may make copies of your eBook for your own use onto any machine
You may not pass copies of the eBook on to anyone else
How can I make a purchase on your website?
If you want to purchase a video course, eBook or Bundle (Print+eBook) please follow below steps:
Register on our website using your email address and the password.
Search for the title by name or ISBN using the search option.
Select the title you want to purchase.
Choose the format you wish to purchase the title in; if you order the Print Book, you get a free eBook copy of the same title.
Proceed with the checkout process (payment to be made using Credit Card, Debit Cart, or PayPal)
Where can I access support around an eBook?
If you experience a problem with using or installing Adobe Reader, the contact Adobe directly.
To view the errata for the book, see www.packtpub.com/support and view the pages for the title you have.
To view your account details or to download a new copy of the book go to www.packtpub.com/account
Our eBooks are currently available in a variety of formats such as PDF and ePubs. In the future, this may well change with trends and development in technology, but please note that our PDFs are not Adobe eBook Reader format, which has greater restrictions on security.
You will need to use Adobe Reader v9 or later in order to read Packt's PDF eBooks.
What are the benefits of eBooks?
You can get the information you need immediately
You can easily take them with you on a laptop
You can download them an unlimited number of times
You can print them out
They are copy-paste enabled
They are searchable
There is no password protection
They are lower price than print
They save resources and space
What is an eBook?
Packt eBooks are a complete electronic version of the print edition, available in PDF and ePub formats. Every piece of content down to the page numbering is the same. Because we save the costs of printing and shipping the book to you, we are able to offer eBooks at a lower cost than print editions.
When you have purchased an eBook, simply login to your account and click on the link in Your Download Area. We recommend you saving the file to your hard drive before opening it.
For optimal viewing of our eBooks, we recommend you download and install the free Adobe Reader version 9.