Microsserviços em Kotlin: roteiro para iniciantes

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Por que Kotlin é a melhor escolha para microsserviços em 2024?

\n\n

Você já escreveu um microsserviço em Python e depois pensou: "E se ele funcionasse mais rápido, consumisse menos memória e o código continuasse tão legível?" Familiar? Então bem-vindo ao mundo do Kotlin — a linguagem que o Google escolheu para Android e que a comunidade de desenvolvedores backend escolheu para criar microsserviços leves e performáticos.

\n\n

Kotlin se encaixa perfeitamente na arquitetura de microsserviços: é estaticamente tipado, compila para bytecode JVM (ou código nativo via Kotlin/Native), mas não requer toneladas de boilerplate como Java. E o principal: suas coroutines permitem processar milhares de requisições em uma única thread sem a dor do callback hell.

\n\n

Neste artigo, não vamos dar aulas teóricas. Vamos pegar e escrever dois microsserviços: User Service (REST API) e Notification Service (simulação de envio de e-mails). Tudo em Kotlin puro + Ktor. Vamos lá!

\n\n

1. Ferramentas: o que instalar antes de começar

\n\n

Antes de escrever código, vamos garantir que seu computador está pronto para a ação.

\n\n

O que instalar:

\n
    \n
  • JDK 17+ — Kotlin roda na JVM, então não tem como escapar do Java. Baixe em Adoptium.
  • \n
  • IntelliJ IDEA Community Edition — a melhor IDE para Kotlin (sim, é da JetBrains e sim, é gratuita).
  • \n
  • Gradle (ou Maven) — sistema de build. No IntelliJ já vem embutido, mas se quiser instalar separadamente: gradle.org.
  • \n
  • Docker (opcional, mas facilita muito o deploy).
  • \n
\n\n

Se você tem macOS ou Linux — já está no meio do caminho para o sucesso. No Windows, recomendo WSL2.

\n\n

2. Criando nosso primeiro microsserviço: User Service com Ktor

\n\n

Ktor é um framework dos criadores do Kotlin. Ele é extremamente leve: você decide quais módulos conectar (roteamento, serialização, logging). Nada de mágica — apenas código puro.

\n\n

2.1. Geração do projeto

\n

A maneira mais rápida é usar o Ktor Project Generator. Selecione:

\n
    \n
  • Build system: Gradle Kotlin DSL
  • \n
  • Engine: Netty (o mais popular)
  • \n
  • Plugins: Routing, Content Negotiation (JSON), Status Pages
  • \n
\n

Baixe o arquivo, abra no IntelliJ — e em 2 minutos você tem um esqueleto pronto.

\n\n

2.2. Escrevendo a REST API: obtendo usuários

\n

Vamos criar um modelo simples e um endpoint. O código será o mais legível possível:

\n\n
// Model.kt\ndata class User(\n    val id: Int,\n    val name: String,\n    val email: String\n)\n\n// UserRepository.kt\nobject UserRepository {\n    private val users = mutableListOf(\n        User(1, "Alice", "alice@example.com"),\n        User(2, "Bob", "bob@example.com")\n    )\n\n    fun findAll(): List<User> = users\n    fun findById(id: Int): User? = users.find { it.id == id }\n}\n\n// Application.kt (ponto de entrada)\nfun main() {\n    embeddedServer(Netty, port = 8080) {\n        configureSerialization()\n        configureRouting()\n    }.start(wait = true)\n}\n\n// Routing.kt\nfun Application.configureRouting() {\n    routing {\n        route("/api/v1/users") {\n            get {\n                call.respond(UserRepository.findAll())\n            }\n            get("/{id}") {\n                val id = call.parameters["id"]?.toIntOrNull()\n                if (id == null) {\n                    call.respond(HttpStatusCode.BadRequest, "Invalid ID")\n                    return@get\n                }\n                val user = UserRepository.findById(id)\n                if (user != null) {\n                    call.respond(user)\n                } else {\n                    call.respond(HttpStatusCode.NotFound, "User not found")\n                

Blogs

Book Recommendations