Top.Mail.Ru
Разработка микросервисов на Go. Пошаговое руководство
Создай свой первый микросервис на языке Golang за десять шагов. Полная инструкция в статье.
Время чтения: 5 минут
Микросервисы активно используют крупные компании в России и в мире: Ozon, Wildberries, «Т-Банк», Netflix, Amazon, Spotify и многие другие. В этой статье мы разберемся, почему лидеры рынка выбирают микросервисы, чем они отличаются от других IT-продуктов и как самостоятельно создать микросервис с нуля.
Что такое микросервис?
Микросервис — это автономное приложение, выполняющее одну конкретную задачу в составе большой системы, например, авторизацию пользователей, обработку платежей или отправку уведомлений. В отличие от монолитных приложений, где весь функционал находится в одном большом коде, микросервисы разрабатываются и разворачиваются независимо друг от друга.
Преимущества микросервисов
  • Гибкость и масштабируемость: обновление или развитие одного модуля не затрагивает всю систему.
  • Быстрота развертывания: новые функции добавляются независимо от других частей продукта.
  • Повышенная отказоустойчивость: сбой одного микросервиса не приводит к остановке всей системы.
  • Упрощенная поддержка и разработка: независимые команды могут параллельно работать над разными микросервисами.
Твой первый оффер: зарплата от 120 000 рублей! Пройди курс по Go-разработке с гарантией трудоустройства и получи такое предложение от работодателя! Основная оплата курса проходит уже после выхода на работу, ты платишь за полученный результат!
Почему именно Go выбирают для микросервисов?
Микросервисы можно писать на разных языках, таких как Java, Python или C#, но Golang (Go) особенно популярен благодаря своим преимуществам:

  • Высокая скорость выполнения: Go компилируется в машинный код, что обеспечивает быструю обработку запросов.
  • Встроенная поддержка параллелизма: горутины позволяют эффективно управлять потоками выполнения.
  • Легкость развертывания: программа компилируется в единый исполняемый файл без сложных зависимостей.
  • Минимальное потребление ресурсов: Go-приложения экономичны по памяти и процессорной мощности.
  • Развитая экосистема: множество готовых библиотек ускоряют разработку.
Какие задачи решают микросервисы?
Микросервисы применяются для самых разных задач. Вот несколько примеров.

Для бизнеса:
  • Сервис аутентификации: управление доступом через логины и токены.
  • Каталог товаров: хранение и поиск товаров для интернет-магазинов.
  • Система оповещений: отправка уведомлений по Email, Telegram или SMS.
  • Бэкэнд для мобильного приложения: API для взаимодействия с клиентами.
Для личного пользования:
  • Трекер привычек: отслеживание выполнения задач.
  • Сервис напоминаний: автоматизация домашних дел.
  • RSS-лента: агрегатор новостей.
  • Статистика тренировок: анализ физической активности.
IT-калькулятор зарплат
Узнай свою рыночную зарплату за 1 минуту!
Создай свой первый микросервис на Golang: Пошаговая инструкция
Ниже представлено пошаговое руководство по созданию простого микросервиса на Go — веб-сервиса, который отвечает на запросы.
Подготовка
Шаг 1: Скачивание и установка Go

  • Перейди на официальный сайт golang.org.
  • Скачай версию Go для своей операционной системы (Windows, macOS, Linux).
  • Установи Go, следуя инструкциям: для Windows — запусти файл .msi, для macOS/Linux — используй пакетный менеджер или распакуй архив.

Шаг 2: Настройка переменных окружения

  1. Открой файл конфигурации терминала (.bashrc для Bash или .zshrc для Zsh).
  2. Добавь строки:
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go

3. Примени изменения:
source ~/.bashrc # для Bash
source ~/.zshrc # для Zsh

Шаг 3: Проверка установки

Чтобы убедиться, что Go установлен и правильно настроен, открой терминал и выполни команду:
go version

Если установка прошла успешно, ты увидишь версию Go, например:
go version go1.20.0 linux/amd64

Теперь ты готов к разработке!
Создание простого веб-сервиса
Шаг 4: Создание проекта

Создай директорию для проекта:
создайте каталог my-first-microservice
перейдите в каталог my-first-microservice

Шаг 5: Написание основного файла

Создай файл main.go и открой его в текстовом редакторе. Этот файл будет содержать основной код твоего веб-сервиса.

package main

import (
"fmt"
"net/http"
)

func welcomeHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Welcome to my microservice!")
}

func main() {
http.HandleFunc("/", welcomeHandler)
http.ListenAndServe(":9000", nil)
}

