Distributed Computing with Go
V.N. Nikhil Anurag
- 246 pages
- English
- ePUB (mobile friendly)
- Available on iOS & Android
Distributed Computing with Go
V.N. Nikhil Anurag
About This Book
A tutorial leading the aspiring Go developer to full mastery of Golang's distributed features.About This Bookā¢ This book provides enough concurrency theory to give you a contextual understanding of Go concurrency ā¢ It gives weight to synchronous and asynchronous data streams in Golang web applications ā¢ It makes Goroutines and Channels completely familiar and natural to Go developersWho This Book Is ForThis book is for developers who are familiar with the Golang syntax and have a good idea of how basic Go development works. It would be advantageous if you have been through a web application product cycle, although it's not necessary.What You Will Learnā¢ Gain proficiency with concurrency and parallelism in Goā¢ Learn how to test your application using Go's standard libraryā¢ Learn industry best practices with technologies such as REST, OpenAPI, Docker, and so onā¢ Design and build a distributed search engineā¢ Learn strategies on how to design a system for web scaleIn DetailDistributed Computing with Go gives developers with a good idea how basic Go development works the tools to fulfill the true potential of Golang development in a world of concurrent web and cloud applications. Nikhil starts out by setting up a professional Go development environment. Then you'll learn the basic concepts and practices of Golang concurrent and parallel development. You'll find out in the new few chapters how to balance resources and data with REST and standard web approaches while keeping concurrency in mind. Most Go applications these days will run in a data center or on the cloud, which is a condition upon which the next chapter depends. There, you'll expand your skills considerably by writing a distributed document indexing system during the next two chapters. This system has to balance a large corpus of documents with considerable analytical demands. Another use case is the way in which a web application written in Go can be consciously redesigned to take distributed features into account. The chapter is rather interesting for Go developers who have to migrate existing Go applications to computationally and memory-intensive environments. The final chapter relates to the rather onerous task of testing parallel and distributed applications, something that is not usually taught in standard computer science curricula.Style and approachDistributed Computing with Go takes you through a series of carefully graded tutorials, building ever more sophisticated applications.
Frequently asked questions
Information
Foundations of Web Scale Architecture
- Scaling a web application
- Monolith app versus microservices
- Deployment options
Scaling a web application
- Scaling the system as a whole
- Splitting up the system and scaling individual components
- Choosing specific solutions to better scale the system
The single server instance
- A web server to serve web pages and handle server-side logic
- A database to save all user data (blog posts, user login details, and so on) related to the blog
- Out of memory due to the database or blog server
- Performance degradation due to the web server or database requiring more CPU cycles
- Out of storage space due to the database
Separate layers for the web and database
- Due to the database: Increase RAM for the database
- Due to the blog server: Increase RAM for the blog server
- Due to the database: Increase the CPU power for the database
- Due to the blog server: Increase the CPU power for the blog server
- Due to the database: Increase the storage space for the database