#3 Advanced Go for large production applications

  • Ideally, you have completed workshop 2 and/or have an equivalent experience. You know how to test drive your code (see workshop 2) and know how to use well the testing packages in Go.

  • Within your backend team, take the lead for the advancement, design and testing of your Go codebase.

    Learn new approaches and introduce your team to new ideas and practices that makes your product more manageable, testable, robust and simpler.

  • During this 2 days workshop, we cover and use the patterns & topics described below in order to build our own production application along with the corresponding test suite.

    Once learned, those patterns and topics can be replicated across a large number of backend challenges and issues.

What you will learn to apply

Go generators

Go generators are often not well known and underused. They offer very robust features. We will use them to automatize part of our code.

Closures and functions objects

Learn how to use closure and function objects to your advantage. We will decouple our configuration and improve and testing in our application.

Testing APIs

Take integration testing to the next level! Testing APIs, will provide deterministic setup, automatic cleanup and scale when a large numbers of developers are writing tests.

Testing, sub-tests and scope

Make your tests like specifications and leverage the scope to avoid data setup repetition.

Powerful tool from IO package

Mastering the Go IO package will allow you to implement more robust APIs for your production systems

Interface segregation & embedding

Go beyond simple interface design to make your code and tests easier to manage. See how they fit with regular design patterns: template, etc.

Design patterns with Go

Learn how to leverage known patterns in Go: adapter, template, bridge, etc. For instance we will support a multi provider in our built application.

Third parties and external APIs

Learn to isolate your third parties clients with Go internal package mechanism to avoid coupling and leaking

Encryption

Encryption is necessary in today’s DevOps pipeline. Learn how to provide easy and robust encryption for production application operational pipelines.

Mocking pitfalls

Learn how mocking can degrade your codebase, and use alternatives.

Events with Go channels

Built an event driven pipeline in our workshop production code to learn how to leverage channel and the sync package.