Giter Club home page Giter Club logo

golang-training's Introduction

Golang for Backend Developer

For more detail, please visit wiki

About the instructor

Phu, Tran Phong Developer and Instructor

I'm Phu, I'm a developer with a passion for teaching. I'm an academic advisor and instructor at Nordic Coder. My expertise and skills are about big data, distributed system, continuous deployment. I have been teaching many courses about backend and frontend such as Golang/Nodejs/PHP, ES/MySQL and Reactjs/Angular. I've helped students learn to code, improve their skills. I've been invited/collaborated by companies such as ABC to build the courses for training their employees.

I spend most of my time to researching latest methodologies, technologies, skills which should be have for developers to help them learn to make code better, code for fun and love, and make hard concepts easy to understand.

Welcome to my course, I am on way to help you.

About this course

This course is designed to get you up and running as fast as possible with Go. We'll quickly cover the basics, then dive into some of the more advanced features of the language.

After finishing this course, students will be able to learn how to:

  • Build high-performance concurrent programs with Golang
  • Build modern programs with Golang and its ecosystem such as CI/CD, GRPC
  • Build their own programs with hands-on mentoring from instructor

Course syllabus

Topic 1

  • An Introduction to Programming with Go and TDD
  • Overview on the fastest growing language and why we should learn Golang
  • Set up environments & code organization
  • Go characteristics and principles
  • How Go runs in single CPU and multiple CPUs
  • Reflection and Go's reflect package
  • Exercise: converting CSV to YAML using pointer
  • Exercise: cloning Lodash/Underscore to deep dive into Go
  • Exercise: practicing TDD methodology

Topic 2

  • Pointer in Go
  • Discover goroutines, channel, defer, panic, recover
  • Error handling in Go
  • Pipeline programming in Go
  • Working with database/mysql
  • Diving into Golang by designing a scripting/job
  • Strategy to watch scripting/job
  • Guide to setting up Docker/Laradock to install MySQL
  • Exercise: building a crawler
  • Exercise: following TDD and HTTP mock test

Topic 3

  • Diving into Golang by designing a RESTful API
  • CRUD service using Go with Gin/Echo framework
  • Login and JWT Authentication
  • HTTP Protocol, Cookie, Session
  • Load Balancing with Nginx, high performance, and scalability
  • Exercise: building a note service for Todo MVC application
  • Exercise: building an auto increment number and issues with multiple-CPU problems.
  • Exercise: writing Unit Testing Code and DB mock test

Topic 4

  • Design and apply microservices/serverless architecture using Go
  • RPC, GRPC and benefits from GRPC
  • How to design a new system with GRPC
  • How to integrate GRPC to an existing system
  • Exercise: using GRPC to refactor note service from topic 2
  • Exercise: API caching, DB connection pool
  • Exercise: writing a Voucher service

Topic 5

  • Understand about string operations and UTF8 encoding in Go
  • Best practices to develop a project with Go & final project
  • CI/CD, logging and monitoring on Production environment with ELK stack
  • Deploy a CI/CD for note services with Jenkins/K8S
  • Overview and requirements of the Final Project
  • Review and feedback on the course

Topic 6

  • Build your own open source software
  • Build a helper lib (ex: porting underscore)
  • Or build a http router
  • Or build a (micro) service to generate fake data
  • Or build an application with your own idea

Pre-work

A mini project to demonstrate students’ knowledge at input level

  • With a given URL of news website (Eg vnexpress.net, thesaigontimes.vn,...), create a crawler that:
  • Task 1: Can fetch the whole data from a news website then parse the data into specific piece as: title, published date, summary, body and author
  • Task 2: With any URLs found in the previously fetched data, repeat the task 1 until reaching maximum of 5 levels.

Final project

The final project is up to students with mentoring from instructor. The objective of the project is to:

  • Demonstrate understanding of Golang and its ecosystem.
  • Apply knowledge gained during the course by building an application/program such as a helper lib (ex: porting underscore), an http router, a (micro) service to generate fake data or create API for blog, e-commerce, Todo app, etc.

golang-training's People

Contributors

tpphu avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.