O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Advanced Solutions in Go - Testing and Distributed Systems

Video Description

Bridge the gap between basic understanding of Go and use of its advanced features

About This Video

  • Discover a number of techniques and approaches to develop modern back-end applications
  • Put to use the best practices to combine the techniques for sophisticated parallel tools
  • This video is based on Go version 1.6 and above

In Detail

Go (a.k.a. Golang) is a statically-typed programming language first developed at Google. It is derived from C with additional features such as garbage collection, type safety, dynamic-typing capabilities, additional built-in types, and a large standard library. This video takes off where basic tutorials on the language leave off. You can immediately put into practice some of the more advanced concepts and libraries offered by the language while avoiding some of the common mistakes for new Go developers. The video explores applications that interact with users, such as websites, command-line tools, or via the file system. It demonstrates how to handle advanced topics such as parallelism, distributed systems, and performance tuning. Lastly, it finishes with reactive and serverless programming in Go.

Table of Contents

  1. Chapter 1 : Testing
    1. The Course Overview 00:02:35
    2. Mocking Using the Standard Library 00:03:39
    3. Using the mockgen Package 00:02:48
    4. Using Table-Driven Tests to Improve Coverage 00:02:43
    5. Using Third-Party Testing Tools 00:03:26
    6. Practical Fuzzing 00:03:21
    7. Behavior Testing Using Go 00:02:56
  2. Chapter 2 : Parallelism and Concurrency
    1. Using channels and the select Statement 00:02:46
    2. Performing async Operations withsync.WaitGroup 00:02:19
    3. Using Atomic Operations and mutex 00:03:13
    4. Using the context Package 00:02:57
    5. Executing State Management for Channels 00:02:24
    6. Using the Worker Pool Design Pattern 00:03:01
    7. Using Workers to Create Pipelines 00:02:57
  3. Chapter 3 : Distributed Systems
    1. Using Service Discovery with Consul 00:02:31
    2. Implementing Basic Consensus Using Raft 00:03:52
    3. Using Containerization with Docker 00:03:04
    4. Orchestration and Deployment Strategies 00:02:36
    5. Monitoring Applications 00:02:34
    6. Collecting Metrics 00:02:22
  4. Chapter 4 : Reactive Programming and Data Streams
    1. goflow for Dataflow Programming 00:03:25
    2. Reactive Programming with RxGo 00:02:47
    3. Using Kafka with Sarama 00:02:44
    4. Using async Producers with Kafka 00:02:48
    5. Connecting Kafka to goflow 00:02:44
    6. Defining a GraphQL Server in Go 00:03:52
  5. Chapter 5 : Serverless Programming
    1. Go Programming on Lambda with Apex 00:05:28
    2. Apex Serverless Logging and Metrics 00:02:53
    3. Google App Engine with Go 00:04:14
    4. Working with Firebase Using zabawaba99/firego 00:03:39
  6. Chapter 6 : Performance Improvements, Tips, and Tricks
    1. Using the pprof Tool 00:03:17
    2. Benchmarking and Finding Bottlenecks 00:02:15
    3. Memory Allocation and Heap Management 00:02:23
    4. Vendoring and Project Layout 00:03:44
    5. Using fasthttprouter and fasthttp 00:03:31