LearnServerProgramming

Julian Lawrence edited this page Aug 11, 2016 · 37 revisions
Clone this wiki locally

This page links to resources for learning about server programming in Go - both web services and mobile backends. The items are organized into sections by topic.

Getting Started

Middleware

A topic you will see discussed frequently is "middleware". If you're not familiar with that term, we suggest you start out by reading a few of these articles:

Toolkits and Frameworks

Before you decide to adopt a third party web framework or toolkit, keep in mind that the Go standard library provides all of the tools you need to build a sophisticated, modern web application. Keeping with Go's preference for simplicity and composability over complexity and magic, we suggest you see how far the standard library can take you.

If you decide you need a bit more infrastructure, start by looking at some of the toolkits and libraries available.

Toolkits & Libraries & Microframeworks

Frameworks

  • BeeGo Framework
  • Frodo - Go mini web framework inspired by Laravel(php), Slim(php) and ExpressJS(node.js)
  • GinGonic
  • Macaron - Productive, modular web framework in Go.
  • Revel Web Framework
  • Ringo - Lightweight MVC web framework inspired by Rails, Gin.
  • Utron - Lightweight MVC framework for web applications.
  • Iris - Fast MVC framework for web applications.

Communication

Presentation

Profiling and Performance

Tracing, Monitoring, Logging, and Configuration

  • Package expvar provides a standardized interface to public variables, such as operation counters in servers.
  • Package flag implements command-line flag parsing.
  • Package log implements a simple logging package.
  • Package glog implements logging analogous to the Google-internal C++ INFO/ERROR/V setup.

Storage

  • Package os provides a platform-independent interface to operating system functionality.
  • Package path/filepath implements utility routines for manipulating filename paths in a way compatible with the target operating system-defined file paths.
  • Package database/sql provides a generic interface around SQL (or SQL-like) databases.

Platforms

Google Cloud Platform

Amazon Web Services

Microsoft Azure

  • Microsoft OpenTech's azure-sdk-for-go provides a Golang package that makes it easy to consume and manage Microsoft Azure Services.
  • Search packages for Azure

Openstack / Rackspace

IBM BlueMix