Top.Mail.Ru
Разработка микросервисов на Go. Пошаговое руководство
Создай свой первый микросервис на языке Golang за десять шагов. Полная инструкция в статье.
Микросервисы активно используют крупные компании в России и в мире: Ozon, Wildberries, «Т-Банк», Netflix, Amazon, Spotify и многие другие. В этой статье мы разберемся, почему лидеры рынка выбирают микросервисы, чем они отличаются от других IT-продуктов и как самостоятельно создать микросервис с нуля.
Что такое микросервис?
Микросервис — это автономное приложение, выполняющее одну конкретную задачу в составе большой системы, например, авторизацию пользователей, обработку платежей или отправку уведомлений. В отличие от монолитных приложений, где весь функционал находится в одном большом коде, микросервисы разрабатываются и разворачиваются независимо друг от друга.
Преимущества микросервисов
  • Гибкость и масштабируемость: обновление или развитие одного модуля не затрагивает всю систему.
  • Быстрота развертывания: новые функции добавляются независимо от других частей продукта.
  • Повышенная отказоустойчивость: сбой одного микросервиса не приводит к остановке всей системы.
  • Упрощенная поддержка и разработка: независимые команды могут параллельно работать над разными микросервисами.
Средняя зарплата GO-разработчика – 250 000 рублей. Уже сейчас на нём разрабатывают веб-сервисы, мобильные приложения. Пройди обучение на Golang-разработчика в Kata Academy с гарантией трудоустройства в окружении опытных менторов.
Почему именно 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. Позволь себе быть экспертом!