Your one-stop guide to the common patterns and practices, showing you how to apply these using the Go programming language
About This Book
- This short, concise, and practical guide is packed with real-world examples of building microservices with Go
- It is easy to read and will benefit smaller teams who want to extend the functionality of their existing systems
- Using this practical approach will save your money in terms of maintaining a monolithic architecture and demonstrate capabilities in ease of use
Who This Book Is For
You should have a working knowledge of programming in Go, including writing and compiling basic applications. However, no knowledge of RESTful architecture, microservices, or web services is expected. If you are looking to apply techniques to your own projects, taking your first steps into microservice architecture, this book is for you.
What You Will Learn
- Plan a microservice architecture and design a microservice
- Write a microservice with a RESTful API and a database
- Understand the common idioms and common patterns in microservices architecture
- Leverage tools and automation that helps microservices become horizontally scalable
- Get a grounding in containerization with Docker and Docker-Compose, which will greatly accelerate your development lifecycle
- Manage and secure Microservices at scale with monitoring, logging, service discovery, and automation
- Test microservices and integrate API tests in Go
Microservice architecture is sweeping the world as the de facto pattern to build web-based applications. Golang is a language particularly well suited to building them. Its strong community, encouragement of idiomatic style, and statically-linked binary artifacts make integrating it with other technologies and managing microservices at scale consistent and intuitive. This book will teach you the common patterns and practices, showing you how to apply these using the Go programming language.
It will teach you the fundamental concepts of architectural design and RESTful communication, and show you patterns that provide manageable code that is supportable in development and at scale in production. We will provide you with examples on how to put these concepts and patterns into practice with Go.
Whether you are planning a new application or working in an existing monolith, this book will explain and illustrate with practical examples how teams of all sizes can start solving problems with microservices. It will help you understand Docker and Docker-Compose and how it can be used to isolate microservice dependencies and build environments. We finish off by showing you various techniques to monitor, test, and secure your microservices.
By the end, you will know the benefits of system resilience of a microservice and the advantages of Go stack.
Style and approach
The step-by-step tutorial focuses on building microservices. Each chapter expands upon the previous one, teaching you the main skills and techniques required to be a successful microservice practitioner.
Downloading the example code for this book. You can download the example code files for all Packt books you have purchased from your account at http://www.PacktPub.com. If you purchased this book elsewhere, you can visit http://www.PacktPub.com/support and register to have the code file.
Table of Contents
- Title Page
- About the Author
- About the Reviewers
- Customer Feedback
Introduction to Microservices
- Building a simple web server with net/http
- Reading and writing JSON
- Routing in net/http
- RPC in the Go standard library
Designing a Great API
- URI format
- URI path design for REST services
- HTTP verbs
- URI query design
- Response codes
- HTTP headers
- RPC APIs
- Versioning APIs
- Object type standardization
- Documenting APIs
- RESTful APIs
- Introducing Containers with Docker
- Installing Docker
- Running our first container
- Docker volumes
- Docker ports
- Removing a container starting with an explicit name
- Docker networking
- Writing Dockerfiles
- Docker Compose
- Design for failure
- Event processing
- Back off
- Circuit breaking
- Health checks
- Service discovery
- Load balancing
- What makes a good microservice framework?
Logging and Monitoring
- Logging best practices
- Encryption and signing
- External security
- Confused deputy
- How an attacker could bypass the firewall
- Input validation
- Securing data at rest
- Authentication and authorization
- Password hashing
- Secure messages
- Shared secrets
- Asymmetric encryption with large messages
- Differences between synchronous and asynchronous processing
- Types of asynchronous messages
- Command Query Responsibility Segregation (CQRS)
- Domain-driven design
What is continuous delivery?
- Manual deployment
- The benefits of continuous delivery
- Aspects of continuous delivery
- Continuous delivery process
- What is container orchestration?
- What is immutable infrastructure?
- Example application
- What is continuous delivery?
- Title: Building Microservices with Go
- Release date: July 2017
- Publisher(s): Packt Publishing
- ISBN: 9781786468666