Этот код создаёт веб-сервис, который отвечает «Добро пожаловать в мой микросервис!» на запросы к корневому маршруту. Обрати внимание, что мы используем порт 9000 вместо стандартного 8080.

Шаг 6: Запуск веб-сервиса

Для запуска сервиса выполни команду:
иди, беги, главный.иди

Открой браузер и перейди по адресу http://localhost:9000. Ты увидишь сообщение «Добро пожаловать в мой микросервис!».
Работа с маршрутизацией и обработкой запросов
Шаг 7: Добавление новых маршрутов

Чтобы добавить новые маршруты, обнови файл main.go. Например, добавь маршрут /info, который будет выводить информацию о сервисе.

package main

import (
"fmt"
"net/http"
)

func welcomeHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Welcome to my microservice!")
}

func infoHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "This is a simple microservice built with Go.")
}

func main() {
http.HandleFunc("/", welcomeHandler)
http.HandleFunc("/info", infoHandler)
http.ListenAndServe(":9000", nil)
}

Теперь твой сервер будет обслуживать два маршрута:
  • / — ответит "Hello, World!"
  • /about — покажет текст "About Page"

Шаг 8: Обработка параметров запроса

Измени welcomeHandler, чтобы он приветствовал пользователя по имени, переданному в запросе:

package main

import (
"fmt"
"net/http"
)

func welcomeHandler(w http.ResponseWriter, r *http.Request) {
name := r.URL.Query().Get("name")
if name == "" {
name = "Guest"
}
fmt.Fprintf(w, "Welcome to my microservice, %s!", name)
}

func infoHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "This is a simple microservice built with Go.")
}

func main() {
http.HandleFunc("/", welcomeHandler)
http.HandleFunc("/info", infoHandler)
http.ListenAndServe(":9000", nil)
}

Перезапусти сервис (go run main.go) и попробуй открыть http://localhost:9000?name=Alex. Ответ будет: «Welcome to my microservice, Alex!».
Тестирование и деплой веб-сервиса
Шаг 9: Написание тестов

Создай файл main_test.go для тестирования обработчика welcomeHandler.

package main

import (
"net/http"
"net/http/httptest"
"testing"
)

func TestWelcomeHandler(t *testing.T) {
req, err := http.NewRequest("GET", "/", nil)
if err != nil {
t.Fatal(err)
}
rr := httptest.NewRecorder()
handler := http.HandlerFunc(welcomeHandler)
handler.ServeHTTP(rr, req)
if status := rr.Code; status != http.StatusOK {
t.Errorf("wrong status code: got %v want %v", status, http.StatusOK)
}
expected := "Welcome to my microservice, Guest!"
if rr.Body.String() != expected {
t.Errorf("unexpected body: got %v want %v", rr.Body.String(), expected)
}
}

Запусти тесты командой:
go test

Шаг 10: Деплой веб-сервиса

Скомпилируй приложение в исполняемый файл:
go build -o my-web-service

Перенеси исполняемый файл на сервер с помощью SCP или другого инструмента:
scp my-web-service user@server:/path/to/deploy

На сервере запусти веб-сервис:
./my-web-service

Теперь твой микросервис работает на сервере и готов обслуживать запросы.

Как получить образование Go-разработчика с трудоустройством?
Если ты хочешь освоить Golang до профессионального уровня, приглашаем тебя на обучение в Kata Academy. Пройти курс «Go-разработчик» с личной поддержкой ментора гарантией трудоустройства можно за 9 месяцев. В программе не только изучение актуального стека, но и подготовка к собеседованиями. Обучение направлено на практику: ты каждую неделю выполняешь домашние задания с кодингом и отдаешь их ментору на ревью, задавать вопросы ментору можно в чате, на созвонах 1to1 и в группе.

Мы предлагаем два варианта системы оплаты: предоплата или гибридный формат с основной оплатой после трудоустройства. Узнай подробности на нашем сайте.

Если ты уже программируешь, но хочешь перейти в стек Go, мы знаем быстрый способ! Изучи Go, создавая собственный ИИ-чат с нейросетями от OpenAI/Claude, путь от основ языка до готового продукта займёт всего 2 месяца. Подробно будем рассказывать на бесплатном вебинаре, для участия нужно только зарегистрироваться: https://raise.kata.academy/web_go. После регистрации ты получишь подарок: гайд по soft skills для программистов, узнаешь, какие мягкие навыки нужны для успешной карьеры и как их прокачать.

Истории наших выпускников

Стань тем, кто задаёт тон в IT!
Подпишись на нашу рассылку и первым получай статьи по Java, JavaScript, Golang и QA. Позволь себе быть экспертом!