golang-learning

Learning Targets

Part-A: Introduction and Deep-Dive

  • Go programming language and its core fundamentals.
  • Package ecosystem and tooling.
  • First-class functions.
  • Error handling
  • Struct and Interface.
  • Writing testable and idiomatic Go code with interface, struct and packages (architecture guidance and best practices).
  • Concurrency primitives: Goroutines and Channels.
  • Advanced Concurrency patterns.
  • Mutexes.
  • Go Modules.
  • HTTP programming: From basics to building production-ready apps.
  • Testing Go applications: From basics to BDD-style testing and mocking.
  • Go 1.18 Generics
  • Building CLI applications

Part-B: Distributed Systems and Microservices in Go

  • An introduction to cloud-native distributed systems architecture patterns
  • Introduction to Microservices Architecture
  • Decomposition Patterns for Microservices
  • Domain-Driven Design (DDD)
  • A deep dive into gRPC and Protocol Buffers
  • Working with CockroachDB - A distributed, fault-tolerant database
  • Managing Transactions in Microservices
  • A deep dive into cloud-native messaging systems: NATS and NATS JetStream
  • Building Event-Driven Microservices with NATS
  • Building Microservices with Event Sourcing and CQRS
  • Microservices development with Go kit
  • Distributed Tracing with OpenCensus and Zipkin
  • Encore – Backend Development Engine