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

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

Для бизнеса:
  • Сервис аутентификации: управление доступом через логины и токены.
  • Каталог товаров: хранение и поиск товаров для интернет-магазинов.
  • Система оповещений: отправка уведомлений по Email, Telegram или SMS.
  • Бэкэнд для мобильного приложения: API для взаимодействия с клиентами.
Для личного пользования:
  • Трекер привычек: отслеживание выполнения задач.
  • Сервис напоминаний: автоматизация домашних дел.
  • RSS-лента: агрегатор новостей.
  • Статистика тренировок: анализ физической активности.
Узнай свою рыночную зарплату за 1 минуту!
IT-калькулятор зарплат
Создай свой первый микросервис на 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: Запуск веб-сервиса

Для запуска сервиса выполни команду:
go run main.go
Открой браузер и перейди по адресу 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!"
  • /info — покажет текст "info 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!».
С нуля до первой работы: с ментором, поддержкой на каждом этапе
и с гибким форматом оплаты
Обучение в IT с фокусом на трудоустройство
Тестирование и деплой веб-сервиса
Шаг 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 месяцев. В программе не только изучение актуального стека, но и подготовка к собеседованиями. Обучение направлено на практику: ты каждую неделю выполняешь домашние задания с кодингом и отдаешь их ментору на ревью, задавать вопросы ментору можно в чате и на созвонах.

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

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

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